Я пытаюсь сгенерировать цвета 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?
Я знаю о HSL и HSV, но они не делают то, что вы предлагать. Синий оттенок с полной насыщенностью и значением будет по-прежнему казаться «темным» или «более тусклым», а затем желтым оттенком с полным насыщением и значением. Поэтому ваш ответ не решает мою проблему. – Askaga
Вы пробовали нелинейные пространства, такие как CIELAB? –