2014-11-21 2 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); 

을 예상하지만 채워진 원과 거의 같은 크기의 채워진 사각형을 비교할 때 1.0을주기 때문에이 채워진 원을 비교할 때 그것은 예상 .99 있습니다.

무엇이 잘못 되었나요? 이미지는 흑백으로되어 있습니다. 당신이 중 하나를

또는 뭔가 다른 일이 벌어지고 (당신이 것처럼 보이지 않는) 후 값을 정상화하는 1.0를 얻는 경우

+0

무엇을 기대 했습니까? –

+0

그것의 shouldnt는 1.0 ... atleast보다 작고 .99 (똑같은 이미지를 비교할 때의 결과이다.) –

+0

나는 그 문장의 정확성을 의심한다. AFAIK,'matchTemplate'는 상관 관계를 수행합니다.이 결과는 영역이 "가장 일치하는"가장 큰 값을가집니다. 다른 지역이 더 잘 어울릴 가능성이 높습니다. –

답변

0

완벽한 경기는 0.99999999

로 표시한다 .

당신은 확인 할 수 있습니다 귀하의 크기가 올바른지 (검색 템플릿, 결과 매트릭스 등)

내가 정말 완벽하게 일치와 자신이 테스트 한대로 1.0 반환받을해야한다고 생각하지 않으며, 내 결과는 .9999 .....

+0

또한 다른 방정식을 사용해보십시오. – JoeCodeCreations