1. 程式人生 > >Sift特徵點匹配過程

Sift特徵點匹配過程

由步驟一我們已經獲得了圖片的特徵點向量集合。現在來看看特徵點匹配,特徵點匹配的一個應用就是物體的識別,比如說我有2張圖片A和B,圖片的內容相同,只是圖片的大小尺寸不同。假設A圖片尺寸比較大,且我們已經採用sift演算法對圖片A和B都進行了檢測,獲得了它們的特徵點集合,現在我們的問題是需要把A和B中相應的特徵點給對應連線起來。

  既然是匹配,當然每個特徵點向量要相似才能匹配到一起,這裡採用的是歐式距離來衡量其相似度。

  對B中的特徵點x,去尋找A中最相似的點y,最簡單的方法就是拿x與A中所有點進行相似度比較,距離最小的那個為匹配點。但是如果圖片中特徵點數目很多的話,這樣效率會很低。所以我們需要把A中特徵點向量集合用一種資料結構來描述,這種描述要有利於x在A中的搜尋,即減少時間複雜度。在sift匹配中,這種資料結構採用的是kd-tree。

  裡面講得比較詳細,且舉了例子,很容易理解,這裡就沒有必要重複了。

     同樣,採用Rob Hess的程式碼做了個sift匹配的實驗,開發環境與上面的一樣。

     開啟軟體後,單擊Open Image按鈕,依次開啟需要匹配的2張圖片,如下圖所示:


單擊Sift Detect按鈕,則程式會單獨對這2幅圖片進行sift特徵點檢測,結果如下圖所示:


單擊Sift Match按鈕,則會對這2幅圖的特徵點結果進行匹配,本次實驗的匹配圖如下所示: