【CV學習7】FAST算法詳解


一、簡介

1.FAST算法產生原因

SIFT和SURF算法在進行特征點檢測時需要建立尺度空間,基於局部圖像的梯度直方圖來計算描述子,整個算法的計算和數據存儲復雜度比較高,不適用於處理實時性很強的圖像。

2.FAST算法思想

若某像素與其周圍領域內足夠多的像素點相差較大,則該像素可能是角點

二、算法步驟

Step1: 確定候選角點

a.傳統方法:

  1. 選擇某個像素,其像素值為,以為圓心,半徑為3,確定一個圓,圓上有16個像素,記為
  2. 確定一個閥值,記為
  3. 讓圓上的n個連續的像素的像素值分別與的像素值做差,若這些差值的絕對值都比大或都比小,則像素為角點。現在我們令(經驗數據)。接下來是實現這一步的具體步驟(前人經驗所得)。
  4. 分別計算的像素值與的差,若差值的絕對值都比大或都比小,則進入下一步判斷,否則點被直接pass掉
  5. 分別計算四個點像素值與的差值,若有個點的差值的絕對值都比大或都比小,則進入下一步判斷,否則pass掉p點
  6. 對圓上16個像素點的像素值分別與 做差,若有 個像素點的差值的絕對值都比 大或都比 小,則p點為角點

    缺陷:

    1. 這種檢測方法不能推廣到連續亮點或者暗點個數 的情況
      1. 這種檢測方法對特征點的空間分布有隱含假設
      2. 這種檢測方法得到的判斷信息最后也被丟棄了
    2. 大量測試得到這樣的結論:大量特征點都是相鄰分布的
  7. 因此現在都通過ID3算法構建決策樹來判斷圍繞待測目標點的Bresenham圓環上是否有n個連續的亮點或者暗點,進而判斷該目標點是否是特征點。(ID3算法講解參考https://www.cnblogs.com/gfgwxw/p/9439482.html)

b.基於機器學習方法的FAST算法

1.確定一組訓練圖像

2.使用FAST算法對每幅圖像做角點檢測

3.在向量中存儲每幅圖像的每個焦點周圍16個像素值

4.對於圖像中所有像素都重復如上操作

5.對於圓環上的16個點()安如下規則分為三類

是狀態(興趣點是p,圓環上的點x)

是像素x的值

t是閥值

6.根據狀態,可以划分為三個子向量

6.確定一個布爾變量,當為角點時為True,當p不是角點是為False

7.使用ID3決策樹,按照的真假對的三個子向量進行訓練

8.ID3算法的的運行原則依據熵值最小(信息最多)以檢測出像素點的位置

其中是每個區域的角點個數

是每個區域的非角點個數

9.停止條件為上述划分的每一個等級熵值均為零

10.訓練結束后得到一個確定的決策樹,以后可對類似場景使用這個決策樹來檢測角點

 

Step2:非極大值抑制

在篩選出來的候選角點中有很多是緊挨在一起的,需要通過非極大值抑制來消除這種影響

  1. 為所有的候選角點計算一個打分函數:

2.比較相鄰候選角點的值,把V值較小的候選角點PASS掉

至此,FAST算法結束

 

三、參考及致謝

1.https://zhuanlan.zhihu.com/c_154380889

2.劉曉光《基於FPGA的FAST圖像特征點的檢測與匹配算法的研究》

3. Bremner D, Demaine E, Erickson J, et al. Output-sensitive algorithms for computing nearest-neighbour decision boundaries[J]. Discrete & Computational Geometry,   2005, 33(4): 593-604.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM