Перейти к содержанию

YUV

Материал из Википедии — свободной энциклопедии
Цветовая плоскость (при ), представленная в цветовой гамме RGB
Фотография и её YUV-компоненты

YUV (Y′UV) — цветовая система, в которой цвет состоит из следующих компонент — яркости (Y) и двух цветоразностных компонент (U и V)[1]. Она позволяет учесть одно из свойств человеческого зрения и поэтому используется как промежуточное представление для фото и видео. Фотоаппараты и видеокамеры опираются на систему RGB для преобразования света в электронный сигнал, а телевизоры и мониторы также используют RGB для отображения. Можно хранить видео в RGB и обходиться без дополнительных преобразований, но это менее эффективный путь. Поэтому видео хранят и передают в YUV, в котором возможна цветовая субдискретизация.

Термин имеет два значения:

  • Одна определённая цветоразностная система (luma-chroma system). По строгому определению, Y′UV — это система, используемая в процессе кодирования композитного сигнала в NTSC и PAL[2].
  • Любая цветоразностная система, «Y’C1C2»[3], «семейство Y′UV»[K 1]. Когда говорят о цифровом видео и изображениях, обычно имеют в виду один из вариантов Y’CBCR[K 2].

Y′UV — это не аббревиатура. Для Y′ можно провести параллель с системой CIE XYZ, а U и V расположены в алфавитном порядке. Y′ называют сигналом яркости (luma), штрих означает гамма-коррекцию[K 3]. U и V — это цветоразностные сигналы, которые вместе представляют цветность (chroma).

При разработке систем цветного телевидения требовалось сохранить совместимость с чёрно-белыми телевизорами[6]. С этим связано решение дополнить уже имеющийся сигнал яркости Y′ (чёрно-белое изображение) новыми сигналами, которые бы просто игнорировались чёрно-белыми телевизорами.

Яркость складывается из R′, G′ и B′ с учётом чувствительности глаза к разным участкам спектра[7]:

(точные значения коэффициентов яркости зависят от цветового пространства)

Можно передавать четыре сигнала, Y′ для чёрно-белых телевизоров и R′, G′, B′ для цветных, но в этом нет необходимости. Вместе с яркостью достаточно передать информацию о двух цветах, а сигнал третьего цвета вычислять, вычитая из Y′ два других:

Этого ещё недостаточно для практического использования. Сигналы R′ и B′ содержат в себе части яркости, то есть они не равны нулю даже для чёрно-белого изображения[8]. Вместо них используют цветоразностные сигналы B′−Y′ и R′−Y′ (буквально «синий минус яркость» и «красный минус яркость»), этот приём — вычитание яркости — улучшает помехоустойчивость аналогового сигнала[9] и совместимость с чёрно-белыми телевизорами[10], он также актуален для цифрового видео. B′−Y′ и R′−Y′ вместе составляют цветность. Сигналы цветности влияют на насыщенность цвета, но не меняют яркость. Можно считать, что цветность — это «цвет минус яркость». То есть то, что нужно добавить к яркости, чтобы получить полный цвет.

Исключить решили именно G′−Y′, так как зелёный цвет вносит наибольший вклад в яркость и «зелёный минус яркость» оказывается наиболее слабым цветоразностным сигналом из трёх[11][12][13].

Теперь можно говорить о цветовых системах R′G′B′ и [Y′, B′−Y′, R′−Y′] и о преобразованиях между ними.

Прямое преобразование:

(о величине коэффициентов яркости здесь)

Обратное преобразование:

Система [Y′, B′−Y′, R′−Y′] только служит основой для других цветоразностных систем[14] — ей не хватает как минимум масштабирования, чтобы компоненты располагались в требуемом диапазоне. Так, лишь разный диапазон значений отличает системы Y′UV, Y′DBDR, Y′PBPR и Y′CBCR: для получения оригинальной системы Y′UV компоненты B′−Y′, R′−Y′ домножаются на коэффициенты, в наиболее распространённой версии Y’CBCR яркость расположена в диапазоне [16; 235], а цветность — в [16; 240] и т. д.

Преимущества

[править | править код]

