天天看點

【 OpenCV 】MatchTemplate函數參數詳解及原理分析

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

【 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)。

【 OpenCV 】MatchTemplate函數參數詳解及原理分析

     2.method

【 OpenCV 】MatchTemplate函數參數詳解及原理分析

         T 代表模闆圖像,I 代表待比對圖像。

        x ,y 代表目前搜尋框在 I 矩陣中左上角元素的坐标。

        x' ,y' 代表T和搜尋框框出來的 I 的矩陣的元素坐标。

        如下圖:以歸一化相關系數比對方法為例。

        此時搜尋框左上角坐标(x,y)=(0,0)。

【 OpenCV 】MatchTemplate函數參數詳解及原理分析

          對此搜尋框内的矩陣和模闆矩陣進行資料比較。

          第一步:去均值。

          第二步:求倆矩陣内積,以及兩個矩陣内元素平方和的平方的乘積。

【 OpenCV 】MatchTemplate函數參數詳解及原理分析

        對公式研究發現:

               方差比對方法:完全比對會得到1, 完全不比對會得到0。

               歸一化方差比對方法:完全比對結果為0。

               相關性比對方法:完全比對會得到很大值,不比對會得到一個很小值或0。

               歸一化的互相關比對方法:完全比對會得到1, 完全不比對會得到0。

               相關系數比對方法:完全比對會得到一個很大值,完全不比對會得到0,完全負相關會得到很大的負數。

      (此處與書籍以及大部分分享的資料所認為不同,研究公式發現,隻有歸一化的相關系數才會有[-1,1]的值域)

               歸一化的相關系數比對方法:完全比對會得到1,完全負相關比對會得到-1,完全不比對會得到0。

    如有錯誤,敬請指正,謝謝!