Что такое коррекция гаммы
Гамма-коэффициент или просто гамма определяет отношение между численным значением пикселя и его действительной светимостью. Без коррекции гаммы тёмные тона, снятые цифровыми камерами, не выглядели бы так, как их видят наши глаза. Однако гамма присуща не только камерам — собственную гамму имеют файлы изображений, экраны и практически любое другое устройство отображения. Говоря о коррекции гаммы, кодировании гаммы или компресии (сжатии) гаммы, подразумевают одно и то же понятие. Понимание того, что собой представляет гамма, может помочь улучшить технику экспозиции, а также извлечь максимум из обработки изображений.
Зачем нужна коррекция гаммы
1. Наши глаза видят иначе, чем камеры. В цифровой камере удвоенное количество фотонов, попадающих на сенсор, означает удвоение сигнала (зависимость «линейна»). Вполне логично, да? Однако наши глаза устроены иначе. Для нас увеличение освещённости вдвое означает, что свет стал слегка ярче (зависимость «нелинейна»).
Эталон | ||
Воспринимается глазами, как половинная яркость |
||
Определяется камерой, как половинная яркость |
Точность сравнения зависит от калибровки монитора с коэффициентом 2.2.
В действительности восприятие зависит от условий просмотра, на него могут повлиять окружающие тона. При предельно низкой освещённости (например, при свете звёзд) наши глаза видят линейно, как камеры.
По сравнению с камерами мы более чувствительны к малейшим изменениям тёмных оттенков и менее чувствительны к достаточно большим изменениям в ярких тонах. Для такой странности есть свои биологические причины: это позволяет нашему зрению работать в более широком диапазоне освещённости. В противном случае типичный диапазон яркостей, с которым мы сталкиваемся на улице, был бы невыносим.
Но какое отношение это всё имеет к гамме? В данном случае гаммой мы называем преобразование к светочувствительности наших глаз показаний камеры. Когда сохраняется цифровое изображение, оно подвергается «гамма-кодированию» — так чтобы удвоение значения в файле ближе соответствовало тому, что мы воспринимаем как удвоение яркости.
Техническое примечание: гамма определяется соотношением Vout = Vingamma , где Vout — это итоговая яркость, а Vin — это исходная/действительная яркость. Эта формула отображается показанным выше графиком.
2. Гамма-кодированные изображения сохраняют оттенки более эффективно. Поскольку гамма-кодирование перераспределяет тональные уровни ближе к тому, как их воспринимают наши глаза, для описания выбранного диапазона тонов требуется меньше бит. В противном случае на яркие тона (где камера имеет большую чувствительность) выделялось бы чрезмерно много бит, а на тёмных тонах (где камера менее чувствительна) сказывалась бы их нехватка:
Полная яркость: | |
Линейное кодирование: |
|
Гамма-кодирование: |
Примечание: для гамма-кодирования градиента применялось стандартное значение 1/2.2
Основы взаимосвязи между тонами и битами раскрыты в статье, посвящённой глубине цветности.
Обратите внимание, что линейное кодирование использует недостаточно уровней для описания тёмных тонов — хотя это и даёт избыток уровней для описания ярких тонов. С другой стороны, гамма-кодированный градиент распределяет тона практически равномерно по всему диапазону («перцептивно униформно»). Тем самым гарантируется, что при дальнейшей обработке изображения цвета и гистограммы основаны на естественных, перцептивно униформных тонах.
В действительности изображения имеют как минимум 256 уровней (8 бит), что вполне достаточно для того, чтобы тональные переходы выглядели в отпечатке гладко и непрерывно. Если бы использовалось линейное кодирование потребовалось бы в 8 раз больше уровней (11 бит), чтобы избежать постеризации изображения.
Обработка гаммы: кодирование и коррекция
Несмотря на все озвученные преимущества, гамма-кодирование усложняет процесс записи и демонстрации изображений в целом. Больше всего сложностей у людей вызывает следующий этап, так что прочтите эту часть, не торопясь. Гамма-кодированное изображение требует применения «коррекции гаммы» на этапе просмотра — которая в действительности приводит изображение в соответствие с исходной освещённостью. Другими словами, целью гамма-кодирования является запись изображения — но не его отображение. К счастью, данный второй этап («гамма дисплея») осуществляется вашими монитором и видеокартой автоматически. Следующая диаграмма показывает, как всё это работает:
RAW-изображение с камеры сохраняется в JPEG-файле |
JPEG на экране монитора | Суммарный эффект | ||
+ | = | |||
1. Гамма файла | 2. Гамма дисплея | 3. Гамма системы |
1. Описывает изображение в пространстве цветности sRGB (в котором коэффициент гаммы близок к 1/2.2).
2. Описывает гамму дисплея, эквивалентную стандарту 2.2
1. Гамма файла. Это преобразование применяется камерой или программой обработки RAW при преобразовании в стандартный файл JPEG или TIFF. Оно перераспределяет присущие камере тональные уровни в перцептивно униформные, тем самым обеспечивая наиболее эффективное использование доступной глубины цветности.
2. Гамма дисплея. Это преобразование отражает суммарное влияние видеокарты и дисплея, то есть в действительности может состоять из нескольких гамм. Основным назначением гаммы дисплея является компенсация гаммы файла — тем самым гарантируя, что изображение на экране не станет ненатурально ярким. Увеличение гаммы дисплея означает более тёмное изображение с повышенным контрастом.
3. Гамма системы. Это преобразование отражает суммарное влияние всех гамма-преобразований изображения, его также называют «гаммой просмотра». Для точного отображения гамма просмотра в идеале должна быть близка к прямой линии (гамма = 1.0). Прямая линия гарантирует, что изображение на входе (исходная сцена) и на выходе (на экране или в отпечатке) одинаково. Однако гамма системы зачастую установлена несколько выше 1.0 с целью повышения контрастности. Это может помочь скомпенсировать ограничения, вызванные динамическим диапазоном устройства отображения, а также неидеальными условиями просмотра и бликами в изображении.
Гамма изображения
Истинная гамма изображения, сохранённого в файле, определяется 1) гаммой камеры (зачастую просто линейной) и 2) гамма-кодированием изображения с сопутствующим профилем цветности.
Профили цветности. Точная кривая гаммы обычно записана в профиле цветности, который вложен в файл. Большинство пространств цветности для обработки изображений используют гамма-кодирование с коэффициентом 1/2.2 (такие как sRGB и Adobe RGB 1998). Хотя файлы RAW имеют линейную гамму, программы просмотра файлов RAW показывают их, предполагая стандартное гамма-кодирование 1/2.2, поскольку иначе они могут выглядеть слишком тёмными:
Линейный RAW (гамма = 1.0) |
Гамма-кодирование (профиль sRGB, гамма = 1/2.2) |
Если профиль цветности не приложен, обычно подразумевается стандартная гамма 2.2. Профиль цветности обычно отсутствует в файлах форматов PNG и GIF, а также в некоторых файлах формата JPEG, которые были созданы посредством функции «Сохранить для сайта».
Техническое примечание: гамма камеры. Большинство цифровых камер записывают свет линейно, так что их гамма обычно принимается за близкую к идеальной. Однако, в действительности наиболее яркие и тёмные тона могут отклоняться от гаммы 1.0, и в этом случае гамма файла может представлять собой комбинацию гаммы кодирования, наложенной на гамму камеры. Впрочем, гамма камеры оказывает практически незначительное влияние. Производители камер могут также применять небольшие тональные кривые, которые тоже влияют на гамму файла.
Гамма дисплея
Гамма дисплея — единственная составляющая, которая обычно поддаётся коррекции (с использованием калибраторов монитора и регуляторов яркости/контраста). К счастью, индустрия сошлась на стандартной гамме дисплея 2.2, так что нет повода беспокоиться по поводу достоинств и недостатков различных значений. Старые компьютеры Macintosh использовали гамму дисплея 1.8, вследствие чего изображения, подготовленные на ПК с их стандартной гаммой 2.2, выглядели на маках несколько ярче, но эта неоднозначность больше не имеет места.
Для стандартного гамма-кодированного файла смена гаммы дисплея будет иметь следующее влияние на яркость и контраст изображения:
Гамма дисплея 1.0 | Гамма дисплея 1.8 | Гамма дисплея 2.2 | Гамма дисплея 4.0 |
Диаграммы подразумевают, что ваш дисплей откалиброван по стандартной гамме 2.2.
Итоговая гамма дисплей в действительности состоит из 1) собственной гаммы монитора и 2) коррекции гаммы, внесенной самим монитором или видеокартой. Однако влияние каждой из них чрезвычайно зависит от типа монитора.
Мониторы ЭЛТ | ЖКД (плоские) мониторы |
ЭЛТ Мониторы. Рождённая под нечётной инженерной звездой, собственная гамма электронно-лучевой трубки составляет 2.5 — практически обратную для наших глаз. Как следствие, значения из гамма-кодированного файла могут быть переданы непосредственно на экран, где они автоматически скорректируются и будут выглядеть практически нормально. Однако для достижения суммарной гаммы дисплея 2.2 необходимо применить небольшую коррекцию гаммы порядка 1/1.1. Обычно она уже предустановлена производителем, однако можно подобрать точные значения путём калибровки монитора.
ЖКД-мониторы. Жидкокристаллическим мониторам повезло меньше: обеспечение суммарной гаммы дисплея 2.2 зачастую требует значительных корректив, и к тому же они значительно менее линейны, чем у ЭЛТ. В связи с этим ЖКД требуют некоторой таблицы отображения (look-up table — LUT), чтобы обеспечить требуемую гамму дисплея для отображения входных значений (помимо прочего). Подробнее эту тему освещает статья о калибровке мониторов и таблицах отображения.
Техническое примечание: гамма дисплея может несколько сбивать с толку, поскольку этот термин часто используют вместо гамма-коррекции, поскольку она корректирует гамму файла. Однако значения этих терминов не во всём совпадают. Коррекция гаммы порой задаётся в терминах гаммы кодирования, которую она призвана скомпенсировать, — вместо фактически применяемой гаммы. Например, при «гамма-коррекции 1.5» фактически применяемая гамма может составлять 1/1.5, поскольку гамма 1/1.5 компенсирует гамму 1.5 (1.5 * 1/1.5 = 1.0). Как следствие, увеличение гамма-коррекции может сделать изображение ярче (в отличие от увеличения гаммы дисплея).
Примечания и материалы по теме
Далее следуют необходимые пояснения и важные замечания.
- Динамический диапазон. Вдобавок к обеспечению эффективного использования данных об изображении гамма-кодирование также в действительности увеличивает сохраняемый динамический диапазон при заданной глубине цветности. Гамма может также порой помочь дисплею или принтеру лучше использовать свой ограниченный (по сравнению с исходной сценой) динамический диапазон, улучшив контрастность изображения.
- Гамма-коррекция. Термин «гамма-коррекция» в действительности является универсальным способом описания процесса применения гаммы с целью компенсации ранее наложенной гаммы. Пожалуй, стоит избегать применять такой обобщённый термин там, где можно использовать более конкретный.
- Сжатие и расширение гаммы. Эти термины отражают ситуации, когда применяется гамма больше или меньше единицы, соответственно. Гамма файла, как следствие, может рассматриваться как гамма-компрессия (сжатие гаммы), а гамму дисплея можно рассматривать, как гаммма-расширение.
- Применимость. Строго говоря, термин «гамма» применим только к тональной кривой, которая следует простой степенной функции (Vout = Vingamma), однако зачастую гаммой называют и другие тональные кривые. Например, пространство цветности sRGB в действительности является линейным для предельно низкой освещённости, однако далее, при самых ярких тонах, оно следует кривой насыщения. Ни кривая насыщения, ни линейный участок не принадлежат графику степенной функции, однако обобщённая гамма принимается приблизительно равной 2.2.
Узнайте, как точно настроить гамму дисплея, прочтя статью
«Как откалибровать монитор для фотографии»