2014-11-21 125 views
0

我試圖使用以下matchTemplate代碼匹配2個圖像。使用matchTemplate解釋結果

   int match_method = Imgproc.TM_CCOEFF_NORMED; 
       int result_colsAB = matB.cols() - matA.cols() + 1; 
       int result_rowsAB = matB.rows() - matA.rows() + 1; 


       Mat resultAB = new Mat(result_rowsAB, result_colsAB, CvType.CV_8UC1); 


       Imgproc.matchTemplate(matA, matB, resultAB,match_method); 

       //Core.normalize(resultAB, resultAB, 0.0, 1.0, Core.NORM_MINMAX, -1, new Mat()); 
       MinMaxLocResult mmr = Core.minMaxLoc(resultAB); 
       System.out.println(mmr.maxVal); 

比較2米填充的圓圈時如預期

但對比實心圓和幾乎相同的尺寸的填充的正方形時,它提供一個1.0它使預計0.99。

我在做什麼錯?圖像是黑色和白色。

+0

你在期待什麼? – 2014-11-21 06:52:01

+0

它不應該給1.0 ...至少少於.99的東西(這是比較完全相同的圖像時的結果) – 2014-11-23 17:04:12

+0

我懷疑這句話的正確性。 AFAIK,'matchTemplate'做了一個相關性,其結果是在區域「最匹配」時具有最大值。另一個地區很可能會出現更好的匹配。 – 2014-11-23 17:08:50

回答

0

一場完美的比賽應該顯示爲.99999999

如果你得到一個1.0你要麼後的標準化值(它看起來並不像你)

或別的東西是怎麼回事。

你可能想確保你的大小是正確的(搜索模板,結果矩陣等)

我真的不認爲你應該得到一個1.0返回我有一個完美的匹配測試,這和我自己我的結果是.9999 .....

+0

另外,你應該嘗試使用不同的方程 – JoeCodeCreations 2015-02-20 15:33:02