Интерпретация результатов с использованием 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);

Это дает ожидаемый 0,99 при сравнении 2 заполненных кругов, как ожидалось

Но он дает 1,0 при сравнении заполненного круга и заполненного квадрата почти одинакового размера.

Что я делаю неправильно? Изображения в черно-белом.

1 ответ

Идеальное совпадение должно отображаться как.99999999

Если вы получаете 1.0, вы либо нормализуете значения после (что не похоже на вас)

или что-то еще происходит.

Возможно, вы захотите убедиться, что ваш размер правильный (шаблон поиска, матрица результатов и т. Д.)

Я действительно не думаю, что вы должны получить 1.0, потому что я сам проверил это с идеальным соответствием, и мои результаты были.9999.....

Другие вопросы по тегам