一.特征檢測(提取)
? ? ? ? 基于特征的圖像配準方法是圖像配準中最常見的方法之一。它不是直接利用圖像像素值,二十通過像素值導出的符號特征(如特征點、特征線、特征區域)來實現圖像配準,因此可以克服利用灰度信息進行圖像配準的缺點,主要體現在以下三個方面:(1)利用特征點而不是圖像灰度信息,大大減少了在匹配過程中的計算量;(2)特征點的匹配度量值相對位置變化比較敏感,可以提高匹配的精度;(3)特征點的提取過程可以減少噪聲的影響,對灰度變化、圖像形變以及遮擋等都有較好的適應能力。
? ? ? ?一類重要的點特征:角點(corner points),其定義主要有以下:
?
?
- ?局部窗口沿各方向移動,灰度均產生明顯變化的點? ? ??
- 圖像局部曲率突變的點
- 典型的角點檢測算法:Harris角點檢測、CSS角點檢測
- Harris角點檢測基本思想
從圖像局部的小窗口觀察圖像特征,角點定義:窗口向任意方向的移動都導致圖像灰度的明顯變化(如下圖)
?
Harris檢測:數學表達
?
將圖像窗口平移[u,v]產生灰度變化E(u,v)
?
由泰勒展開,得:
?
利用角點響應函數:
?
判斷特征點是否為角點的依據:R只與M值有關,R為大數值正數時特征點為角點,R為大數值負數時為邊緣,R為小數值時為平坦區,如下圖:
尋找R位于一定閾值之上的局部最大值,去除偽角點。
Harris角點檢測流程:
1.通過高斯函數的導數對原始圖像進行卷積計算;圖像在水平方向和垂直方向的導數Ix和Iy;
2.計算對應這些梯度外積即(Ix2 、Iy2、IxIy)三個圖像如下圖:
4.使用高斯函數對以上圖像進行卷積濾波;
3.使用前面的公式計算角點響應函數R值;
5.對計算到的角點圖像進行局部極大值抑制。
?
-
?
二、特征描述?
?在檢測到特征(關鍵點)之后,我們必須匹配它們,也就是說,我們必須確定哪些特征來自于不同圖像中的對應位置。物體識別的核心問題是將同一目標在不同時間、不同分辨率、不同光照、不同位姿情況下所成的圖像相匹配。而為了進行匹配,我們首先要合理的表示圖像。
SIFT(Scale invariant feature transform)特征通過計算檢測到的關鍵點周圍16x16窗口內每一個像素的梯度得到。在這里我只是簡單的實現類似于SIFT特征描述子的特征描述方法,即我通過每4x4的四分之一象限,通過將加權梯度值加到直方圖八個方向區間中的一個,計算出一個梯度方向直方圖,因此在每一個特征點都會形成一個128維的非負值形成了一個原始版本的SIFT描述子向量如下圖,并且將其歸一化以減少對比度和增益的影響,最后為了使描述子對其他各種光度變化魯棒,再將這些值以0.2截尾,然后再歸一化到單位長度。
?
?
三、特征匹配
一旦我們從兩幅或者多幅圖像中提取到特征及其描述子后,下一步就是要在這些圖像之間建立一些初始特征之間的匹配。
匹配策略一:對前面提取到的兩幅圖像的128維特征描述子向量做歐式距離度量,最簡單的一個策略就是先設定一個閾值(最大距離),然后返回在這個閾值范圍之內的另外一個圖像中的所有匹配。
匹配策略二:做最近鄰匹配,即比較最近鄰距離和次近鄰距離的比值,即最近鄰比率(NNDR)。
匹配策略一的缺點是,如果閾值設得太高,就會產生誤報,也就是說會出現不正確的匹配。如果閾值設得太低,就會產生很多“漏報”,也就是說,很多正確的匹配被丟失。
固定閾值,最近鄰和最近鄰比率匹配。在固定閾值(虛線圓)下,描述子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