Какова цель гамма-коррекции на современных экранах и как она связана с графикой и фотографией? - Фотопедия
14 голосов
/ 24 августа 2014

Я сильно запутался с целью гамма-коррекции и связи между гамма-коррекцией и нескорректированными изображениями с точки зрения графики и фотографии, а также управления цветом в целом (преобразование из линейного RGB в гамма-коррекцию RGB-пространства и затем отображение это на экране).

Из многих источников, в основном http://www.guillermoluijk.com/article/gamma/index.htm и вопроса # 23026151 в StackOverflow (Нужно ли гамма-коррекцию для окончательного вывода цвета на современном компьютере / мониторе?) , я пришел к выводу, что:

Гамма-коррекция изначально была разработана для компенсации нелинейного отклика ЭЛТ-мониторов на входной сигнал. ЭЛТ не смогли самостоятельно усилить входной сигнал, и поэтому необходимо было отрегулировать выходной сигнал с ПК, что привело к появлению (на сегодняшний день) стандартной гамма-коррекции 2.2 и цветового пространства sRGB.

Современные экраны , однако, не страдают от потери сигнала, как ЭЛТ. Они также могут демонстрировать некоторые нелинейности, но, учитывая, что входной сигнал чаще всего переносится только 8 битами на канал (256 оттенков), они должны быть в состоянии компенсировать некоторые нелинейности в своей цветопередаче сами, поскольку они, вероятно, способны воспроизведения более 256 оттенков в одном канале. Это будет означать, что гамма-коррекция вместе с sRGB и всеми гамма-скорректированными цветовыми пространствами - это просто наследие эпохи ЭЛТ, и ее единственная цель состояла в том, чтобы отображать входной сигнал линейно.

Есть также статьи , в которых утверждается, что гамма-коррекция здесь используется для компенсации нелинейности человеческого зрения (CambridgeInColour.com - Понимание гамма-коррекции), которая должна примерно соответствовать гамма-кривой, поскольку мы способны обнаружение небольших различий в более темных оттенках, но не так хорошо с более яркими (яркость точки должна экспоненциально расти, чтобы она выглядела ярче). Это не то, как датчики камеры записывают сцену. Необработанные данные с датчика получают в линейном RGB и преобразуют в цветовое пространство RGB с гамма-коррекцией (тени поднимаются, а огни затемняются). Гамма-коррекция должна была компенсировать потерю выходного сигнала, поэтому я считаю, что современные экраны просто имитируют поведение ЭЛТ, чтобы отменить гамма-коррекцию и отображать сцену так же, как она была захвачена камерой - грубо говоря, отображая камеру Оттенки 1: 1 на экране. Что ж, я не вижу здесь никакого эффекта компенсации человеческого зрения, поскольку выходной сигнал снова линейный.

Означает ли это, что каждый оттенок в любом цветовом пространстве RGB должен иметь одинаковые значения RGB во всех остальных пространствах RGB, включая линейный RGB (например, # 010A1F в sRGB точно переводит в # 010A1F в линейном RGB с точки зрения хранения в растровый файл с 8bpc), и только от экрана и графического адаптера зависит, как они организуют передачу цвета и должна ли какая-либо из сторон выполнять какие-либо дополнительные пересчеты для преобразования изображения в цветовое пространство назначения? Другими словами, изменение цветового пространства в графическом редакторе фактически не имеет ничего общего с самими значениями RGB, а только учитывает новое цветовое пространство в метаданных изображения? Я полагаю, что это не так, потому что управление цветом как таковое было бы бесполезным, если используется цифровой графический адаптер / экранный интерфейс - графический адаптер мог бы просто отправлять простые данные RGB независимо от используемого цветового пространства, поскольку аналоговое усиление (гамма) не будет применяется к значениям, которые идут в линейном масштабе от 0 до 255. Кроме того, гамма различных цветовых профилей была бы одинаковой, если бы не было ошибок округления, или?

Мое последнее недоразумение связано, возможно, с неправильным пониманием преобразования цветового профиля и таблицы уровней воздействия (первой) в статье http://www.guillermoluijk.com/article/superhdr/index.htm (может быть переведено с помощью Google Translate). Правильно ли я понимаю, что линейные значения преобразуются с помощью экспоненциальной функции (или обратной гаммы), сужая тональный диапазон в сторону теней и, таким образом, затемняя изображение? Это происходит, если мы сохраним линейный RGB и представим его как изображение с гамма-коррекцией на экране компьютера?

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

Ответы [ 9 ]

9 голосов
/ 06 октября 2014

от Чарльз Пойнтон "Восстановление гаммы" :

Заблуждение: Нелинейность ЭЛТ-монитора является дефектом, который необходимо исправить.

Факт: Нелинейность ЭЛТ почти противоположна светочувствительности человеческого зрения. Нелинейность вызывает ЭЛТ ответ должен быть примерно одинаково воспринимаемым. Далеко не дефект, эта функция очень желательна.

Заблуждение: Основная цель гамма-коррекции состоит в компенсации нелинейности ЭЛТ.

Факт: Основная цель гамма-коррекции в видео, настольной графике, допечатной подготовке, JPEG и MPEG - это кодирование яркости или трехцветного сигнала. значения (пропорциональные интенсивности) в воспринимаемую однородную область, так как оптимизировать восприятие производительности ограниченного числа бит в каждый компонент RGB (или CMYK).

остальная часть статьи тоже очень поучительная:)

