影象的尺度空間就是:二維高斯函式與原始影象卷積運算後的結果,
尺度空間的表示式:
lowe在**中闡述了為什麼使用差分高斯金字塔:
1)差分高斯影象可以直接由高斯影象相減獲得,簡單高效
2) 差分高斯函式是尺度規範化的高斯拉普拉斯函式的近似,而高斯拉普拉斯函式的極大值和極小值點是一種非常穩定的特徵點(與梯度特徵、hessian特徵和harris角點相比)
有了這些基礎,我們就可以放開手腳從差分高斯金字塔中找點了。
特徵點的確定主要包括兩個過程:確定潛在特徵點,精確確定特徵點的位置和去除不穩定特徵點。
高斯拉普拉斯函式的極大值和極小值點是一種非常穩定的特徵點,因此我們從差分高斯金字塔中尋找這些潛在特徵點。差分高斯金字塔是乙個三維空間(平面影象二維,尺度一維),因此我們在三維空間中在尋找極大值點和極小值點。具體方法是比較當前特徵點的灰度值和其他26個點的灰度值的大小,這26個點包括:當前尺度下該點的8鄰域以及前一尺度和後一尺度下與該點最近的9個點(9*2+8=26)
尺度空間中的極值點已經確定出來了,下面有兩個問題需要解決:
(1)這些點是最終我們確定的sift特徵點集的超集,該超集裡包含許多「間諜」-----不穩定的特徵點,因此必須去掉這些不穩定的特徵點。這些不穩定的特徵點主要包含兩類:低對比度的點(對雜訊敏感)和邊緣點。
(2)這一步驟中極值點的座標還是離散的整數值,如何精確確定特徵點的位置。
極值點精確定位
而我們找的的極值點是在高斯差分之後所確定下來的,那麼其是屬於離散空間上的點,不一定是真正意義上的極值點。
我們需用用到一條曲線來進行擬合。
離散轉換為連續,我們會想到泰勒展開式:
則極值點為:
去除邊緣影響
到這一步,得到的極值點是比較精確了,但不夠準確。有些極值點不是我們想要的,當中就有一大部分是邊緣區域產生的極值點。因為物體的邊緣輪廓在灰度圖中,存在著灰度值的突變,這樣的點在計算中就被「誤以為」是特徵值。
仔細分析,邊緣區域在縱向上灰度值突變很大,但是橫向上的變化就很小了。好比你用黑筆在白紙上水平畫一條線段。垂直方向看,黑色線與白色區域的突變很大。但是水平方向看時,黑色線上某一點的水平臨近點仍然是黑點,突變程度非常小。
由於這一特殊性質,我們想到了hessian矩陣,海塞矩陣是用來求曲率的,可以以函式的二階偏導為元素,構成乙個2x2的矩陣h:
具體可參見harris角點檢測演算法。
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個柱,直方圖的峰值代表了該關鍵點處鄰域梯度的主方向,即為關鍵點的...