Поделиться через


О видео YUV

Цифровое видео часто кодируется в формате YUV. В этой статье описываются общие понятия видео YUV, а также некоторые терминологии, без глубокого понимания математики видеообработки YUV.

Если вы работали с компьютерной графикой, вы, вероятно, знакомы с цветом RGB. Цвет RGB закодирован тремя значениями: красным, зеленым и синим. Эти значения соответствуют непосредственно частям видимого спектра. Три значения RGB образуют математическую систему координат, называемую цветового пространства. Красный компонент определяет одну ось этой системы координат, синий определяет второй и зеленый определяет третью, как показано на следующем рисунке. Любой допустимый цвет RGB находится где-то в пределах этого цветового пространства. Например, чистый пурпурный цвет состоит из 100% синего, 100% красного и 0% зеленого.

схема , показывающая цветового пространства rgb

Хотя RGB является общим способом представления цветов, возможны другие системы координат. Термин YUV относится к семейству цветовых пространств, все из которых кодируют сведения о яркости отдельно от информации о цвете. Как и RGB, YUV использует три значения для представления любого цвета. Эти значения называются Y', U и V. (На самом деле это использование термина YUV технически неточно. В компьютерном видео термин YUV почти всегда относится к одному конкретному цветовой пространству с именем Y'CbCr, рассмотренному далее. Тем не менее, YUV часто используется в качестве общего термина для любого цветового пространства, который работает вместе с теми же принципами, что и Y'CbCr.)

Компонент Y, также называемый luma, представляет значение яркости цвета. Первичный символ (') используется для отличия яркости от тесно связанного значения луминанса, который обозначается Y. Луминанс является производным от линейных RGB значений, в то время как яркость является производным от нелинейных (гамма-корректированных) RGB значений. Люминисценция является более точной мерой истинной яркости, но люма более практична в использовании по техническим причинам. Прайм-символ часто пропускается, поскольку цветовые пространства YUV всегда используют luma, а не светимость.

Luma вычисляется как взвешенное среднее из красных, зеленых и синих компонентов RGB-цвета. Для телевидения стандартного определения используется следующая формула:

Y' = 0.299R + 0.587G + 0.114B

Эта формула отражает тот факт, что человеческий глаз более чувствительны к определенным длинам волн света, чем другие, что влияет на воспринимаемую яркость цвета. Синий свет кажется самым тусклым, зеленый кажется самым ярким, а красный находится посередине. Эта формула также отражает физические характеристики люминофоров, используемых в первых телевизорах. Новая формула, учитывая современную телевизионную технологию, используется для телевизора с высоким определением:

Y' = 0.2125R + 0.7154G + 0.0721B

Уравнение "luma" для телевидения стандартной четкости определяется в спецификации под названием ITU-R BT.601. Для телевизора высокого разрешения соответствующая спецификация ITU-R BT.709.

Компоненты U и V, которые также называются значениями хромы или значениями цветового различия , получаются путем вычитания значения Y из красного и синего компонентов исходного RGB цвета.

U = B - Y'

V = R - Y'

Вместе эти значения содержат достаточно сведений, чтобы восстановить исходное значение RGB.

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

Аналоговое телевидение частично использует YUV по историческим причинам. Аналоговые цветные телевизионные сигналы были разработаны для обратной совместимости с черными и белыми телевизорами. Цветной телевизионный видеосигнал содержит информацию хроминанса (U и V), наложенные на сигнал яркости. Черно-белые телевизоры игнорируют цветность и отображают комбинированный сигнал как изображение в градациях серого. (Сигнал разработан таким образом, чтобы хрома не сильно мешал сигналу лума.) Цветные телевизоры могут извлекать хрома и преобразовывать сигнал обратно в RGB.

YuV имеет еще одно преимущество, которое более актуально сегодня. Человеческий глаз менее чувствителен к изменениям в оттенок, чем изменения яркости. В результате изображение может иметь меньше хроматической информации, чем информации о светимости, не жертвуя воспринимаемым качеством изображения. Например, обычно выборка значений цветности составляет половину горизонтального разрешения образцов люма. Другими словами, для каждых двух примеров luma в строке пикселей существует один пример U и один образец V. Предположим, что для кодирования каждого значения используются 8 битов, в общей сложности 4 байта требуются для каждых двух пикселей (два Y, один U и один V), в среднем 16 битов на пиксель или 30% меньше 24-разрядной кодировки RGB.

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

YuV в компьютерном видео

Формулы, перечисленные ранее для YUV, не являются точными преобразованиями, используемыми в цифровом видео. Цифровое видео обычно использует форму YUV под названием Y'CbCr. По сути, Y'CbCr работает путем масштабирования компонентов YUV до следующих диапазонов:

Компонент Диапазон
Y' 16–235
Cb/Cr 16–240, а 128 — ноль

 

Эти диапазоны предполагают 8 бит точности для компонентов Y'CbCr. Вот точные производные Y'CbCr, используя определение яркости BT.601:

  1. Начните со значений RGB в диапазоне [0...1]. Другими словами, чистый черный — 0, а чистый белый — 1. Важно отметить, что это нелинейные (гамма-исправленные) значения RGB.

  2. Вычислите люма. Для BT.601, Y' = 0,299R + 0,587G + 0,114B, как описано ранее.

  3. Вычислите промежуточные значения разности хрома (B - Y) и (R - Y". Эти значения имеют диапазон +/- 0,886 для (B - Y"), а +/- 0,701 для (R - Y).

  4. Масштабируйте значения разности хрома следующим образом:

    Pb = (0,5 / (1 - 0,114)) × (B - Y')

    Pr = (0,5 / (1 - 0,299)) × (R - Y')

    Эти факторы масштабирования предназначены для предоставления обоих значений одного и того же числового диапазона , +/- 0,5. Вместе они определяют цветовое пространство YUV с именем Y'PbPr. Это цветовое пространство используется в аналоговом компонентном видео.

  5. Масштабируйте значения Y'PbPr, чтобы получить окончательные значения Y'CbCr:

    Y' = 16 + 219 × Y'

    Cb = 128 + 224 × Pb

    Cr = 128 + 224 × Pr

Эти последние факторы масштабирования создают диапазон значений, перечисленных в предыдущей таблице. Конечно, можно преобразовать RGB непосредственно в Y'CbCr, не сохраняя промежуточные результаты. Шаги перечислены отдельно здесь, чтобы показать, как Y'CbCr происходит от исходных уравнений YUV, приведенных в начале этой статьи.

В следующей таблице показаны значения RGB и YCbCr для различных цветов, опять же с помощью определения luma BT.601.

Цвет R Г B Y' Cb Cr
Чёрный 0 0 0 16 128 128
Красный 255 0 0 81 90 240
Зеленый 0 255 0 145 54 34
Синий 0 0 255 41 240 110
Голубой 0 255 255 170 166 16
Пурпурный 255 0 255 106 202 222
Жёлтый 255 255 0 210 16 146
Белый 255 255 255 235 128 128

 

Как показано в этой таблице, Cb и Cr не соответствуют интуитивно понятным идеям о цвете. Например, чистый белый и чистый черный оба содержат нейтральные уровни Cb и Cr (128). Самые высокие и самые низкие значения для Cb — синий и желтый соответственно. Для Cr самые высокие и наименьшие значения — красные и сини.

Дополнительные сведения

Типы мультимедиа видео

Типы носителей