Подход к сопоставлению форм и шаблонов в компьютерном зрении

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

Я думаю, что проблема лучше всего объясняется с помощью некоторых иллюстраций. У меня есть несколько шаблонов, подобных этим двум:

Pattern 1 Pattern 3

У меня также есть изображение, подобное (возможно, лучше, потому что фотография, на которой был создан этот, была довольно плохо освещена):

Picture

(Обратите внимание, как шаблон был масштабирован, чтобы соответствовать размеру изображения)

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

Я работаю с OpenCV (с привязками Python) и уже пробовал cvMatchTemplate и MatchShapes, но пока он работает не очень надежно.

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

Есть ли какие-то методы, спрятанные в OpenCV, которые я еще не нашел, или есть известный алгоритм для таких проблем, которые я должен переопределить?

С Новым годом.

6
задан Nicolas 27 December 2011 в 12:49
поделиться