sift演算法特徵點如何匹配?

2021-09-07 13:02:51 字數 2164 閱讀 6781

我需要把一張**和訓練集中的進行匹配。我把一張**提取特徵值並建立kd樹,然後把訓練集的依次讀進來,然後把的特徵點依次放進kd樹裡面找最近的點,第乙個問題就是這2個點的距離,方向之比,長度之比在什麼範圍內算是匹配的?第二個問題是匹配的特徵點與總共的特徵點之比達到什麼範圍就可以認為2幅是匹配的?第三個問題是我們是需要找到一幅匹配的就結束還是遍歷所有以後找到最匹配的再結束?

關注者180

被瀏覽

21452

分享

邀請回答

收起關注問題寫回答

3 個回答

預設排序

小白菜

影象檢索/計算機視覺

70 人贊同了該回答

題主應該是如果只是想知道sift是怎麼在兩幅影象間進行匹配的話,下面是我總結的四種匹配方法,希望對題主了解sift匹配過程有幫助。

一般在詞袋模型中,為了提高檢索的精度,你可以通過很多的trick來提高其精度(map),其中乙個廣泛使用的技巧就是對返回的影象進行重排,重排有很多種方法,比如對多特徵在分數層(決策層)進行融合也是一種重排方式,不過這裡要做的是通過剔除查詢影象與候選影象錯配點對的方式進行重排,剔除錯配點一般採用的是ransac演算法,關於ransac原理可以閱讀ransac演算法做直線擬合這篇文章,或者採用類ransac演算法。作為初級階段的實踐,這裡從兩幅影象的匹配逐步深入。

「1nn匹配」(勿wiki,自創的乙個詞彙),講起來比較順口,而且從字面也應該可以猜測出點意思來,所以就這麼寫在這裡了。所謂的「1nn」匹配,即是對於影象im1中的某個sift特徵點point1,通過在im2影象上所有sift關鍵點查詢到與point1最近的sift關鍵點,重複這個過程,即可得到影象im1中所有的特徵點在im2中的匹配點(最近鄰,1nn)。這種匹配方法,會出現很多的錯配點,下面是採用1nn匹配的結果:

從上圖可以看到,1nn匹配的方法出現了很多的錯配點,而這些錯配點對無論是對影象檢索中的重排,還是影象拼接等,都是不希望看到的,所以得進一步對其中的錯配點對進行剔除,下面採用「1nn/2nn<0.8」的方法進行錯配點對剔除。

"1nn/2nn<0.8",不要詫異你未見過這樣一種說法,沒錯,自己瞎創的一種表述。對上面1nn方法理解了,這個水到渠成。所謂「1nn/2nn<0.8」,即對於影象im1中的某個sift特徵點point1,通過在im2影象上所有sift關鍵點查詢到與point1最近的sift關鍵點point21(記該關鍵點point21到point1的距離為dis1)和次近的關鍵點point22(記該關鍵點point22到point1的距離為dis2),如果dis1/dis2<0.8,則我們將其視為正確匹配的點對,否則則為錯配的點對予以剔除。這種尋找匹配的方法,由lowe在其distinctive image features from scale-invariant keypoints中有說明,當然,0.8這個閾值是可以調整的,不過一般都採用0.8。下面是採用該方法進行匹配後的結果:

可以看到,經過該方法匹配後,相比與「1nn」匹配方法,相比於「1nn」,這種方法進行匹配時有了很大的改善,不過正配點相比與1nn有部分損失。下面再**用ransac方法對這兩種情況進行錯配點剔除。

可以看到,經過ransac後,「1nn」中的很多錯配點對差不多剔除得比較好了,不過還有錯配的點對沒有剔除掉,圖中用紅色矩形框標出了未剔除的錯配點對。我們在來看看對「1nn/2nn<0.8」進行ransac後會是怎樣的結果呢?

在看匹配結果前,我們可以先做乙個大概的**,因為「1nn/2nn<0.8」得到的很多點就是正確匹配的點對,所以將其放入ransac中後,能夠得到很好的擬合模型,所以其剔除錯配點對效果也應該更好。為了驗證這一**,我們看一下「1nn/2nn<0.8+ransac」具體的效果,如下圖所示:

可以看到,已經完全沒有錯配點了,從這一點來說,其效果是非常好的。不過,從正配點對數目來看,「1nn+ransac」的結果更密集,也就是說「1nn+ransac」包含了更多的正配點對,「1nn/2nn<0.8+ransac」正配點對要稍微少些。在大多數情況下,我們會選擇完全剔除了錯配點對的模型。

更新一下:

這兩天自己用c++重新寫的乙個剔除錯配點的方法,效果很不錯:

先到這裡,還有很多坑要填。

編輯於 2015-08-28

分享收藏感謝

收起楊延生

更專注才會更自由

10 人贊同了該回答

發布於 2014-09-06

分享收藏感謝

陳曦 多聽、多看,少說。

SIFT特徵匹配

影象特徵分很多種,例如顏色特徵 紋理特徵 形狀特徵 空間關係特徵等。常用的特徵為sift特徵。sift scale invariantfeaturetransform,sift 具有以下特性 1 對平移 旋轉 伸縮 亮度 遮擋和雜訊等具有良好的不變性,對視覺變化 仿射變換也有一定的穩定性。2 即使少...

SIFT演算法 確定特徵點方向

sift演算法 dog尺度空間生產 sift演算法 keypoint找尋 定位與優化 sift演算法 確定特徵點方向 sift演算法 特徵描述子 目錄 1 計算鄰域梯度方向和幅值 2 計算梯度方向直方圖 3 確定特徵點方向 為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向...

SIFT演算法 確定特徵點方向

sift演算法 dog尺度空間生產 sift演算法 keypoint找尋 定位與優化 sift演算法 確定特徵點方向 sift演算法 特徵描述子 目錄 1 計算鄰域梯度方向和幅值 2 計算梯度方向直方圖 3 確定特徵點方向 為了實現影象旋轉的不變性,需要根據檢測到的特徵點的區域性影象結構求得乙個方向...