Передаточные функции: gamma, PQ и HLG

Автор: Николай СапуновОбновлено: август 202617 мин чтения
Содержание статьи +

TL;DR

Передаточная функция – это небольшая математическая формула, с помощью которой видеофайл преобразует числовые значения в яркость на экране и обратно. Старая формула, называемая gamma, была стандартом более 80 лет и до сих пор используется в каждом телевизоре с диапазоном яркости SDR (Standard Dynamic Range). HDR-видео применяет две новые передаточные функции: PQ (Perceptual Quantizer, SMPTE ST 2084), которая обеспечивает точное отображение яркости от 0 до 10 000 нит и применяется в Dolby Vision и HDR10, и HLG (Hybrid Log-Gamma), разработанную BBC и японской NHK так, чтобы один и тот же телевизионный сигнал корректно отображался как на старых SDR-, так и на новых HDR-телевизорах. Выбор правильной передаточной функции – одно из самых важных решений при доставке HDR-контента: ошибка в выборе приведёт к тому, что ваш HDR-файл будет выглядеть блекло на SDR-устройстве, либо ваш резервный SDR-сигнал покажется чрезмерно насыщенным на HDR-устройстве.

Зачем это знать

Если ваш продукт транслирует видео, которое зритель может смотреть на HDR-смартфоне, ноутбуке или телевизоре, – вы столкнётесь с передаточными функциями в тот же момент, когда заметите: «на iPhone изображение выглядит странно, а на офисном мониторе – нормально». В восьми из десяти случаев причина – в отсутствии тега передаточной функции, его ошибке или в том, что плеер не может его корректно интерпретировать. Эта статья даёт модель, как мгновенно выявить такую проблему, и даёт названия терминов, которые пригодятся в разговоре с подрядчиком по кодированию. Математическое образование не требуется – будем строить идею шаг за шагом.

Что делает «передаточная функция» на самом деле

Начнём со слова передаточная функция. Это просто инженерный жаргон для «формулы, которая переводит одно число в другое». В видео преобразование происходит дважды: когда камера записывает файл и когда экран его отображает.

Вот зачем вообще нужна формула. Свет, испускаемый реальной сценой, и яркость, воспроизводимая экраном – это непрерывные величины: небо может быть в миллион раз ярче, чем соседняя тень. Числа, которые мы храним в цифровом файле, – дискретные: для 8-битного канала они идут от 0 до 255, и больше ничего. Преобразовать диапазон яркости в миллион раз в всего 256 значений требует специальной таблицы пересчёта. Эта таблица и есть передаточная функция.

Если бы мы использовали простую линейную таблицу – «0 означает отсутствие света, 255 – максимальную яркость, всё остальное пропорционально» – почти все значения оказались бы сконцентрированы в ярких участках сцены, а тёмным – почти ничего не досталось бы. Дело в том, что человеческий глаз экспоненциально чувствительнее к изменениям яркости в тенях, чем в светлых зонах. Изменение яркости на 1% в тенях – это заметно и существенно. То же самое изменение в светах – практически незаметно. Поэтому вместо прямой линии передаточные функции намеренно изогнуты: они распределяют большую часть числовых значений там, где это важно для восприятия – в тенях и средних тонах.

Каждая передаточная функция состоит из двух половинок, зеркально отражённых друг относительно друга:

  • OETF (Opto-Electrical Transfer Function): рецепт на стороне камеры. Преобразует физический свет, попадающий на сенсор, в число, сохраняемое в файле. «O» – «оптика» (свет), «E» – «электрика» (хранимый сигнал).
  • EOTF (Electro-Optical Transfer Function): рецепт на стороне экрана. Преобразует число, считанное из файла, обратно в физическую яркость на дисплее. Те же буквы, но направление – обратное.

Чтобы система работала корректно, OETF камеры и EOTF экрана должны использовать одну и ту же формулу преобразования. Это согласование – «тег» передаточной функции, который передаётся в виде метаданных внутри видеофайла. Если камера записала сигнал по одной кривой, а экран обрабатывает его по другой, изображение получается искажённым: обычно слишком тёмным, слишком ярким, либо с потерями в тенях и пересвеченными светами. Вернёмся к этому вопросу в конце. 1

Рис. 1. Пайплайн передаточной функции. Свет от сцены преобразуется OETF камеры в сохранённое число; дисплей с помощью своего EOTF восстанавливает свет на экране. Если обе части используют разные формулы – изображение будет искажённым.

