сравнение двух двоичных изображений в opencv

У меня есть два бинарных изображения руки, которые почти одинаковы. Как мне их сравнить, чтобы узнать, представляют ли они почти одинаковую форму или нет. Я попытался найти евклидово расстояние между двумя изображениями, но это не дает правильного ответа, если изображение слегка изменено или перемещен влево или вправо или небольшое уменьшение размера. Я также пробовал дескрипторы HOG в opencv, но я не могу получить правильный ответ, если сравниваю более одного изображения. Каков наилучший способ сравнить два бинарных изображения на основе формы или любой функция определения почти совпадающих изображений без учета размера изображения. Ссылки на изображения: http://postimg.org/image/w20tuuzmv/ и http://postimg.org/image/jndr4br9x/


person madhu chary    schedule 18.03.2015    source источник


Ответы (2)


Я думаю, что обобщенное преобразование Хафа может быть хорошим решением для вас. Вот учебник по этому вопросу.

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

person cyriel    schedule 18.03.2015

Изображения просто повернуты, переведены и масштабированы? Если это так, вы можете вычислить основные компоненты изображений с помощью PCA, а затем повернуть изображения так, чтобы первый компонент был в определенном направлении (например, всегда вертикально), вы могли бы затем вычислить центроиды изображений и перевести их так, чтобы они всегда были в одинаковое положение (например, в центре изображения), чтобы всегда использовать один и тот же масштаб, вы можете изменить размер изображений так, чтобы сумма расстояний между каждым белым пикселем и центроидом была одинаковой на обоих изображениях. Теперь легко сравнить изображения, например score = np.sum(A==B)

person João Abrantes    schedule 18.03.2015