Видео о 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, представляет значение яркости цвета. Простой символ (') используется для отличия luma от тесно связанного значения, яркости, которая обозначается как Y. Luminance является производным от линейных RGB-значений, тогда как luma является производным от нелинейных (гамма-исправленных) значений RGB. Яркость является более близкой мерой истинной яркости, но luma является более практичным для использования по техническим причинам. Символ простой часто опускается, но в цветовых пространствах 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.

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

U = B - Y'

V = R - Y'

Вместе эти значения содержат достаточно сведений для восстановления исходного значения RGB.

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

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

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

YUV по своей сути не является более компактным, чем RGB. Если chroma не понижена, размер пикселя 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 с использованием определения luma BT.601:

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

  2. Вычислите luma. Для 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 × Пр

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

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

Цвет R G 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 самыми высокими и наименьшими значениями являются красный и голубой.

Дополнительные сведения см. в разделе

Типы видеофайла

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