在得到合適的特徵點位置後,為每個特徵點分配方向,從而使描述子能實現影象旋轉不變性,這也是我們sift第三步方向分配的主要目的。
sift中方向分配主要從以下幾個步驟進行。
1、計算梯度幅值和幅角
需要根據檢測到的特徵點的區域性影象結構求得乙個方向基準。我們使用影象梯度方向求取該區域性結構的穩定方向。對於已經檢測到的特徵點,我們知道該特徵點的尺度值
σ ,因此根據這一尺度值,求得最接近這一尺度值的高斯影象: l(
x,y)
=g(x
,y,σ
)⨂i(
x,y)
該特徵點的梯度:
使用有限差分,計算以特徵點為中心,以3×
1.5σ
為半徑的區域內影象梯度的幅角和幅值(模值),幅值和幅角的計算如下: m(
x,y)
=(l(
x+1,
y)−l
(x−1
,y))
2+(l
(x,y
+1)−
l(x,
y−1)
)2−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−−−
−−√
σ(x,
y)=t
an−1
((l(
x,y+
1)−l
(x,y
−1))
/(l(
x+1,
y)−l
(x−1
,y))
) 2、加權處理
每個加入梯度直方圖的取樣點梯度幅值都要進行權重處理,加權採用圓形高斯加權函式,其
σ 值為特徵點尺度的1.5倍。
由於sift只考慮了尺度和旋轉不變性,並沒有考慮仿射不變性。通過高斯加權,使特徵點附近的梯度幅值有較大的權重,這樣可以彌補因沒有仿射不變性而產生的特徵點不穩定的問題。
3、生成方向梯度直方圖
在完成特徵點鄰域的高斯影象的梯度計算後,使用直方圖統計鄰域內畫素的梯度方向和幅值。梯度方向直方圖的橫軸是梯度方向角,縱軸是梯度方向角對應的梯度幅度累加值。
梯度方向直方圖將0o
−360
o 的範圍,分為36個柱,每10o
乙個柱。直方圖的峰值代表了改特徵點處鄰域內影象梯度的主方向,也即該特徵點的主方向。如下是乙個8×
8 的鄰域,以直方圖統計該鄰域內的方向,計算出峰值方向,如下:
4、輔方向
當梯度方向直方圖中,當存在另乙個相當於主峰值80%能量的峰值時,則將這個方向認為是該特徵點的輔方向。乙個特徵點可能會被指定具有多個方向(乙個主方向,乙個以上輔方向),這可以增強匹配的魯棒性,具體就是把該特徵點複製成多份特徵點,並將方向值分別賦給這些複製後的特徵點,通常離散的梯度方向直方圖進行插值擬合處理,這樣可以求得更精確的方向角度值。
以上,在獲得了影象的特徵點主方向後,每個特徵點有三個資訊(x
,y,σ
,θ) :位置、尺度、方向,前倆個值是使用sift特徵點檢測得到的,特徵點的主方向就是我們這一步求得的。
SIFT演算法 確定特徵點方向
sift演算法 dog尺度空間生產 sift演算法 keypoint找尋 定位與優化 sift演算法 確定特徵點方向 sift演算法 特徵描述子 目錄 1 計算鄰域梯度方向和幅值 2 計算梯度方向直方圖 3 確定特徵點方向 為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向...
SIFT演算法 確定特徵點方向
sift演算法 dog尺度空間生產 sift演算法 keypoint找尋 定位與優化 sift演算法 確定特徵點方向 sift演算法 特徵描述子 目錄 1 計算鄰域梯度方向和幅值 2 計算梯度方向直方圖 3 確定特徵點方向 為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向...
SIFT學習 確定特徵點的方向
為了保證特徵點的方向不變性,我們必須確定特徵點的方向。我們知道,確定乙個點的梯度方向有如下公式 其中我們在以特徵點為中心的鄰域視窗中進行取樣,並用直方圖來統計鄰域畫素的梯度方向,梯度直方圖的範圍是0 360 其中每10度乙個柱,總共36個柱,直方圖的峰值代表了該關鍵點處鄰域梯度的主方向,即為關鍵點的...