1. 程式人生 > 其它 >二維視角下的模板匹配

二維視角下的模板匹配

目錄

昨天組會彙報了一下二維條件下的模板匹配,用這篇部落格記錄一下,順便再理一理思路,方便向三維的模板匹配擴充套件。

模板匹配定義:

模板匹配是一種最原始、最基本的模式識別方法,研究某一特定物件物的圖案位於影象的什麼地方,進而識別物件物,這就是一個匹配問題。

可以這樣理解,手中有兩張圖片,一張是模板圖片,另一張是場景圖片,要找到模板在場景中的位置,同時確定模板圖片到場景圖片的變換矩陣\(H\)。這樣的一個任務。

相關演算法

基於灰度值的模板匹配

解釋一下相關的原理:

在OpenCV中支援以下6種對比方式:

  • CV_TM_SQDIFF 平方差匹配法:該方法採用平方差來進行匹配;最好的匹配值為0;匹配越差,匹配值越大。
  • CV_TM_CCORR 相關匹配法:該方法採用乘法操作;數值越大表明匹配程度越好。
  • CV_TM_CCOEFF 相關係數匹配法:1表示完美的匹配;-1表示最差的匹配。
  • CV_TM_SQDIFF_NORMED 歸一化平方差匹配法
  • CV_TM_CCORR_NORMED 歸一化相關匹配法
  • CV_TM_CCOEFF_NORMED 歸一化相關係數匹配法

我們看一下匹配的實際情況:

這個方法其實是很不"智慧",結合原理可知。一旦模板發生大幅度的旋轉,放縮,錯切,則匹配就會很難成功。而且也很難應對相機拍攝角度發生變化的情況。

如果有小夥伴有針對這個的優化想法,歡迎留言討論。

基於描述符的模板匹配

這個是很值得探討的一種模板匹配的方法,我們可以先看一下流程圖:

模板圖和場景圖分別通過特徵提取演算法得到它們各自的特徵點描述子,然後將描述子送入KNN進行匹配,建立起點到點的對應關係。之後再用OpenCV裡的findHomography()函式求出點到點的對映矩陣。之後再用模板圖片邊框四個點的座標乘以這個對映矩陣,就得到了模板圖片在場景圖片中的位置。

這個演算法最重要的地方是特徵提取演算法。演算法提取到的特徵點,描述子是否能夠對圖片的旋轉,放縮,錯切等變換具有魯棒性,將直接決定KNN中能有多少點匹配上,進而影響後面的操作。舉個例子,一個模板圖片

,相對於場景圖片發生了一些透視變換,如果導致提取到的描述子的“距離變遠了”,那這個演算法就不能很好的應對這些變換。

我們以sift舉例,表現還不錯:

基於學習的特徵提取演算法與SIFT進行對比

基於學習的特徵提取演算法,以SuperPoint為例。

總結如下:

SuperPoint無法匹配較大透視變換的原因推測:

原文: