說明:
將平滑度約束引入特徵匹配是已知的可以實現超強魯棒匹配。 然而,這樣的匹配方案既複雜又緩慢,使得它們不適合於視頻應用。 本文提出了GMS(基於網格的運動統計),一種簡單的方法,將運動平滑度作爲一個統計量,進行局部區域的匹配。GMS可以將高匹配數字轉換成高匹配質量。 這提供了一個實時、超強的匹配系統。 評估低質量、模糊的視頻和廣泛基線顯示,GMS始終如一地優於其他實時匹配器。
項目主頁:http://jwbian.net/gms
本人主頁:http://jwbian.net
C++代碼:https://github.com/JiawangBian/GMS-Feature-Matcher
論文GMS的方法實際上是消除錯誤匹配的一種方案,比如可以替換ransac。算法執行的大致流程是:先執行任意一種特徵點的檢測和特徵點的描述子計算,論文中採用的是ORB特徵。然後執行暴力匹配BF,最後執行GMS以消除錯誤匹配。
opencv的ransac非常耗時,他這個GMS則非常快,比opencv的ransac快好幾倍。我是說在同樣特徵點執行錯誤消除的時候要比openCV的ransac快。實際上ransac可以優化到非常快,至少可以比openCV的ransac要快10倍以上。
如果說是超越sift,是從最終的效果上看的。其實兩個完全不是一個可以直接進行比較的對象。
如論文中所說,ORB特徵採用1w個特徵點,則orb部分耗時佔90%,而GMS的時間可能之佔10%。論文中的GMS需要大量的特徵點,佔時間的將會集中在最前面部分了。這樣對比才是對的:
傳統的匹配: ORB + BF + RANSAC的時間比例是:30% + 30% + 40%
GMS匹配 : ORB + BF + GMS的時間比例是 :50% + 40% + 10%
當然最終的效果的確不錯,這是論文中值得稱道的地方。具體還要看應用場景,gms只是解決匹配的問題,ransac除了消除錯誤匹配,最重要的是得到了圖像之間的投影變換矩陣。而且有一點,如果把特徵點的數量弄到只有幾百個,那最終的效果勢必會大打折扣。具體需要進一步去跑跑代碼才能知道。
我的結論是:在同樣特徵點個數的情況下,用ORB+BF+GMS 的時間 小於 SIFT + RANSAC的時間。
爲了保證效果,特徵點的個數就會很多。這時候ORB+BF+GMS的匹配效果要遠好於SIFT+RANSAC,但整個時間可能和SIFT+SANSAC的時間相當甚至還要長。