Це пов’язано з питанням, яке я задав на 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). Кольори обчислюються за допомогою лінійної інтерполяції в просторі лабораторії від (L, 0,0) до (L, aTarget, bTarget). Результат:
Дякую!