Знову я радий вітати читачів на сторінках свого блогу. Дуже часто на тематичних форумах про дизайн або 3d-візуалізації я зустрічаю питання пов'язані з таким звіром, як гамма. І помітив одну загальну тенденцію - тему розуміють в основному люди мають технічну освіту. А люди суто творчі в ній плавають. При цьому навіть коли даєш посилання на хороші технічні статті про гамі, більшість їх не сприймає.
Для того, що б виправити такий стан справ я і вирішив написати серію статей на цю тему. У цій серії я постараюся максимально простою мовою розповісти все, що стосується гами, гамма-кривих. Повірте - складної і заплутаної ця тема здається тільки на перший погляд. Будемо йти від простого до складного.
Що таке гамма фото і гамма-криві?
На досвіді я зрозумів, що відразу давати формальне визначення гами - велика помилка, тому що спроби його осмислення з боку людини, яка не розуміє теорії, призводять тільки до великої плутанини. Замість цього я почну з пояснення цієї самої теорії.
Матриця під мікроскопом
Шлях цифрового файлу починається з моменту його створення. Припустимо, що ви робите фотографію на цифровий фотоапарат. Суть процесу зводиться дотого, що на матрицю фотоапарата, склад з безлічі маленьких світлочутливих елементів (кількість яких залежить від дозволу матриці) падає світло.
Потім кожен такий світлочутливий елемент «аналізує» потік світла, який на нього потрапив - його колір і інтенсивність. Колір ми чіпати не будемо - це окрема тема. А ось з інтенсивністю доведеться розібратися.
Важливо зрозуміти, що на цьому етапі камера, абсолютно тупо і бездумно, вважає кількість фотонів, які потрапили на ту чи іншу ділянку матриці.
Діапазон цих кількостей величезний. На темному місці їх може бути 10, а на самому світлому 1 000 000. Проблема виникає при оцифрування цих даних, адже технічно існує всього 256 градацій світлини, якими може бути описаний піксель. В результаті виходить, що фізично величин дуже багато, а градація в цифровому форматі всього 256.
Який напрошується висновок? Саме першо, що приходить на розум це взяти все значення від нуля до максимального, потім рівномірно розділити з на 256 і таким чином закодувати їх в файл.
Все приблизно так і відбувається, але ... є одна проблема.
Справа в тому, що наша зорова система в тінях розрізняє значно більше градацій ніж на світлі. Еволюційно це наша перевага, що забезпечує виживання нас, як виду. Завдяки цьому наші предки могли помічати хижаків, причаїлися в тіні або навпаки - самі могли вистежувати здобич.
В результаті виходить, що якщо ми будемо ділити весь спектр значень рівномірно, як передбачалося спочатку, ми отримаємо ситуацію при якій в світлих ділянках у нас буде надмірна кількість градацій (ми стільки не розрізняємо, тому що на світлі і так все добре видно) а на темних ділянках буде їх недолік.
В результаті, з точки зору нашого сприйняття, на обличчя нераціональне використання технічно наявних в нашому розпорядженні 256 градацій. У темних ділянках їх мало, а в світлих багато.
Вихід очевидний - потрібно взяти там де багато і перенести туди де мало. Це означає, що в темних ділянках крок градації повинен бути менше, а в світлих більше.
Ступінь, з якою відбувається це наростання, називається гамма-предіскажніем. Здійснюється вона на етапі створення цифрового зображення (не важливо фотографуєте ви це чи створюєте зображення в програмі).
Гамма-компенсація
Наступним етапом в житті цифровий картинки є її відображення на пристрої виведення - моніторі або проекторі, не принципово.
Важливо розуміти, що в файл закладена нелінійність.
Тобто на етапі створення було задано якесь нелінійне відповідність фізичної світності і значенням в файлі.
Тепер же потрібно зробити зворотне перетворення - пов'язати значення в файлі і фізичну світність але вже пікселя на моніторі. Якщо ця залежність буде лінійної, вийде неприємна річ, кожне значення в файлі буде додавати однакову фізичну світність пікселя. А це не правильно, адже на етапі созданяі файлу в тінях ми робили малеьнкую надбавку, а на світлі велику.
Відповідно на етапі виведення так само потрібно зворотне перетворення. Ступінь цього перетворення називається гамма-компенсацією.
Якщо існує 2 гами, яка з них мається на увазі, коли говорять просто «гамма»?
Це залежить від контексту і зокрема від софта. Наприклад настройки 3ds Max дозволяють змінювати входить гаму файлу в процесі роботи, просто відображати матеріали з відмінною від стандартної гамою або ж і зовсім зберігати файл з іншої вхідної гамою.
А яка гамма стандартна?
Гамма 1.8 була обрана для платформи Mac, на PC використовується гамма 2.2. Це не означає, що все потрібно зберігати суворо в такій гамі - точні цифри це скоріше формалізм, адже технічно якесь число в будь-якому випадку необхідно вказати в якості стандарту. На практиці ж деякі картинки більш вийгришно виглядають з 1.8, а деякі з 2.2.
гамма монітора
Є ще таке поняття як гамма монітора. Раніше монітори мали власної гамою за рахунок того, що світіння люмінофора мало нелінійну залежність від напруги сигналу. Ця гамма була в районі 2.2 і служила на старих моніторах гамма-компенсацією.
В результаті «гамма монітора» повністю перейшла під управління драйвера.
Сьогодні «настройка гами монітора» зводиться до калібрування монітора в результаті якої створюється правильний профіль з коректними гамма-кривими.
Це дуже важливий і безумовно необхідний етап настройки монітора. Без нього неможливо коректно працювати з гамою.
Детальніше про це я написав окрему статтю: калібрування монітора.
p.s. У матеріалас статті були використані ілюстрації їх книги Шадріна.