1. 程式人生 > >【目標檢測】FAST特徵學習記錄

【目標檢測】FAST特徵學習記錄

一、FAST演算法流程

它的演算法流程是:

1. 影象中任意一點p,該點是我們要識別的是否為感興趣的點,假設其亮度為Ip;

2. 設定一個亮度閾值T;

3. 設定半徑為3,選擇p周圍的16個畫素;

4. 16個畫素中的N個相鄰畫素(作者設定N=12)的亮度小於Ip-t或者大於Ip+t,那麼這個點就是角點;

5. 考慮到演算法的計算速度,首先和Ip比較1,5,9,13點的亮度。其中至少要有3個點滿足第4步的閾值準則;

6. 如果不滿足第5步,則該點不是角點,如果滿足第5步,則繼續檢查剩下的12個點是否滿足第4步的條件;

7. 重複上述步驟遍歷完影象上所有的畫素。

上述演算法有一些侷限性;

1. 如果N<12,則演算法的表現不好,因為會檢出過多的點;

2. 16個點的檢驗順序影響演算法的計算速度。

二、基於機器學習的角點檢測

基於學習的特徵點檢測方法分為兩步:

1. 在需要檢測的場景用多張影象進行角點提取。設定一個n和合適的閾值進行檢測。提取的特徵點作為訓練資料。

對於半徑為3的圓上的16個畫素點x\epsilon \begin{Bmatrix} 1, &..., & 16 \end{Bmatrix},則畫素x與p的關係可以劃分為如下三種:

這樣就得到三個子集Pd,Ps,Pb。

Kp=true表示該點是角點,Kp=false表示該點不是角點。

2. 用第1步提取的特徵點進行訓練,使用ID3演算法建立一顆決策樹,假設使用第x個畫素點進行決策樹的劃分,那麼對集合P得到的熵K是:

則資訊增益為

三、非極大值抑制

由於FAST沒有計算角點響應函式,所以不能直接對結果特徵應用NMS。作者定義了一個V,對V應用NMS。比較相鄰角點的V值,然後刪除V值較小的角點。