參考
對常用特徵點記錄總結
圖像處理特徵不變算子系列之Harris算子(二)
圖像處理特徵不變算子系列之SUSAN算子(三)
【計算機視覺】SIFT中LoG和DoG比較
SIFT特徵提取分析
RANSAC算法詳解
Harris角點檢測原理詳解
Susan
SUSA(Smallest Univalue Segment Assimilating Nucleus)算子是一種高效的邊緣和角點檢測算子,並且具有結構保留的降噪功能
原理
用一個圓形模板在圖像上移動,若模板內的像素灰度與模板中心的像素(被稱爲核Nucleus)灰度值小於一定的閾值,則認爲該點與核Nucleus具有相同的灰度,滿足該條件的像素組成的區域就稱爲USAN(Univalue Segment Assimilating Nucleus)。邊緣處的點的USAN值小於或等於最大值一半。由此,我們可以得出SUSAN提取邊緣和角點算法的基本原理:在邊緣或角點處的USAN值最小,可以根據USAN區域的大小來檢測邊緣、角點等特徵的位置和方向信息。
實現步驟
- 利用圓形模板遍歷圖像,計算每點處的USAN值
- 設置一閾值g,一般取值爲1/2(Max(n)), 也即取值爲USAN最大值的一半,進行閾值化,得到角點響應
- 使用非極大值抑制來尋找角點
優缺點
- 完全不涉及梯度的運算,因此其抗噪聲能力很強,運算量也比較小
- SUSAN算子還是一個各向同性的算子
- 圖像的對比度較大,則可選取較大的t值,而圖像的對比度較小,則可選取較小的t值
- 不僅具有很好的邊緣檢測性能;而且對角點檢測也具有很好的效果。
FAST
FAST( Features from Accelerated Segment Test)由Rosten等人在SUSAN角點特徵檢測方法的基礎上利用機器學習方法提出.
原理
分割測試
在FAST角點檢測算子中,一般是通過半徑爲3.4 pixel、外圍16個像素的圓的作爲模板篩選特徵點。12點分割角點檢測算法是在一個圖像塊上進行。其中p是中心像素點,12點取的是圖上用弧線連接的12個點的像素值(通過測試,12點的角點檢測性能最穩定、速度更快、效果也很好,有些文獻指出9點的方式也很好)。
t是一個閾值(默認取值爲10,不同場景取值有差異),
Ip
表示的是中心像素的像素值,
Ip→x
表示的是圓形模板中的像素值。統計圓形區域中d或b的個數,只要d或b出現的次數大於n((當是12點分割測試角點檢測時,n=12;當是9點時,則n=9),那麼該點就被認爲是候選角點。
Sp→x=⎧⎩⎨⎪⎪d,Ip→x<Ip−t,s,Ip−t<Ip→x<Ip+t,b,Ip→x>Ip+t,darksimiliarbrighter
在分割測試步驟中,爲了加快速度,其實不需要對這些像素進行逐一的比較。簡單來說:首先比較1、5、9、13處點的像素值(也即水平方向和垂直方向上的4個點)與中心像素值的大小,如果這四個點中的像素值有3個或3個以上大於
Ip→x+t
或小於
Ip→x−t
,那麼則認爲該處是一個候選角點,否則就不可能是角點。
ID3訓練
將模板內的像素分成三部分d、s、b,分別記爲:
Pd
,
Ps
,
Pb
。因此對於每個
Sp→x
都屬於
Pd
,
Ps
,
Pb
中的一個。另外,令
Kp
爲true,如果p爲角點,否則爲false。通過ID3算法來選擇具有最大信息增益的像素來判斷一個像素是否爲角點。Kp的熵用下式來計算:
H(P)=(c+c−)log2(c+c−)−clog2c−c−log2c−
上式中
c
表示角點數量,
c−
表示非角點數量。某一像素的信息增益通過下式表示:
H(P)−H(Pd)−H(Ps)−H(Pb)
非極大值抑制
在上面的分割測試中,沒有計算角點響應函數(Corner Response Function),非極大值抑制無法直接應用於提取的特徵。因此,定義一個角點響應函數V,考慮到分割測試的特徵以及計算速度的需要,角點響應函數的定義如下:
V=max⎛⎝∑xϵSbright|Ip→x−Ip→|−t,∑xϵSdark|Ip→x−Ip→|−t⎞⎠
實現步驟
- 對固定半徑圓上的像素進行分割測試,通過邏輯測試可以去處大量的非特徵候選點;
- 基於分類的角點特徵檢測,利用ID3 分類器根據16個特徵判決候選點是否爲角點特徵,每個特徵的狀態爲一1,0,1。
- 利用非極大值抑制進行角點特徵的驗證。
優缺點
- 計算速度快,可以應用於實時場景中
- 容易受到噪聲影響,閾值t的影響也較大
BRIEF
Brief爲特徵描述子,對已檢測到的特徵點進行描述,是一種二進制編碼描述子
實現步驟
- 爲減少噪聲干擾,先對圖像進行高斯濾波(方差2,窗口9x9)
- 以特徵點爲中心,取SxS的鄰域大窗口。在大窗口中隨機選取(有5種經典方法)一對(兩個)5x5的子窗口,比較子窗口內的像素和(可用積分圖像完成),進行二進制賦值。(一般S=31),其中
p(x)
,
p(y)
分別爲所在5x5子窗口的像素和
τ(p;x,y):={1,0,if p(x)<p(y)otherwise
- 在大窗口中隨機選取N對子窗口,重複步驟2的二進制賦值,形成一個二進制編碼,這個編碼就是對特徵點的描述,即特徵描述子。(一般N=256)構造一個512個bit的BRIEF,就需要512對[x,y],且需要注意,它們是有序的,每次計算位置都相同,否則影響最終結果。也就說說,一旦選定了512對[x,y],那麼,無論是提取特徵,還是匹配特徵,都要按照這512對進行計算。
- 用漢明距離進行配對。兩個特徵編碼對應bit位上相同元素的個數小於128的,一定不是配對的。一幅圖上特徵點與另一幅圖上特徵編碼對應bit位上相同元素的個數最多的特徵點配成一對。
優缺點
- 拋棄了傳統的用梯度直方圖描述區域的方法,改用檢測隨機響應,大大加快了描述子建立速度
- 生成的二進制描述子便於高速匹配,計算Hamming距離只需通過異或操作加上統計二進制編碼中「1」的個數的操作,這些通過底層的運算即可實現
- 缺點很明顯就是旋轉不變性較差
ORB
DoG
DoG算子是由Lowe D.G.提出的,對噪聲、尺度、仿射變化和旋轉等具有很強的魯棒性,能夠提供更豐富的局部特徵信息
原理
尺度空間
在用機器視覺系統分析未知場景時,機器並不知道圖像中物體的尺度,只有通過對圖像的多尺度描述,才能獲得對物體感知的最佳尺度。如果在不同尺度上,對輸入的圖像都能檢測到相同的關鍵點特徵,那麼在不同尺度下也可以實現關鍵點的匹配,從而實現關鍵點的尺度不變特性。
圖像金字塔多分辨率
金字塔是早期圖像多尺度的表示形式,圖像金字塔一般包括2個步驟,分別是使用低通濾波平滑圖像;對圖像進行降採樣(也即圖像縮小爲原來的1/4,長寬高縮小爲1/2),從而得到一系列尺寸縮小的圖像。金字塔的構造如下所示:
高斯平滑濾波
高斯核是唯一可以產生多尺度空間的核。一個圖像的尺度空間L(x,y,σ) ,定義爲原始圖像I(x,y)與一個可變尺度的2維高斯函數G(x,y,σ)卷積運算。 二維空間高斯函數:
G(xi,yi,σ)=12πσ2exp(−(x−xi)2+(y−yi)22σ2)
尺度空間表示爲:
L(x,y,σ)=G(x,y,σ)∗I(x,y)
高斯模版是圓對稱的,且卷積的結果使原始像素值有最大的權重,
距離中心越遠的相鄰像素值權重也越小。高斯模糊另一個重要的性質就是
線性可分,使用二維矩陣變換的高斯模糊可以通過在水平和豎直方向各進行一維高斯矩陣變換相加得到。
多尺度與多分辨率
尺度空間表達和金字塔多分辨率表達之間最大的不同是:
1. 尺度空間表達是由不同高斯核平滑卷積得到,在所有尺度上有相同的分辨率;
2. 金字塔多分辨率表達每層分辨率減少固定比率。
所以,金字塔多分辨率生成較快,且佔用存儲空間少;而多尺度表達隨着尺度參數的增加冗餘信息也變多。多尺度表達的優點在於圖像的局部特徵可以用簡單的形式在不同尺度上描述;而金字塔表達沒有理論基礎,難以分析圖像局部特徵。
拉普拉斯金字塔
結合尺度空間表達和金字塔多分辨率表達,就是在使用尺度空間時使用金字塔表示,在計算機視覺中最有名莫過於拉普拉斯金字塔。拉普拉斯金字塔顧名思義就是通過對圖像進行拉普拉斯操作,然後進行一個降採樣的過程。具體來說就是:原始圖像作爲金字塔的底層,也即0層,稱爲
g0
,對0層圖像
g0
進行進行拉普拉斯金操作,得到第一層圖像
g1
;接着對第一層圖像進行拉普拉斯操作,得到第二層圖像
g2
,依次類推,並進行一個降採樣,如此構造拉普拉斯金字塔。
DoG金字塔
DoG(Difference of Gaussian)其實是對高斯拉普拉斯(LoG)的近似,在某一尺度上的特徵檢測可以通過對兩個相鄰高斯尺度空間的圖像相減,得到DoG的響應值圖像
D(x,y,σ)
,這比直接計算LoG效率更高。
- 對原圖進行相鄰尺度的高斯濾波
g1=Gσ1(x,y)∗f(x,y)
g2=Gσ2(x,y)∗f(x,y)
- 將上面的濾波得到的兩幅圖像相減:
g1(x,y)−g2(x,y)=Gσ1∗f(x,y)−Gσ2∗f(x,y)=(Gσ1−Gσ2)∗f(x,y)=DoG∗f(x,y)
將公式簡化寫法:
D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))⨂I(x,y)
=L(x,y,kσ)−L(x,y,σ)
構造高斯金字塔
爲了得到DoG圖像,首先要構造高斯金字塔,高斯金字塔在多分辨率金字塔的基礎上加入了高斯濾波,也就是對金字塔每層圖像採用不同的參數sigma進行了高斯卷積,使得金字塔的每層有多張圖片組成爲一個Octave,每組有多張(也叫層interval)圖像。每個Octave是由同一大小的圖像,經過不同sigma高斯濾波得到的,而Interval則表示的是同一個sigma高斯濾波的圖像。另外,降採樣時,金字塔上邊一組圖像的第一張圖像(最底層的一張)是由前一組(金字塔下面一組)圖像的倒數第三張隔點採樣得到,圖像表示如下:
求角點
X標記當前像素點,綠圈標記鄰接像素點,用這個方式,最多檢測相鄰尺度的26個像素點。如果它是所有鄰接像素點的最大值或最小值點,則X被標記爲特徵點,如此依次進行,則可以完成圖像的特徵點提取。
優缺點
RANSC特徵點篩選
隨機抽樣一致算法(random sample consensus,RANSAC),採用迭代的方式從一組包含離羣的被觀測數據中估算出數學模型的參數。
RANSAC算法的基本假設是樣本中包含正確數據(inliers,可以被模型描述的數據),也包含異常數據(outliers,偏離正常範圍很遠、無法適應數學模型的數據),即數據集中含有噪聲。這些異常數據可能是由於錯誤的測量、錯誤的假設、錯誤的計算等產生的。同時RANSAC也假設,給定一組正確的數據,存在可以計算出符合這些數據的模型參數的方法。
實現步驟
- 假定模型(如直線方程),並隨機抽取Nums個(以2個爲例)樣本點,對模型進行擬合
- 由於不是嚴格線性,數據點都有一定波動,假設容差範圍爲:sigma,找出距離擬合曲線容差範圍內的點,並統計點的個數
- 重新隨機選取Nums個點,重複第一步~第二步的操作,直到結束迭代
- 每一次擬合後,容差範圍內都有對應的數據點數,找出數據點個數最多的情況,就是最終的擬合結果
優缺點
- 最小二乘法適用於有效數據佔大多數,無效數據少的情況,是從一個整體誤差最小的角度去考慮。RANSC基於假設尋找最優。
Harris角點檢測
原理
用一個固定窗口在圖像上進行任意方向上的滑動,比較滑動前與滑動後兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動,都有着較大灰度變化,那麼我們可以認爲該窗口中存在角點。
數學刻畫
E(U,V)=∑x,yw(x,y)[I(x+u,y+v)−I(x,y)
E(U,V)=∑x,yw(x,y)[I(x+u,y+v)−I(x,y)]2
式中,
[u,v]
是窗口的偏移量,