SIFT 方向分配

2021-08-09 16:15:43 字數 1717 閱讀 4291

在得到合適的特徵點位置後,為每個特徵點分配方向,從而使描述子能實現影象旋轉不變性,這也是我們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個柱,直方圖的峰值代表了該關鍵點處鄰域梯度的主方向,即為關鍵點的...