6 голосов
/ 04 октября 2014

Рассмотрим этот пример из Кембридж в цвете :

enter image description here

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

Это достигается путем использования 32 уровней таким образом, чтобы более точно соответствовать человеческому глазу. Другими словами, это форма сжатия. Например, JPEG-файлы могут хранить около 11 остановок динамического диапазона, несмотря на использование только 8 битов на канал.

И, как и любая другая форма сжатия, не имеет значения, если вам не важен размер файла (и более низкая скорость, с которой вы можете читать или записывать файлы большего размера). Теоретически вы можете использовать JPEG-подобный формат, в котором используется линейная гамма, если вы хотите выделить 11 бит для каждого канала, а не 8.

Итак, подведем итог: гамма - это просто форма сжатия: она уменьшает размер файла, необходимый для хранения определенного объема информации в том виде, в котором ее воспринимает глаз. Кроме того, он позволяет хранить более тонкие градации на той же глубине в битах.

5 голосов
/ 30 апреля 2019

Я бывший инженер радиовещания и в настоящее время работаю в художественных фильмах и на телевидении в качестве редактора и руководителя VFX.

Многие утверждения здесь неверны. Гамма на пути прохождения сигнала - это желаемое преимущество , и выбор первых дизайнеров видео для уменьшения воспринимаемого шума при передаче.

Все вакуумные трубки, включая ЭЛТ, имеют различную нелинейность (см. Закон Ленгмюра-Дитя). ЭЛТ могут варьироваться от «гамма» от 1,5 до 3,5 (при использовании сигнала напряжения) в зависимости от различных конструктивных различий. Нелинейности были меньше проблемы с монохромным, но стали более критичными с цветом, поэтому NTSC указал гамма сигнала 1 / 2.2. ЭЛТ дизайн и поддерживающие схемы корректируют фактическую гамму из закона Ленгмюра-Дитя (обычно понимаемого как 1,5, но обычно выше у ЭЛТ из-за ряда факторов) до уровня, соответствующего человеческому восприятию "гамма" ~ 2,5. Для NTSC предполагалось, что телевизионный приемник имеет гамма-цель ~ 2,4, ** в то время как PAL показывает ~ 2,8

.

Более высокая гамма в старых стандартах аналогового вещательного сигнала специально предназначена для уменьшения воспринимаемого шума, основанного на нелинейности человеческого восприятия. В этом случае использования преимуществ нелинейности, чтобы скрыть шум, благодаря эффекту «компандирования» гамма-кодирования сигнала. Это довольно академично.

Существует несколько способов, которыми дизайн CRT TV & Monitor мог бы быть изменен для достижения линейности, в отличие от кривой гамма-типа, но гамма-кривая в аналоговом радиовещании уменьшила видимый шум на 30 дБ. Гамма была желательна тогда КАК СЕЙЧАС .

Гамма необходима даже в том случае, если ЖК-монитор можно использовать линейно (гамма 1,0). Заявления о том, что гамма больше не нужна , являются полной койкой, и дают сбой чтобы понять текущую цель применения кривой предварительного выделения.

Гамма - это то, что позволяет sRGB (или Rec709) выглядеть «хорошо», хотя битовая глубина составляет всего 8 бит на канал. Вот пример:

Это изображение в sRGB, 8 бит, с предыскажения гаммы (т.е. обычное веб-изображение). normal

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

Гамма обеспечивает БОЛЬШЕ БИТОВ в темных областях для более плавных градиентов и снижения шума.

