當前位置:編程學習大全網 - 源碼下載 - 如何匹配圖像中兩個四邊形,使得其各邊距離相等 csdn

如何匹配圖像中兩個四邊形,使得其各邊距離相等 csdn

壹、特征點(角點)匹配

圖像匹配能夠應用的場合非常多,如目標跟蹤,檢測,識別,圖像拼接等,而角點匹配最核心的技術就要屬角點匹配了,所謂角點匹配是指尋找兩幅圖像之間的特征像素點的對應關系,從而確定兩幅圖像的位置關系。

角點匹配可以分為以下四個步驟:

1、提取檢測子:在兩張待匹配的圖像中尋找那些最容易識別的像素點(角點),比如紋理豐富的物體邊緣點等。

2、提取描述子:對於檢測出的角點,用壹些數學上的特征對其進行描述,如梯度直方圖,局部隨機二值特征等。檢測子和描述子的常用提取方法有:sift,harris,surf,fast,agast,brisk,freak,brisk,brief/orb等。

3、匹配:通過各個角點的描述子來判斷它們在兩張圖像中的對應關系,常用方法如 flann等。

4、消噪:去除錯誤匹配的外點,保留正確的匹配點。常用方法有KDTREE,BBF,Ransac,GTM等。

二、SIFT匹法的提出

為了排除因為圖像遮擋和背景混亂而產生的無匹配關系的關鍵點,SIFT的作者Lowe提出了比較最近鄰距離與次近鄰距離的SIFT匹式:取壹幅圖像中的壹個SIFT關鍵點,並找出其與另壹幅圖像中歐式距離最近的前兩個關鍵點,在這兩個關鍵點中,如果最近的距離除以次近的距離得到的比率ratio少於某個閾值T,則接受這壹對匹配點。因為對於錯誤匹配,由於特征空間的高維性,相似的距離可能有大量其他的錯誤匹配,從而它的ratio值比較高。顯然降低這個比例閾值T,SIFT匹配點數目會減少,但更加穩定,反之亦然。

Loweratio的閾值為0.8,但作者對大量任意存在尺度、旋轉和亮度變化的兩幅圖片進行匹配,結果表明ratio取值在0. 4~0. 6 之間最佳,小於0. 4的很少有匹配點,大於0. 6的則存在大量錯誤匹配點,所以建議ratio的取值原則如下:

ratio=0. 4:對於準確度要求高的匹配;

ratio=0. 6:對於匹配點數目要求比較多的匹配;

ratio=0. 5:壹般情況下。

三、常見的SIFT匹配代碼

1、vlfeat中sift toolbox中的vl_ubcmatch.c使用的是普通的歐氏距離進行匹配(該SIFT代碼貢獻自Andrea

Vedaldi)。

2、Lowe的C++代碼中使用的是歐氏距離,但是在matlab代碼中為了加速計算,使用的是向量夾角來近似歐氏距離:先將128維SIFT特征向量歸壹化為單位向量(每個數除以平方和的平方根),然後點乘來得到向量夾角的余弦值,最後利用反余弦(acos函數)求取向量夾角。實驗證明Lowe的辦法正確率和耗時都很不錯。

同樣,也可以采用knnsearch函數求最近點和次近點:knnsearch采用euclidean距離時得到的結果與lowe采用的近似方法結果幾乎壹致,正好印證了模擬歐氏距離的效果。

3、Rob Hess的OpenSIFT采用了KDTREE來對匹配進行優化。

4、CSDN大神v_JULY_v實現了KDTREE+BBF對SIFT匹配的優化和消除錯誤匹配:從K近鄰算法、距離度量談到KD樹、SIFT+BBF算法

- 結構之法 算法之道 - 博客頻道 - CSDN.NET。

5、OpenCV中features2d實現的SIFT匹配有多種matcher:VectorDescriptorMatcher,BFMatcher(Brute-force descriptor matcher),FernDescriptorMatcher,OneWayDescriptorMatcher,FlannBasedMatcher 等等。目前只知道采用knnsearch,提供了多種距離度量方式,具體區別不懂。

  • 上一篇:word在線設計-如何實現在線編輯WORD文檔
  • 下一篇:數控編程的原理是什麽?
  • copyright 2024編程學習大全網