在得到合適的特徵點位置後,爲每個特徵點分配方向,從而使描述子能實現圖像旋轉不變性,這也是我們SIFT第三步方向分配的主要目的。
SIFT中方向分配主要從以下幾個步驟進行。
1、計算梯度幅值和幅角
需要根據檢測到的特徵點的局部圖像結構求得一個方向基準。我們使用圖像梯度方向求取該局部結構的穩定方向。對於已經檢測到的特徵點,我們知道該特徵點的尺度值
該特徵點的梯度:
使用有限差分,計算以特徵點爲中心,以
2、加權處理
每個加入梯度直方圖的採樣點梯度幅值都要進行權重處理,加權採用圓形高斯加權函數,其
由於SIFT只考慮了尺度和旋轉不變性,並沒有考慮仿射不變性。通過高斯加權,使特徵點附近的梯度幅值有較大的權重,這樣可以彌補因沒有仿射不變性而產生的特徵點不穩定的問題。
3、生成方向梯度直方圖
在完成特徵點鄰域的高斯圖像的梯度計算後,使用直方圖統計鄰域內像素的梯度方向和幅值。梯度方向直方圖的橫軸是梯度方向角,縱軸是梯度方向角對應的梯度幅度累加值。
梯度方向直方圖將
4、輔方向
當梯度方向直方圖中,當存在另一個相當於主峯值80%能量的峯值時,則將這個方向認爲是該特徵點的輔方向。一個特徵點可能會被指定具有多個方向(一個主方向,一個以上輔方向),這可以增強匹配的魯棒性,具體就是把該特徵點複製成多份特徵點,並將方向值分別賦給這些複製後的特徵點,通常離散的梯度方向直方圖進行插值擬合處理,這樣可以求得更精確的方向角度值。
以上,在獲得了圖像的特徵點主方向後,每個特徵點有三個信息