Совместимость с чёрно-белыми телевизорами больше не требуется, но у семейства Y′UV есть актуальное преимущество перед R′G′B′. Это возможность «прореживания» цветности[15], к разрешению которой человек менее чувствителен. Другими словами, человек чётче видит изменения в яркости, чем в цвете, и поэтому разрешение цветности можно понизить. Прореживание в цифровом виде называется цветовой субдискретизацией и играет роль сжатия с потерями[16]: повсеместно используемая субдискретизация 4:2:0 снижает битрейт в два раза. Аналогичные приёмы существуют в аналоговом виде[K 4].

Семейство Y′UV остаётся востребованным именно из-за цветовой субдискретизации[9].

Другое преимущество заключается в меньшей корреляции компонент по сравнению с R′G′B′, что улучшает сжатие[17].

Оригинальная система

[править | править код]

Оригинальная система Y′UV, используемая в процессе кодирования композитного сигнала, имеет коэффициенты яркости KR = 0,299, KB = 0,114 (KG = 1 − KRKB = 0,587)[18]. С ними преобразование выглядит следующим образом:

Масштабирующие коэффициенты цветности 0,492 и 0,877 необходимы, чтобы не допускать перегрузки ТВ-передатчика и в то же время не снижать отношение сигнал/шум сигнала яркости[19]. Экспериментально определили, что допустим следующий размах полного сигнала: не более чем на 1/3 выше уровня белого и ниже уровня чёрного, коэффициенты рассчитаны исходя из этого условия. Они до сих пор встречаются в вычислениях, хотя такое ограничение диапазона не играет роли вне систем аналового телевидения.

Коэффициенты для U и V обычно указаны в стандартах с точностью до трёх цифр после запятой, но в новом стандарте NTSC они упомянуты как 0,492111… и 0,877283…[20], а точные значения также доступны[21].

Известно, что в NTSC используется цветовая система Y’IQ, однако между NTSC и Y′UV также имеется следующая связь. Систему Y′IQ можно определить через Y′UV: для этого надо поменять местами оси U и V, а также повернуть их на 33 градуса. Идея поворота заключалась в том, чтобы расположить ось I вдоль цветов, к изменению которых человек наиболее чувствителен, и дать компоненте I бо́льшую полосу пропускания по сравнению с Q[22][23]. В следующих версиях стандарта от использования неодинаковых полос пропускания отказались (и поворот осей потерял смысл), а для получения композитного сигнала стали также приводить формулу, использующую Y′UV вместо Y′IQ[24][K 5]. Чарльз Пойнтон[англ.] так пишет о развитии NTSC: «примерно с 1970 года кодирование цвета производится с равнополосными компонентами U и V»[23].

В PAL изначально применяется система Y′UV.

В SECAM применяются другие масштабирующие коэффициенты. Иногда систему именуют Y′DBDR[англ.] по названию цветоразностных сигналов DB и DR.

Цветоразностные системы в целом

[править | править код]

Примеры систем

[править | править код]

[Y′, B′−Y′, R′−Y′] — встречается в вычислениях, основа для других систем. B′−Y′, R′−Y′ — это цветность до какого-либо масштабирования.

Y′UV, Y′IQ, Y′DBDR[англ.] — используются при кодировании композитного сигнала в аналоговом телевидении.

Y′PBPR — используется в аналоговом компонентном видео, цветность и яркость часто имеют одинаковый размах в 700 мВ[25]. Также означает систему, используемую в вычислениях — в ней яркость приведена к диапазону [0; 1], а цветность — к [−0,5; 0,5][26].

Y′CBCR — используется в цифровом видео, имеет целочисленные значения. В 8-битном варианте яркость лежит в диапазоне [16; 235], а цветность — в [16; 240] (так называемый ограниченный диапазон). В JPEG (и крайне редко в видео) используется полный диапазон [0; 255].

xvYCC[англ.] — модификация Y′CBCR, устаревший стандарт с расширенным цветовым охватом.

Y′COCG[англ.]  — преобразование с малой корреляцией между компонентами и улучшенной обратимостью.

ICTCP[англ.] — разработка компании Dolby, призванная заменить Y′CBCR в HDR-видео.

На что опираются цветоразностные системы

[править | править код]

