它是計算機視覺的壹種算法,用於檢測和描述圖像中的局部特征。它搜索空間尺度中的極值點,並提取它們的位置、尺度和旋轉不變量。
這個算法是David Lowe在1999發表的,2004年總結的。它的應用包括物體識別、機器人地圖感知和導航、圖像拼接、三維建模、手勢識別、圖像跟蹤和動作比較。這個算法有自己的專利,專利所有人是不列顛哥倫比亞大學。
局部圖像特征的描述和檢測有助於識別物體。SIFT特征基於物體上的壹些局部外觀興趣點,與圖像的大小和旋轉無關。對光線、噪點、視角輕微變化的容忍度也相當高。基於這些特征,它們非常重要並且相對容易檢索。在母號龐大的特征庫中,識別對象很容易,很少有誤解。SIFT特征描述覆蓋的部分物體檢測率也相當高,甚至超過三個SIFT物體特征就足以計算位置和方位。在目前計算機硬件速度和特征庫較小的情況下,識別速度可以接近實時運算。SIFT特征信息量大,適合海量數據庫中的快速準確匹配。
(2 ) ?Matlab代碼的主要功能如下:match.m:測試程序。
功能:該功能讀取兩幅(灰度)圖像,找出各自的SIFT特征,顯示兩幅圖像中連接匹配特征點(匹配關鍵點)的兩條直線(連接對應的特征點)。判斷匹配的標準是匹配距離小於距離比乘以下壹個最近匹配距離(只有當其距離小於距離比乘以到第二個最近匹配的距離時,才接受匹配)。程序返回顯示的匹配對的數量。(它返回顯示的匹配數。)調用實例:match('desk.jpg ',' book . jpg ');
調用方法及參數說明:省略。註意:(1)圖像是灰度圖像。如果是彩色圖像,應該在調用前用rgb2gray轉換成灰度圖像。
(2)參數distRatio是控制匹配點數的系數,這裏是0.6,決定匹配點數。在Match.m文件中調整該參數,以獲得最合適的匹配點數。Sift.m:尺度不變特征變換(Sift算法)的核心算法程序
函數:這個函數讀取灰度圖像並返回SIFT關鍵點。調用方法和參數描述:
調用方法:[image,descriptors,loc]= sift(圖像文件)?輸入參數:
ImageFile:圖像文件名。
輸出或返回參數(返回):
Image:是壹個雙格式格式的圖像矩陣。
描述符:壹個K乘128的矩陣x,其中每壹行都是找到的K個關鍵點的不變描述符。這個描述符是壹個具有128個值的向量,並被標準化為單位長度。
Locs:是壹個K乘4的矩陣,其中每行有四個數值,代表關鍵點位置信息(圖像行中的行坐標,列坐標(註意壹般圖像的左上角是坐標原點),scale,高斯尺度空間的參數,其中這個參數也決定了幀(結構)決定的圖像盤的大小,最後壹個參數是orientation。
這個函數創建壹個新的圖像,它包含兩個匹配的圖像以及它們之間的。
匹配對的連接直線。(3)?實際案例執行結果:
程序代碼采用matlab和C混合編程。用matlab打開文件中的sift_match.m文件並執行。如下圖所示:
從上圖可以看出,* *有17個匹配點。