stringtranslate.com

YCbCr

Визуализация цветового пространства YCbCr.
Плоскость CbCr при постоянной яркости Y'=0,5.
Цветное изображение и его компоненты Y', C B и C R. Изображение Y’ по существу является копией основного изображения в оттенках серого.

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

Преобразование RGB в YCbCr

Сигналы 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'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

Рек. 709 по сравнению с Rec. 2020 год

Другая форма 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]

Для обоих коэффициенты, полученные из праймериз, составляют:

Для 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]

Функцию 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]

Коэффициенты для первичных сигналов системы BT.470-6 B, G

Эти коэффициенты не используются и никогда не использовались. [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]

Для студии-качели:

Для полного размаха:

Skia от Google использовала указанную выше 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]

4:1:1

4:1:1 используется редко. Пиксели расположены в горизонтальных группах по 4. [16]

4:2:0

Очень часто используется 4:2:0. Основные форматы: IMC2, IMC4, YV12 и NV12. [16] Все эти четыре формата являются «плоскими», что означает, что значения Y, U и V группируются вместе, а не перемежаются. Все они занимают 12 бит на пиксель, предполагая 8-битный канал.

Существуют также «плиточные» варианты планарных форматов. [19]

Рекомендации

  1. ^ «Полная спецификация доставки без торговой марки, версия 9.2» . Нетфликс | Справочный центр для партнеров . Проверено 24 сентября 2022 г.
  2. ^ например , спецификация MPEG-2 , ITU-T H.262 2000 E стр. 44
  3. ^ «MFNominalRange (mfobjects.h) — приложения Win32» . docs.microsoft.com . Проверено 10 ноября 2020 г.
  4. ^ Чарльз Пойнтон, Цифровое видео и HDTV , Глава 24, стр. 291–292, Морган Кауфманн , 2003.
  5. ^ abcdef «BT.2020: Значения параметров для систем телевидения сверхвысокой четкости для производства и международного обмена программами». Международный союз электросвязи . Июнь 2014 года . Проверено 8 сентября 2014 г.
  6. ^ "Дополнение 18 к ITU-TH" . Октябрь 2017 г. HDL : 11.1002/1000/13441 .
  7. ^ «BT.2246-8 (03/2023) Современное состояние телевидения сверхвысокой четкости» . МСЭ .
  8. ^ «Подвыборка в ICtCp против YCbCr» (PDF) . Dolby Laboratories, Inc. Архивировано из оригинала (PDF) 13 октября 2018 года.
  9. ^ Формат обмена файлами JPEG, версия 1.02.
  10. ^ T.871: Информационные технологии – Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Формат обмена файлами JPEG (JFIF). МСЭ-Т . 11 сентября 2012 года . Проверено 25 июля 2016 г.
  11. ^ См. документацию libjpeg-turbo для: CS_YCCK «YCCK (также известное как «YCbCrK») — это не абсолютное цветовое пространство, а скорее математическое преобразование CMYK, предназначенное исключительно для хранения и передачи», cmyk_ycck_convert(); видеть
  12. ^ «EBU Tech 3237, Дополнение 1» (PDF) . п. 18 . Проверено 15 апреля 2021 г.
  13. ^ аб Джек, Кейт (1993). Видео демистифицировано . Высокотекстовые публикации. п. 30. ISBN 1-878707-09-4.
  14. ^ «Используйте libjpeg-turbo для преобразования YUV->RGB в кодировщике jpeg · google/skia@c7d01d3» . Гитхаб .
  15. ^ ab msdn.microsoft.com, Подтипы видео YUV
  16. ^ abcd msdn.microsoft.com, Рекомендуемые 8-битные форматы YUV для рендеринга видео
  17. ^ ab «2.7.1.1. Упакованные форматы YUV — документация по ядру Linux». docs.kernel.org .
  18. ^ fourcc.com Форматы пикселей YUV
  19. ^ «2.7.1.2. Планарные форматы YUV — документация по ядру Linux». docs.kernel.org .

Внешние ссылки

Программные ресурсы для упакованных пикселей: