Корреляция сходство двух сигналов, векторы и т.д. Предположим, что векторы
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.Let сделает это:
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:
На практике при использовании кросс-корреляции, если есть яркость в части изображения, соотношение между этой частью и ваш шаблон будет larger.But если вы используете нормированную кросс-корреляцию, вы получите лучший результат.
Think формула такова:
Перед умножая поэлементно вы нормализующие два matrixes.By разделяющей корень квадратных сумм всех элементов матрицы вы удаляете выигрыш, если все элементы большие, то делитель большой.
Подумайте, что вы делите сумму всех элементов в матрице. Если значение пикселя находится в более яркой области, то его значения пикселей соседей будут высокими. Делая сумму своей окрестности, вы снимаете эффект освещения. Это для изображения где значения пикселей всегда положительные. Но для 2D-матрицы могут быть некоторые отрицательные значения, поэтому квадрат игнорирует знак.
Не могли бы вы объяснить нижнюю половину уравнения? Почему квадрат, а затем квадратный корень внизу? Что представляет собой нижний оператор? – JoeCodeCreations
Проверьте мои изменения. –
Thank You Very Much – JoeCodeCreations