Цвет, наиболее контрастирующий с данным набором цветов?

У меня есть список нескольких разных значений "случайных" цветов (не менее 1 и не более 8 цветов). (Случайный означает, что нельзя сказать об их взаимном «контрасте».)

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

Мне нужно вычислить одно значение одного цвета, которое является наиболее «контрастным» (то есть визуально различимым) из всех цветов из списка.

Практические критерии контраста для случая с 8 цветами:

Если мы нарисуем 9 квадратов, залитых нашими цветами следующим образом:

[1][2][3]
[4][X][5]
[6][7][8]

Цвет квадрата X должен быть четко отличим от всех соседних цветов.

Возможное упрощение: уменьшите максимальное количество цветов с 8 до 4 (квадраты 2, 4, 5, 7 в примере не учитывают диагонали).


person Alexander Gladysh    schedule 29.10.2011    source источник


Ответы (1)


Я думаю, что лучшим решением может быть:

  1. максимизировать разницу оттенков со всеми цветами (простая линейная оптимизация)
  2. максимальное освещение
  3. максимизировать насыщенность

http://www.colorsontheweb.com/colorcontrasts.asp

Изменить: при линейном программировании вы можете придавать меньшее значение диагональным цветам.

Edit2: что означает максимизация: вы хотите максимизировать контраст оттенков, это означает, что сумма всех |Hi - результат|, где Hi означает оттенок цвета i, должна быть максимизирована. Вы даже можете создать условия для минимальной разницы, например. |Привет - результат| > Хмин. Фактический расчет можно выполнить, задав уравнения для алгоритма линейной оптимизации, или вы можете попробовать все значения оттенка от 0,0 до 1,0 с шагом 0,05 и сохранить лучший результат. http://en.wikipedia.org/wiki/Линейное_программирование.

person Sulthan    schedule 29.10.2011
comment
Можете ли вы немного уточнить, что такое максимизация в этом случае? - person Alexander Gladysh; 30.10.2011
comment
Выглядит годно, спасибо, попробую. Вероятно, будет лучше работать с цветовой моделью с учетом восприятия (CIELAB?) - person Alexander Gladysh; 30.10.2011