Объяснение взаимной корреляции и нормализации для шаблона соответствия openCV

Мой босс и я не согласны с тем, что происходит с методом CV_TM_CCORR_NORMED для matchTemplate(); в openCV.

Не могли бы вы объяснить, что здесь происходит, особенно аспект квадратного корня этого уравнения.


person JoeCodeCreations    schedule 13.02.2015    source источник


Ответы (1)


Корреляция — это сходство двух сигналов, векторов и т. д. Предположим, у вас есть векторы

 template=[0 1 0 0 1 0 ]   A=[0 1 1 1 0 0] B =[ 1 0 0 0 0 1]  

если вы выполняете корреляцию между векторами и шаблоном, чтобы получить, какой из них более похож, вы увидите, что A похож на template больше, чем B, потому что 1 размещены в соответствующих индексах. Это означает, что чем больше ненулевых элементов соответствует, тем больше корреляция между векторами.

В изображениях в градациях серого значения находятся в диапазоне 0-255. Давайте сделаем это:

template=[10 250 36 30] A=[10 250 36 30] B=[220 251 240 210] .

Здесь ясно, что A такое же, как template, но корреляция между B и template больше, чем A и template. В нормированной кросс-корреляционной части знаменателя часть формулы решает эту проблему. Если вы проверите приведенную ниже формулу, то увидите, что знаменатель для B(x)template будет намного больше, чем A(x)template.

Формула, указанная в документации opencv: введите здесь описание изображения

На практике, если вы используете взаимную корреляцию, если в части изображения есть яркость, корреляция между этой частью и вашим шаблоном будет больше. Но если вы используете нормализованную взаимную корреляцию, вы получите лучший результат.

Подумайте, формула такова:

введите здесь описание изображения

Перед умножением поэлементно вы нормализуете две матрицы. Разделив корень квадрата из суммы всех элементов в матрице, вы удалите выигрыш; если все элементы большие, то делитель большой.

Думайте, что вы делите сумму всех элементов в матрице. Если значение пикселя находится в более яркой области, то значения пикселей его соседей будут высокими. Путем деления суммы его соседства вы удаляете эффект освещения. Это для обработки изображений, где значения пикселей всегда положительны. Но для 2D-матрицы могут быть отрицательные значения, поэтому при возведении в квадрат игнорируется знак.

person Muhammet Ali Asan    schedule 16.02.2015
comment
Не могли бы вы объяснить нижнюю часть уравнения? Почему квадрат, а затем квадратный корень внизу? Что оно представляет собой это нижнее утверждение? - person JoeCodeCreations; 17.02.2015
comment
Спасибо. Это действительно очень помогло. - person kiranpradeep; 27.03.2015