YUV

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

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

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

Y = K R R + ( 1 K R K B ) G + K B B U = B Y V = R Y {\displaystyle {\begin{aligned}Y&=K_{R}\cdot R+(1-K_{R}-K_{B})\cdot G+K_{B}\cdot B\\U&=B-Y\\V&=R-Y\\\end{aligned}}}

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

R = Y + V G = Y K R V + K B U 1 K R K B B = Y + U {\displaystyle {\begin{aligned}R&=Y+V\\G&=Y-{\frac {K_{R}\cdot V+K_{B}\cdot U}{1-K_{R}-K_{B}}}\\B&=Y+U\\\end{aligned}}}

Обратное преобразование сохраняет диапазон изменения компонент 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 нормируют:

U = 1 2 B Y 1 K B V = 1 2 R Y 1 K R {\displaystyle {\begin{aligned}U&={\frac {1}{2}}\cdot {\frac {B-Y}{1-K_{B}}}\\V&={\frac {1}{2}}\cdot {\frac {R-Y}{1-K_{R}}}\\\end{aligned}}}

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

R = Y + 2 V ( 1 K R ) G = Y 2 K R V ( 1 K R ) + 2 K B U ( 1 K B ) 1 K R K B B = Y + 2 U ( 1 K B ) {\displaystyle {\begin{aligned}R&=Y+2\cdot V\cdot (1-K_{R})\\G&=Y-{\frac {2K_{R}\cdot V\cdot (1-K_{R})+2K_{B}\cdot U\cdot (1-K_{B})}{1-K_{R}-K_{B}}}\\B&=Y+2\cdot U\cdot (1-K_{B})\\\end{aligned}}}

Этот способ представления компонент используется для аналогового формата 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:

K R = 0.299 K B = 0.114 {\displaystyle {\begin{aligned}K_{R}&=0.299\\K_{B}&=0.114\\\end{aligned}}}

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

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

K R = 0.2126 K B = 0.0722 {\displaystyle {\begin{aligned}K_{R}&=0.2126\\K_{B}&=0.0722\\\end{aligned}}}

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

K R = 0.2627 K B = 0.0593 {\displaystyle {\begin{aligned}K_{R}&=0.2627\\K_{B}&=0.0593\\\end{aligned}}}

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

Кодирование

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

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

Y = 0.299 R + 0.587 G + 0.114 B C B = 1 2 B Y 1 0.114 + 128 0.1687 R 0.3313 G + 0.5 B + 128 C R = 1 2 R Y 1 0.299 + 128 0.5 R 0.4187 G 0.0813 B + 128 {\displaystyle {\begin{aligned}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{aligned}}}

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

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

R = Y + 1.402 ( C R 128 ) G = Y ( 0.114 1.772 ( C B 128 ) + 0.299 1.402 ( C R 128 ) ) / 0.587 Y 0.3441 ( C B 128 ) 0.7141 ( C R 128 ) B = Y + 1.772 ( C B 128 ) {\displaystyle {\begin{aligned}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{aligned}}}

При этом каждую вычисленную компоненту следует привести к [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 осуществляется по следующим формулам:

Y = 0 , 299 × R + 0 , 587 × G + 0 , 114 × B U = 0 , 14713 × R 0 , 28886 × G + 0 , 436 × B + 128 V = 0 , 615 × R 0 , 51499 × G 0 , 10001 × B + 128 {\displaystyle {\begin{aligned}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{aligned}}}

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

R = Y + 1 , 13983 × ( V 128 ) G = Y 0 , 39465 × ( U 128 ) 0 , 58060 × ( V 128 ) B = Y + 2 , 03211 × ( U 128 ) {\displaystyle {\begin{aligned}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{aligned}}}

где 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.

См. также

Примечания

  1. Функция cv::cvtColor с параметром CV_YCrCb2BGR Архивная копия от 22 ноября 2021 на Wayback Machine
  2. ITU T-REC-T.871 T.871 : Information technology - Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF)  (неопр.). Дата обращения: 24 мая 2018. Архивировано 25 мая 2018 года.

Ссылки

  • Color Spaces
  • ITU T-REC-T.871-201105
  • ITU R-REC-BT.601-7-201103
  • ITU R-REC-BT.709-6-201506
  • ITU R-REC-BT.2020-2-201510
  • ITU R-REC-BT.2100-1-201706
  • Варианты упаковки значений YUV (англ.)
Перейти к шаблону «Цветовые модели»

Цветовые каталоги: