Я работаю над проблемой (в C++/opencv), в которой 4 пользователя необходимо отличить друг от друга, используя идентификационную информацию, извлеченную из цвета кожи и особенностей верхней руки. Однако метод цвета кожи (в YCrCb) имеет очень низкую надежность, поскольку между оттенками кожи нет большой разницы. Поэтому я пытаюсь извлечь из рук больше деталей, таких как более темные пятна и т. д. Для этого я вычислил лапласиан изображений. Результаты:
http://imageshack.us/photo/my-images/818/afb1.jpg/
http://imageshack.us/photo/my-images/31/afb2i.jpg/
http://imageshack.us/photo/my-images/638/afb3.jpg/
Первые два изображения сделаны одной и той же рукой/человеком. Второе изображение — рука другого человека. Как видите, на первых двух изображениях видно четкое светлое пятно, представляющее более темные пятна руки. Моя идея состояла в том, чтобы сэмплировать контур руки в виде маленьких квадратов и искать эти квадраты на других изображениях. После этого мы можем оценить, какое изображение имеет наибольшее количество совпадений с данным изображением.
Однако я не могу найти алгоритм для поиска совпадений между образцом изображения и другим изображением. Я попробовал операцию cvMatchTemplate() (http://dasl.mem.drexel.edu/~noahKuntz/openCVTut6.html#Step%202) и алгоритм meanShift, но результаты обоих методов были очень плохими.
Может кто-нибудь дать мне несколько советов?