Многие цветоразностные системы отличаются лишь в деталях, так как вместе основываются на B′−Y′ и R′−Y′.

Цветоразностные системы представляют собой лишь способ кодирования RGB-сигнала. Такие системы как Y′CBCR, Y′PBPR, Y′IQ, Y′UV получаются из R′G′B′ с учётом коэффициентов яркости (luma coefficients) и масштабирующих коэффициентов. Чтобы значения цветоразностного пространства однозначно соответствовали определённым цветам (иначе говоря, чтобы оно стало абсолютным цветовым пространством), необходимо определить и исходное пространство R′G′B′ : оно представляет собой линейный RGB после гамма-коррекции с некоторой передаточной характеристикой. А линейное пространство RGB однозначно определяется тремя основными цветами (RGB primaries) и стандартизированной точкой белого[27], заданными в так называемых хроматических координатах x и y[K 6].


Video
...
Color primaries                   : BT.709
Transfer characteristics          : BT.709
Matrix coefficients               : BT.709

Видео
...
Основные цвета                    : BT.601 PAL
Характеристики трансфера          : BT.470 System B/G
Коэффициенты матрицы              : BT.470 System B/G
Выдержки из текстовых отчётов MediaInfo с метаданными: основные цвета и
точка белого (1), функция гамма-коррекции (2) и матричные коэффициенты (3).

То есть цветоразностное пространство задаётся:

  • матричными коэффициентами (яркости и масштабирования)

И будет абсолютным, если также даны:

  • функция гамма-коррекции
  • основные цвета и точка белого

Отдельно стоят некоторые менее распространённые системы. В Y′CCBCCRC гамма-коррекция применяется на другом этапе, преобразование в ICTCP[англ.] проходит через систему LMS, а в Y′COCG[англ.] цветность не определяется через B′−Y′ и R′−Y′.

Сигнал яркости Y′ (luma) в цветоразностных системах близок к относительной яркости Y (relative luminance) в системах CIE XYZ и xyY. Коэффициенты для сигнала яркости рассчитываются так же, как для относительной яркости[29], их получают из основных цветов и точки белого[30]. Из этих коэффициентов составлена вторая строка матрицы перехода из RGB в XYZ[31].

  • Сигнал яркости Y′ имеет гамма-коррекцию.
  • Гамма-коррекция обычно применяется к составляющим RGB, а не к Y после перевода в YUV, как было бы точнее[32][K 7]. То есть на практике для простоты выполняется последовательность RGB → R′G′B′ → Y′UV вместо теоретически правильной RGB → YUV → Y′UV.
  • Коэффициенты для сигнала яркости могут не обновляться под новые основные цвета[33] ради обратной совместимости, так произошло в BT.601.

Коэффициенты яркости

[править | править код]

Системы Y′UV существуют в вариантах с разными коэффициентами яркости (весами при R′, G′ и B′): например, системы 601Y′CBCR, 709Y′CBCR и 2020Y′CBCR. Коэффициенты обычно обновляют вместе с изменениями в колориметрии (такими как расширение цветового охвата в UHD), поэтому сейчас в основном используется три набора коэффициентов: для SD, HD и UHD-видео.

Выше приводилась подобная формула для яркости:

Данный набор коэффициентов KR = 0,299, KB = 0,114 (KG = 1 − KRKB) закреплён в BT.601[англ.] и многих других стандартах[34]. В приближённом виде он появился в NTSC 1953[35], набор продолжил использоваться после появления BT.601 и до сих пор почти всегда применяется для телевидения стандартной чёткости. За пределами видео он используется, например, в JPEG[36]. Эти коэффициенты могут ошибочно[37] использоваться при переводе sRGB-изображений в оттенки серого.

// с более ярким, но менее насыщенным цветом Коэффициенты рассчитаны исходя из характеристик люминофоров первых цветных телевизоров. После скорого перехода на другие люминофоры (более яркие, но дающие меньший цветовой охват) и постепенной адаптации под них вещания, коэффициенты перестали быть теоретически правильными, однако это расхождение почти не оказало практического влияния[33][38].

Для HDTV коэффициенты изменили. Согласно BT.709[англ.]: KR = 0,2126, KB = 0,0722.

