Определение цвета кожи - PullRequest
       52

Определение цвета кожи

3 голосов
/ 12 декабря 2010

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

R > 95 AND G > 40 AND B > 20 AND
max{R, G, B} – min{R, G, B} >15 AND
|R – G| > 15 AND
R > G AND R > B
OR
R > 220 AND G > 210 AND B > 170 AND
|R – G| <= 15 AND
R > B AND G > B

http://softexpert.wordpress.com/2007/10/17/skin-color-detection/

Приветствия

Ответы [ 5 ]

6 голосов
/ 18 декабря 2010

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

Ваша первая линия атаки должна состоять в том, чтобы переключиться на другую цветовую модель, которая не зависит от освещения. На самом деле, ссылка, которую вы даете явно говорит об этом! Например, HSI. Лично я бы предпочел сделать что-нибудь с L * a * b *, но реализация преобразования из RGB была бы более сложной.

Вы должны посмотреть на добавление некоторых дополнительных предыдущих терминов, например, изолированные пиксели не могут быть скинами.

4 голосов
/ 16 декабря 2010

Существует множество методов моделирования цвета кожи, у каждого есть свои плюсы и минусы.

Выберите один на основе ваших целей.Посмотрите на эти опросы:

V.Вежневец, В. Сазонов, А. Андреева. Обзор методов определения цвета кожи на основе пикселей. Proc.Graphicon, 2003

P.Какуману, С. Макрогьяннис, Н. Бурбакис. Обзор методов моделирования и обнаружения цвета кожи. Распознавание образов, 2007

3 голосов
/ 26 марта 2013

Если вы используете RGB, у вас будут проблемы с освещением (яркостью).Лучший способ справиться с определением цвета кожи - композиция YCbCr.Y для яркости Cb и Cr для цветности.Каждый выражается в виде взвешенного выражения цветов RGB.Но вы используете только Cb и Cr для определения цвета кожи.Y отбрасывается, так как вы не хотите, чтобы яркость в вашем анализе.Так что используйте YCbCr вместо RGB.Надеюсь, я помог!

3 голосов
/ 23 декабря 2010

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

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

Дуглас Чай назвал статью «Сегментация лица с использованием карты цветов кожи в приложениях с видеофоном» Это довольно старый подход (1999). К сожалению, сама бумага стоит за платой, но подход довольно прост:

  • Обнаружение областей с потенциальными тонами кожи с использованием диапазона значений Cb и Cr
  • Морфологические операции по очистке изображения
  • Используя стандартное отклонение, дальнейшее разделение фона (низкий) и переднего плана (высокий)
  • Еще несколько морфологических операций для дальнейшей очистки изображения
  • Контурная реконструкция (плавные кривые) для получения результата
2 голосов
/ 22 декабря 2011

См. Мой ответ о надежном обнаружении рук здесь , где я рекомендовал метод, использующий цветную гистограмму, построенную с использованием только каналов оттенка и насыщенности изображения, первоначально сделанного Гэри Брадски (создателем OpenCV) по отслеживанию лиц,Он включает в себя обзор метода, а также ссылки на пример кода о том, как обнаружить область кожи.

Этот метод прост, но достаточно устойчив к шуму и изменениям освещения, а также способен обнаруживать различные оттенки кожи.Машинное обучение не требуется:).

...