Gamma – оригинальная формула, до сих пор определяющая SDR

Самая старая передаточная функция в видео – gamma – это случайность физики, ставшая стандартом.

Электронно-лучевые трубки (CRT) телевизоров с 1939 года обладали одной особенностью: электронный луч, с помощью которого формировалось изображение, не реагировал на подаваемое напряжение линейно. При подаче напряжения на уровне 50% от максимума яркость луча составляла лишь около 22% от максимальной – а не 50%. Это нелинейное поведение описывалось формулой яркость = напряжение^γ, где γ (греческая «гамма») находилось в диапазоне от 2,2 до 2,4. 2

Ранние инженеры по вещанию сталкивались с выбором: либо встроить в каждый телевизор дорогие корректирующие схемы для исправления кривой, либо принять эту кривую и заранее скорректировать сигнал на стороне вещания. Выбрали более дешёвый путь – применять обратную кривую на камере. Тогда, когда естественная кривая ЭЛТ-дисплея «декорректировала» сигнал, изображение получалось правильным. Камеры преобразовывали сигнал по формуле напряжение = свет^(1/2,2), а телевизоры – по свет = напряжение^2,2, и эти две операции взаимно компенсировали друг друга.

Когда появились цифровое видео и плоскопанельные дисплеи, инженеры могли перейти на линейную систему. Но к тому времени в мире уже существовало более миллиарда часов гамма-кодированного контента, и современные LCD- и OLED-экраны просто имитируют старую кривую CRT. Сегодняшний стандарт BT.1886 формализует гамму 2,4 как EOTF для HDTV. Стандарт sRGB для компьютерной графики использует немного иную гамму со средним значением 2,2. 3

Случайность оказалась полезной. Гамма-кривая случайно оказалась хорошо согласована с чувствительностью человеческого глаза: она выделяет больше градаций из 256 уровней (в 8-битном видео) в тёмных тонах, где глаз наиболее чувствителен, и меньше – в ярких, где изменения незаметны. Поэтому 8-битное SDR-видео выглядит приемлемо. Если бы гамма-кривая была линейной, 8-битное видео демонстрировало бы сильный banding в тенях.

Где gamma до сих пор используется в 2026: каждый SDR-видеопоток, который вы смотрите – Netflix SDR, YouTube SDR, эфирное телевидение, Zoom-звонки, веб-камера ноутбука, любое приложение в соцсетях. Примерно 95% всего видео в коммерческом использовании сегодня – gamma-кодированное.

Где gamma фейлит: везде, где яркость превышает примерно 100 нит. SDR проектировался под пиковый белый цвет экрана в 100 нит – примерно как лист бумаги при офисном освещении. Современные HDR-экраны достигают 1000, 4000, а то и 10 000 нит, и gamma просто не определяет поведение выше 100. Поэтому HDR потребовал новой формулы.

PQ – точная формула для премиум HDR

Первая формула, разработанная специально для HDR, – PQ (сокращение от Perceptual Quantizer). Её разработала компания Dolby в 2014 году, а стандарт SMPTE ST 2084 был утверждён SMPTE в том же году. 4

Что делает PQ принципиально отличной от gamma – её отправная точка. Gamma возникла случайно, как побочный продукт CRT-технологий. PQ же была спроектирована осознанно, исходя из особенностей человеческого зрения – а именно, с учётом того, сколько различимых уровней яркости глаз способен реально различить при каждой интенсивности света. Команда Dolby провела измерения на сотнях зрителей и построила кривую – Barten ramp, описывающую «just noticeable difference» (JND) глаза при различных уровнях яркости – от очень тёмных до очень ярких. PQ распределяет свои 1024 уровня (в 10-битном формате) так, чтобы каждый шаг по шкале соответствовал ровно одному JND – то есть глаз не замечает ступенек, независимо от того, насколько ярко или тёмно изображение.

Результат – формула, создающая визуально идеальные градиенты до 10 000 нит, в 100 раз ярче, чем потолок gamma на 100 нит. В 12-битном PQ не возникает заметного banding ни в одном участке полного диапазона. 4

Но у PQ есть жёсткое правило, заложенное в её архитектуру: она задаёт абсолютную яркость, а не относительную. Когда PQ-файл указывает «уровень 50%», это означает «ровно 92 нита на экране – независимо от того, какой у вас дисплей». Если ваш экран физически не способен достичь 10 000 нит (а почти ни один потребительский не может), плеер обязан применить tone-mapping – сжать самые яркие участки изображения до диапазона, который реально может отобразить дисплей. Tone-mapping – это отдельная сложная задача, и разные плееры решают её по-своему. Один и тот же PQ-файл может выглядеть по-разному на LG OLED, Samsung QLED и телевизорах Sony, хотя сам файл при этом остаётся идентичным.

