Як обчислити інші кольори з такою ж сприйнятою легкістю, як задане значення сірого?


11

Це пов’язано з питанням, яке я задав на 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). Результат:

введіть тут опис зображення

Дякую!


2
У статті вікіпедії є корисна кількість матеріалів, але я знайшов ( en.wikipedia.org/wiki/HSL_and_HSV#Dis недостатності ) можливого стосунку до вашої проблеми, зокрема: "Тому що HSL та HSV визначені суто посилання на деякий простір RGB, вони не є абсолютними кольоровими просторами: щоб точно вказати колір, потрібно повідомляти не лише значення HSL або HSV, але й характеристики простору RGB, на якому вони ґрунтуються, включаючи коригування гамми, що використовується. "
horatio

Тож очевидною ідеєю є вказати гамма та RGB кольоровий простір (якщо можливо!) При спробі перетворення.
horatio

2
Ще краща ідея - RGB → L * a * b * → RGB; оскільки Лабораторія призначена для наближення людського зору, а Легкість - це один із його вимірів.
Ярі Кейненен

@koiyu Lab - це я пропоную також знайти сірі сірники. (Ви перемогли мене! Я знущався з відповіді нижче, коли ви розміщували це.)
Нік

Я уникав проблемного обговорення сприйняття кольорів :)
horatio

Відповіді:


10

Ви можете використовувати кольоровий простір лабораторії, щоб знайти свої збіги. Кольори з таким же значенням L, як і цільовий сірий, будуть виглядати майже однаково при перетворенні в сірі кольори.

Наприклад, сірий (50, 0, 0) лабораторії буде дуже схожим на червоні (50, 30, 0), (50, 50, 30) та (50, 50, 50) при перетворенні на відтінки сірого. Наведені нижче приклади використовують Photoshop (Зображення> Режим> Відтінки сірого) для перетворення з Лабораторії в сірий: Оригінальні кольори лабораторії
Перетворено на відтінки сірого


Це схоже на те, що я хочу! Дякую. Однак я не можу використовувати Lab безпосередньо зі своїм набором інструментів, тому мені потрібен якийсь алгоритм перетворення. Koiyu запропонував перетворити RGB -> Lab -> RGB, і я спробую це здійснити.
Крістоф

1
Я знайшов таке: http://www.brucelindbloom.com/index.html?Equations.html . Я не знаю, чи правильні перетворення, і у мене таке враження, що все-таки потрібна якась магія.
Крістоф

Ці функції перетворення виглядають так, що можуть бути корисними.
Нік

І вони справді виглядають трохи прямо вперед ...
Крістоф

@Nick Я можу робити всі розрахунки за допомогою калькулятора, що добре. Однак я маю реалізувати перетворення кольорової моделі у своєму документі LaTeX, який завдає мені головного болю тут і там. Коли це буде зроблено, я опублікую результат і прийму вашу відповідь.
Крістоф

4

Отже, наведена вище порада від Ніка працює лише на 50% яскравості. Якщо ви застосовуєте будь-яке інше значення L, яке є однаковим до різних кольорів, результат сірого відрізняється.

Для цього повинна бути математика, але ви можете це робити на екрані на очі.

Якщо створити всі потрібні кольори, а потім викласти сірий елемент (ілюстратор) або шар (фотошоп) з його режимом прозорості на "кольоровий" (або насиченість або відтінок), це зробить усі елементи нижче, щоб виявити його світність.

Ви повинні переконатися, що всі кольори нижче цього сірого елемента мають насиченість 100, або у вас будуть результати сірого кольору, а не приємні кольори.

Тепер проблема полягає в тому, що, використовуючи всі наведені вище методи, ви зробите всі елементи "однаковою світністю всередині використовуваного профілю RGB", тобто такою ж сірою для вибраного "пристрою", і найгірша частина: око - це пристрій , і є відмінності.

Ви можете показувати однакові кольори різним людям, і вони не знайдуть такої ж «рівномірності», як інші.

Додайте це до того, що ви встановлюєте ці кольори як "однакові яскравості" у вибраному пристрої, і не тільки вони всі "оцінюються", як тільки ви показуєте його на іншому пристрої, ефект вийде з ладу, тому що кожен пристрій має власну здатність освітлювати червоно-зелені або сині елементи різної інтенсивності, тому ви можете отримати, наприклад, червоно-ерлеві елементи.

Крім того, якщо ви змішуєте сірий та кольоровий кольори, як було запропоновано вище, ви повинні переконатися, що сірий елемент має принаймні 1/255 мінімум у кожному каналі (тобто не більше сірого), або програмне забезпечення вважатиме походження сірим як 0-відтінок, який надасть вам середні тони червоного кольору (оскільки суміш між 0 відтінком та будь-яким іншим кольором буде на півдорозі до червоного)

Я експерт перед пресою з 90-х, і моя порада: якщо ви збираєтеся йти з математикою, вам слід використовувати математику для очей (візуальні можливості), а також ті, що стосуються пристрою, який ви будете показувати ці цифри на.

Удачі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.