Идентификация особенностей руки при обработке изображений

Я работаю над проблемой (в 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, но результаты обоих методов были очень плохими.

Может кто-нибудь дать мне несколько советов?


person user170353    schedule 06.10.2011    source источник
comment
Вы уже разместили очень похожий вопрос под другим именем пользователя. Пожалуйста, отредактируйте этот вопрос с учетом ваших новых идей и удалите этот.   -  person Dr. belisarius    schedule 07.10.2011
comment
возможный дубликат идентификация цвета кожи при обработке изображений   -  person Dr. belisarius    schedule 07.10.2011


Ответы (1)


Это трудная проблема, поскольку рука — такой гибкий объект. Возможно, вам повезет, если вы сначала решите задачу оценки позы руки. Вот хороший документ, который поможет вам разобраться в исследовательском пространстве:

Оценка позы рук на основе зрения: обзор

Пример видео с реализацией OpenCV:

http://www.youtube.com/watch?v=uETHJQhK144

Когда у вас есть оценка позы руки, у вас есть основа для выделения и сравнения одной и той же области каждой руки (например, только области между суставами пальцев и запястьем). Затем вы можете начать применять общие методы сопоставления изображений. Применение примера Eigenfaces ("Eigenhands" в вашем случае) может быть вашим лучшим выбором. Eigenfaces преподается на начальных курсах по компьютерному зрению, и тонны информации доступны в Интернете.

person Matt Montag    schedule 06.10.2011
comment
Спасибо за информацию, я создал ручную модель, но теперь мне нужны фильтры, чтобы извлечь из рук мелкие уникальные детали, такие как более темные пятна. Как я объяснил в своем первом посте, лапласиан выявил многие из этих функций, но я думаю, что мне нужны другие фильтры, чтобы сделать эти детали более заметными, прежде чем я смогу их отслеживать. Я пробовал фильтры градиента и Собеля, но некоторые советы были бы кстати. Кроме того, я думаю, что мне нужен алгоритм для сопоставления этих признаков на других изображениях (например, сравнение небольшого образца с черным пятном, извлеченным из руки, с другими руками). Я не сейчас, если есть конкретные algor. - person user170353; 11.10.2011
comment
Да, когда у вас есть область руки, которую вы хотите отслеживать, правильно зарегистрированная и преобразованная, у вас есть основа для сопоставления изображений. Обучение классификатора Хаара — правильный путь, но очень сложный. Применение примера Eigenfaces (Eigenhands в вашем случае) может быть вашим лучшим выбором. Eigenfaces преподается на начальных курсах по компьютерному зрению, и тонны информации доступны в Интернете. Если вы нашли мой ответ полезным, пожалуйста, проголосуйте или примите его. :) Спасибо - person Matt Montag; 12.10.2011