Стандарт не расширял цветовой охват, обновление коэффициентов устранило расхождение, описанное выше: в отличие от BT.601, коэффициенты теперь соответствуют основным цветам и поэтому дают более точное приближение сигнала яркости Y′ к относительной яркости в CIE XYZ.

Некоторые специалисты считают, что изменение коэффициентов принесло больше вреда, чем пользы[39][40]. Это решение дало место для новых ошибок[K 8]: теперь при проигрывании видео правильные коэффициенты для перевода Y′UV в R′G′B′ должны выбираться на основе метаданных или разрешения видео[K 9]. Разное кодирование цвета в зависимости от разрешения в компьютерной сфере выглядит нелогично и непонятно. Оригинальная система Y′UV не существует в HD-варианте, но цифровой Y′CBCR и аналоговый Y′PBPR теперь делятся на два разных цветовых пространства с разными формулами для преобразования[42]: 601Y′CBCR и 709Y′CBCR, 601Y′PBPR и 709Y′PBPR. Стандарт sRGB основан на BT.709 и использует те же основные цвета, то есть при расчёте относительной яркости для sRGB следует использовать те же коэффициенты[43], например, при переводе в оттенки серого.

Также коэффициенты обновлены для UHDTV в связи с расширением цветового охвата в BT.2020[англ.]. Стандарт задаёт следующие значения: KR = 0,2627, KB = 0,0593[44], они также продублированы в стандарте на HDR-видео BT.2100[англ.][45].

UHD-видео может и не иметь широкого цветового охвата[англ.] (необходимого в HDR-видео и обычно не используемого в SDR)[K 10] и тогда опираться на BT.709 с его коэффициентами.

Остальные наборы

[править | править код]

Всего для преобразования между YUV и RGB стандартизировано ITU-T двенадцать наборов «матричных коэффициентов»[47]. В простых случаях под ними подразумеваются различные коэффициенты яркости KR и KB, в более сложных (Y′COCG[англ.], ICTCP[англ.]) — системы уравнений, которые, впрочем, можно представить в матричном виде с определёнными коэффициентами.


Допустимые значения

[править | править код]

Пространства Y′UV полностью вмещают в себя R′G′B′ и превосходят его по объёму примерно в 4 раза. Это значит, что только четверть объёма Y′UV соответствует значениям R′G′B′ от 0 до 1. Такие значения, попадающие в куб R′G′B′, называются допустимыми[48]. Значения вне охвата R′G′B′ могут появиться в процессе обработки, при переводе обратно в R′G′B′ их ограничивают между 0 и 1, сводя к допустимым[49].

Изменение цветности не меняет яркость, но это гарантируется только для допустимых значений цветности: сигнал с Y′ = 0 при переводе в R′G′B′ должен иметь чёрный цвет независимо от значений цветности, однако на практике этого не происходит, а причина заключается в тривиальной обрезке недопустимых значений (тривиальном ограничении RGB-значений, выходящих за [0;1]?)[50]. Упоминается более сложный способ «легализации» Y′UV, дающий меньше субъективных искажений[51]. По нему значения в плоскости UV проецируются на границу допустимой области: яркость и оттенок сохраняются, а насыщенность уменьшается[52]. То, что 3/4 значений Y′UV не используются, указывает на его меньшую точность по сравнению с R′G′B′. Незадействованным значениям нашли применение в xvYCC[англ.] — неактуальном сейчас пространстве с широким цветовым охватом.

Преобразования

[править | править код]

Преобразования удобно производить в матричном виде. Почти все преобразования между R′G′B′ и цветоразностными пространствами можно совершать через умножение на матрицу перехода 3x3. Преобразование из R′G′B′ в некоторую цветоразностную систему в обобщённом виде выглядит так:

Тогда обратное преобразование будет представлять собой решение матричного уравнения выше, требующее вычисления обратной матрицы:

Преобразование R′G′B′ в [Y′, B′−Y′, R′−Y′][53] в виде системы уравнений и в матричном виде:

Пусть преобразование в Y′PBPR продолжит цепочку. PB и PR — это B′−Y′ и R′−Y′, приведённые к диапазону [−0,5; 0,5].

