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

YUV

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Цветовая плоскость U—V (при Y=0,5), представленная в цветовой гамме RGB
Фотография и её YUV-компоненты

YUV — цветовая модель, в которой цвет состоит из трёх компонентов — яркость (Y) и два цветоразностных компонента (U и V).

Компоненты YUV определены на основе компонент RGB следующим образом:

[math]\displaystyle{ \begin{align} Y &= K_R \cdot R + ( 1 - K_R - K_B) \cdot G + K_B \cdot B \\ U &= B - Y \\ V &= R - Y \\ \end{align} }[/math]

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

[math]\displaystyle{ \begin{align} R &= Y + V \\ G &= Y - \frac{K_R \cdot V + K_B \cdot U}{1 - K_R - K_B} \\ B &= Y + U \\ \end{align} }[/math]

Обратное преобразование сохраняет диапазон изменения компонент RGB, но диапазон изменения компонент U и V больше, чем у Y, что не удобно для кодирования и передачи сигнала / данных. Поэтому вводится нормировка.

Нормировка YUV; формат YPbPr

Если принять, что компоненты RGB изменяются в диапазоне [0, A), тогда, по определению, компонента U изменяется в интервале [−(1 — KB) A, (1 — KB) A), а V в интервале [−(1 — KR) A, (1 — KR) A).

Для приведения к интервалу [−A/2, A/2) компоненты U и V нормируют:

[math]\displaystyle{ \begin{align} U &= \frac{1}{2} \cdot \frac{B - Y}{1 - K_B} \\ V &= \frac{1}{2} \cdot \frac{R - Y}{1 - K_R} \\ \end{align} }[/math]

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

[math]\displaystyle{ \begin{align} R &= Y + 2 \cdot V \cdot (1 - K_R) \\ G &= Y - \frac{2 K_R \cdot V \cdot (1 - K_R) + 2 K_B \cdot U \cdot (1 - K_B)}{1 - K_R - K_B} \\ B &= Y + 2 \cdot U \cdot (1 - K_B) \\ \end{align} }[/math]

Этот способ представления компонент используется для аналогового формата YPbPr.

Цифровое представление YUV; формат YCbCr

Цифровое представление YUV — это формат YCbCr. В основном, для цифрового формата данных используются целые неотрицательные числа степени двойки. Чаще — 8, 10 бит и так далее. Поскольку U и V могут быть отрицательными, то для них вводят смещение — половина от уровней квантования (кодирования). Также для прореживания менее информативных компонент применяют пространственное кодирование, например YUYV или YUV422.

YCbCr или YCrCb?

В рекомендации BT.601 чаще встречается последовательность Cr, Cb — в тексте, формулах, но в Приложении 2 BT.601 — уже Cb, Cr. В последующих рекомендациях той же группы последовательность Cb, Cr сохраняется. Хотя эти рекомендации не регламентируют последовательность записи Cb, Cr в адресном пространстве, казус в очерёдности (Cr, Cb) был принят и воплощён, например, в OpenCV[1], что затронуло не только названия параметров, но и очерёдность в адресном пространстве.

Тем не менее T-REC-T.871 строго задаёт последовательность — Cb, Cr: «If three components are used, they shall be present in the image with the ordering of the components such that the first component is the Y channel, the second component is the CB channel, and the third component is the CR channel».

Коэффициенты KR KB

В рекомендации BT.601 определены следующие значения для KR и KB:

[math]\displaystyle{ \begin{align} K_R &= 0.299 \\ K_B &= 0.114 \\ \end{align} }[/math]

Эти же значения используются для преобразования цветового пространства в YPbPr и JPEG (JFIF)[2].

По рекомендации BT.709 определены значения KR и KB:

[math]\displaystyle{ \begin{align} K_R &= 0.2126 \\ K_B &= 0.0722 \\ \end{align} }[/math]

B рекомендации BT.2020

[math]\displaystyle{ \begin{align} K_R &= 0.2627 \\ K_B &= 0.0593 \\ \end{align} }[/math]

При этом для сохранения постоянства яркости учитывают нелинейное соответствие RGB и яркости и вводят различные множители для отрицательных и положительных значений U и V. В традиционном варианте, с непостоянной яркостью, множители — постоянные величины.

Кодирование

YUV в JPEG (T-REC-T.871)

В рекомендации T-REC-T.871 определены преобразования для представления YUV в цифровой форме YCbCr:

