Учитывая цвет, как мне найти, какой цвет он ближе всего? - PullRequest
4 голосов
/ 24 января 2012

Допустим, у меня есть список допустимых значений цвета, таких как [0x67FF82, 0x808080, 0xffffff, ...] и заданный цвет ввода, в шестнадцатеричном виде, я хочу найти, какой цвет в списке допустимых цветов, что ввод цвет ближе всего к.

Я думал, что найду цвет, в котором абсолютное значение разности красного, зеленого и синего значений будет наименьшим. Это правильно?

1 Ответ

7 голосов
/ 24 января 2012

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

Есть довольно математическая статья в Википедии о различии цветов , которая включает ссылки на различные реализации.

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

В частности, есть Python Colormath , реализация в python, которая преобразует различные кодировки цвета и, кажется, также имеет функцию для вычисления расстояния между двумя цветами. Если вы пишете код на python, это звучит полезно, хотя, к сожалению, у меня нет личного опыта с этим инструментом. Также есть похожие ресурсы для MATLAB и Excel, предоставленные авторами CIE2000 , ведущей формулы цветоразностных характеристик.

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