Алгоритм/формула для подбора цвета в RGB по монохромным образцам

Рейтинг: 0Ответов: 1Опубликовано: 16.02.2023

В сети интернет много статей о преобразовании цвета в RGB в градации серого. Где утверждается, что составляющие RGB вносят разный вклад в цветовосприятие, поэтому приводится формула преобразования с коэффициентами, если я не ошибаюсь:

((0.2989*R)+(0.5870*G)+(0.1141*B))

Меня интересует обратная задача. Например у меня есть цвет зеленого оттенка и пусть ему соответствует (не переводится, а именно соответствует) . Вопрос, как мне, учитывая вышеозначенное соответствие, найти оттенки зеленого для:

Оттенок серого Оттенок зеленого
?
?
?

Интересует алгоритм/формула.

Ответы

▲ 0

Решение подсказали знакомые. Частичное - в сторону осветления. Но меня это устраивает, и вот пример, как получается:

Оттенок серого Оттенок зеленого

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

V = 255 - (255 - Color) * (255 - Gray) / (255 - Start) , где:

  • V - рассчитываемое значение новой цветовой составляющей из RGB
  • Color - цветовая составляющая опорного цвета
  • Gray - цветовая составляющая рассчитываемого серого цвета
  • Start - цветовая составляющая стартового серого цвета

Пример расчета для #E2E2E2:

R = 255 - (255 - 0x90) * (255 - 0xE2) / (255 - 0xDA) = 0xA8
G = 255 - (255 - 0xD1) * (255 - 0xE2) / (255 - 0xDA) = 0xDB
B = 255 - (255 - 0x2D) * (255 - 0xE2) / (255 - 0xDA) = 0x5A

Округления делал 0.5 и меньше - в меньшую сторону, более 0.5 - в большую. Если кто напишет более универсальную формулу/способ, в том числе не только для осветления, но и для затемнения - вэлком. Ну а мой вопрос решен.