Что такое гамма фото и гамма-кривые?

Опубликовано: 22 Июнь 2014 в рубрике 3ds Max, Уроки 3ds Max  

Снова я рад приветствовать читателей на страницах своего блога. Очень часто на тематических форумах о дизайне или 3d-визуализации я встречаю вопросы связанные с таким зверем, как гамма. И заметил одну общую тенденцию — тему понимают в основном люди имеющие техническое образование. А люди сугубо творческие в ней плавают. При этом даже когда даешь ссылки на хорошие технические статьи о гамме, большинство  их не воспринимает.

Для того, что бы исправить такое положение дел я и решил написать серию статей по данной теме. В этой серии я постараюсь максимально простым языком рассказать все, что касается гаммы, гамма-кривых. Поверьте — сложной и запутанной эта тема кажется только на первый взгляд. Будем идти от простого к сложному.

Что такое гамма фото и гамма-кривые?

На опыте я понял, что сразу давать  формальное определение гаммы — большая ошибка, потому что попытки его осмысления со стороны человека, не понимающего теории, приводят только к  большой путанице. Вместо этого я начну с объяснения этой самой теории.

Что такое гамма фото и гамма-кривые?

Матрица под микроскопом

Путь цифрового файла начинается с момента его создания. Предположим, что вы делаете фотографию на цифровой фотоапарат. Суть процесса сводится  ктому, что на матрицу фотоапарата, состающую из множества маленьких светочувствительных элементов (количество которых зависит от разрешения матрицы) падает свет.

Затем каждый такой светочувствительный элемент «анализирует»  поток света, который на него попал — его цвет и интенсивность.  Цвет мы трогать не будем — это отдельная тема. А вот с интенсивностью придется разобраться.

Важно понять, что на этом этапе камера, совершенно тупо и бездумно, считает количество фотонов, которые попали на тот или иной участок  матрицы.

Диапазон этих количеств огромен.  На темном участке их может быть 10, а на самом светлом 1 000 000. Проблема возникает при оцифровке этих данных, ведь технически существует всего 256 градаций светлоты, которыми может быть описан пиксель. В результате получается, что физически величин очень много, а градация в цифровом формате всего 256.

Какой напрашивается вывод?  Самое перво, что приходит на ум это взять все значения от нуля до максимального, затем равномерно разделить из на 256 и таким образом закодировать их в файл.

Ну например, представим что максимальное количество фотонов 256 000. Это значит, что если на какой-то участок матрицы падает 0-1000 фотонов, этот участок ставит в файлике значение 0 (ноль), если количество фотонов от 1000 до 2000,  значит ставит 1 (единицу). И т.д. И таким образом весь диапазон может быть описан.

Все примерно так и происходит, но… есть одна проблема.

Дело в том, что наша зрительная система в тенях различает значительно больше градаций чем на свету. Эволюционно это наше преимущество, обеспечивающее выживание нас, как вида. Благодаря этому наши предки могли замечать хищников, притаившихся в тени или наоборот — сами могли выслеживать добычу.

В результате получается, что если мы будем делить весь спектр значений равномерно, как предполагалось изначально, мы получим ситуацию при которой в светлых участках у нас будет избыточное количество градаций (мы столько не различаем, потому что на свету и так все хорошо видно) а на темных участках будет их недостаток.

В результате, с точки зрения нашего восприятия, на лицо нерациональное использование технически имеющихся в нашем распоряжении 256 градаций. В темных участках их мало, а в светлых много.

Выход очевиден — нужно взять там где много и перенести туда где мало. Это значит, что в темных участках шаг градации должен быть меньше, а в светлых больше.

Степень, с которой происходит это нарастание, называется гамма-предискажнием. Осуществляется она на этапе создания цифрового изображения (не важно фотографируете ли вы это или создаете изображение в программе).

Гамма-компенсация

Следующим этапом в жизни цифровой картинки является ее отображение на устройстве вывода — мониторе или проекторе, не принципиально.

Важно понимать, что в файл заложена нелинейность.

Т.е. на этапе создания было задано некое нелинейное соответствие физической светимости  и значению в файле.

Теперь же нужно сделать обратное преобразование — увязать значение в файле и физическую светимость но уже пикселя на мониторе. Если эта зависимость будет линейной, получится неприятная вещь, каждое значение в файле будет прибавлять одинаковую физическую светимость пикселя. А это не правильно, ведь на этапе созданяи файла в тенях мы делали малеьнкую прибавку, а на свету большую.

Соответственно на этапе вывода так же нужно обратное преобразование. Степень этого преобразования называется гамма-компенсацией.

Гамма-предискажение и гамма-компенсация

Если существует 2 гаммы, какая из них имеется в виду, когда говорят просто «гамма»?

Это зависит от контекста и в частности от софта.  Например настройки 3ds Max позволяют менять входящую гамму файла в процессе работы, просто отображать материалы с отличной от стандартной гаммой или же и вовсе сохранять файл с другой входящей гаммой.

А какая гамма стандартная?

Гамма 1.8 была выбрана для платформы Mac, на PC используется гамма 2.2.  Это не значит, что все нужно сохранять строго в такой гамме — точные цифры это скорее формализм, ведь технически какое-то число в любом случае необходимо указать в качестве стандарта.  На практике же некоторые картинки более выйгрышно смотрятся с 1.8, а некоторые с 2.2.

Гамма монитора

Есть еще такое понятие как гамма монитора. Раньше мониторы обладали собственной гаммой за счет того, что свечение люминофора имело нелинейную зависимость от напряжения сигнала. Эта гамма была в районе 2.2 и служила на старых мониторах гамма-компенсацией.

В современных видеокартах выделяют специальную область для работы с гаммой, а драйвера научили работать с профилями мониторов и гамма-кривыми.

В результате «гамма монитора» полностью перешла под управление драйвера.

Сегодня «настройка гаммы монитора» сводится к  калибровке монитора в результате которой создается правильный профиль с корректными гамма-кривыми.

Это очень важный и безусловно необходимый этап настройки монитора. Без него  невозможно корректно работать с гаммой.

Подробней об этом я написал отдельную статью: калибровка монитора.

p.s. В материалас статьи были использованы иллюстрации их книги Шадрина.