Подтвердить что ты не робот

Обнаружение надежной руки через компьютерное зрение

В настоящее время я работаю над системой для надежного обнаружения рук.

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

Пока это работает очень хорошо, но я хотел спросить, есть ли лучший способ решить это? Например, я нашел несколько работ, посвященных конкретным цветовым пространствам для кавказских людей, но ни один из них не сравнился с азиатскими/африканскими/кавказскими цветовыми тонами.

Кстати, я работаю с OpenCV через привязки Python.

4b9b3361

Ответ 1

Вы взглянули на бумагу для переноски Gary Bradski? Вы можете скачать его из здесь

Я использовал алгоритм обнаружения кожи год назад для обнаружения областей кожи для отслеживания рук, и он является надежным. Это зависит от того, как вы его используете.

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

  • Преобразование изображения в цветовое пространство HSV.
  • Выбросьте V-канал и рассмотрите канал H и S и, следовательно, скидка на вариации освещения.
  • Пороговые пиксели с низким насыщением из-за их нестабильности.
  • Вставьте выбранную область кожи в двумерную гистограмму. (OpenCV "calcHist function) Эта гистограмма теперь действует как модель для кожи.
  • Вычислить "обратный проект" (т.е. использовать гистограмму для вычисления "вероятности" ) что каждый пиксель в вашем изображении имеет цвет тона кожи), используя calcBackProject. кожа регионы будут иметь высокие значения.
  • Затем вы можете использовать meanShift для поиска режима 2D "вероятностная" карта, сгенерированная backproject, или для обнаружения капель высокая "вероятность".

Отбрасывание V-канала в HSV и только с учетом каналов H и S действительно достаточно (удивительно) для обнаружения разных тонов кожи и при различных вариациях освещения. Плюсом является то, что его вычисление выполняется быстро.

Эти шаги и соответствующий код можно найти в оригинальной книге OpenCV.

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

Итак, в заключение, если вы только пытаетесь обнаружить области кожи, используя цвет, то перейдите к методу гистограммы. Вы можете приспособить его к рассмотрению локального градиента (например, гистограмму градиентов, но, возможно, не в полной мере использовать аллогенный детектор Dalal и Trigg), чтобы он мог различать кожу и области с подобным цветом (например, картона или деревянной мебели), используя локальную информацию текстуры. Но это потребует больших усилий.

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

Для более сложного подхода вы можете взглянуть на работу "Обнаружение обнаженных людей" Маргарет Флек и Дэвид Форсайт. Это была одна из ранних работ по обнаружению областей кожи, которые учитывают как цвет, так и текстуру. Подробности можно найти здесь.

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

Надеюсь, что это поможет.

Ответ 2

Здесь - статья об обнаружении кожи адаптивной гауссовой смеси, которую вы можете найти интересной.

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

Наконец, Google Scholar может быть большой помощью в поиске современного уровня обнаружения кожи. В настоящее время он активно изучается в adademia, а также используется в промышленности (например, Google Images и Facebook загружает политики изображения).

Ответ 3

Я работал над чем-то подобным 2 года назад. Вы можете попробовать Фильтр частиц (Condensation), используя цветные пиксели цвета в качестве входных данных для инициализации. Он довольно прочный и быстрый. Способ, которым я применил его для моего проекта, находится в этой ссылке. У вас есть как презентация (слайды), так и опрос. Если вы инициализируете цвет руки с реальным цветом, извлеченным из руки, которую вы собираетесь отслеживать, у вас не должно быть проблем с черными людьми.

Для фильтра частиц, я думаю, вы можете найти образцы реализации кода. Удачи.

Ответ 4

Вам будет трудно найти тон кожи, основанный только на цвете.
Прежде всего, это сильно зависит от алгоритма автоматического баланса белого. Например, на этом изображении любой человек может видеть, что цвет - это тон кожи. Но для компьютера он будет синим. enter image description here

Во-вторых, правильная цветовая калибровка в цифровых камерах - это трудная вещь, и она будет редко достаточно точной для ваших целей. Вы можете увидеть www.DPReview.com, чтобы понять, что я имею в виду.

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

Ответ 5

Ну, мой опыт моделирования кожи плох, потому что: 1) молния может меняться - сегментация кожи не является надежной 2) он также отметит ваше лицо (как другие объекты, похожие на кожу)

Я бы использовал методы машинного обучения, такие как обучение Хаара, которые, на мой взгляд, гораздо лучше подходят, чем моделирование и исправление некоторых ограничений (например, обнаружение кожи + порог...)