Если вы хотите работать полностью линейно, для всего вашего пути прохождения сигнала потребуется не менее 12 бит на канал. 8 бпк не достаточно. Кодирование с кривой и декодирование на дисплее позволяет использовать меньший блок данных, один байт на канал цвета.

В фильме мы используем линейное как рабочее пространство , но при работе с линейным мы имеем 32 бит на канал с плавающей запятой . Когда мы обмениваемся файлами линейного изображения, мы используем EXR Half, что составляет 16 бит на канал с плавающей точкой. (И если мы используем 10-битные файлы DPX, данные изображения кодируются с использованием кривой LOG).

НО

Используемые нами компьютерные мониторы по-прежнему могут отображать 8 или 10 бит для отображения, поэтому перед отправкой на монитор все линейные изображения все еще необходимо отрегулировать гамма-коррекцией. Почему?

Большинство «хороших» мониторов имеют всего 8 бит на канал, а многие просто «6-битные внутренние», что означает, что они берут 8 бит на канал и отображают как 6 бит на канал. Как они могут сделать приемлемое изображение?

GAMMA!

Мониторы на 10 бит на канал редки и дороги (как мой NEX PA271W). Мой NEC может принимать 10-битный сигнал и использует 14-битную внутреннюю LUT для профилирования. Но 10 битов по-прежнему недостаточно для линейного!

Гамма или некоторая форма кривой preemph / deemph требуется даже для 10 бит. 12 бит - это минимум для разумного линейного показа, и даже это неприемлемо для индустрии художественных фильмов.

Мы используем 12-битные проекторы для DCDM (Digital Cinema) и знаете что? DCDM использует не только CIE X´Y´Z´, но мы также используем проекторную гамму 2,6 !!!

DCI был создан для театров и представляет собой собственную закрытую экосистему, не опирающуюся на старые технологии, такие как CRT. Если бы было какое-то «преимущество» в использовании линейного (гамма 1.0) пространства, оно было бы использовано, но это не так.

Линейный НЕ используется в цифровом кино, потому что ADVANTAGE использует гамма-кривую .

Так что, пожалуйста, перестаньте говорить, что мы используем гамму только по старым причинам, потому что это неверно.

Пожалуйста, прочитайте Пойнтона по теме , поскольку он разъясняет эти вопросы в понятной форме.

Спасибо за чтение.

Сноска: ** В то время как NTSC указывал гамму сигнала 1 / 2,2, телевизоры ожидали, что будет иметь гамму 2,4 для усиления гаммы системы. Полезно отметить, что Rec709 (HDTV) и sRGB идентичны, за исключением кривой передачи. И что интересно, и sRGB, и Rec709 (через BT1886) задают «физическую гамму дисплея» 2,4 (т.е. гамму самого монитора). Но гамма-сигнал другой, ок. 2,2 для sRGB и около 2,0 для Rec709. в обоих случаях имеется системное усиление гаммы, которое является преднамеренным в зависимости от ожидаемой среды просмотра.

3 голосов
/ 01 марта 2015

Есть много запутанных статей о гамма-коррекции с множеством расплывчатых ссылок на гамму и человеческое зрение. Причина гаммы историческая и является результатом кривой отклика старых мониторов типа ЭЛТ (никак не связанных с человеческим зрением). У современных плоских экранов нет логической причины для гамма-кодирования и последующей коррекции, но он стал отраслевым стандартом.

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

2 голосов
/ 01 мая 2015

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

Гамма делается только для исправления серьезных потерь ЭЛТ-мониторов. ЭЛТ нелинейный, он показывает яркие тона, но теряет темные тона. Таким образом, гамма делает темные тона чрезмерно яркими, чтобы, как мы надеемся, они снова стали нормальными (линейными) после потерь ЭЛТ. Тем не менее, ЖК-мониторы являются линейными, и поэтому больше не нуждаются в гамме, но для сохранения совместимости со всеми старыми изображениями RGB в мире все стандарты по-прежнему включают одну и ту же гамму. ЖК-мониторам легко просто декодировать и отбрасывать их. И данные все еще работают на ЭЛТ.

