2013-08-16 3 views
2

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

Как я могу (с высокой% правильностью) различать цвета?

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

Использование opencv (или любого другого инструмента, потому что у меня уже есть волосы), какой алгоритм или методы предварительной обработки следует применять для «нормализации» этих проблем и сведения к минимуму ошибок?

Большое спасибо.

+0

Чтобы различать цвета, цветовое пространство HSV обычно является хорошим вариантом, потому что вы можете напрямую получить оттенок. – ChronoTrigger

+0

Вы решили проблему? – Suisse

ответ

1

Я думаю, вы можете использовать методы машинного обучения для классификации цветов. Просто классифицируйте классификатор (например, SVM или нейронную сеть) на образцах цветов для прослушивания (вы можете взять гистограмму цвета в качестве входного вектора) и некоторые классы (названия цветов). Я думаю, что это будет хороший метод борьбы со светлыми изменениями, шумом, тенями и т. Д. И я думаю, что лучше использовать некоторое расширенное цветовое пространство L * a * b * или HSV.

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

+0

Спасибо, я прочитал немного больше, и на самом деле я должен использовать (как опция) YCbCr, опустив Y. Принимая некоторые образцы цветовых диапазонов волос и имея их в пространстве YCbCr, затем сравнивали с изолированным (также в YCbCr) волосы каждой картины. Я прав? спасибо – voskyc

+0

Нет, я имею в виду, например: у вас есть вектор цветовой гистограммы {1,2,3,42,4,2,6}, и вы назначаете ярлык, например. «Желтый». У вас много таких пар. Затем вы можете обучить классификатор, используя эти данные. И после тренировки он получит от вас вектор гистограммы и даст вам название цвета. –

+0

Здесь вы можете прочитать об использовании ML в аналогичной проблеме: http://lear.inrialpes.fr/pubs/2009/VSVL09/verbeek09tip.pdf –

1

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

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

Я реализовал его на Matlab, попробовал его на Лене. Вы можете скачать его с here.

+0

Не могли бы вы еще раз поделиться кодом? спасибо – Suisse

Смежные вопросы