Где PQ используется в 2026: каждый стрим Dolby Vision и HDR10. HDR-контент на Netflix, Disney+ и Apple TV+, все премиум-4K Blu-ray, все кино-мастера в формате Dolby Vision. PQ стала универсальной формулой для on-demand премиум HDR. 4

Где PQ испытывает трудности: в live-стриминге (где невозможно заранее адаптировать контент под максимальную яркость на неизвестных дисплеях) и в смешанных SDR/HDR-средах (где один и тот же сигнал может воспроизводиться одновременно на старых и новых телевизорах). Именно эту проблему и решила HLG.

HLG – формула, разработанная для прямого эфира

HLG, сокращение от Hybrid Log-Gamma, была разработана совместно BBC и японской NHK в 2015 году и стандартизирована как ARIB STD-B67. Её название отражает структуру: нижняя часть кривой – традиционная гамма-характеристика (совместимая с обычными SDR-телевизорами), а верхняя – логарифмическая (обеспечивающая HDR-яркость). 5

HLG создана для решения специфической проблемы в индустрии вещания. Представьте: BBC транслирует футбольный матч. У одних зрителей – современные HDR-телевизоры, у других – старые SDR-телевизоры 2014 года. Нельзя передавать два отдельных потока – пропускная способность и бюджет не позволяют. Нужен один сигнал, который автоматически корректно отображается на обоих типах экранов.

Трюк в том, что SDR-телевизор, не знакомый с HLG, видит только нижнюю часть HLG-кривой – а эта нижняя часть соответствует обычной гамма-кривой, поэтому SDR-телевизор отображает изображение корректно. HDR-телевизор, понимающий формат HLG, декодирует полную кривую, включая логарифмически расширенную верхнюю часть, и получает правильное HDR-изображение. Один файл, два устройства – оба довольны, без дополнительной обработки. 5

HLG по-другому решает вопрос абсолютной и относительной яркости по сравнению с PQ. HLG – относительная система: уровень сигнала 50% не соответствует фиксированной яркости, а означает «50% от пиковой яркости вашего экрана, какой бы она ни была». Дисплей с яркостью 500 нит покажет это как 250 нит, а 1000-нитовый – как 500 нит. Тономаппинг не требуется, поскольку яркость автоматически масштабируется под характеристики экрана. Это упрощает трансляцию живого контента, но означает, что художественный замысел («этот световой акцент должен быть именно такой яркости») оказывается менее точным, чем при использовании PQ.

Где HLG используется в 2026: прямые трансляции HDR. BBC, NHK (Япония), большинство европейских общественных вещателей и всё большее число спортивных продакшенов используют HLG. YouTube также поддерживает HLG для HDR-загрузок. 6

Где HLG испытывает трудности: в тщательно проработанном кинематографическом контенте. Кинематографисты стремятся к полному контролю над яркостью – если сцена должна быть тусклой, она должна оставаться тусклой повсюду, без растягивания под любой экран. PQ обеспечивает такой контроль; HLG жертвует им ради удобства.

Рис. 2. Три передаточные функции рядом. Gamma остаётся в пределах 100 нит. PQ масштабируется до 10 000 нит с математически равномерными перцептивными шагами. HLG имеет нижнюю часть в форме gamma (чтобы SDR-телевизоры могли её корректно отобразить) и логарифмическую верхнюю часть (чтобы HDR-телевизоры могли её растянуть). Разные формулы – разные компромиссы.

Сравнение: гамма, PQ и HLG

Вся история – в одной таблице.

СвойствоGamma (BT.1886 / sRGB)PQ (SMPTE ST 2084)HLG (ARIB STD-B67)
Год стандарта1939 (CRT-эра), 2011 (BT.1886)20142015
Пиковая яркость100 нит10 000 нитобычно 1000 нит на современных HDR-наборах
Тип сигналаОтносительныйАбсолютныйОтносительный
Обратная совместимость с SDR-ТВn/a (это и ЕСТЬ SDR)НетДа (нижняя половина – gamma-кривая)
Tone-mapping для дисплеев ниже пика?Нет (SDR – 100-нит базовая линия)Да – и варьируется по плееруНет (масштабируется автоматически)
Типичное использованиеЛюбой SDR-стрим, эфирное ТВ, Zoom, вебDolby Vision, HDR10, премиум-стримингLive HDR-broadcast, BBC, NHK, спорт
Минимальная битовая глубина без banding8-bit (с оговорками)10-bit минимум, 12-bit для полного диапазона10-bit

