2017-02-11 15 views
1

Я пытаюсь сгенерировать цвета RGB с той же воспринимаемой яркостью.Как рассчитать значения RGB с одинаковой воспринимаемой яркостью

Функция R * 0.2126 + G * 0.7152 + B * 0.0722 называется для вычисления воспринимаемой яркости (или эквивалентного оттенка серого) для заданного цвета RGB.

Предположим, что мы используем интервал [0,1] для всех значений RGB, мы можем вычислить следующее:

  • желтый = RGB (1,1,0) => Яркость = 0,9278
  • синий = RGB (0,0,1) => яркость = 0.0722

Итак, чтобы желтый тон был тусклым, как синий, я могу просто выполнить этот простой подсчет по желтому цвету для каждого из RGB компоненты:

  • dim_yellow = желтый * 0,0722/0,9278

Однако при выполнении противоположных вещах, таким образом, «масштабирование» до синего цвета к одной и той же воспринимаемой яркости как оригинальные желтая, компонент B, очевидно, превышает 1, что не может отображаться на экране компьютера.

Я предполагаю, что недостающая яркость из избыточного компонента B может быть «перераспределена» с компонентами R и G, создавая яркий синий цвет. Итак, каков наилучший общий метод для вычисления этих окончательных значений RGB?

ответ

0

Я рекомендую использовать цветную модель HSV вместо RGB, так как вы можете легко добиться того, что хотите, только изменяя компонент Value (Brightness). страница вики содержит также, как преобразовать RGB в HSV и обратно

EDIT: Попробуйте использовать CIELAB цветовое пространство, так как это видение аппроксимированных человека в

+0

Я знаю о HSL и HSV, но они не делают то, что вы предлагать. Синий оттенок с полной насыщенностью и значением будет по-прежнему казаться «темным» или «более тусклым», а затем желтым оттенком с полным насыщением и значением. Поэтому ваш ответ не решает мою проблему. – Askaga

+0

Вы пробовали нелинейные пространства, такие как CIELAB? –

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