Harris的角点检测和特征匹配
一.特征檢測(提取)
? ? ? ? 基于特征的圖像配準方法是圖像配準中最常見的方法之一。它不是直接利用圖像像素值,二十通過像素值導出的符號特征(如特征點、特征線、特征區(qū)域)來實現(xiàn)圖像配準,因此可以克服利用灰度信息進行圖像配準的缺點,主要體現(xiàn)在以下三個方面:(1)利用特征點而不是圖像灰度信息,大大減少了在匹配過程中的計算量;(2)特征點的匹配度量值相對位置變化比較敏感,可以提高匹配的精度;(3)特征點的提取過程可以減少噪聲的影響,對灰度變化、圖像形變以及遮擋等都有較好的適應(yīng)能力。
? ? ? ?一類重要的點特征:角點(corner points),其定義主要有以下:
?
?
從圖像局部的小窗口觀察圖像特征,角點定義:窗口向任意方向的移動都導致圖像灰度的明顯變化(如下圖)
?
Harris檢測:數(shù)學表達
?
將圖像窗口平移[u,v]產(chǎn)生灰度變化E(u,v)
?
由泰勒展開,得:
?
利用角點響應(yīng)函數(shù):
?
判斷特征點是否為角點的依據(jù):R只與M值有關(guān),R為大數(shù)值正數(shù)時特征點為角點,R為大數(shù)值負數(shù)時為邊緣,R為小數(shù)值時為平坦區(qū),如下圖:
尋找R位于一定閾值之上的局部最大值,去除偽角點。
Harris角點檢測流程:
1.通過高斯函數(shù)的導數(shù)對原始圖像進行卷積計算;圖像在水平方向和垂直方向的導數(shù)Ix和Iy;
2.計算對應(yīng)這些梯度外積即(Ix2 、Iy2、IxIy)三個圖像如下圖:
4.使用高斯函數(shù)對以上圖像進行卷積濾波;
3.使用前面的公式計算角點響應(yīng)函數(shù)R值;
5.對計算到的角點圖像進行局部極大值抑制。
?
二、特征描述?
?在檢測到特征(關(guān)鍵點)之后,我們必須匹配它們,也就是說,我們必須確定哪些特征來自于不同圖像中的對應(yīng)位置。物體識別的核心問題是將同一目標在不同時間、不同分辨率、不同光照、不同位姿情況下所成的圖像相匹配。而為了進行匹配,我們首先要合理的表示圖像。
SIFT(Scale invariant feature transform)特征通過計算檢測到的關(guān)鍵點周圍16x16窗口內(nèi)每一個像素的梯度得到。在這里我只是簡單的實現(xiàn)類似于SIFT特征描述子的特征描述方法,即我通過每4x4的四分之一象限,通過將加權(quán)梯度值加到直方圖八個方向區(qū)間中的一個,計算出一個梯度方向直方圖,因此在每一個特征點都會形成一個128維的非負值形成了一個原始版本的SIFT描述子向量如下圖,并且將其歸一化以減少對比度和增益的影響,最后為了使描述子對其他各種光度變化魯棒,再將這些值以0.2截尾,然后再歸一化到單位長度。
??
三、特征匹配
一旦我們從兩幅或者多幅圖像中提取到特征及其描述子后,下一步就是要在這些圖像之間建立一些初始特征之間的匹配。
匹配策略一:對前面提取到的兩幅圖像的128維特征描述子向量做歐式距離度量,最簡單的一個策略就是先設(shè)定一個閾值(最大距離),然后返回在這個閾值范圍之內(nèi)的另外一個圖像中的所有匹配。
匹配策略二:做最近鄰匹配,即比較最近鄰距離和次近鄰距離的比值,即最近鄰比率(NNDR)。
匹配策略一的缺點是,如果閾值設(shè)得太高,就會產(chǎn)生誤報,也就是說會出現(xiàn)不正確的匹配。如果閾值設(shè)得太低,就會產(chǎn)生很多“漏報”,也就是說,很多正確的匹配被丟失。
固定閾值,最近鄰和最近鄰比率匹配。在固定閾值(虛線圓)下,描述子DA未能與DB匹配,DD錯誤地與DC和DE匹配。如果我們選擇最近鄰,DA和DE匹配。使用最近鄰比率(NNDR),小的NNDR(d1/d2)正確地將DA和DB匹配,大的NNDR(d1'/d2')正確地拒絕DD與DC、DE的匹配。
代碼如下:
https://download.csdn.net/download/pbymw8iwm/10659247
總結(jié)
以上是生活随笔為你收集整理的Harris的角点检测和特征匹配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++:14---虚继承,虚函数,多态
- 下一篇: nginx python webpy 配