Обратное преобразование из Y′PBPR в R′G′B′. Эту обратную матрицу легко получить с помощью пакета символьных вычислений.

Числовые матрицы перехода для различных случаев можно найти в книге Пойнтона в главах 29 «Component video colour coding for SD» и 30 «Component video colour coding for HD»[54], а также на его сайте[55].

Дополнительно о других преобразованиях: матрица Y′UV→Y′IQ — это произведение матрицы отражения на матрицу поворота[56], а смещение при переходе в Y′CBCR дополнительно требует сложения с вектором.

Примечания

[править | править код]
Комментарии
  1. CIELAB вряд ли так назовут, но, например, в стандарте JPEG XR под YUV подразумевается Y′CGCO-R[англ.]. Другой пример — обозначения субдискретизации вроде «YUV420» вместо «4:2:0».
  2. Возможно, в 90-х годах свою роль сыграло расширение файла .yuv[4].
  3. Штрих означает, что к компоненте применена гамма-коррекция, которая учитывает нелинейность зрения. Нелинейные пространства с гамма-коррекцией дают более эффективное кодирование[5], но не подходят для некоторых вычислений. Штрих часто опускается, но его могут сохранять для ясности, также он необходим при упоминании компонент до гамма-коррекции и после (например, RGB → R′G′B′).
  4. В аналоговом виде сужают полосу частот цветности (что уменьшает её горизонтальную чёткость)[15] и тем самым сокращают общую полосу частот, занимаемую видео. Также в SECAM применяется поочерёдная (через строку) передача цветности.
  5. В тексте стандарта U и V не упоминаются, но очевидны после отделения нового коэффициента «0,925»: 0,4552… * (B − Y) = (0,492111 / 0,925) * (B − Y) = U/0,925.
  6. Общепринятого краткого обозначения для этой информации нет, хотя иногда её выражают таким образом: 709
    219
    Y
    709
    C
    BCR[28]. А более длинный подход к доопределению Y′CBCR показан рядом, в таблице с метаданными.
  7. Появились исключения в виде CL-Y′CBCR как предложения в BT.2246, Y′CCBCCRC как формата, описанного в BT.2020, и ICTCP[англ.] в BT.2100.
  8. Примеры цветовых искажений из-за неправильного определения коэффициентов имеются в документации к AviSynth: Colorimetry — Avisynth Wiki.
  9. Например, автоопределение в проигрывателе mpv выбирает коэффициенты BT.709 для разрешений выше 1279x576, а в противном случае — коэффициенты BT.601[41].
  10. Имеется в виду широкий цветовой охват как множество возможных цветов (например, в метаданных указывается «используются основные цвета из BT.2020/BT.2100»[KK 1]), независимо от полноты его использования — выходят ли в кадре цвета за пределы обычного охвата (BT.709/sRGB) или же нет. HDR-видео распространяется с широким цветовым охватом, эти технологии дополняют друг друга.

Вложенные комментарии

  1. В машиночитаемом виде это указание, конечно, выглядит иначе (ближе к «ColourPrimaries=9»); в общем он задаётся стандартом H.273[46], в деталях — спецификациями на форматы кодирования видео[англ.] и видеоконтейнеры.