Почему это важно в вашем пайплайне – проблема тегирования

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

Три режима сбоев, которые вы можете встретить в продакшене:

Провал 1: HDR-файл помечен как SDR. Кто-то экспортировал HDR-мастер с PQ-кодировкой, не сохранив метаданные передаточной функции. Файл попадает в плеер, который, не найдя соответствующих тегов, по умолчанию применяет гамма-коррекцию. Плеер пропускает PQ-значения через гамма-кривую и выдаёт изображение, которое получается слишком ярким, с неоново-зелёными и «горящими» красными оттенками. Именно это люди имеют в виду, говоря: «HDR-файл выглядит перенасыщенным на моём SDR-телефоне».

Провал 2: SDR-файл помечен как HDR. Реже, но хуже. Энкодер записал неверный тег, HDR-совместимый плеер применяет PQ EOTF к гамма-кодированным данным – и картинка получается серой, тусклой и безжизненной. Всё выглядит как туманный день. Именно это люди имеют в виду, когда говорят: «HDR-режим на этом телевизоре всё выцветляет».

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

Исправление во всех трёх случаях одинаково: проверить файл ffprobe, выяснить, какой тег передаточной функции установлен (или отсутствует), и перетегировать на стадии upstream. Значения тега, которые нужно искать: color_transfer=bt709 (гамма для SDR), color_transfer=smpte2084 (PQ) или color_transfer=arib-std-b67 (HLG). Если видите unknown – проблема в тегировании выше по цепочке.

# Проверить тег передаточной функции и прочую цветовую метадату
ffprobe -v error -select_streams v:0 \
  -show_entries stream=color_transfer,color_primaries,color_space,color_range \
  -of default=noprint_wrappers=1 input.mp4

Корректно размеченный HDR-файл должен возвращать что-то вроде:

color_primaries=bt2020
color_transfer=smpte2084
color_space=bt2020nc
color_range=tv

Корректно размеченный SDR-файл должен возвращать:

color_primaries=bt709
color_transfer=bt709
color_space=bt709
color_range=tv

Если поле color_transfer содержит значение unknown или отсутствует – это означает, что upstream-кодирование потеряло метаданные, и исправлять нужно именно на этом этапе. Мы уже рассматривали аналогичную проблему с тегированием в статье «Цветовые пространства: RGB, YCbCr, BT.709, BT.2020, DCI-P3»; тег передаточной функции – один из трёх цветовых тегов, который должен проходить через всю цепочку обработки end-to-end. 3

Какая передаточная функция для какого продукта?

Практические рекомендации:

Тип продуктаПередаточная функцияПочему
SDR-стриминг, конференции, онлайн-обучение, surveillanceGamma (BT.1886 / sRGB)Универсальная поддержка устройств; 95% зрителей и так видят SDR
Премиум 4K VOD с HDR (Netflix-стиль)PQИспользуется всеми премиум HDR-сервисами; точный артистический контроль
Live 4K broadcast (спорт, новости, события)HLGОдин сигнал работает на SDR и HDR; tone-mapping на клиенте не нужен
Театр / кино-grade премиум-стримингPQ + Dolby Vision dynamic metadataDV построен на PQ + per-scene метадата
YouTube HDR-загрузкиЛибо PQ, либо HLGYouTube принимает оба; HLG чуть проще отгружать
Смешанный пайплайн (часть HDR, часть SDR доставки)PQ-мастер + автоматический SDR-деривативОдин HDR-исходник, два транскода – SDR-fallback автоматический

Если не уверены, какой профиль выбрать – почти всегда правильный ответ: gamma. Переходите к PQ или HLG только при осознанной HDR-стратегии, целевой аудитории с HDR-устройствами и контент-библиотеке, которая действительно выигрывает от расширенной яркости. Глубже про HDR-картину

Рис. 3. Дерево решений для выбора передаточной функции. Ответы на два вопроса – является ли доставка HDR и идёт ли вещание в прямом эфире – помогают определить подходящую формулу.

Частая ошибка: считать, что «10-бит = HDR»

Ловушка, в которую часто попадают продакт-команды: путать битовую глубину с HDR. Это не одно и то же.

