Алгоритм приведения цветов изображения к опорным

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

Был испробован сдедующий способ: RGB=XYZ. Каждый опорный цвет, это точка внутри куба с гранью длиной 256. Цвет пикселя изображения также точка внутри этого куба. Вычесляется расстояние пикселя до всех опорных цветов, наименьшее расстояние и есть искомый опорный цвет.
Эта штука работает. Но, она работает слишком хорошо. Например, грязно-зеленый цвет, типа хаки, она совершенно правильно относит к желтому. Но визуально он зеленый. Это не математика, а особенность восприятия человека.
Попытки ввести корректировки, например сдвинуть желтый за пределы куба, особого улучшения не дали.

Куда рыть, камрады?
  • Вопрос задан
  • 2824 просмотра
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Попробуйте сравнивать не в RBG, а в Lab.
Здесь есть алгоритмы перевода RGB -> XYZ -> CIE-L*ab, а здесь - формула разности цветов в CIE-Lab.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы