YCbCr
YCbCr , Y’CbCr или Y Pb/Cb Pr/Cr , также пишется как YC B C R или Y’C B C R , представляет собой семейство цветовых пространств, используемых как часть конвейера цветного изображения в видео и цифровой фотографии. системы. Y' представляет собой компонент яркости , а C B и C R представляют собой синего и красного цветов компоненты цветности . Y' (с штрихом ) отличается от Y, который представляет собой яркость , что означает, что интенсивность света нелинейно кодируется на основе с гамма-коррекцией основных цветов RGB .
Цветовые пространства Y’CbCr определяются путем математического преобразования координат из связанных основных цветов RGB и точки белого. Если базовое цветовое пространство RGB является абсолютным, цветовое пространство Y’CbCr является абсолютным цветовым пространством также ; и наоборот, если пространство RGB нечетко определено, то же самое относится и к Y’CbCr. Преобразование определено в уравнениях 32, 33 в ITU-T H.273 . Тем не менее, это правило не применяется к основным цветам P3-D65, используемым Netflix с матрицей BT.2020-NCL, что означает, что матрица не была получена из основных цветов, но теперь Netflix разрешает основные цвета BT.2020 (с 2021 года). [ 1 ] То же самое происходит и с JPEG: он имеет матрицу BT.601, полученную из основных цветов системы M, однако основные цвета большинства изображений — BT.709.
Обоснование
[ редактировать ]Дисплеи с электронно-лучевой трубкой управляются красными, зелеными и синими сигналами напряжения, но эти сигналы RGB неэффективны в качестве представления для хранения и передачи, поскольку они имеют большую избыточность .
YCbCr и Y’CbCr представляют собой практическое приближение к обработке цвета и единообразию восприятия, где основные цвета, примерно соответствующие красному, зеленому и синему, преобразуются в значимую для восприятия информацию. Поступая таким образом, последующая обработка, передача и хранение изображений/видео может выполнять операции и вносить ошибки значимым для восприятия образом. Y’CbCr используется для разделения сигнала яркости (Y’), который может быть сохранен с высоким разрешением или передан с широкой полосой пропускания, и двух компонентов цветности (CB и C R ), которые могут быть уменьшены по полосе пропускания, субдискретизированы, сжаты, или иным образом рассматриваться отдельно для повышения эффективности системы.
Одним из практических примеров может быть уменьшение полосы пропускания или разрешения, выделяемого для «цвета» по сравнению с «черно-белым», поскольку люди более чувствительны к черно-белой информации (см. пример изображения справа). Это называется субдискретизацией цветности .
CbCr
[ редактировать ]YCbCr иногда сокращается до YCC . Обычно термины Y’CbCr, YCbCr, YPbPr и YUV используются как взаимозаменяемые, что приводит к некоторой путанице. Основное отличие состоит в том, что YPbPr используется с аналоговыми изображениями, а YCbCr — с цифровыми изображениями, что приводит к разным значениям масштабирования для U max и V max (в YCbCr оба значения ) при преобразовании в/из YUV. Y’CbCr и YCbCr различаются в зависимости от того, имеют ли значения гамма-коррекцию или нет.
Приведенные ниже уравнения дают лучшее представление об общих принципах и общих различиях между этими форматами.
RGB-преобразование
[ редактировать ]R’G’B’ в Y’PbPr
[ редактировать ]Сигналы Y'CbCr (до масштабирования и смещений для перевода сигналов в цифровую форму) называются YPbPr и создаются из соответствующего источника RGB с гаммой (красный, зеленый и синий) с использованием трех определенных констант K R , K G , и KB следующим образом:
где K R , K G и KB обычно выводятся из определения соответствующего пространства RGB и требуются для удовлетворения .
Эквивалентную манипуляцию с матрицей часто называют «цветовой матрицей»:
И его обратное:
Здесь штрих (′) означает, что гамма-коррекция используется ; таким образом, R', G' и B' номинально находятся в диапазоне от 0 до 1, где 0 представляет минимальную интенсивность (например, для отображения черного цвета цвета), а 1 - максимальную (например, для отображения белого ). Результирующее значение яркости (Y) будет иметь номинальный диапазон от 0 до 1, а значения цветности (P B и PR ) будут иметь номинальный диапазон от -0,5 до +0,5. Процесс обратного преобразования можно легко получить, обратив приведенные выше уравнения.
Y’PbPr в Y’CbCr
[ редактировать ]При представлении сигналов в цифровой форме результаты масштабируются и округляются, а также обычно добавляются смещения. Например, масштабирование и смещение, применяемые к компоненту Y' согласно спецификации (например, MPEG-2) . [ 2 ] ) приводит к значению 16 для черного цвета и значению 235 для белого при использовании 8-битного представления. В стандарте имеются 8-битные оцифрованные версии C B и C R, масштабированные в другом диапазоне от 16 до 240. Следовательно, при выполнении иногда требуется масштабирование дробью (235-16)/(240-16) = 219/224. цветовая матрица или обработка в пространстве YCbCr, что приводит к искажениям квантования, когда последующая обработка не выполняется с использованием более высокой разрядности.
Масштабирование, которое приводит к использованию меньшего диапазона цифровых значений, чем тот, который может показаться желательным для представления номинального диапазона входных данных, допускает некоторые «перерегулирования» и «недорегулирования» во время обработки, не вызывая необходимости нежелательного ограничения . Это « пространство для головы » и «пространство для ног». [ 3 ] также может использоваться для расширения номинальной цветовой гаммы , как указано в xvYCC .
Значение 235 соответствует максимальному перерегулированию (255–235)/(235–16) = 9,1 %, что немного больше, чем теоретическое максимальное перерегулирование ( феномен Гиббса ), составляющее примерно 8,9 % от максимального значения (черно-белое). ) шаг. Пространство для пальцев меньше, допуская перерегулирование только 16/219 = 7,3%, что меньше теоретического максимального отклонения в 8,9%. Кроме того, поскольку значения 0 и 255 зарезервированы в HDMI, пространство на самом деле немного меньше.
Y’CbCr в xvYCC
[ редактировать ]Поскольку уравнения, определяющие Y’CbCr, формируются таким образом, что весь номинальный цветовой куб RGB вращается и масштабируется для его соответствия внутри (более крупного) цветового куба YCbCr, в цветовом кубе Y’CbCr есть некоторые точки, которые невозможно представить в виде соответствующий домен RGB (по крайней мере, не в номинальном диапазоне RGB). Это вызывает некоторые трудности при определении того, как правильно интерпретировать и отображать некоторые сигналы Y'CbCr. Эти значения Y’CbCr, выходящие за пределы диапазона, используются xvYCC для кодирования цветов за пределами гаммы BT.709.
Преобразование ITU-R BT.601
[ редактировать ]Форма Y’CbCr, которая была определена для использования телевидения стандартной четкости в стандарте ITU-R BT.601 (ранее CCIR 601 ) для использования с цифровым компонентным видео , получена из соответствующего пространства RGB (ITU-R BT.470- 6 основных систем М) следующим образом:
Из приведенных выше констант и формул для ITU-R BT.601 можно вывести следующее.
Аналог YPbPr из аналога R'G'B' получается следующим образом:
Цифровой Y’CbCr (8 бит на выборку) получается из аналогового R’G’B’ следующим образом:
или просто покомпонентно
Результирующие сигналы варьируются от 16 до 235 для Y' (диапазон Cb и Cr от 16 до 240); значения от 0 до 15 называются пространством для ног , а значения от 236 до 255 — пространством для ног . Те же самые диапазоны квантования, разные для Y и Cb, Cr, также применимы к BT.2020 и BT.709.
Альтернативно, цифровой Y'CbCr может быть получен из цифрового R'dG'dB'd (8 бит на выборку, каждый из которых использует полный диапазон, где ноль представляет черный цвет, а 255 представляет белый) согласно следующим уравнениям:
В приведенной ниже формуле коэффициенты масштабирования умножаются на . Это позволяет использовать в знаменателе значение 256, которое можно вычислить с помощью одного битового сдвига .
Если цифровой источник R'd G'd B'd включает пространство для ног и высоту, то смещение пространства для ног 16 необходимо сначала вычесть из каждого сигнала, а также масштабный коэффициент необходимо включить в уравнения.
Обратное преобразование:
Обратное преобразование без каких-либо округлений (с использованием значений, взятых непосредственно из рекомендации ITU-R BT.601):
Эта форма Y'CbCr используется в основном для старых телевизионных систем стандартной четкости , поскольку в ней используется модель RGB, которая соответствует характеристикам излучения люминофора старых ЭЛТ .
Преобразование ITU-R BT.709
[ редактировать ]Другая форма Y’CbCr указана в стандарте ITU-R BT.709 , в первую очередь для использования в формате HDTV . Более новая форма также используется в некоторых приложениях, ориентированных на компьютерный дисплей, как sRGB (хотя матрица, используемая для формы sRGB YCbCr, sYCC , по-прежнему имеет формат BT.601). При этом значения Кб и Кр различаются, но формулы их использования одни и те же. Для ITU-R BT.709 константами являются:
Эта форма Y’CbCr основана на модели RGB, которая более точно соответствует характеристикам излучения люминофора новых ЭЛТ и другого современного дисплейного оборудования. [ нужна ссылка ] Матрицы преобразования для BT.709 следующие:
Определения сигналов R', G' и B' также различаются в BT.709 и BT.601 и различаются в BT.601 в зависимости от типа используемой телевизионной системы (625-строчной, как в PAL и SECAM или 525 строк, как в NTSC ), а также отличаются другими характеристиками. В разных конструкциях существуют различия в определениях координат цветности R, G и B, эталонной точки белого, поддерживаемого диапазона гаммы, точных функций предварительной компенсации гаммы для получения R', G' и B' из R, G и B, а также в масштабировании и смещениях, которые будут применяться во время преобразования из R'G'B' в Y'CbCr. Таким образом, правильное преобразование Y’CbCr из одной формы в другую — это не просто вопрос обращения одной матрицы и применения другой. Фактически, когда Y'CbCr спроектирован идеально, значения K B и K R получаются на основе точной спецификации основных цветовых сигналов RGB, так что сигнал яркости (Y') максимально точно соответствует гамма- сигналу. скорректированное измерение яркости (обычно на основе измерений CIE 1931 реакции зрительной системы человека на цветовые стимулы). [ 4 ]
Преобразование ITU-R BT.2020
[ редактировать ]Стандарт ITU-R BT.2020 использует ту же гамма-функцию, что и BT.709. Он определяет: [ 5 ]
- Непостоянная яркость Y'CbCr, аналогичная предыдущим записям, за исключением других K B и K R .
- Постоянная яркость Y'cCbcCrc, формула, где Y' — это версия истинной яркости, полученная с помощью гамма-кодека . [ 5 ]
Для обоих коэффициенты, полученные из праймериз, составляют:
Для NCL определение классическое: Y' = 0,2627R' + 0,6780 G' + 0,0593 B'; Сb = (В'-Y')/1,8814; Кр = (R'-Y')/1,4746. Преобразование кодировки можно, как обычно, записать в виде матрицы. [ 5 ] Матрица декодирования для BT.2020-NCL имеет 14 десятичных знаков:
Меньшие значения в матрице не округляются; это точные значения. Для систем с ограниченной точностью (например, 8 или 10 бит) можно использовать более низкую точность вышеуказанной матрицы, например, сохраняя только 6 цифр после десятичной точки. [ 6 ]
Версия CL, YcCbcCrc, кодирует: [ 5 ]
- Y'c = (0,2627R + 0,6780 G + 0,0593 B)'. Это гамма-функция, применяемая к истинной яркости, рассчитанной на основе линейного RGB.
- Cbc = (B'-Y'c)/(-2 Nb), если B' < Y'c; (B'-Y'c)/(2 Pb) иначе. Nb и Pb — теоретический минимум и максимум (B'-Y'c), соответствующие гамме. Округленные «практические» значения: Pb = 0,7910, Nb = -0,9702. Полный вывод можно найти в рекомендациях. [ 5 ]
- Crc = (R'-Y'c)/(-2 Nr), если R' < Y'c; (R'-Y'c)/(2 Пр) иначе. Опять же, Pr и Nr являются теоретическими пределами. Округленные значения составляют Pr 0,4969, Nr = -0,8591.
Функцию CL можно использовать, когда сохранение яркости имеет первостепенное значение (см.: Подвыборка цветности § Ошибка гамма-яркости ) или когда «ожидается повышение эффективности кодирования для доставки». Спецификация ссылается на Отчет МСЭ-R BT.2246 по этому вопросу. [ 5 ] В BT.2246 говорится, что CL имеет улучшенную эффективность сжатия и сохранение яркости, но NCL будет более знакома персоналу, который ранее занимался смешиванием цветов и другими производственными практиками в HDTV YCbCr. [ 7 ]
BT.2020 не определяет PQ и, следовательно, HDR, он дополнительно определен в SMPTE ST 2084 и BT.2100 . BT.2100 представит использование IC T C P , полуперцептивного цветового пространства, полученного из линейного RGB с хорошей линейностью оттенков. Это «почти постоянная яркость». [ 8 ]
Преобразование SMPTE 240M
[ редактировать ]Стандарт SMPTE 240M (используемый в аналоговой системе HD-телевидения MUSE ) определяет YCC с помощью следующих коэффициентов:
Коэффициенты получены на основе основных цветов SMPTE 170M и точки белого, используемых в стандарте 240M.
Преобразование JPEG
[ редактировать ]JFIF Использование для JPEG поддерживает модифицированный Rec. 601 Y’CbCr, где Y’, C B и C R имеют полный 8-битный диапазон [0...255]. [ 9 ] Ниже приведены уравнения преобразования, выраженные с точностью до шести десятичных знаков. (Для идеальных уравнений см. ITU-T T.871. [ 10 ] ) Обратите внимание, что в следующих формулах диапазон каждого входа (R,G,B) также представляет собой полный 8-битный диапазон [0...255].
И обратно:
Вышеупомянутое преобразование идентично sYCC , когда входной сигнал задается как sRGB, за исключением того, что IEC 61966-2-1:1999/Amd1:2003 дает только четыре десятичных цифры.
JPEG также определяет формат YCCK от Adobe для ввода CMYK . В этом формате значение «K» передается как есть, а CMY используется для получения YCbCr с помощью приведенной выше матрицы, предполагая, что R=1-C, G=1-M и B=1-Y. В результате можно использовать аналогичный набор методов субдискретизации. [ 11 ]
Коэффициенты для первичных сигналов системы B, G BT.470-6
[ редактировать ]Эти коэффициенты не используются и никогда не использовались. [ 12 ]
Системы яркости, основанные на цветности
[ редактировать ]H.273 также описывает системы постоянной и непостоянной яркости, которые выводятся строго из основных цветов и точки белого, так что такие ситуации, как основные цвета sRGB/BT.709 по умолчанию для JPEG, которые используют матрицу BT.601 (которая получена из BT.470- 6 Система М) не бывает.
Численные приближения
[ редактировать ]До разработки быстрых процессоров SIMD с плавающей запятой в большинстве цифровых реализаций RGB → Y’UV использовалась целочисленная математика, в частности аппроксимация с фиксированной запятой . Аппроксимация означает, что точность используемых чисел (входных данных, выходных данных и постоянных значений) ограничена, и, таким образом, потеря точности, обычно около последней двоичной цифры, принимается любым, кто использует эту опцию, обычно в компромиссе с улучшенная скорость вычислений.
Значения Y' обычно сдвигаются и масштабируются до диапазона [16, 235] (называемого студийным колебанием или «уровнями ТВ»), а не использованием полного диапазона [0, 255] (называемого полным диапазоном или «уровнями ПК»). "). Эта практика была стандартизирована в SMPTE-125M, чтобы компенсировать выбросы сигнала («звон») из-за фильтрации. [ 13 ] Значения U и V, которые могут быть положительными или отрицательными, суммируются со 128, чтобы сделать их всегда положительными, что дает студийный диапазон 16–240 для U и V. (Эти диапазоны важны при редактировании и производстве видео, поскольку использование неправильных значений диапазон приведет либо к изображению с «обрезанными» черными и белыми цветами, либо к изображению с низкой контрастностью.)
Примерные 8-битные матрицы для BT.601
[ редактировать ]Эти матрицы округляют все коэффициенты до ближайшей единицы 1/256. В результате для каждого компонента формируется только одно 16-битное промежуточное значение и простой сдвиг вправо с округлением. (x + 128) >> 8
может позаботиться о дивизии. [ 13 ]
Для студии-качели:
Для полного размаха:
от Google Skia использовала указанную выше 8-битную полнодиапазонную матрицу, что приводило к небольшому эффекту зеленого цвета на изображениях JPEG, закодированных устройствами Android, что более заметно при повторном сохранении. Проблема была исправлена в 2016 году, когда вместо нее использовалась более точная версия. Благодаря SIMD-оптимизации в libjpeg-turbo точная версия на самом деле работает быстрее. [ 14 ]
Форматы упакованных пикселей и преобразование
[ редактировать ]Файлы RGB обычно кодируются 8, 12, 16 или 24 битами на пиксель. В этих примерах мы предполагаем 24 бита на пиксель, что записывается как RGB888 . Стандартный формат байтов просто r0, g0, b0, r1, g1, b1, ...
.
YCbCr Форматы упакованных пикселей часто называют «YUV». Такие файлы могут быть закодированы в 12, 16 или 24 бита на пиксель. В зависимости от субдискретизации форматы можно в основном описать как 4:4:4, 4:2:2 и 4:2:0p. Апостроф после Y часто опускается, как и буква «p» (плоская) после YUV420p. Что касается фактических форматов файлов, то 4:2:0 является наиболее распространенным, поскольку данные более сокращены, а расширение файла обычно «.YUV». Соотношение между скоростью передачи данных и дискретизацией (A:B:C) определяется соотношением каналов Y к U и V. [ 15 ] [ 16 ] Обозначение «YUV», за которым следуют три цифры, неясно: эти три цифры могут относиться к субдискретизации (как это сделано в «YUV420») или к разрядности в каждом канале (как это сделано в «YUV565»). . Однозначный способ обращения к этим форматам — через код FourCC . [ 17 ]
Для преобразования из RGB в YUV или обратно проще всего использовать RGB888 и 4:4:4. Для 4:1:1, 4:2:2 и 4:2:0 байты необходимо сначала преобразовать в 4:4:4.
4:4:4
[ редактировать ]4:4:4 является простым, поскольку группировка пикселей не выполняется: разница заключается исключительно в том, сколько бит передается каждому каналу и их расположении. Основной YUV3
схема использует 3 байта на пиксель, с порядком y0, u0, v0, y1, u1, v1
(используя «u» для Cb и «v» для Cr; то же самое относится и к содержимому ниже). [ 17 ] В компьютерах чаще можно увидеть AYUV
формат, который добавляет альфа-канал и переходит a0, y0, u0, v0, a1, y1, u1, v1
, потому что с группами 32-бит легче иметь дело. [ 15 ]
4:2:2
[ редактировать ]4:2:2 группирует 2 пикселя по горизонтали в каждом концептуальном «контейнере». Два основных механизма: [ 16 ]
- YUY2: также называется YUYV, работает в формате
y0, u, y1, v
. - UYVY: обратная версия YUY2 с заменой байтов, работает в формате
u, y0, v, y1
.
4:1:1
[ редактировать ]4:1:1 используется редко. Пиксели расположены в горизонтальных группах по 4. [ 16 ]
4:2:0
[ редактировать ]Очень часто используется 4:2:0. Основные форматы: IMC2, IMC4, YV12 и NV12. [ 16 ] Все эти четыре формата являются «плоскими», что означает, что значения Y, U и V группируются вместе, а не перемежаются. Все они занимают 12 бит на пиксель, предполагая 8-битный канал.
- IMC2 сначала размещает полные изображения в Y. Затем он упорядочивает каждую строку цветности в порядке V 0 ... V n , U 0 ... Un , где n — количество образцов цветности на строку, равное половина ширины Y.
- IMC4 аналогичен IMC2, за исключением того, что он работает в U 0 ... Un , V 0 ... V n .
- YV12 имеет более простую конструкцию и используется чаще. Записывается все изображение в Y, затем изображение в V, затем все изображение в U.
- NV12, возможно, является наиболее часто используемым 8-битным форматом 4:2:0. Это значение по умолчанию для Android . предварительного просмотра камеры [ 18 ] Записывается все изображение в Y, за которым следуют чередующиеся строки, которые идут U 0 , V 0 , U 1 , V 1 и т. д.
Существуют также «плиточные» варианты планарных форматов. [ 19 ]
Ссылки
[ редактировать ]- ^ «Полная спецификация небрендовой поставки v9.2» . Нетфликс | Справочный центр для партнеров . Проверено 24 сентября 2022 г.
- ^ например , спецификация MPEG-2 , ITU-T H.262 2000 E стр. 44
- ^ «MFNominalRange (mfobjects.h) — приложения Win32» . docs.microsoft.com . Проверено 10 ноября 2020 г.
- ^ Чарльз Пойнтон, Цифровое видео и HDTV , Глава 24, стр. 291–292, Морган Кауфманн , 2003.
- ^ Jump up to: а б с д и ж «BT.2020: Значения параметров для систем телевидения сверхвысокой четкости для производства и международного обмена программами» . Международный союз электросвязи . Июнь 2014 года . Проверено 8 сентября 2014 г.
- ^ «Дополнение 18 МСЭ-Т H» . Октябрь 2017 г. HDL : 11.1002/1000/13441 .
- ^ «BT.2246-8 (03/2023) Современное состояние телевидения сверхвысокой четкости» . МСЭ .
- ^ «Подвыборка в ICtCp против YCbCr» (PDF) . Dolby Laboratories, Inc. Архивировано из оригинала (PDF) 13 октября 2018 года.
- ^ Формат обмена файлами JPEG, версия 1.02.
- ^ T.871: Информационные технологии – Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF) . МСЭ-Т . 11 сентября 2012 года . Проверено 25 июля 2016 г.
- ^ См. документацию libjpeg-turbo для: CS_YCCK 'YCCK (также известный как «YCbCrK») — это не абсолютное цветовое пространство, а скорее математическое преобразование CMYK, предназначенное исключительно для хранения и передачи», cmyk_ycck_convert() ; видеть
- ^ «EBU Tech 3237, Дополнение 1» (PDF) . п. 18 . Проверено 15 апреля 2021 г.
- ^ Jump up to: а б Джек, Кейт (1993). Видео демистифицировано . Высокотекстовые публикации. п. 30. ISBN 1-878707-09-4 .
- ^ «Используйте libjpeg-turbo для преобразования YUV->RGB в кодировщике jpeg · google/skia@c7d01d3» . Гитхаб .
- ^ Jump up to: а б msdn.microsoft.com, Подтипы видео YUV
- ^ Jump up to: а б с д msdn.microsoft.com, Рекомендуемые 8-битные форматы YUV для рендеринга видео
- ^ Jump up to: а б «2.7.1.1. Упакованные форматы YUV — Документация ядра Linux» . docs.kernel.org .
- ^ fourcc.com Форматы пикселей YUV
- ^ «2.7.1.2. Планарные форматы YUV — документация по ядру Linux» . docs.kernel.org .
Внешние ссылки
[ редактировать ]- Калькулятор Y’CbCr , включая BT.1886
- Чарльз Пойнтон — Часто задаваемые вопросы по цветам
- Чарльз Пойнтон — Видеоинженерия
- Визуализация цветового пространства
- Цветовые пространства YUV, YCbCr, YPbPr.
- Определение YCbCr
Программные ресурсы для упакованных пикселей:
- Кон, Майк. Y'UV422 в RGB с использованием SSE/сборки
- либюв
- pixfc-sse — библиотека C для преобразований цветовых форматов, оптимизированных для SSE.
- Файлы YUV — образцы/демонстрации видеофайлов YUV/RGB во многих форматах YUV, которые помогут вам в тестировании.