Гамма ни в коем случае не касается человеческого глаза ... кроме того, что мы хотим видеть исправленные линейные исходные данные. Глаз действительно имеет подобный обратный отклик, который является чисто случайным, но человеческий глаз НИКОГДА не видит гамма-данные. Он всегда сначала декодируется (либо с помощью потерь на ЭЛТ, либо с помощью ЖК-чипа), и человеческий глаз снова видит только линейные данные (надеюсь). Так же, как он видел исходную сцену, на исходной сцене тоже не было необходимости в гамме. Глаз не нуждается в помощи. Выйдите на улицу и посмотрите на дерево. Там нет гаммы там. Действительно ли мы воображаем, что наш глаз не может хорошо видеть дерево? :) Подумайте об этом немного больше. Мозг декодирует реакцию глаза, а ЭЛТ или ЖК-дисплей декодирует кодирование данных. Те, кто заявляет, что гамма связана с глазом, просто не знают, они просто повторяют неправильные вещи, которые они слышали. Это не сложно услышать, но это очень неправильно. Эти парни должны объяснить, когда и как человеческий глаз может когда-либо видеть ту гамму, которую они считают необходимой. Он не может, у него нет шансов.

Гамма не составляет около 8 битов. Данные кодируются, а затем декодируются, и, будем надеяться, будут идентичны, чтобы мы могли видеть точное воспроизведение исходной линейной сцены. Гамма была сделана еще в начале NTSC TV (1940), прежде чем были какие-то биты, но у нас был ЭЛТ. :) Гамма - это только потери ЭЛТ. Чисто и просто. И еще в день CRT гамма была крайне необходима.

Данные RGB нормализуются (до значений в 0,1 процента) перед добавлением гаммы, как правило, с показателем 1 / 2,2 (приблизительный квадратный корень). 18% - это (0,18 ^ 1 / 2,2) = 0,46, или 46% на гистограмме, или 117 на шкале 0..255. (Люди изображают, что 18% также должны составлять 50%. :) 18% - это 18%, но мы видим почти 50%, только потому, что данные гистограммы имеют гамма-кодирование.) Но обратите внимание, что 0 для любого показателя степени по-прежнему равен 0, а 1 для любой показатель все еще равен 1, поэтому динамический диапазон не увеличивается. И никакого отсечения из-за гаммы тоже, конечные точки не могут двигаться. И, конечно же, потому что данные декодируются до того, как их увидят. Все это (кодирование, затем декодирование) просто не работает. Надеюсь, глаз не изменится. Но в файлах нормализованные данные (которые представляют собой ДИАПАЗОН) к показателю степени становятся большим числом, более ярким, за исключением того, что ни один глаз не может видеть это там.

Гамма делается ТОЛЬКО для исправления отклика ЭЛТ-мониторов.

1 голос
/ 03 декабря 2015

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

Гамма-коррекция в основном произошла из-за нелинейности электронной пушки ЭЛТ, которая требовала большего кодирования (т. Е. Применялось гамма-сигнал 45) для отправки однородного выхода (линейного выхода), поскольку характеристики электронной пушки ЭЛТ создают сигнал, как если бы он был декодирован (т.е. применяется 2,2 гамма-кривая). В дни CRT они кодировали все цифровые данные для обеспечения единообразия просмотра и обмена данными в Интернете, чтобы форматы файлов изображений в основном кодировались с помощью гамма-кривой sRGB, которая очень похожа на гамма-кривую .45455), и это отменило проблему с ЭЛТ-оружием. .

Теперь, после того как все данные в Интернете были закодированы, и из-за линейного поведения технологии ЖКД (т.е. входной сигнал = выходные значения) они обнаружили, что уже слишком поздно снова декодировать все цифровые данные после того, как они стали стандартом, поэтому они имеют пришел с логичным решением! и это снова имитирует дефект ЭЛТ, и они создали ЖК-дисплеи с чипом, который декодирует сигнал (то есть применяется 2,2 гамма кривая) так же, как устаревшая система :) в противном случае они должны были бы декодировать все данные в Интернете.

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

А вот связь с Гаммой и нашими глазами

Линейные данные, полученные с датчиков камеры. RAW Files которые по умолчанию имеют гамму = 1,00 (характер датчика камеры), т. е. (без декодирования или кодирования = без коррекции), когда сырые файлы, «отображаемые» на мониторе, становятся темными, «видны только темные», и для каждого канала по 10 и 12 бит - большие файлы, но к сожалению, мы вообще не пользовались этой глубиной, потому что наши глаза не чувствительны к ярким значениям настолько, насколько они слишком чувствительны к темным значениям и могут различить любые тонкие изменения в темноте (и я объясню ниже).

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

Таким образом, они обнаружили, что применение гамма-коррекции (например, путем кодирования необработанных данных в некоторый формат, такой как JPEG, с гаммой .45455 sRGB), благодаря удачной конвертации его в 8 бит на канал, что означает меньший размер файла в дополнение к правильному просмотру или отображению значения яркости (то есть с помощью записи гаммы .45455 в пиксели) и повторного повышения темных и средних тонов) очень соответствуют природе глаза.