Источники
  1. Taylor, 2001, p. 668.
  2. Poynton, 2012, pp. 571, 667.
  3. Poynton, 2012, p. 666.
  4. Poynton, 2012, p. 571.
  5. Poynton, 2012, pp. 34, 109.
  6. Айсберг, Дури, 1975, с. 43.
  7. Айсберг, Дури, 1975, с. 32, 44.
  8. Candan, K.; Sapino, M. Data Management for Multimedia Retrieval. — Cambridge University Press, 2010. — P. 37. ISBN 978-1-139-48958-4. — «This (subtracting) ensures that a completely black-and-white picture has no R and B components that need to be stored or communicated through networks»
  9. 1 2 Report ITU-R BT.2246-6 (03/2017) The present state of ultra-high definition television p. 54.
  10. Джакония В. Е. Телевидение. — 1986. — С. 266.
  11. Айсберг, Дури, 1975, с. 33.
  12. Taylor, 2001, p. 93: «G makes up the largest part of Y, so G-Y results in the smallest values [...] The smaller the signal, the more it is subject to errors from noise».
  13. Poynton, 2012, p. 338.
  14. Poynton, 2012, p. 357.
  15. 1 2 Poynton, 2012, p. 347.
  16. Poynton, 2012, p. 663: «Chroma subsampling effects lossy compression».
  17. Handbook of Visual Display Technology / Chen, Janglin; Cranton, Wayne; Fihn, Mark. — Springer, 2016. — P. 538. ISBN 978-3-319-14346-0.
  18. Poynton, 2012, p. 352: «Y’UV coding is always based upon BT.601 luma coefficients».
  19. Slater, Jim. Modern Television Systems. — CRC Press, 1991. — P. 28–29. ISBN 978-0-273-03122-2.
  20. SMPTE 170M-2004, p. 16, A.3 Reduction of (B-Y) and (R-Y).
  21. Poynton, Charles. Digital Video and HDTV. — Morgan Kaufmann, 2003. — P. 336 (kB и kR в примечании слева). ISBN 978-1-55860-792-7.
  22. Айсберг, Дури, 1975, с. 71—73.
  23. 1 2 Poynton, 2012, p. 627.
  24. SMPTE 170M-2004, p. 7 base equation 1.
  25. Poynton, 2012, p. 353.
  26. Poynton, 2012, p. 123.
  27. Poynton, 2012, p. 286.
  28. Poynton, 2012, p. 344.
  29. Poynton, 2012, p. 107: «Luma is encoded using the theoretical RGB weighting coefficients of colour science».
  30. Poynton, 2012, p. 306.
  31. Poynton, 2012, p. 642: «The middle row of an NPM gives the luminance coefficients for a set of display primaries».
  32. Poynton, 2012, pp. 11, 341, 568: «In video, we depart from the theory of colour science, and implement an engineering approximation [...] At present all video systems use nonconstant luminance coding [...] The “order of operations” is reversed from what you might expect from colour science».
  33. 1 2 Poynton, 2012, p. 346: «Despite the change in primaries, the luma coefficients for SD video – both 480i and 576i – have remained unchanged from the values that were established in 1953. As a consequence of the change in primaries, the luma coefficients in SD no longer theoretically match the primaries».
  34. H.273 (07/2021), p.13 Table 4, см. стандарты для значений 4-6.
  35. SMPTE 170M-2004, p. 15: «NTSC specification was published using the lower precision version of the luminance matrix».
  36. Recommendation ITU-R T.871 (05/11) p. 3. — «E′Y, E′CB and E′CR are defined as in Rec. ITU-R BT.601». Дата обращения: 28 декабря 2019.
  37. Nguyen, Rang; Brown, Michael. Why You Should Forget Luminance Conversion and Do Something Better. 3.4. Incorrect Y Conversion and Luma p. 4.
  38. Poynton, 2003, pp. 236—238.
  39. Poynton, Charles. Luminance, luma, and the migration to DTV (26 марта 1998). Дата обращения: 28 декабря 2019.
  40. Чан, Гленн. «HD» и «SD» цветовые пространства.
  41. mpv.io | Reference Manual. Дополнительно см. исходный код.
  42. Poynton, 2012, pp. 94, 350.
  43. Poynton, 2012, p. 259: «Weights computed from these primaries are appropriate to compute relative luminance from red, green, and blue tristimulus values for computer graphics».
  44. BT.2020-2, p. 4.
  45. BT.2100-2, p. 7.
  46. H.273 (07/2021).
  47. H.273 (07/2021), p.13 Table 4, 0..14, не считая 0 (Identity), 2 (Unspecified) и 3 (Reserved).
  48. Poynton, 2012, p. 339.
  49. Poynton, 2012, p. 373.
  50. Patent US20050168477A1. — «Clipping the negative values, therefore, may not preserve luminance and may instead add positive luminance to the output». Дата обращения: 28 декабря 2019.
  51. BT.601-7, p. 5.
  52. Jack, 2005, p. 31.
  53. Poynton, 2012, p. 359 eq. 29.1.
  54. Poynton, 2012, pp. 357—376.
  55. Poynton, Charles. Color FAQ.
  56. Jack, 2005, p. 17.
Стандарты

Литература

[править | править код]