一、簡介
1.FAST算法產生原因
SIFT和SURF算法在進行特征點檢測時需要建立尺度空間,基於局部圖像的梯度直方圖來計算描述子,整個算法的計算和數據存儲復雜度比較高,不適用於處理實時性很強的圖像。
2.FAST算法思想
若某像素與其周圍領域內足夠多的像素點相差較大,則該像素可能是角點
二、算法步驟
Step1: 確定候選角點
a.傳統方法:
- 選擇某個像素
,其像素值為
,以
為圓心,半徑為3,確定一個圓,圓上有16個像素,記為
。
- 確定一個閥值,記為
- 讓圓上的n個連續的像素的像素值分別與
的像素值做差,若這些差值的絕對值都比
大或都比
小,則像素
為角點。現在我們令
(經驗數據)。接下來是實現這一步的具體步驟(前人經驗所得)。
- 分別計算
與
的像素值與
的差,若差值的絕對值都比
大或都比
小,則進入下一步判斷,否則
點被直接pass掉
- 分別計算
,
,
,
四個點像素值與
的差值,若有
個點的差值的絕對值都比
大或都比
小,則進入下一步判斷,否則pass掉p點
-
對圓上16個像素點的像素值分別與
做差,若有
個像素點的差值的絕對值都比
大或都比
小,則p點為角點
缺陷:
-
這種檢測方法不能推廣到連續亮點或者暗點個數
的情況
- 這種檢測方法對特征點的空間分布有隱含假設
- 這種檢測方法得到的判斷信息最后也被丟棄了
- 大量測試得到這樣的結論:大量特征點都是相鄰分布的
-
- 因此現在都通過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:非極大值抑制
在篩選出來的候選角點中有很多是緊挨在一起的,需要通過非極大值抑制來消除這種影響
- 為所有的候選角點計算一個打分函數
:
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.