SIFT演算法 確定特徵點方向

2021-06-18 05:48:42 字數 1555 閱讀 8585

sift演算法:dog尺度空間生產

sift演算法:keypoint找尋、定位與優化

sift演算法:確定特徵點方向

sift演算法:特徵描述子

目錄:1、計算鄰域梯度方向和幅值

2、計算梯度方向直方圖

3、確定特徵點方向

為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向基準。我們使用影象梯度的方法求取該區域性結構的穩定方向。對於己經檢測到特徵點,我們知道該特徵點的尺度值σ,因此根據這一尺度值,在gss中得到最接近這一尺度值的高斯影象。然後使用有限差分,計算以特徵點為中心,以3x1.5σ為半徑的區域內影象梯度的幅角和幅值,如下圖所示。幅角和幅值計算公式加下:

在完成特徵點鄰域的高斯影象的梯度計算後,使用直方圖統計鄰域內畫素的梯度方向和幅值。梯度方向直方圖的橫軸是梯度方向角,縱軸是梯度方向角對應的(帶高斯權重)梯度幅值累加值。梯度方向直方圖將。0°~360°的範圍,分為36個柱,每10°為乙個柱。直方圖的峰值代表了該特徵點處鄰域內影象梯度的主方向,也即該特徵點的主方向,如下圖所示。

綠色格點代表鄰域範圍,藍色圓圈代**點的高斯權重(稍後介紹),黑色箭頭指向代表梯度方向,箭頭長度代表梯度幅值。右邊為梯度方向直方圖(36柱,每柱代表10°,上圖只顯示了8柱)。獲得梯度方向直方圖的步驟如下:

問題1: 為什麼每個點梯度幅值要使用高斯權重?

答:由於sift演算法只考慮了尺度和旋轉的不變性,並沒有考慮仿射不變性。通過對各點梯度幅值進行高斯加權,使特徵點附近的梯度幅值有較大的權重,這樣可以部分彌補因沒有仿射不變性而產生的特徵點不穩定的問題。

有了梯度方向直方圖之後,找到直方圖中最大的值,則認為該方向為該特徵點的主方向,如存在另乙個方向大於最大值的80%,則認為該方向為該特徵點的輔方向。乙個特徵點可能會有多個方向(乙個主方向,乙個以上的輔方向),這可以增強匹配的魯棒性。具體而言,就是將該特徵點複製成多份特徵點(除了方向θ不同外,x,y,σ都相同)。

【note】在opencv中,若輔方向除了滿足大於最大值80%外,還必須是區域性最大值,即 hist[i] > hist[i-1] && hist[i] > hist[i+1]。

通常離散的梯度方向直方圖,可以通過插值擬合處理,這樣可以得到更精確的方向角度值。

經過上述過程,我們特徵點的所有量(x,y,σ,θ)都已經已經求得,其中位置(x,y)、尺度σ都是在上一節中求得,而特徵點方向θ是通過特徵點鄰域直方圖求得。下一節,將介紹sift描述子的形成方式。

SIFT演算法 確定特徵點方向

sift演算法 dog尺度空間生產 sift演算法 keypoint找尋 定位與優化 sift演算法 確定特徵點方向 sift演算法 特徵描述子 目錄 1 計算鄰域梯度方向和幅值 2 計算梯度方向直方圖 3 確定特徵點方向 為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向...

SIFT學習 確定特徵點的方向

為了保證特徵點的方向不變性,我們必須確定特徵點的方向。我們知道,確定乙個點的梯度方向有如下公式 其中我們在以特徵點為中心的鄰域視窗中進行取樣,並用直方圖來統計鄰域畫素的梯度方向,梯度直方圖的範圍是0 360 其中每10度乙個柱,總共36個柱,直方圖的峰值代表了該關鍵點處鄰域梯度的主方向,即為關鍵點的...

SIFT解析(二)特徵點位置確定

影象的尺度空間就是 二維高斯函式與原始影象卷積運算後的結果,尺度空間的表示式 lowe在 中闡述了為什麼使用差分高斯金字塔 1 差分高斯影象可以直接由高斯影象相減獲得,簡單高效 2 差分高斯函式是尺度規範化的高斯拉普拉斯函式的近似,而高斯拉普拉斯函式的極大值和極小值點是一種非常穩定的特徵點 與梯度特...