1. 程式人生 > >常用角點檢測與角點匹配方法比較

常用角點檢測與角點匹配方法比較

http://www.cnblogs.com/easymind223/archive/2012/10/02/2710466.html

 

  最近這些日子,我在中科院實習了一段時間,收穫了很多寶貴的知識和經驗,也認識了一些朋友,在這裡感謝老師們對我的指導和建議。作為一名影象處理專業的數學Geek,我很喜歡做關於影象方面的演算法研究,在這裡把近幾年的角點特徵匹配方法做個總結,和大家分享一下。

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

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

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

  2.提取描述子:對於檢測出的角點,用一些數學上的特徵對其進行描述,如梯度直方圖,區域性隨機二值特徵等。

檢測子和描述子的常用提取方法有:sift, harris, surf, fast, agast, brisk, freak, brisk,orb等。

  3.匹配:通過各個角點的描述子來判斷它們在兩張影象中的對應關係。常用方法如 flann

  4.去外點:去除錯誤匹配的外點,保留正確的內點。常用方法有Ransac, GTM。

  我對上述這些常用的檢測子和描述子的效能和速度做了一個測試,以找出其中價效比最好的組合(不考慮後兩步)

                        圖一

                      圖二

  上面兩幅圖是對上述部分檢測子與描述子進行測試的結果。

  其中圖一和圖二的x座標表示不同的檢測子與描述子的組合,從1到30分別對應

(surf、agast、brisk、fast、sift、orb)檢測子與 (brisk、agast、surf、sift、orb)描述子的線性組合,如第四組表示surf檢測子+sift描述子的組合。

  圖一和圖二的y座標表示一系列測試圖片組,每組由兩張圖組成,這些圖片都是質量較低的衛星地圖,約2000*2000畫素,每組的兩張圖片是由不同衛星對地面上同一地區進行拍攝的。它們之間的關係可能包含旋轉,縮放,仿射變換,亮度變化,模糊,噪音等。從1到11的測試圖片組大概對應著以下變換關係:

  1.強烈亮度變化

  2.旋轉

  3.仿射變換+尺度變化+旋轉

  4.仿射變換+亮度變化+旋轉

  5.仿射變換+噪音

  6.模糊+亮度變化

  7.旋轉+噪音

  8.旋轉+尺度變化

  9.亮度變化+旋轉+模糊+噪音

  10. 亮度變化+旋轉+尺度變化

  11. 亮度變化+旋轉+尺度變化+強烈噪音。

  圖一的z座標表示成功匹配的畫素對的個數。圖二的z座標表示所需計算時間。

  從測試結果來看,orb檢測子與surf描述子配合的效果是最好的,不過速度也是最慢的。古老的sift和surf依然好用,速度也還是那麼不給力。在不考慮旋轉和仿射變換的情況下,fast是很不錯的選擇,在小幅旋轉(20度內)的情況下,fast也還是有一定的容錯能力的。在旋轉變化和尺度變化方面,各家武功相差不多,雖然在理論上sift支援旋轉變化,不過測試中它並沒有表現出明顯的優勢。在噪音方面,sift和orb明顯強於其它演算法;在亮度變化和仿射變換上,orb的魯棒性是最好的;綜合比較,orb的價效比在此次華山論劍中略勝一籌。

  下面兩張圖是上面11組圖片的均值,從平均值來看,orb也是最好的