[math]\displaystyle{ \begin{align} Y &= 0.299 \cdot R + 0.587 \cdot G + 0.114 \cdot B \\ C_B &= \frac{1}{2} \cdot \frac{B - Y}{1 - 0.114} + 128 \approx -0.1687 \cdot R - 0.3313 \cdot G + 0.5 \cdot B + 128 \\ C_R &= \frac{1}{2} \cdot \frac{R - Y}{1 - 0.299} + 128 \approx 0.5 \cdot R - 0.4187 \cdot G - 0.0813 \cdot B + 128 \\ \end{align} }[/math]

По сути, с учётом смещения нуля это преобразование аналогично YPbPr — все компоненты занимают полный диапазон, доступный для данной разрядности данных.

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

[math]\displaystyle{ \begin{align} R &= Y + 1.402 \cdot (C_R - 128) \\ G &= Y - (0.114 \cdot 1.772 \cdot (C_B - 128) + 0.299 \cdot 1.402 \cdot (C_R - 128)) / 0.587 \approx Y - 0.3441 \cdot (C_B - 128) - 0.7141 \cdot (C_R - 128)\\ B &= Y + 1.772 \cdot (C_B - 128) \\ \end{align} }[/math]

При этом каждую вычисленную компоненту следует привести к [0,255] — отсечь.

YUV в телевизионных стандартах

Преобразования в рекомендациях BT.601, BT.709, BT.2020 так же относятся к представлению YUV цифровой форме YCbCr, основное отличие которых от T-REC-T.871 в том, что диапазоны изменения компонент меньше, чем доступный для данной разрядности данных: для Y это 220 (8 бит) или 877 (10 бит) и минимальное значение 16 (8 бит) или 64 (10 бит), а для U и V — 225 (8 бит) или 897 (10 бит) и ноль соответствует значению 128 (8 бит) или 512 (10 бит). Это сделано для того, чтобы использовать крайние значения (0 и 255 (8 бит)) для передачи данных синхронизации.

Преобразование для BT.601 YCbCr осуществляется по следующим формулам:

[math]\displaystyle{ \begin{align} Y &= 0,299 \times R + 0,587 \times G + 0,114 \times B \\ U &= -0,14713 \times R - 0,28886 \times G + 0,436 \times B + 128 \\ V &= 0,615 \times R - 0,51499 \times G - 0,10001 \times B + 128 \end{align} }[/math]

Обратное преобразование для BT.601 в RGB YCbCr из RGB осуществляется по следующим формулам:

[math]\displaystyle{ \begin{align} R &= Y + 1,13983 \times (V - 128) \\ G &= Y - 0,39465 \times (U - 128) - 0,58060 \times (V - 128) \\ B &= Y + 2,03211 \times (U - 128) \\ \end{align} }[/math]

где R, G, B — соответственно, цифровое представление интенсивности цветов красного, зелёного и синего; Y — яркостная составляющая; U и V — цветоразностные составляющие. По BT.601 и BT.709 цифровое представление интенсивности цветов означает, что исходную величину интенсивности, прошедшую предварительную гамма-коррекцию и находящуюся в диапазоне [0,1], следует умножить на 219 и прибавить 16, например R = 219 R' + 16.

Модель широко применяется в телевещании и хранении/обработке видеоданных. Яркостная компонента содержит «черно-белое» (в оттенках серого) изображение, а оставшиеся две компоненты содержат информацию для восстановления требуемого цвета. Это было удобно в момент появления цветного телевидения для совместимости со старыми черно-белыми телевизорами.

В цветовом пространстве YUV есть один компонент, который представляет яркость (сигнал яркости), и два других компонента, которые представляют цвет (сигнал цветности). В то время как яркость передаётся со всеми деталями, некоторые детали в компонентах цветоразностного сигнала, лишённого информации о яркости, могут быть удалены путём понижения разрешения отсчётов (фильтрация или усреднение), что может быть сделано несколькими способами (то есть существует много форматов для сохранения изображения в цветовом пространстве YUV).

YUV часто путают с цветовым пространством YCbCr, и, как правило, термины YCbCr и YUV используются как взаимозаменяемые, что приводит к дополнительной путанице. Когда речь идёт о видео или сигналах в цифровой форме, особенно в контексте телевизионного вещания, термин «YUV» в основном означает «Y’CbCr» в терминах одной из рекомендаций BT.601, BT.709 и BT.2020. Если говорят о JPEG или MPEG или в контексте обработки изображений, то имеют в виду T-REC-T.871 YCbCr.

См. также

Примечания

Ссылки