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

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

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/

Ваше здоровье


person user346443    schedule 12.12.2010    source источник
comment
youtube.com/watch?v=t4DT3tQqgRM   -  person Tom Anderson    schedule 18.12.2010


Ответы (5)


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

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

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

person koan    schedule 18.12.2010

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

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

В. Вежневец, В. Сазонов, А. Андреева. Опрос по пиксельной на основе методов определения цвета кожи. Proc. Графикон, 2003 г.

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

person Roman Shapovalov    schedule 16.12.2010
comment
@AlexanderTroshchenko FTFY, сэр. - person Roman Shapovalov; 29.09.2015

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

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

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

  • Обнаружение областей с потенциальными оттенками кожи с использованием диапазона Cb и Cr
  • Морфологические операции по очистке изображения
  • Используя стандартное отклонение, дальнейшее разделение фона (низкое) и переднего плана (высокое)
  • Еще несколько морфологических операций для дальнейшей очистки изображения
  • Реконструкция контура (сглаженные кривые) для получения результата
person mpenkov    schedule 23.12.2010

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

person Jos    schedule 26.03.2013

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

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

person lightalchemist    schedule 22.12.2011