OpenCv給出的MatchTemplate函數,是在一幅圖像中尋找與另一幅模闆圖像最比對(相似)部分。

一.參數詳解
MatchTemplate(InputArray image, InputArray templ, OutputArray result, int method);
image:輸入一個待比對的圖像,支援8U或者32F。
templ:輸入一個模闆圖像,與image相同類型。
result:輸出儲存結果的矩陣,32F類型。
method:要使用的資料比較方法。
1.result
result是一個結果矩陣,假設待比對圖像為 I,寬高為(W,H),模闆圖像為 T,寬高為(w,h)。那麼result的大小就為(W-w+1,H-h+1) 。
原因是因為,在比對時,以模闆大小的搜尋框依次周遊整張圖檔時,每行需要周遊(W-w+1)次,每列需要周遊(H-h+1)。
以下列矩陣為例:
待比對圖像 I.Size(5,5),模闆圖像 T.Size(3,3)。以Size(3,3)的搜尋框周遊圖像I時,x方向需要周遊3次,y方向周遊3次。
多觀察發現,歸納出result.Size(W-w+1,H-h+1)。
2.method
T 代表模闆圖像,I 代表待比對圖像。
x ,y 代表目前搜尋框在 I 矩陣中左上角元素的坐标。
x' ,y' 代表T和搜尋框框出來的 I 的矩陣的元素坐标。
如下圖:以歸一化相關系數比對方法為例。
此時搜尋框左上角坐标(x,y)=(0,0)。
對此搜尋框内的矩陣和模闆矩陣進行資料比較。
第一步:去均值。
第二步:求倆矩陣内積,以及兩個矩陣内元素平方和的平方的乘積。
對公式研究發現:
方差比對方法:完全比對會得到1, 完全不比對會得到0。
歸一化方差比對方法:完全比對結果為0。
相關性比對方法:完全比對會得到很大值,不比對會得到一個很小值或0。
歸一化的互相關比對方法:完全比對會得到1, 完全不比對會得到0。
相關系數比對方法:完全比對會得到一個很大值,完全不比對會得到0,完全負相關會得到很大的負數。
(此處與書籍以及大部分分享的資料所認為不同,研究公式發現,隻有歸一化的相關系數才會有[-1,1]的值域)
歸一化的相關系數比對方法:完全比對會得到1,完全負相關比對會得到-1,完全不比對會得到0。
如有錯誤,敬請指正,謝謝!