Содержание статьи +
- TL;DR
- Зачем это знать
- Как цвет становится числом
- RGB – родной язык камер и экранов
- YCbCr – формат, который реально использует каждый видеокодек
- Почему трёх чисел недостаточно – стандарты внутри семейства
- BT.709 – цветовое пространство HD-видео
- DCI-P3 – цветовое пространство цифрового кино
- BT.2020 – цветовое пространство 4K и HDR
- Side-by-side: BT.709, DCI-P3, BT.2020
- Где всё это идёт не так – и как это засечь
- Практический совет: какое цветовое пространство для какого продукта?
- Чем мы занимаемся в Фора Софт
- Ключевые выводы
- Что читать дальше
- Источники
TL;DR
Когда вы храните цвет числами в видеофайле, вам нужно договориться с тем, кто эти числа будет читать, какому именно цвету соответствует каждое число. Эта договорённость называется цветовым пространством. Существуют два больших семейства. Первое – RGB – хранит каждый пиксель как три числа, описывающие, сколько красного, зелёного и синего смешать. Это то, что захватывают камеры и показывают экраны. Второе – YCbCr – хранит каждый пиксель как одно число яркости и два числа цветовых разностей; любой видеокодек использует этот формат, потому что он сжимается гораздо эффективнее. Внутри каждого семейства несколько конкретных стандартов (BT.709 для HD, DCI-P3 для цифрового кино, BT.2020 для 4K и HDR) определяют, какие именно красный, зелёный и синий имеются в виду и какую часть реальной радуги они могут покрыть. Если файл видео заявляет одно цветовое пространство, а плеер предполагает другое, все цвета на экране будут неправильными – выцветшими, перенасыщенными или сдвинутыми по оттенку. Эта статья объясняет все пять, зачем они существуют и как их не сломать.
Зачем это знать
Если вы делаете любой продукт, работающий с видео – стриминг-сервис, образовательную платформу, видеоредактор, telemedicine-приложение – цветовые пространства рано или поздно создадут проблемы. Симптомы легко узнать, если видели их пару раз: оттенки кожи, выглядящие бледно-голубоватыми; красный логотип бренда, не совпадающий с печатным; 4K-фильм, который на одном устройстве выглядит тускло-серым, а на другом перенасыщенным. Это не баги кодека. Это несоответствия цветовых пространств – где-то в вашем пайплайне две стадии не согласны, в каком цветовом пространстве находятся числа в файле. Когда вы поймёте, как система должна работать, каждое исправление становится очевидным, и большую часть можно применить одним флагом командной строки. К концу статьи вы будете знать, какое цветовое пространство для какого типа контента, какие метаданные цвета спрашивать у подрядчика по кодированию, и как засечь несоответствие на первом просмотре.
Будем строить картину по кусочкам – никаких предварительных знаний не требуется. Начнём с «что это вообще значит – цвет это число?» и поднимемся через все термины и стандарты, активно используемые сегодня.
Как цвет становится числом
Начнём с самого начала. Цвет – физически – это свойство света. Белый солнечный свет, пройдя через призму, разворачивается в радугу – непрерывный диапазон длин волн от коротких (фиолетовый, около 380 нанометров) через средние (зелёный, около 555 нм) до длинных (красный, около 700 нм). Любой видимый цвет – это либо одна чистая длина волны, либо смесь многих длин волн, одновременно попадающих в ваш глаз.
В вашем глазе нет отдельных рецепторов для каждой длины волны. Есть три типа цветовых клеток, называемых колбочки, каждая настроена на свой перекрывающийся диапазон – одна имеет пик на красноватых длинах, одна на зеленоватых, одна на синеватых. Мозг считывает относительную силу этих трёх сигналов и строит каждый цвет, который вы воспринимаете, из этого трёхканального сигнала. Цвет «жёлтый», который вы видите, – это не отдельная колбочка, это красные и зелёные колбочки, срабатывающие вместе. Цвет «белый» – все три, срабатывающие примерно одинаково.
Эта биологическая особенность имеет одно огромное инженерное следствие: почти любой видимый цвет может быть воспроизведён смешиванием правильных количеств трёх тщательно выбранных опорных цветов. Это фундамент любого экрана, любой камеры, любого принтера и любого цветового стандарта в этой статье. Если выбрать три опорных цвета – назовём их красным, зелёным и синим – и иметь возможность независимо регулировать яркость каждого, можно синтезировать практически любой цвет, который глаз примет как совпадение. Эти три опорных цвета называются primaries (основные цвета).
Вот как цвет становится числом. Камера измеряет силу красноватого, зеленоватого и синеватого света, попадающего в каждую точку сенсора, и записывает эти три числа. Экран берёт три числа и зажигает свои красные, зелёные и синие субпиксели на соответствующих яркостях. Глаз реконструирует цвет из трёх первичных огней.
Эта трёхчисловая система – простейшее цветовое пространство, и у неё знакомое имя.
RGB – родной язык камер и экранов
RGB, сокращение от Red-Green-Blue, – цветовое пространство, в котором каждый пиксель хранится как три числа, по одному для каждого из трёх primaries. Яркий чистый красный пишется как (255, 0, 0): полный красный, нет зелёного, нет синего. Яркий чистый синий – (0, 0, 255). Серый – что-то вроде (128, 128, 128) – равные доли всех трёх primaries дают нейтральный свет. Яркий жёлтый – (255, 255, 0) – полный красный и зелёный, нет синего.
Диапазон 0–255 в этих примерах берётся из хранения каждой цветовой компоненты в одном байте данных – восемь бинарных цифр, способных хранить 256 различных значений. С тремя компонентами на пиксель это 256 × 256 × 256 ≈ 16,7 миллиона различимых цветов. Мы это уже видели в «Что такое цифровое видео».
RGB – родной язык захвата и отображения. Сенсор камеры читает RGB напрямую – так устроена электроника. Пиксели монитора физически устроены как маленькие красные, зелёные и синие точки, поэтому они отображают RGB напрямую. Формат, который вы видите в палитре Photoshop, в CSS-файле, в Pantone-референсе графического дизайнера – почти всегда RGB.
Но вот тут для видео начинается интересное. Почти ни один видеофайл в интернете не хранит пиксели в RGB. Видео использует другое цветовое пространство, и для этого есть умная причина.
YCbCr – формат, который реально использует каждый видеокодек
Если заглянуть внутрь почти любого видеофайла, произведённого для стриминга, броадкаста или воспроизведения – Netflix, YouTube, плёнка вашего телефона, запись Zoom, Blu-ray – пиксели не хранятся в RGB. Они хранятся в другой трёхчисловой системе, YCbCr.
Вот как работает YCbCr. Возьмите три RGB-числа одного пикселя. Примените небольшую математическую формулу, которая комбинирует их в разных пропорциях. На выходе – три новых числа:
- Y – это luma, единственное число, суммирующее яркость пикселя, смешанное из всех трёх RGB-компонент в пропорциях, выбранных под человеческое зрение. Y – это примерно: 30% красного + 59% зелёного + 11% синего (точные пропорции варьируются по стандарту).
- Cb – это blue-difference chroma – число, описывающее, насколько пиксель «синéе зеленоватого серого».
- Cr – это red-difference chroma – число, описывающее, насколько пиксель «краснее зеленоватого серого».
Зачем вообще делать эту конвертацию? Выглядит бессмысленно – мы по-прежнему имеем три числа, просто другие. Ответ – самый важный факт в этой статье: человеческий глаз гораздо более чувствителен к изменениям яркости, чем к изменениям цвета. 1
Вы мгновенно заметите, если яркая деталь стала чуть размытой. Вы не заметите, если цветовая деталь стала чуть размытой, особенно в движущемся материале. Попробуйте прямо сейчас с камерой телефона – наведите её на что-нибудь и слегка расфокусируйте только цвет. Разницу будет сложно увидеть.
Эта асимметрия глаза создаёт огромную возможность для сжатия. Если вы разделили яркость (Y) и цвет (Cb, Cr) на отдельные числа, можно тратить много бит на Y, где глаз чувствителен, и агрессивно урезать биты с Cb и Cr, где глаз нечувствителен. Технический термин для этой урезки – chroma subsampling, и точную механику мы рассматриваем в «Сэмплирование и теорема Найквиста». Короткая версия: кодируя цвет в половинном разрешении относительно яркости – формат 4:2:0 – кодеки уменьшают данные на пиксель примерно вдвое ещё до начала любого другого сжатия, и результат всё равно отлично выглядит для человеческого глаза.
Один этот трюк – причина того, что каждый коммерчески используемый видеокодек – H.264, H.265 (HEVC), AV1, VVC – работает в YCbCr, не в RGB. Конвертация происходит автоматически при кодировании, и обратно – автоматически при декодировании для воспроизведения. Зритель никогда не видит YCbCr; уровень YCbCr – это рабочий формат кодека.
Заметка о третьем термине, который встретится: YUV. YUV – аналогово-броадкастовый предок YCbCr – та же идея отделения яркости от цвета, но спроектирована для аналогового ТВ 1950-х. Современные цифровые файлы используют YCbCr, но имена YUV и YCbCr взаимозаменяемы в разговорной речи, в документации инструментов и в некоторых старых кодеках. Когда кто-то говорит «YUV 4:2:0», почти всегда имеется в виду «YCbCr 4:2:0». Считайте их синонимами.
Почему трёх чисел недостаточно – стандарты внутри семейства
Пока мы говорили о семействах цветовых пространств: RGB и YCbCr. Но внутри каждого семейства нужна более детальная договорённость. Две разные камеры могут обе выдавать RGB-файлы, но если они не согласны, что значит «красный», значение пикселя (255, 0, 0) будет выглядеть на каждой по-разному.
Чтобы увидеть почему, на минуту подумаем об экранах. Разные технологии экранов реально производят разные цвета, когда их красные, зелёные и синие субпиксели включаются на полную. Красный старого ТВ – это слегка другой красный, чем красный современного OLED-телефона. Красный киношного проектора – ещё другой. Все они называются «красный», но это не одна и та же физическая длина волны. Поэтому когда видеофайл говорит (255, 0, 0) – «сделай этот пиксель полностью красным» – какой именно красный?
Ответ должен быть согласован заранее, или картинка будет выглядеть неправильно на разных устройствах. Эта договорённость – стандарт цветового пространства. Стандарт цветового пространства закрепляет три вещи:
- Точные primaries. Какие именно красный, зелёный и синий имеются в виду? Это задаётся точными точками на научной цветовой диаграмме (к ней через секунду).
- Белая точка (white point). Когда все три primaries на максимуме, какой цвет получается у этой «белой»? Разные условия освещения дают разные «белые». «Белый» с синим оттенком от люминесцентной офисной лампы – это не то же самое, что тёплый белый от лампы накаливания. Большинство современных цветовых пространств стандартизованы на D65 – белом, соответствующем среднему дневному свету при 6500 Кельвинов – цветовой температуре чуть облачного полуденного неба. 2
- Transfer function (кривая гаммы). Как значение числа (скажем, 128) превращается в реальную яркость света? Спойлер: это не линейно; зависимость изогнута, чтобы соответствовать тому, как человеческий глаз воспринимает яркость. Это отдельная тема, которую мы покрываем в «Transfer functions: gamma, PQ, HLG». Пока просто знайте, что это часть договорённости.
Без этих трёх спецификаций «(255, 0, 0)» не имеет согласованного значения. Видеофайл оказался бы неоднозначным.
Цветовая диаграмма, которую вы будете видеть везде
Прежде чем перечислить реальные стандарты, нам нужен один быстрый научный инструмент. В 1931 году Международная комиссия по освещению (CIE) провела эксперименты на десятках человеческих наблюдателей и построила 2D-карту любого цвета, который может видеть человеческий глаз – диаграмму цветности CIE 1931. 2
Диаграмма похожа на перевёрнутую подкову. Кривая внешняя граница представляет чистые одно-волновые цвета – радугу от фиолетового внизу-слева, по дуге через зелёный наверху, до красного внизу-справа. Плоское основание подковы (называется «линия пурпурных») представляет не-спектральные пурпурные, получаемые смешиванием красного и фиолетового. Внутренность подковы содержит все смешанные цвета, которые глаз может произвести – белый сидит примерно в центре.
Эта диаграмма – универсальный референс. Каждый стандарт цветового пространства задаётся треугольником, нарисованным внутри подковы, с тремя углами, помечающими точные позиции его красного, зелёного и синего primaries. Площадь внутри треугольника – это цвета, которые этот стандарт может воспроизвести – его gamut. Всё за пределами треугольника – реальный цвет, который глаз видит, но этот стандарт представить не может.
Теперь стандарты.
BT.709 – цветовое пространство HD-видео
BT.709, также известное как Rec. 709, – доминирующее цветовое пространство для HD-видео. Опубликовано ITU (International Telecommunication Union, орган стандартизации broadcast) в 1990 году, как раз когда проектировался HDTV. 3 Почти любое видео, снятое, отредактированное и стримящееся в 1080p Full HD или 720p HD, использует BT.709, если нет конкретной причины делать иначе.
Primaries BT.709 намеренно консервативны. Треугольник относительно мал – только около 36% видимых глазу цветов попадают внутрь. Звучит ограничительно, но в 1990 это было максимум, что могли реально воспроизвести массовые CRT и ранние LCD-экраны. Не было смысла стандартизироваться на цветах, которые никакой потребительский экран не мог показать.
Если вы когда-либо работали с sRGB – стандартным цветовым пространством для веб-графики, JPEG-фотографий и PNG-изображений – вы уже использовали gamut BT.709. Оба стандарта задают по сути одинаковый треугольник на CIE-диаграмме. 4 sRGB – для статичных изображений, BT.709 – для видео, но цвета, которые они могут представить, одинаковы. Поэтому ваши фото с телефона и видео с телефона выглядят согласованно по цвету без какой-либо конвертации.
Для любого HD-видеопродукта в 2026 году BT.709 – это дефолт и безопасный выбор. Каждое устройство, каждый браузер и каждая операционная система в коммерческом использовании понимают BT.709. Используйте его, если у вас нет конкретной причины уходить в более широкий gamut.
DCI-P3 – цветовое пространство цифрового кино
DCI-P3 – цветовое пространство, определённое Digital Cinema Initiatives, консорциумом, основанным крупными голливудскими студиями в 2002 году для стандартизации цифровой кинопроекции. «P3» означает «Projector 3». DCI-P3 был финализирован в 2010 году и используется каждым коммерческим киноаппаратом в мире сегодня. 5
Треугольник DCI-P3 заметно больше BT.709 – около 54% видимых глазу цветов попадают внутрь, со значительно более яркими красными и зелёными. 6 Если вы смотрели недавний голливудский фильм в кинотеатре и заметили, насколько богаче цвета выглядят, чем на обычном телевизоре дома, – вы видели разницу между DCI-P3 и BT.709. Эта разница реальна, не воображение.
В последние годы DCI-P3 распространился за пределы кино в потребительские устройства. Почти каждое современное Apple-устройство – iPhone с 2015 года, недавние MacBook, Pro Display XDR и Apple TV 4K – использует слегка изменённый вариант DCI-P3, называемый Display P3, как нативное цветовое пространство. Многие премиум-Android-телефоны, недавние ТВ Samsung и Sony, и несколько PC-мониторов делают то же самое.
Это создаёт реальную проблему для продакт-команд. Если вы кодируете видео в простом BT.709 и подаёте его на Display P3-устройство, аппаратура зрителя может показать более насыщенные цвета, чем использует ваш файл, – картинка выглядит приемлемой, но плоской. Если кодируете в P3 и подаёте на BT.709-устройство, цвета выглядят неправильно, если плеер явно не конвертирует. Современные ОС обрабатывают это прозрачно, если ваш файл правильно теггирован. Про теггирование – в конце статьи.
BT.2020 – цветовое пространство 4K и HDR
BT.2020, также называемое Rec. 2020, – цветовое пространство для Ultra High Definition (4K и 8K) видео и для HDR (High Dynamic Range) контента. Опубликовано ITU в 2012 году вместе с первыми 4K-стандартами. 7
Треугольник BT.2020 огромен – около 76% видимых глазу цветов. 6 Он уходит в глубокие сине-зелёные (бирюза, недостижимая ни для одной BT.709-системы), яркие чистые красные и предельно насыщенные зелёные. Прирост от BT.709 к BT.2020 примерно того же масштаба, что от старого SD к BT.709: серьёзное расширение того, что может быть представлено.
Есть оговорка: почти ни один потребительский дисплей в 2026 году не может реально воспроизвести полный gamut BT.2020. Лучшие OLED и Mini-LED экраны покрывают 70–80% от него; более дешёвые – намного меньше. Поэтому BT.2020 в основном – аспирационный стандарт: файлы кодируются в BT.2020, дисплей делает что может, остальное аппроксимируется. Рассуждение forward-looking: если Голливуд мастерит фильм в BT.2020 сегодня, фильм будет правильно выглядеть на лучших дисплеях 2030 и 2035 годов без повторного мастеринга. 8
Для HDR-контента (Dolby Vision, HDR10, HDR10+, HLG) BT.2020 – цветовое пространство выбора. Почти каждый HDR-файл, который вы когда-либо смотрели, внутренне теггирован как BT.2020, даже если реальные цвета внутри файла попадают в меньший DCI-P3-треугольник. Глубже про HDR – в «Полный гид по HDR».
Side-by-side: BT.709, DCI-P3, BT.2020
Чтобы зафиксировать всё в одном месте:
| Стандарт | Выпущен | Покрытие gamut | Типичное использование | Устройства с нативной поддержкой |
|---|---|---|---|---|
| BT.709 (Rec. 709) | 1990 | ~36% видимого цвета | HD-видео, broadcast, стриминг SDR | Каждый когда-либо сделанный экран; дефолт везде |
| DCI-P3 / Display P3 | 2010 | ~54% видимого цвета | Цифровое кино, премиум-телефоны/ноутбуки/ТВ | Apple-устройства с 2015, премиум Android, современные OLED-ТВ |
| BT.2020 (Rec. 2020) | 2012 | ~76% видимого цвета | 4K UHD, HDR (Dolby Vision, HDR10) | Лучшие OLED / Mini-LED ТВ (70–80%); ни один не покрывает полностью |
Три треугольника аккуратно вкладываются друг в друга на диаграмме CIE 1931. Всё, что BT.709 может представить, может представить и DCI-P3. Всё, что может DCI-P3, может и BT.2020. Эта вложенность – причина, по которой стандарты могут сосуществовать: контент в более широком gamut можно сконвертировать в более узкий без слишком большой потери, а контент в узком gamut можно отдать как есть на устройства с широким.
Есть и забытый предок – BT.601 (Rec. 601) – определявший цветовое пространство для стандартно-разрешённого цифрового видео ещё в 1982 году. Иногда встретите в legacy-системах и старых DVD. Его gamut похож на BT.709, но использует слегка другую математику конвертации между RGB и YCbCr. Если приходит материал, помеченный как BT.601, ваш плеер должен это знать – неправильная математика даёт видимо «не те» цвета.
Где всё это идёт не так – и как это засечь
Вся система держится на одном: каждый видеофайл должен нести метаданные, заявляющие, какому цветовому пространству принадлежат его пиксельные значения. Эта декларация называется colour space tag, и это то, как плеер на другом конце знает, означает ли (255, 0, 0) BT.709-красный или BT.2020-красный.
Когда тег корректен, всё работает. Плеер читает тег, применяет правильную конвертацию для дисплея, на котором запущен, и цвета соответствуют замыслу автора. Когда тег отсутствует, неверен или игнорируется, получаются несоответствия. 9
Три режима провала, которые продакт-команда увидит в природе:
Провал 1: тег отсутствует, плеер угадывает неправильно. Видеофайл закодирован без метаданных цветового пространства. Плеер дефолтит на BT.709 – самое безопасное предположение. Если файл реально автор в BT.2020 или DCI-P3, каждый насыщенный цвет в картинке будет выглядеть выцветшим – розовые вместо красных, бледные бирюзовые вместо насыщенно-зелёных, тусклые синие. Исправление – добавить метаданные; флаги FFmpeg: -color_primaries, -color_trc, -colorspace.
Провал 2: тег говорит одно, содержимое – другое. Файл помечен как BT.709, но пиксельные значения вычислены для BT.2020. Плеер уважает тег, применяет BT.709-интерпретацию, картинка выглядит перенасыщенной – числа широкого gamut накладываются на узкие primaries, давая цвета далеко за их пределами. Красный превращается в обжигающий, зелёный – в неоновый. Это то, что люди имеют в виду, говоря «это видео выглядит перенасыщенным» – обычно тег неверен, не содержимое.
Провал 3: пайплайн срывает тег на какой-то стадии. Исходный файл создан корректно, но где-то в пайплайне кодирования (часто на шаге downsampling или конвертации формата) метаданные цветового пространства теряются. Следующая стадия не знает, на какое цветовое пространство смотрит, и падает на дефолт. Каждый шаг пайплайна, который касается видео, должен сохранять или корректно переписывать метаданные цвета – иначе будет цветовой дрейф.
Самый простой диагностический тест – запустить ffprobe (бесплатный инструмент, идущий в комплекте с FFmpeg) на любом полученном файле и считать метаданные цвета. Если поля пустые – проблема теггирования выше по течению. Чините там, не в плеере.
# Проверить colour space tags файла
ffprobe -v error -select_streams v:0 \
-show_entries stream=color_primaries,color_transfer,color_space,color_range \
-of default=noprint_wrappers=1 input.mp4Корректно теггированный HD-файл вернёт что-то вроде:
color_primaries=bt709
color_transfer=bt709
color_space=bt709
color_range=tv4K HDR-файл должен вернуть bt2020 для primaries и colour space. Если видите unknown или пустые поля – выше по течению пайплайн теряет метаданные цвета.
Практический совет: какое цветовое пространство для какого продукта?
Правильный выбор зависит от типа контента и целевой аудитории. Вот rule of thumb, который мы используем в Фора Софт при scoping нового проекта:
| Тип продукта | Рекомендуемое цветовое пространство | Почему |
|---|---|---|
| SD онлайн-обучение, telemedicine, surveillance | BT.709 | Универсальная поддержка устройств, минимальный pipeline footprint |
| Full HD стриминг, видеоконференции, OTT | BT.709 | То же самое – BT.709 безопасное предположение для любого HD-продукта |
| Премиум 4K-стриминг (кинематографический контент) | BT.2020 с HDR | Future-proof против улучшающихся дисплеев; нужен для Dolby Vision / HDR10 |
| Live broadcast, спорт, новости (HD) | BT.709 с метаданными | Индустриальный стандарт для HD-broadcast |
| Live broadcast (4K) | BT.2020 с HLG transfer | HLG – broadcast-дружелюбный вариант HDR |
| Веб / соцсети, short-form | BT.709 (или sRGB-эквивалент) | Устройства просмотра сильно варьируются; дефолтная безопасность |
Если не уверены – ответ почти всегда BT.709. Это универсальный дефолт. Поднимайтесь к DCI-P3 или BT.2020 только при намеренной причине – премиум-контент, HDR-поддержка или конкретная матрица устройств.
Частая ошибка: работать в RGB и «конвертировать в конце»
Распространённый workflow у клиентов: «Сделаем весь монтаж и цветокоррекцию в RGB, конвертируем в YCbCr только на финальном шаге кодирования». Звучит чисто, но это источник десятков тонких цветовых проблем. Конвертация из RGB в YCbCr потерящая в более узком яркостном диапазоне YCbCr – яркие блики обрезаются, глубокие тени схлопываются. Если работать в RGB и конвертировать один раз в конце, каждый обрезанный блик и схлопнутая тень – финальные.
Профессиональный подход – работать в YCbCr (или в высокобитном log-формате при HDR-источниках) с момента, как файл входит в пайплайн. Инструменты типа DaVinci Resolve, Adobe Premiere и FFmpeg все нативно поддерживают YCbCr-воркфлоу. Выход более согласован, и round-trip-конвертации минимизированы.
Чем мы занимаемся в Фора Софт
Мы постоянно видим баги цветовых пространств, потому что работаем со всем пайплайном – telemedicine-системы, тянущие со старых больничных камер; OTT-платформы, транскодящие пользовательские загрузки; conferencing-приложения, композирующие несколько потоков вместе; surveillance-системы, архивирующие с дюжины брендов камер. Почти каждые недели работы включают как минимум один тикет вроде «цвета неправильные на iPhone, но корректные на Android» или «live-фид выглядит выцветшим по сравнению с записью». Исправление почти всегда – выше по течению от места, где проблему заметили: отсутствующий тег, сорванный тег, или шаг транскодинга, не сохранивший метаданные. Фреймворк из этой статьи – тот, что мы применяем каждый раз.
Ключевые выводы
- Цветовое пространство – это договорённость между писателем и читателем видео о том, что реально означает каждое значение пикселя.
- RGB хранит красный, зелёный, синий на пиксель. YCbCr хранит яркость (Y) плюс две цветовые разности (Cb, Cr).
- Видеокодеки используют YCbCr, потому что глаз гораздо более чувствителен к изменениям яркости, чем цвета – асимметрия позволяет агрессивно сжимать цветовые данные.
- BT.709 покрывает ~36% видимого цвета и универсальный HD-дефолт. DCI-P3 покрывает ~54% и киношный стандарт. BT.2020 покрывает ~76% и аспирационный стандарт 4K / HDR.
- Каждый видеофайл должен нести colour space tag в метаданных. Отсутствующие или неверные теги – причина #1 цветовых багов в продакшене.
- Дефолтьте на BT.709, если нет конкретного HDR- или кино-требования. Теггируйте каждый файл end-to-end. Проверяйте через ffprobe.
Что читать дальше
- Что такое цифровое видео: от аналогового сигнала к битам
- Сэмплирование и теорема Найквиста применительно к видео
- Полный гид по HDR: HDR10, HDR10+, Dolby Vision, HLG
Источники
- Семейство цветовых пространств YCbCr; декомпозиция luma/chroma; предпочтение кодеков. Wikipedia: YCbCr. https://en.wikipedia.org/wiki/YCbCr
- Диаграмма цветности CIE 1931; белая точка D65 при 6500 K; подкова видимого цвета. Wikipedia: CIE 1931 color space. https://en.wikipedia.org/wiki/CIE_1931_color_space
- ITU-R BT.709, параметры HDTV (1990). ITU. https://www.itu.int/rec/R-REC-BT.709
- sRGB и BT.709 покрывают по сути одинаковый треугольник на CIE. Color Gamut Comparison: sRGB vs DCI-P3 vs BT.2020, SidequestLab. https://sidequestlab-homepage.vercel.app/en/blog/color-gamut-comparison-guide
- Цветовое пространство DCI-P3, определено консорциумом DCI; финализировано 2010. Wikipedia: DCI-P3. https://en.wikipedia.org/wiki/DCI-P3
- Покрытие gamut: Rec.709 ≈ 36%, DCI-P3 ≈ 54%, Rec.2020 ≈ 76%. Understanding color gamut, BenQ. https://www.benq.com/en-us/business/resource/trends/understanding-color-gamut.html
- ITU-R BT.2020 (2012). ITU. https://www.itu.int/rec/R-REC-BT.2020
- BT.2020 как аспирационный стандарт; даже премиум-дисплеи покрывают ~70–80%. What Is BT.2020 Color Space, Arzopa. https://www.arzopa.com/blogs/guide/bt-2020-color-space
- Несоответствия цветовых пространств вызывают выцветший / перенасыщенный выход; управление метаданными – исправление. Color Pipeline Alignments between VFX and Color, The Post Process. https://www.thepostprocess.com/2024/03/15/color-pipeline-alignments-between-vfx-and-color/