YUV: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
минимальное значение яркости для 10-бит
Обратные преобразования в общем виде
Строка 10:
\end{align}</math>
 
Обратное преобразование в '''RGB'''
В таком виде компонента '''U''' изменяется в интервале [−(1 — ''K''<sub>B</sub>) ''A'', (1 — ''K''<sub>B</sub>) ''A''], а '''V''' в интервале [−(1 — ''K''<sub>R</sub>) ''A'', (1 — ''K''<sub>R</sub>) ''A''], если принять, что компоненты '''[[RGB]]''' изменяются в диапазоне [0, ''A''].
 
<math>\begin{align}
Для приведения к интервалу [−''A''/2, ''A''/2] компоненты '''U''' и '''V''' нормируют:
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''' меньше, что не удобно для кодирования и передачи сигнала / данных. Поэтому вводится нормировка.
 
===Нормировка YUV. Формат [[YPbPr]]===
ВПо таком видеопределению, компонента '''U''' изменяется в интервале [−(1 — ''K''<sub>B</sub>) ''A'', (1 — ''K''<sub>B</sub>) ''A'']), а '''V''' в интервале [−(1 — ''K''<sub>R</sub>) ''A'', (1 — ''K''<sub>R</sub>) ''A'']), если принять, что компоненты '''[[RGB]]''' изменяются в диапазоне [0, ''A'']).
 
Для приведения к интервалу [−''A''/2, ''A''/2]) компоненты '''U''' и '''V''' нормируют:
 
<math>\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>\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]]. В основном, для цифрового формата данных используются целые неотрицательные числа степени 2. Чаще 8-бит, 10-бит и так далее. Поскольку, '''U''' и '''V''' могут быть отрицательными, то для них вводят смещение - половина от уровней квантования (кодирования). Также для прореживания менее информативных компонент применяют пространственное кодирование, например '''YUYV''' или '''YUV422'''.
 
====Коэффициенты ''K''<sub>R</sub> ''K''<sub>B</sub>====
В рекомендации [[https://en.wikipedia.org/wiki/Rec._601 BT.601]] определены следующие значения для ''K''<sub>R</sub> и ''K''<sub>B</sub>:
 
Строка 28 ⟶ 53 :
\end{align}</math>
 
Эти же значения используются для преобразования цветового пространства в [[YPbPr]] и [[JPEG]] (JFIF) [[https://www.itu.int/rec/T-REC-T.871-201105-I ITU T-REC-T.871]].
 
ВПо рекомендации [[https://en.wikipedia.org/wiki/Rec._709 BT.709]] определены иные значения для ''K''<sub>R</sub> и ''K''<sub>B</sub>:
 
<math>\begin{align}
Строка 37 ⟶ 62 :
\end{align}</math>
 
B рекомендации [[https://en.wikipedia.org/wiki/Rec._2020 BT.2020]]
В рекомендациях BT.601 и BT.709 определены преобразования для представления '''YUV''' в цифровой форме [[YCbCr]], основное отличие которых от T-REC-T.871 в том, что диапазоны изменения компонент меньше чем доступный для данной разрядности данных: для '''Y''' это 220 (8-бит) или 877 (10-бит) и минимальное значение 16 (64), а для '''U''' и '''V''' — 225 (8-бит) или 897 (10-бит) и ноль соответствует значению 128 (512).
 
<math>\begin{align}
Преобразования в T-REC-T.871 так же относятся к представлению '''YUV''' цифровой форме [[YCbCr]]:
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>\begin{align}
Строка 47 ⟶ 80 :
\end{align}</math>
 
По сути, с учётом смещения нуля это преобразование аналогично [[YPbPr]] - все компоненты занимают полный диапазон доступный для данной разрядности данных.
для них обратное преобразование будет со следующими коэффициентами:
 
Обратное преобразование в '''RGB''':
 
<math>\begin{align}
Строка 55 ⟶ 90 :
\end{align}</math>
 
При этом каждую вычисленную компоненту следует привести к [0,255] - отсечь.
 
====Кодирование '''YUV''' телевизионных стандартах====
Преобразование в [[RGB]] из BT.601 [[YCbCr]] осуществляется по следующим формулам:
ВПреобразования в рекомендациях BT.601 и, BT.709, определеныBT.2020 преобразованиятак дляже относятся к представленияпредставлению '''YUV''' в цифровой форме [[YCbCr]], основное отличие которых от T-REC-T.871 в том, что диапазоны изменения компонент меньше, чем доступный для данной разрядности данных: для '''Y''' это 220 (8-бит) или 877 (10-бит) и минимальное значение 16 (64), а для '''U''' и '''V''' — 225 (8-бит) или 897 (10-бит) и ноль соответствует значению 128 (512). Это сделано для того, чтобы использовать 0 и 255 для передачи данных синхронизации.
 
Преобразование в [[RGB]] издля BT.601 [[YCbCr]] осуществляется по следующим формулам:
 
<center><math>\begin{align}
RY &= Y0,299 \times R + 10,13983587 \times (VG -+ 0,114 \times 128);B \\
GU &= Y - 0,3946514713 \times (UR - 128)0,28886 -\times G + 0,58060436 \times (VB -+ 128); \\
BV &= Y0,615 +\times 2R - 0,0321151499 \times (UG - 128);0,10001 \\times B + 128
\end{align}</math></center>
 
Обратное преобразование для BT.601 в [[RGB]] [[YCbCr]] из RGB осуществляется по следующим формулам:
 
Обратное преобразование для BT.601 [[YCbCr]] из RGB осуществляется по следующим формулам:
 
<center><math>\begin{align}
YR &= 0,299 \times RY + 01,58713983 \times G(V + 0,114 \times- B;128) \\
UG &= Y - 0,1471339465 \times R(U - 0,28886128) \times G +- 0,43658060 \times B(V +- 128;) \\
VB &= 0,615Y \times+ R - 02,5149903211 \times G(U - 0,10001128) \times B + 128\
\end{align}</math></center>
 
где R, G, B — соответственно, ''цифровое представление'' интенсивности цветов красного, зеленого и синего; Y — яркостная составляющая; U и V — цветоразностные составляющие. По BT.601 и BT.709 ''цифровое представление'' интенсивности цветов означает, что исходную величину интенсивности, пошедшую предварительную гамма-коррекцию и находящуюся в диапазоне [0,1], следует умножаютумножить на 219 и прибавляютприбавить 16, например {''R'' = 219 ''R' '' + 16}.
 
 
Модель широко применяется в телевещании и хранении/обработке видеоданных. Яркостная компонента содержит «черно-белое» (в оттенках серого) изображение, а оставшиеся две компоненты содержат информацию для восстановления требуемого цвета.
Строка 81 ⟶ 119 :
В цветовом пространстве YUV есть один компонент, который представляет яркость (сигнал яркости), и два других компонента, которые представляют цвет (сигнал цветности). В то время как яркость передается со всеми деталями, некоторые детали в компонентах цветоразностного сигнала, лишённого информации о яркости, могут быть удалены путём понижения разрешения отсчетов (фильтрация или усреднение), что может быть сделано несколькими способами (то есть много форматов для сохранения изображения в цветовом пространстве YUV).
 
YUV часто путают с цветовым пространством [[YCbCr]], и, как правило, термины YCbCr и YUV используются как взаимозаменяемые, что приводит к некоторойдополнительной путанице. Когда речь идет о видео или [[Цифровая обработка сигналов|сигналах в цифровой форме]], особенно в контексте телевизионного вещания, термин «YUV» в основном означает «Y’CbCr» в терминах одной из рекомендаций BT.601, BT.709, BT.2020. Если говорят о JPEG или MPEG или в контексте [[Цифровая обработка изображений|обработки изображений]], то имеют ввиду T-REC-T.871 [[YCbCr]].
 
== См. также ==