Что такое Гамма-коррекция, EOTF, BT.1886

Пожалуй, для человека, который интересуется тонкостями цветопередачи, понимание гамма-коррекции дисплея является одной из самых непростых задач. Гамма-коррекция дисплея также именуется EOTF (Electro Optical Transfer Function). Правда, часто словом EOTF называют новый стандарт гамма-коррекции BT.1886, но в самом тексте стандарта становится понятно, что под EOTF подразумевается просто гамма-коррекция дисплея...

Действительно, «гамма» — не очень удобное и не очень понятное слово, а вот «функция электро-светового преобразования» (EOTF) точно определяет, с чем мы имеем дело: очевидно, есть электричество с одной стороны и свет с другой, а функция нужна для того, чтобы определить, как именно свет зависит от электричества. Безусловно, слово «optical» можно при желании перевести и иначе, но тогда это будет сбивать с толку.

Вообще, зачем все это и чего мы хотим добиться? Возьмем 8-битный цвет. От черного до белого всего 256 градаций. Мы хотим, чтобы эти градации были не только различимы, но и чтобы различия между каждыми двумя оттенками воспринималась нами, как одинаковая. Воспринимаемая яркость называется светлотой. Мы хотим, чтобы разница, к примеру, между цветом 25 и 26 (почти черный) была для нашего глаза такой же, как, скажем, между 201 и 202 (почти белый). В общем, по мере увеличения цифры, характеризующей цвет, мы хотим, чтобы светлота росла линейно.

История вопроса — нелинейность восприятия

А в чем, собственно, проблема?

Если у меня в руке какой-нибудь прибор наподобие люксметра, а вы меня попросите сделать картинку проектора в два раза ярче, то я вас спрошу: в два раза ярче для люксметра, или для зрения? То есть, рост измеримого параметра яркости в два раза не будет соответствовать увеличению светлоты, воспринимаемой яркости, в два раза.

Spacediver с avsforum.com приводит график различных представлений о том, какая именно функция отражает степень увеличения светлоты по мере роста измеримой яркости:

По оси y — светлота, по оси x — яркость. Видно, что на каждом графике отмечены 10 точек, которые соответствуют десяти градациям воспринимаемой яркости (светлоты). Согласно некоторым из формул, 50% различимых нами оттенков заключены в 20% диапазона яркости от черного до серого. Господи, мы различаем эти точки, как имеющие одинаковую разницу по яркости… Это ужасно!

Примерно график этой функции можно определить, как y=x1/2,4. Но только примерно!

История вопроса — ЭЛТ кинескопы

И вот, жили мы себе и не задумывались, после чего человечество изобрело кинескопы. И вот, казалось бы, пора обратить внимание на гамма-функцию… но оказалось незачем. Спасло положение счастливое совпадение: оказалось, что у кинескопов подаваемое напряжение (то есть сигнал) влияет на яркость свечения тоже нелинейно. Да еще как нелинейно! Примерно по формуле яркость = напряжение2,4

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

Две функции встретились: светлота = яркость1/2,4 и яркость = напряжение2,4

От их слияния получилось простое светлота = напряжение. Более-менее линейная зависимость воспринимаемой яркости и интенсивности сигнала! Вот это удача! Более-менее, потому что EOTF кинескопов мог быть с показателем от 2,2 до 2,5. 

Вот и даже в стандарт Rec.709 гамма-функция дисплея не вошла.

Имитация ЭЛТ

Но вот появились всяческие не-ЭЛТ дисплеи и для единообразия возникла задача имитировать поведение ЭЛТ дисплеев. Вроде как сошлись на том, что степенная функция ч показателем 2,4, то есть y=x2.4, где y-яркость, а x-уровень сигнала… так вот, было решено, что именно эта функция лучше всего описывает поведение ЭЛТ… при (такая маленькая оговорочка) идеально черном черном цвете. Ну и начали настраивать дорогие домашние кинотеатры с первоклассными уровнями черного под эту гамму.

А потом выяснилось, что для дома и для компьютера это перебор — оттенки серого в районе черного цвета плохо различимы, и поэтому в sRGB стандарте используется показатель гамма-функции 2,2. Благодаря гамме 2,2 оттенки почти-черного становятся лучше различимыми, но вот «середина» становится немного неконтрастной. Так и ходим мы с тех пор между гаммой 2,2 и 2,4.

Графики y=x2.2, y=x2.4, y=x1

Измерение гамма-функции

Вы выводите на экран изображения с яркостью 0, 10%, 20%… 90%, 100% и измеряете яркость, вносите полученные значения в таблицу, строите график и смотрите, на что это похоже. 

Как правило, если гамма ниже 2,2, то это можно использовать при свете, поскольку тени будут более различимы. Выше 2,4 для обычного HD видео не требуется. Как гамма 2,2, так и 2,4, могут считаться правильными вариантами.

Что-то пошло не так?

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

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

Возьмем пример spacedivera с avsforum.com. Если у нас максимальная яркость 100 кд/м2 (чтобы получить фут-ламберты, надо разделить на число Пи), а яркость черного — 10 кд/м2, то мы можем попытаться сдвинуть график гамма-коррекции вверх:

Или же, что более правильно, сдвинуть вверх только черный, а график перемасштабировать:

Казалось бы, «какие же мы хитрые», но нет! Ну не ведет себя глаз подобным образом на яркости 10 кд/м2. Около 0 — ведет, а тут — нет.

На помощь приходит стандарт ITU-BT.1886. Он опирается на гамму с показателем 2,4. Однако, в формуле зашиты также и максимальная яркость и минимальная яркость дисплея. Максимальная и минимальная яркости, реально демонстрируемые диспллем являются в формуле гаммы BT.1886 переменными, приходящими на замену настройкам «яркость» и «контрастность», к которым так привыкли пользователи. Напомню, традиционно яркость регулирует яркость черного, а контрастность — яркость белого. Гамма-функция для примера выше должна выглядеть вот так:

Ну а при идеальном черном гамма BT.1886 будет равна… гамма-функции с показателем 2,4. 

BT.1886

Стандарт ITU-BT.1886 — первая попытка прийти к общему знаменателю по гамма-функции, или «EOTF». В нем заявляется, что за основу, действительно, берется степенная функция с показателем 2,4. Затем в формулу вводится переменная часть, зависящая от уровня черного цвета и уровня белого (максимальной яркости). Данная формула гаммы решает вопрос, связанный с тем обстоятельством, что при использовании дисплея с высоким уровнем черного, использование классической степенной гаммы приводит к ухудшению различимости оттенков темно-темно-серого, к воспринимаемой неравномерности изменения яркости цветов от черного к белому. Несмотря на кажущееся усложнение, BT.1886 призвана добиться более одинакового результата у различных дисплеев различных ценовых категорий.

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

Ссылки:

Обсуждение на avsforum.com (на английском)

Стандарт BT.1886 (на английском)

Нет комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.