Гамма і лінійність¶
Розгляньмо випадок, який ми вже обговорювали теоретично — лінійний простір кольорів. Усі значення на шкалі яскравості є рівновіддаленими. Наші очі не працюють у такому лінійному режимі. Нам набагато простіше розрізнити відтінки темно-сірого, ніж світло-сірого.
Оскільки користувачами комп’ютерів є люди, простори кольорів для них побудовано таким чином, щоб для темніших кольорів на шкалі кольорів було більше значень. Таке виправлення називається «гамма-кодуванням», оскільки його пов’язано із застосуванням гамма-функції до TRC або функції передавання зображення. У цьому випадку TRC є абревіатурою від Tone Response Curve (крива відгуку тонів), або Tone Reproduction Curve (крива відтворення тонів), або Transfer function (функція передавання; так, здається, спеціалісти з керування кольорами ненавидять себе самі). Ця крива повідомляє комп’ютеру або принтеру, скільки кольору відповідає певному значенню.
У наведеній нижче таблиці показано, скільки місця виділено світлішим значенням у лінійному просторі, якщо порівнювати із типовою TRC sRGB для сучасних комп’ютерів та іншими TRC, які є частиною набору профілів з пакунка Krita:
Якщо ви поглянете на лінійні TRC Rec. 709, ви побачите доволі помітний стрибок між темними відтінками та світлими відтінками, а якщо подивитися на TRC Lab L* або TRC sRGB, розподіл відтінків є рівномірним. Причина полягає у чутливості очей до темніших відтінків. Це також означає, що якщо бітова глибина кольорів є недостатньою, у лінійному просторі зображення виглядатиме плямистим через бідність темних відтінків. Отже, якщо ви готуєте зображення для перегляду на екрані, завжди використовуйте TRC, які є подібними до Lab L*, sRGB або Gamma 2.2, для кодування зображення.
Втім, ця модифікація для надання більшого місця для темніших значень призводить до ускладнення математики, пов’язаної зі змішуванням кольорів.
Це можна бачити за допомогою наступного експерименту:
Розфарбовані кола, наполовину розмиті. У середовищі із виправленою гамою отримуємо небажану чорну межу. У лінійному середовищі маємо чудову градацію кольорів.
Це також стосується пензля розмазування кольорів Krita:
Що відбувається за сценою¶
Припустімо, нам треба змішати червоний і зелений кольори.
Спочатку, нам потрібні будуть координати кольору для червоного і зеленого у нашій моделі кольорів простору кольорів. Отже, це мають бути…
Колір |
Червоний |
Зелений |
Синій |
---|---|---|---|
Червоний |
1.0 |
0.0 |
0.0 |
Зелений |
0.0 |
1.0 |
0.0 |
Далі, ми осереднюємо ці координати за трьома сумішами:
Червоний |
Суміш1 |
Суміш2 |
Суміш3 |
Зелений |
|
---|---|---|---|---|---|
Червоний |
1.0 |
0.75 |
0.5 |
0.25 |
0.0 |
Зелений |
0.0 |
0.25 |
0.5 |
0.75 |
1.0 |
Синій |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
Але для того, щоб визначити, як ці кольори виглядатимуть на екрані, нам спочатку слід передати окремі значення через криву відтворення кольорів простору кольорів, з яким ми працюємо:
Далі, ми заповнимо значення у відповідній плямі. Порівняйте їх зі значеннями у таблиці сумішей, яку наведено вище!
Ось чому суміші кольорів у лінійному просторі є світлішими та м’якшими. Лінійний простір є коректнішими фізично, але sRGB є ефективнішим у сенсі місця у пам’яті, тому до багатьох файлів зображень закодовано TRC sRGB. Якщо ви ще не зрозуміли: sRGB дає більше темних тонів, ніж лінійний простір з такими самими координатами.
Отже, різні TRC дають різні суміші кольорів. У наступному прикладі кожне з наборів градієнтів є, послідовно, сумішшю з використанням лінійної TRC, сумішшю з використанням TRC sRGB та сумішшю з використанням TRC Lab L*.
Отже, можливо, у вас виникло питання: «А де, власне, це увімкнути? Чи є десь відповідний пункт у параметрах програми?» Відповідь полягає у тому, що у програмі є декілька профілів ICC, якими можна скористатися для цього типу завдання:
scRGB (лінійний)
Усі «elle»-профілі, назви яких завершуються на «g10», зокрема sRGB-elle-v2-g10.icc.
Фактично, в усіх «elle»- профілях останнє число вказує на значення гамми. 1.0 — лінійний простір, більші значення — простір з виправленням гамми, а «srgbtrc» — спеціальне гамма-виправлення для початкового профілю sRGB.
Якщо ви використовуєте навігатор простором кольорів, ви можете визначити TRC за «оцінкою гамми» (якщо має значення 1.0, простір є лінійним) або за віджетом TRC у Krita 3.0, який показує криві, які точно збігаються із наведеними вище графіками.
Навіть якщо ви не є професійним художником, а просто, наприклад, створюєте текстури для відеогри або просторового моделювання, використання лінійного простору має очевидні переваги і дещо пришвидшує обробку зображення, оскільки програмі не потрібно перетворювати дані кольорів зображення.
Недоліком лінійності простору є, звичайно ж, те, що білий є надто потужним при змішуванні з чорним, оскільки у лінійному просторі більше місця для світлих відтінків. Нарешті, хоча лінійний простір і є фізично коректним і надає переваги при роботі із фізично коректними засобами обробки зображення для відеоігор та трасування променів, Krita — лише інструмент у ваших руках, і ніхто не зможе вас засудити, якщо ви надаєте перевагу темному змішуванню з використанням TRC sRGB.