SIFT算法原理(不带公式)
尺度不變特征轉換(Scale-invariant feature transform或SIFT)是David Lowe于1999年提出的局部特征描述子,并于2004年進行了更深入的發(fā)展和完善。Sift特征匹配算法可以處理兩幅圖像之間發(fā)生平移、旋轉、仿射變換情況下的匹配問題,具有很強的匹配能力。
1、SIFT算子特性
Sift算子具有以下特性:
(1)、Sift特征是圖像的局部特征,對平移、旋轉、尺度縮放、亮度變化、遮擋和噪聲等具有良好的不變性,對視覺變化、仿射變換也保持一定程度的穩(wěn)性。
(2)、獨特性好,信息量豐富,適用于在海量特征數(shù)據(jù)庫中進行快速、準確的匹配。
(3)、多量性,即使少數(shù)的幾個物體也可以產(chǎn)生大量Sift特征向量。
(4)、速度相對較快,經(jīng)優(yōu)化的Sift匹配算法甚至可以達到實時的要求。
(5)、可擴展性強,可以很方便的與其他形式的特征向量進行聯(lián)合。
2、SIFT特征匹配
Sift特征匹配算法主要包括兩個階段,
第一階段是Sift特征的生成。即從多幅圖像中提取對尺度縮放、旋轉、亮度變化無關的特征向量,如角點、邊緣點、暗區(qū)的亮點及亮區(qū)的暗點等。
第二階段是Sift特征向量的匹配。
2.1、Sift特征的生成一般包括以下幾個步驟:
(1)、構建尺度空間,檢測極值點,獲得尺度不變性。
搜索所有尺度上的圖像位置,通過高斯微分函數(shù)來識別潛在的對于尺度和旋轉不變的興趣點。
(2)、特征點過濾并進行精確定位。
在每個候選的位置上,通過一個擬合精細的模型來確定位置和尺度,關鍵點的選擇依據(jù)于它們的穩(wěn)定程度。
(3)、為特征點分配方向值;
基于圖像局部的梯度方向,分配給每個關鍵點位置一個或多個方向,所有后面的對圖像數(shù)據(jù)的操作都相對于關鍵點的方向、尺度和位置進行變換,從而提供對于這些變換的不變性。
至此,圖像的關鍵點(特征)已經(jīng)檢測完畢,每個關鍵點有三個信息:位置,所處尺度、方向,由此可以確定一個SIFT特征區(qū)域。
(4)、生成關鍵點描述子。
以特征點為中心取16*16的鄰域作為采樣窗口,將采樣點與特征點的相對方向通過高斯加權后歸入包含8個bin的方向直方圖,最后獲得4*4*8的128維特征描述子
步驟如下:
首先將坐標軸旋轉為關鍵點的方向,以確保旋轉不變性。以關鍵點為中心取8×8的窗口。
Figure.16*16的圖中其中1/4的特征點梯度方向及scale,右圖為其加權到8個主方向后的效果。
圖左部分的中央為當前關鍵點的位置,每個小格代表關鍵點鄰域所在尺度空間的一個像素,利用公式求得每個像素的梯度幅值與梯度方向,箭頭方向代表該像素的梯度方向,箭頭長度代表梯度模值,然后用高斯窗口對其進行加權運算。
圖中藍色的圈代表高斯加權的范圍(越靠近關鍵點的像素梯度方向信息貢獻越大)。然后在每4×4的小塊上計算8個方向的梯度方向直方圖,繪制每個梯度方向的累加值,即可形成一個種子點,如圖右部分示。此圖中一個關鍵點由2×2共4個種子點組成,每個種子點有8個方向向量信息。這種鄰域方向性信息聯(lián)合的思想增強了算法抗噪聲的能力,同時對于含有定位誤差的特征匹配也提供了較好的容錯性。
計算keypoint周圍的16*16的window中每一個像素的梯度,而且使用高斯下降函數(shù)降低遠離中心的權重。
Figure.keypoint周圍的16*16區(qū)域
這樣就可以對每個feature形成一個4*4*8=128維的描述子,每一維都可以表示4*4個格子中一個的scale/orientation(尺寸/方向)。 將這個向量歸一化之后,就進一步去除了光照的影響。
2.2、Sift特征匹配:
當兩幅圖像的Sift特征向量生成以后,下一步就可以采用關鍵點特征向量的歐式距離來作為兩幅圖像中關鍵點的相似性判定度量。取圖1的某個關鍵點,通過遍 歷找到圖像2中的距離最近的兩個關鍵點。在這兩個關鍵點中,如果次近距離除以最近距離小于某個闕值,則判定為一對匹配點。
參考:
http://blog.csdn.net/haluoluo211/article/details/52767143
http://blog.csdn.net/wys2011101169/article/details/53925134
http://doc.orz520.com/a/doc/2014/1013/2078573.html
總結
以上是生活随笔為你收集整理的SIFT算法原理(不带公式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “国民神车”也沦陷了?车主购车三年后不付
- 下一篇: 最强充电手机!realme GT Neo