Битовая глубина – это количество различимых уровней яркости, которые может принимать каждый пиксель (покрыто здесь). Передаточная функция – это формула, которая преобразует эти уровни в реальный свет. Можно использовать 10-битный SDR-контент (многие продукты именно так и делают – это просто обеспечивает более плавные градиенты в SDR). Можно использовать 10-битный HDR-контент (например, HDR-контент на Netflix). Эти две концепции независимы.

На практике они часто идут вместе, потому что PQ и HLG работают лучше всего при глубине цвета не менее 10 бит, а для SDR 10 бит обычно не требуются (гамма в 8 бит вполне достаточна для большинства зрителей). Однако это корреляция, а не причинно-следственная связь. При выпуске HDR-контента необходимы оба компонента – 10-битное хранение и передаточная функция PQ или HLG – и оба должны быть правильно помечены. Подробнее про bit depth

Чем мы занимаемся в Фора Софт

Мы сталкиваемся с багами в передаточных функциях клиентских пайплайнов почти каждую неделю. На платформе телемедицины внезапно обнаруживаются оранжевые оттенки кожи на iPhone, но не на Android – выяснилось, что тег colour-transfer был утерян на этапе ingest. OTT-сервис запускает поддержку HDR и получает жалобы на «мутность» изображения на более дешёвых телевизорах – оказывается, tone-mapping на плеере работает некорректно. Система видеонаблюдения получает потоки с камер, использующих HLG по умолчанию, и записи выглядят выцветшими – софту для просмотра применяется неправильный EOTF. Исправлять такие проблемы всегда нужно выше по цепочке – в потоке метаданных. Именно такой фреймворк мы и применяем в своей практике.

Ключевые выводы

  • Передаточная функция – это формула, преобразующая сохранённое числовое значение в реальную яркость изображения на экране. OETF применяется на стороне камеры, EOTF – на стороне дисплея.
  • Gamma (BT.1886, sRGB) – стандартная формула для SDR, используется по умолчанию. Ограничена уровнем в 100 нит.
  • PQ (SMPTE ST 2084) – абсолютная HDR-формула, применяемая в Dolby Vision и HDR10. Разработана с учётом особенностей человеческого зрения и поддерживает яркость до 10 000 нит.
  • HLG (ARIB STD-B67) – HDR-формула, удобная для вещания, используется BBC, NHK и в прямом эфире. Обратно совместима с SDR-телевизорами и работает с относительной яркостью.
  • Помечайте каждый файл на всём пути обработки правильным значением color_transfer. Отсутствие или ошибка в тегах – главная причина жалоб на «странно выглядящий HDR».
  • 10-битность ≠ HDR. Можно иметь 10-битный SDR (gamma в 10-битном формате), а для полноценного HDR требуется и 10-битное хранение, и использование PQ или HLG.

Что читать дальше

Источники

  1. Определения OETF / EOTF / OOTF; как две половины должны согласовываться. Transfer Functions and Their Functions in High Dynamic Range Workflow, Telestream. https://blog.telestream.com/2022/11/transfer-functions-and-their-functions-in-high-dynamic-range-workflow/
  2. Gamma как наследие CRT-физики; история экспонента 2,2/2,4; BT.1886 формализует gamma 2,4. HDR Primer Part 2, The Broadcast Bridge. https://www.thebroadcastbridge.com/content/entry/13733/hdr-primer-part-2-advanced-hdr-details
  3. Объяснение HDR-видеотерминов; теггинг передаточной функции в пайплайне. HDR Video Part 3: HDR Video Terms Explained, Paradox Post. https://www.paradoxpost.com/post/hdr-video-part-3-hdr-video-terms-explained
  4. Стандарт PQ / SMPTE ST 2084; происхождение Dolby 2014; Barten ramp; диапазон 10 000 нит. Wikipedia: Perceptual quantizer. https://en.wikipedia.org/wiki/Perceptual_quantizer
  5. HLG разработана BBC и NHK; hybrid log + gamma структура; обратная совместимость с SDR. The BBC Explains Hybrid Log Gamma for HDR, Display Daily. https://displaydaily.com/the-bbc-explains-hybrid-log-gamma-for-hdr/
  6. Сравнение PQ vs HLG: абсолютная vs относительная; tone-mapping требования; broadcast vs streaming. PQ and HLG transfer functions for HDR, Venera Technologies. https://www.veneratech.com/hdr-transfer-functions-hlg-pq

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.