Мое объяснение состоит в том, что в клетках палочек в глазах у нас есть способность к ночному зрению и слишком чувствительная природа различения темных значений >> у нас около 120 миллионов палочек палочек против 6 или миллионов для клеток конусов, которые чувствительны к однотонные цвета и длины волн

Я думаю, что это не Кривая Реакции Глаза, которая ответственна за это, и не пытайтесь связать между Гаммой Гла и Гаммой Мониторинга каким-либо другим способом, и Пожалуйста, исправьте меня, если я неправ :). Я изо всех сил пытался понять Гамма-проблемы, так что все, что у меня есть об этом.

Это одно из лучших упоминаний о гамма-причинах и решениях

http://www.w3.org/TR/PNG-GammaAppendix.html

0 голосов
/ 14 мая 2015

ЖК-мониторы являются «линейными» и сегодня не нуждаются в гамме, но ЭЛТ-мониторы являются нелинейными и по-прежнему нужны. И во всех мировых архивах существующих изображений есть гамма для ЭЛТ, поэтому гораздо проще продолжать добавлять гамму, чем менять все программное обеспечение и устаревать все существующие изображения.

Человеческий глаз абсолютно бесполезен для гаммы. Глаз видит исходную сцену нормально без гаммы. Гамма предназначена ТОЛЬКО для исправления ожидаемых потерь ЭЛТ-мониторов (поэтому мы видим воспроизведение оригинальной сцены). Светодиодные мониторы знают, что нужно просто декодировать гамму и отбрасывать ее, что не составляет особого труда (поскольку человеческий глаз ожидает точного воспроизведения исходных данных сцены без гаммы, воспроизведение должно выглядеть одинаково). Было бы плохо видеть это как гамма-данные. К счастью, человеческий глаз не имеет возможности увидеть какие-либо гамма-данные. Сайты, говорящие нам, что глаз нуждается в гамме, просто не знают ничего о гамме.

Однако наши гистограммы имеют гамма-кодирование, поскольку данные кодируются (по вышеуказанной причине) вплоть до того, как они будут показаны человеческому глазу. Средняя точка наших закодированных данных составляет не 50%, а около 73% в гамма-данных (настройки камеры, такие как баланс белого и контрастность, смещают его немного больше). Если вы недоэкспонируете изображение ровно на одну остановку, точка 255 сместится примерно до 3/4, а НЕ до 50%. Серая карта 18% составляет 18% в линейных данных, но около 46% в гамма-данных. Люди, которые ошибочно полагают, что они должны составлять 50%, могут даже подумать о калибровке своего светомера. :) Но глаз никогда не видит гамма-данные, они всегда сначала декодируются, так или иначе. Надеюсь, что глаз всегда видит точное воспроизведение оригинальной сцены.

Но FWIW, принтеры тоже нуждаются в большей части изменения гаммы. Не значение 2.2, но не слишком далеко от него (из-за точечного усиления и т. Д.). Сейчас Apple соблюдает мировые стандарты 2.2, но все мы знаем, что ранние компьютеры Mac использовали гамму 1.8. Это НЕ для монитора, они использовали те же мониторы, что и Windows (мониторы взаимозаменяемы). Но Apple тогда продавала лазерные принтеры, а гамма 1.8 была для их принтера. Затем видеооборудование Mac добавило немного больше, чтобы довести его до версии 2.2, которая требовалась для CRT. Сегодня принтеры должны немного снизить его по сравнению с полученными данными 2.2, но им все еще нужно много.

Сегодня стандартом является гамма 2.2, поэтому все существующие в мире данные RGB по-прежнему совместимы.

0 голосов
/ 01 сентября 2014

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

0 голосов
/ 01 сентября 2014

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

Вещи о ЭЛТ больше не применяются. Но есть очень хорошая практическая причина продолжать использовать изображения с гамма-кодированием. Использование гамма-кодирования делает правки, подобные кривым, «нормальными», потому что глаз не реагирует линейно на свет - посмотрите на создание пространства LAB, чтобы узнать больше.

Например, посмотрите на этот скриншот: enter image description here

Левое изображение - оригинал, среднее изображение - копия в гамме 2.2, а правое изображение - копия в гамме 1.0. Кривая, примененная к каждой из копий, видна. Учитывая форму кривой, версия 2.2 или 1.0 выглядит так, как вы ожидаете?

...