多媒體的課一直提到SIFT技術,然而直到今天我才真正弄懂,雖然還是對數學式子不太瞭解,但至少知道它在做什麼!SIFT (Scale-Invariant Feature Transform)是一種電腦視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數。若找兩影像的關鍵點特徵來比對,可發現越相似的影像,關鍵點特徵符合數越多,藉此來判斷兩影像的相似度。
我直接到研究者的網站:Demo Software: SIFT Keypoint Detector,裡頭有SIFT demo program(Version 4, July 2005)。原本很笨地想用C程式來跑,可是發現MatLAB更好用!
SIFT的作用在:局部影像特徵的描述與偵測可以幫助辨識物體,SIFT 特徵是基於物體上的一些局部外觀的興趣點而與影像的大小和旋轉無關。 對於光線、雜訊、些微視角改變的容忍度也相當高。基於這些特性,它們是高度顯著而且相對容易擷取,在母數龐大的特徵資料庫中,很容易辨識物體而且鮮有誤認。
開啟MatLAB後,將Current Directory指定到C:\siftDemoV4,如此就可以直接打sift和match來跑實驗。
>> [image, descrips, locs] = sift(‘flower.pgm’);
Finding keypoints…
2378 keypoints found.
>> showkeys(image, locs);
Drawing SIFT keypoints …
>> [image, descrips, locs] = sift(‘flower2.pgm’);
Finding keypoints…
1674 keypoints found.
>> showkeys(image, locs);
Drawing SIFT keypoints …>> match(‘flower.pgm’,’flower2.pgm’);
Finding keypoints…
2378 keypoints found.
Finding keypoints…
1674 keypoints found.
Found 107 matches.
我使用我在花博拍攝的小花叢,一張遠、一張近,影像結果分別如下:
話說,它只能輸入.pgm檔(可攜式灰階圖),所以我用PhotoImpact(可以找小型轉檔軟體)將.jpg檔轉成.pgm檔,影像就由彩色變灰階。執行速度頗快,一下子就有結果出來,還滿好奇用C程式來跑的話,會有怎樣的效能呢?可以考慮用在期末專案上。
補充:這裡有更多SIFT實驗結果。
參考:WiKi~尺度不變特徵轉換、Scale-Invariant Feature Transform、Portable Graymap Format (PGM)。



Comments on: "SIFT (Scale-Invariant Feature Transform)" (14)
您好 本人是初學者,對match.m及sift.m檔並不知該如何修改,能否給我一份您修改的源碼讓我比對參考及學習?如果可以的話請您傳給我,萬分感謝,打擾您了 us10840@gmail.com
讚讚
哈囉你好,我一直修改錯誤跑不出來
不知道大大能否提供修改好的讓在下參考學習
這是我的mail:otis20091@gmail.com
讚讚
您好~因為我之前並未學習過MATLAB,所以我試著去修改match.m以及sift.m 卻出現錯誤不能跑。方便的話,可以請您寄給我一份您改過後的的檔案嗎? 我的信箱:goodfriend3636@gmail.com 麻煩您了,感謝
讚讚
您好 我是初學者,對於match.m以及sift.m檔 我不知道如何修改,能否給我一份您改過的源碼讓我比對參考以及學習呢?這是我的信箱如果可以的話,萬分感謝,打擾了lan30198@gmail.com
讚讚
您好: 我修改了match.m與sift.m這兩個黨 可是一直出現,可否給我您修改過的程式碼借我參考
這是我的信箱 blackangel076@hotmail.com 謝謝您
讚讚
留言錯地方..SOR
讚讚
您好
我看到有paper使用次方法去區別海龜不同個體
但裡面並沒有詳細描述使用方法
想問問看您是否有更完整的教學?(針對毫無經驗的使用者)
或是要利用甚麼關鍵字去搜尋
讚讚
您好 我是初學者,對於match.m以及sift.m檔 我不知道如何修改,能否給我一份您改過的源碼讓我比對參考以及學習呢?這是我的信箱如果可以的話,萬分感謝,打擾了ppp0922326677@gmail.com
讚讚
我已經寄給你囉!敬請參考~ 🙂
讚讚
您的文章內提及只能輸入.pgm影像格式,這點並不正確。
原作者所提供的matlab程式已經使用imread函數讀取影像後,再轉為.pgm格式給其原有的c程式跑。
讚讚
感謝您的指正,之前我試過jpg影像,但沒有成功,如果您已試驗成功,那就表示原程式可以用像jpg、png這類影像來處理。
讚讚
其實這個matlab 程式的核心也是用c語言去跑的
所以才會這麼快
讚讚
原來如此!看來你對matlab十分熟悉唷~
讚讚
[…] SIFT的概念可以參考我前一篇文章SIFT (Scale-Invariant Feature Transform)。 […]
讚讚