Just a Computer Graphics Studio & My Life

多媒體的課一直提到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,如此就可以直接打siftmatch來跑實驗。

>> [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.

我使用我在花博拍攝的小花叢,一張遠、一張近,影像結果分別如下:

flower_siftflower2_sift

flower_match

Found 107 matches.

話說,它只能輸入.pgm檔(可攜式灰階圖),所以我用PhotoImpact(可以找小型轉檔軟體)將.jpg檔轉成.pgm檔,影像就由彩色變灰階。執行速度頗快,一下子就有結果出來,還滿好奇用C程式來跑的話,會有怎樣的效能呢?可以考慮用在期末專案上。

補充:這裡有更多SIFT實驗結果

參考:WiKi~尺度不變特徵轉換Scale-Invariant Feature TransformPortable Graymap Format (PGM)

廣告

Comments on: "SIFT (Scale-Invariant Feature Transform)" (14)

  1. 您好 本人是初學者,對match.m及sift.m檔並不知該如何修改,能否給我一份您修改的源碼讓我比對參考及學習?如果可以的話請您傳給我,萬分感謝,打擾您了 us10840@gmail.com

    喜歡

  2. 哈囉你好,我一直修改錯誤跑不出來
    不知道大大能否提供修改好的讓在下參考學習
    這是我的mail:otis20091@gmail.com

    喜歡

  3. 您好~因為我之前並未學習過MATLAB,所以我試著去修改match.m以及sift.m 卻出現錯誤不能跑。方便的話,可以請您寄給我一份您改過後的的檔案嗎? 我的信箱:goodfriend3636@gmail.com 麻煩您了,感謝

    喜歡

  4. 您好 我是初學者,對於match.m以及sift.m檔 我不知道如何修改,能否給我一份您改過的源碼讓我比對參考以及學習呢?這是我的信箱如果可以的話,萬分感謝,打擾了lan30198@gmail.com

    喜歡

  5. 您好
    我看到有paper使用次方法去區別海龜不同個體
    但裡面並沒有詳細描述使用方法
    想問問看您是否有更完整的教學?(針對毫無經驗的使用者)
    或是要利用甚麼關鍵字去搜尋

    喜歡

  6. 您好 我是初學者,對於match.m以及sift.m檔 我不知道如何修改,能否給我一份您改過的源碼讓我比對參考以及學習呢?這是我的信箱如果可以的話,萬分感謝,打擾了ppp0922326677@gmail.com

    喜歡

  7. 您的文章內提及只能輸入.pgm影像格式,這點並不正確。
    原作者所提供的matlab程式已經使用imread函數讀取影像後,再轉為.pgm格式給其原有的c程式跑。

    喜歡

  8. 其實這個matlab 程式的核心也是用c語言去跑的
    所以才會這麼快

    喜歡

  9. […] SIFT的概念可以參考我前一篇文章SIFT (Scale-Invariant Feature Transform)。 […]

    喜歡

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: