Это связано с вопросом, который я задал на tex.stackexchange , который имеет цветовой аспект. Результатом этого вопроса является следующее изображение:
Я нарисовал серию серых квадратов слева, с красной веткой, уходящей справа. Цель состоит в том, чтобы иметь разные красные квадраты с разной насыщенностью, но все с одинаковым значением серого. В цветовой модели hsv все они одинаковы v
, но когда я конвертирую изображение в оттенки серого с помощью Gimp, они не преобразуются в один и тот же серый. Также визуальное впечатление состоит в том, что красные квадраты справа темнее, чем слева.
Как я могу, с учетом определенного серого, рассчитать цвета с определенным оттенком и таким же значением серого (или, что еще лучше, с тем же серым оттиском )? Все цвета, используемые в изображении, рассчитаны, поэтому я предпочитаю решения, которые также включают вычисления.
Я мог бы использовать здесь неправильные термины - я инженер-механик, поэтому, пожалуйста, исправьте меня, где необходимо, или попросите разъяснений.
Предложение использовать цветовое пространство Lab привело меня к некоторым выводам:
Я могу использовать значение модели Lab,
L
чтобы установить какое-то значение серого для разных цветов. В модели hsv это естьv
. Я не уверен, что мне действительно разрешено сравнивать их, но я буду делать это, пока кто-нибудь не пожалуется.В модели hsv я также могу установить некоторый «базовый цвет» (оттенок), который я не могу найти в модели Lab.
В модели hsv у меня есть 2 константы (на изображении выше:
h
= 0,v
= 0.375) и одна переменная (s
).До этого момента у меня была только одна константа в модели Lab. Этого недостаточно, чтобы создать нечто похожее на то, что я уже сделал с моделью hsv.
Я думаю, пришло время для экспериментов.
Готово! После того, как я запустил конверсионный код, это было очень просто. Первым шагом было определение «цели красного» справа. Я рассчитал RGB2Lab (255,0,0) и изменил значение L результата до желаемого L на рисунке (L = 62,5). Цвета рассчитываются с использованием линейной интерполяции в пространстве Lab от (L, 0,0) до (L, aTarget, bTarget). Результат:
Спасибо!