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

Я работал над нормализованной взаимной корреляцией для сопоставления шаблонов в пространственной области. Хотя метод медленный, он работает достаточно хорошо для моей цели. Но я увидел там странную вещь. Позвольте мне объяснить ситуацию ниже:

91 91                        91 91 9 9
91 91                        91 91 9 9
                                   8   6 7 8

образ шаблона          исходное изображение.

Теперь, когда NCC проходит через это: он находит среднее значение изображения шаблона как 91 и базового исходного изображения также как 91, а затем вычитает значение интенсивности из пикселя, что по существу обнуляет все члены в формуле, что приводит к неопределенной корреляции. значение и совпадения не найдены, даже если есть идеальное совпадение.! Как обойти эту ситуацию? Я использую следующую формулу: из отличного источника от JP. Льюис

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

Кроме того, когда я изменил формулу, чтобы вычесть (среднее / 2) из ​​интенсивности каждого пикселя, она, казалось, работала нормально, но меня беспокоит, насколько уязвим для освещения этот новый коэффициент корреляции.

Редактировать: условия даже ухудшились, когда я взял изображение шаблона 1 X 1 и имел несколько вхождений в исходном изображении. Используя приведенную выше модифицированную версию, я не смог найти подходящие совпадения. Я хотел бы изучить различные обходные пути, которые многие из вас, возможно, использовали. Спасибо.!


person peterd    schedule 05.03.2013    source источник


Ответы (1)


Идея нормализованной взаимной корреляции заключается в том, что сходство не меняется, если вы добавляете произвольное число к каждому пикселю или умножаете каждый пиксель на произвольное (неотрицательное) число. Теперь возьмите любую область 2x2 пикселя на изображении для поиска, например.

91  9
 6  7

Умножьте это на 0 и прибавьте 91 — и вы получите идеальное совпадение. Итак, в двух словах: вы не можете сопоставить «плоский» шаблон, используя нормализованную взаимную корреляцию. Или «плоская» область на изображении поиска.

Обратите внимание, что это не «ошибка» в нормализованной взаимной корреляции. Эффект, который вы видите, имеет смысл. Представьте, что кто-то протягивает вам полностью черную фотографию и спрашивает, что вы видите. Ваш ответ будет не таким: «Мне идеально подходит бэтмобиль, потому что он полностью черный», вашим ответом будет: «Не могу сказать, на изображении слишком мало контраста». Именно это NCC и пытается вам сказать делением на ноль.

Кроме того, когда я изменил формулу, чтобы вычесть (среднее значение/2) из ​​интенсивности каждого пикселя

Вы имеете в виду, что вы заменили среднее значение в числителе и знаменателе на среднее/2? Это не звучит как хорошая идея. Если шаблон или область изображения для поиска содержат только нули, вы все равно получите деление на ноль. Что еще более важно: вы вычисляете количество, которое не имеет реального значения (по крайней мере, такого, о котором я могу думать). Например, на результат сопоставления будет влиять средняя яркость области области поиска.

Я хотел бы изучить различные обходные пути [...]

Очевидным специальным обходным решением было бы добавить небольшое количество к знаменателю, поэтому «плоская» область в изображении поиска не приведет к делению на ноль. Затем вы получаете (более или менее) меру подобия, которая не изменится, если вы добавите произвольное число к каждому пикселю или умножите каждый пиксель на произвольное (неотрицательное) число, если это число не очень близко к 0< /эм>.

Но это даст вам 0 совпадений для любой плоской области области поиска или плоского шаблона. Что (как объяснено выше) имеет смысл. Если вам нужно другое поведение в этом случае, вам не нужна нормализованная взаимная корреляция.

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

person Niki    schedule 05.03.2013
comment
@nikie... спасибо за ответ. То, что вы упомянули, помогло мне понять поведение. Хотя я согласен с тем, что контраста было недостаточно, что привело к тому, что NCC не показал никаких результатов. Но что в случае шаблонного изображения 1X1; О контрасте здесь говорить не приходится, так как коэффициент контрастности всегда равен 1. Значит ли это, что NCC в данном случае использовать нельзя? Расширение: я думаю, что NCC не будет полезен в случае любого шаблонного изображения / области исходного изображения, где коэффициент контрастности = 1. - person peterd; 12.03.2013
comment
Кроме того, сейчас я подумываю поставить в своей программе проверку, что если коэффициент контрастности равен 1, то вместо NCC используется другой показатель сходства. Это звучит чисто? - person peterd; 12.03.2013
comment
@peterd: Точно, NCC не определен, если в шаблоне или в соответствующей области поискового изображения нет контраста. И говорить о корреляции с шаблоном 1х1 нет смысла. - person Niki; 12.03.2013
comment
И я не уверен в использовании двух разных мер сходства. Если вы считаете, что 91, 91, 91 идеально подходит для шаблона 91, 91, 91, но не для, например. 70, 70, 70, то вы, вероятно, вообще не хотите NCC. Это также может привести к странным последствиям, если ваша программа получит совершенно разные результаты для шаблонов 1, 1, 1 и 1, 1, 1.0001, потому что она использует совершенно другое сходство для первого. - person Niki; 12.03.2013