맨위로가기

YCbCr

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

YCbCr은 디지털 영상 및 비디오에서 사용되는 색 공간으로, RGB 색상 신호를 저장 및 전송하는 데 효율적인 방식으로 변환한다. YCbCr은 루마 신호(Y')와 두 개의 크로마 성분(Cb, Cr)으로 구성되며, 크로마 서브샘플링을 통해 대역폭을 줄여 압축 효율을 높인다. YCbCr은 YUV, YPbPr 등과 혼용되기도 하며, ITU-R BT.601, BT.709, BT.2020, SMPTE 240M, JPEG 등 다양한 표준에 따라 변환 공식이 정의된다. 디지털 영상 압축 및 방송 시스템 등 다양한 분야에서 활용된다.

더 읽어볼만한 페이지

  • 색 공간 - SÉCAM
    SECAM은 프랑스에서 개발된 아날로그 컬러 텔레비전 방송 방식으로, PAL에 비해 수직 색 해상도가 낮고 아날로그 편집이 어려운 단점이 있으며, 프랑스의 옛 식민지, 일부 동유럽 국가, 소련 등에서 사용되었으나 현재는 사용 국가가 크게 감소하였다.
  • 색 공간 - PAL
    PAL은 발터 브루흐가 개발한 컬러 텔레비전 방송 표준으로, 위상 오차 자동 보정 기능을 가지며, 다양한 변종이 존재했으나 디지털 방송으로 전환되며 사용이 감소하고, 색상 정보 인코딩 방식을 나타낸다.
YCbCr
색 공간 정보
종류디지털 색 공간 계열
용도비디오 및 이미지 압축
전송
저장
구성 요소
Y휘도 (밝기) 성분
Cb청색-차 성분 (색차)
Cr적색-차 성분 (색차)
설명
Y 성분흑백 텔레비전에서도 사용 가능
Cr과 Cb 성분색상 정보 전달
활용
비디오 시스템PAL
SECAM
NTSC
관련 표준ITU-R BT.601
ITU-R BT.709
ITU-R BT.2020
변환
RGB와의 변환RGB 신호에서 계산 가능
변환 방정식표준에 따라 다양한 변환 방정식 존재
하위 종류
예시YCgCo
ICtCp

2. YCbCr 색 공간의 원리 및 변환

YCbCr 색 공간은 RGB 색 공간을 기반으로 하며, 밝기 정보와 색차 정보를 분리하여 저장하고 처리하는 방식이다. 음극선관(CRT) 디스플레이는 빨강, 녹색, 파랑 전압 신호로 구동되지만, 이러한 RGB 신호는 저장 및 전송에 효율적이지 않은데, 이는 상당한 중복성을 가지고 있기 때문이다.

YCbCr 및 Y′CbCr은 색상 처리 및 지각적 균일성에 대한 실용적인 근사치이며, 빨강, 녹색, 파랑에 해당하는 기본 색상을 지각적으로 의미 있는 정보로 처리한다. 이를 통해 이미지/비디오 처리, 전송 및 저장이 지각적으로 의미 있는 방식으로 수행될 수 있다. Y′CbCr은 루마 신호(Y′)와 두 개의 크로마 성분(CB 및 CR)을 분리한다. 루마 신호는 고해상도로 저장하거나 높은 대역폭으로 전송할 수 있으며, 크로마 성분은 대역폭 감소, 서브샘플링, 압축 등을 통해 시스템 효율성을 개선할 수 있다.

인간은 흑백 정보에 더 민감하기 때문에, "색상"에 비해 "흑백"에 할당되는 대역폭이나 해상도를 줄이는 크로마 서브샘플링을 적용하기도 한다.

2. 1. RGB와의 관계

YCbCr 신호는 감마 보정된 RGB 소스에서 생성되며, 세 가지 상수 KR, KG, KB를 사용하여 다음과 같이 계산된다.

:\begin{align}

Y' &= K_R \cdot R' + K_G \cdot G' + K_B \cdot B'\\

P_B &=\frac12 \cdot \frac{B' - Y'}{1 - K_B}\\

P_R &=\frac12 \cdot \frac{R' - Y'}{1 - K_R}

\end{align}

여기서 KR, KG, KB는 RGB 색 공간 정의에서 파생되며, K_R + K_G + K_B = 1을 만족해야 한다. 이 변환은 "색상 행렬"이라고 불리는 행렬 연산으로 표현할 수 있다.

:

\begin{bmatrix}

Y' \\ P_B \\ P_R

\end{bmatrix}

=

\begin{bmatrix}

K_R & K_G & K_B \\

  • \frac12 \cdot \frac{K_R}{1 - K_B} &-\frac12 \cdot \frac{K_G}{1 - K_B} &\frac12 \\

\frac12 & -\frac12 \cdot \frac{K_G}{1 - K_R} & -\frac12 \cdot \frac{K_B}{1 - K_R}

\end{bmatrix}

\begin{bmatrix}

R' \\ G' \\ B'

\end{bmatrix}



역변환은 다음과 같다.

:

\begin{bmatrix}

R' \\ G' \\ B'

\end{bmatrix}

=

\begin{bmatrix}

1 & 0 & 2-2 \cdot K_R \\

1 & -\frac{K_B}{K_G} \cdot (2-2 \cdot K_B) & -\frac{K_R}{K_G} \cdot (2-2 \cdot K_R) \\

1 & 2-2 \cdot K_B & 0

\end{bmatrix}

\begin{bmatrix}

Y' \\ P_B \\ P_R

\end{bmatrix}



여기서 R', G', B'는 감마 보정이 적용된 값으로, 0(검정)에서 1(흰색) 사이의 범위를 가진다. 결과적인 루마(Y) 값은 0에서 1 사이, 크로마(PB 및 PR) 값은 -0.5에서 +0.5 사이의 범위를 가진다.

RGB-YCbCr 변환

2. 2. YPbPr과의 관계

YCbCr은 때때로 '''YCC'''로 축약되기도 한다.

일반적으로 Y′CbCr, YCbCr, YPbPrYUV 용어는 상호 교환적으로 사용되어 혼란을 야기하기도 한다. 주요 차이점은 YPbPr은 아날로그 비디오 이미지에 사용되고 YCbCr은 디지털 이미지에 사용된다는 것이다. YUV로 변환할 때 Umax 및 Vmax에 대한 서로 다른 스케일링 값(YCbCr에서 둘 다 \tfrac{1}{2})을 갖는다는 점과, Y′CbCr과 YCbCr은 감마 보정 여부에 따라 다르다는 점 또한 차이점이다.

아래 방정식은 이러한 형식 간의 일반적인 원칙과 일반적인 차이점을 더 잘 보여준다.[1]

2. 3. 변환 공식

YCbCr 신호는 (디지털 형식으로 만들기 위해 스케일링 및 오프셋을 적용하기 전) YPbPr이라고 하며, 감마 보정된 RGB (빨강, 녹색, 파랑) 소스로부터 세 개의 상수 KR, KG, KB를 사용하여 다음과 같이 만들어진다.

:\begin{align}

Y' &= K_R \cdot R' + K_G \cdot G' + K_B \cdot B'\\

P_B &=\frac12 \cdot \frac{B' - Y'}{1 - K_B}\\

P_R &=\frac12 \cdot \frac{R' - Y'}{1 - K_R}

\end{align}

여기서 KR, KG, KB는 보통 해당 RGB 공간의 정의에서 유도되며, K_R + K_G + K_B = 1을 만족해야 한다. 이와 동등한 행렬 연산은 "색상 행렬"이라고도 한다.

:

\begin{bmatrix}

Y' \\ P_B \\ P_R

\end{bmatrix}

=

\begin{bmatrix}

K_R & K_G & K_B \\

  • \frac12 \cdot \frac{K_R}{1 - K_B} &-\frac12 \cdot \frac{K_G}{1 - K_B} &\frac12 \\

\frac12 & -\frac12 \cdot \frac{K_G}{1 - K_R} & -\frac12 \cdot \frac{K_B}{1 - K_R}

\end{bmatrix}

\begin{bmatrix}

R' \\ G' \\ B'

\end{bmatrix}



역행렬은 다음과 같다.

:

\begin{bmatrix}

R' \\ G' \\ B'

\end{bmatrix}

=

\begin{bmatrix}

1 & 0 & 2-2 \cdot K_R \\

1 & -\frac{K_B}{K_G} \cdot (2-2 \cdot K_B) & -\frac{K_R}{K_G} \cdot (2-2 \cdot K_R) \\

1 & 2-2 \cdot K_B & 0

\end{bmatrix}

\begin{bmatrix}

Y' \\ P_B \\ P_R

\end{bmatrix}



여기서 작은따옴표(′)는 감마 보정이 사용됨을 의미한다. R′, G′, B′는 명목상 0(최소 강도, 예: 검정)에서 1(최대 강도, 예: 흰색)까지의 값을 가진다. 결과 Y(루마) 값은 명목상 0에서 1까지, PB 및 PR (크로마) 값은 명목상 -0.5에서 +0.5까지의 범위를 가진다.

디지털 형태로 신호를 표현할 때, 결과는 스케일링, 반올림되고, 오프셋이 추가된다. 예를 들어 MPEG-2[2]에서 Y′ 구성 요소에 적용되는 스케일링 및 오프셋은 8비트 표현에서 검은색은 16, 흰색은 235 값을 갖도록 한다. CB 및 CR의 8비트 디지털 버전은 16에서 240까지의 범위로 스케일링된다.

RGB 색 공간에서 YCbCr 색 공간으로 변환하는 공식은 여러 표준에 따라 다양하게 존재한다. 주요 표준으로는 다음이 있다.

2. 3. 1. ITU-R BT.601 변환

ITU-R BT.601(구 CCIR 601) 표준에서 정의된 Y′CbCr 형식은 디지털 컴포넌트 비디오와 함께 사용하기 위해 해당 RGB 색 공간(ITU-R BT.470-6 시스템 M 기본 색상)에서 파생된다.

:\begin{align}

K_R &= 0.299\\

K_G &= 0.587\\

K_B &= 0.114

\end{align}

위의 상수와 공식을 통해 ITU-R BT.601에 대해 다음을 도출할 수 있다.

아날로그 R'G'B'에서 아날로그 YPbPr은 다음과 같이 파생된다.

:\begin{align}

Y' &= & 0.299 \cdot R' &+& 0.587 \cdot G' &+& 0.114 \cdot B'\\

P_B &= -& 0.168736 \cdot R' &-& 0.331264 \cdot G' &+& 0.5 \cdot B'\\

P_R &= & 0.5 \cdot R' &-& 0.418688 \cdot G' &-& 0.081312 \cdot B'

\end{align}

디지털 Y′CbCr(샘플당 8비트)은 다음과 같이 아날로그 R'G'B'에서 파생된다.

:\begin{align}

Y' &=& 16 &+& ( 65.481 \cdot R' &+& 128.553 \cdot G' &+& 24.966 \cdot B')\\

C_B &=& 128 &+& (-37.797 \cdot R' &-& 74.203 \cdot G' &+& 112.0 \cdot B')\\

C_R &=& 128 &+& (112.0 \cdot R' &-& 93.786 \cdot G' &-& 18.214 \cdot B')

\end{align}

또는 간단히 성분별로 표현하면 다음과 같다.

:\begin{align}

(Y', C_B, C_R) &=& ( 16, 128, 128 ) + ( 219 \cdot Y, 224 \cdot P_B, 224 \cdot P_R)\\

\end{align}

결과 신호는 Y′의 경우 16에서 235까지이며(Cb 및 Cr은 16에서 240까지), 0에서 15까지의 값을 "풋룸", 236에서 255까지의 값을 "헤드룸"이라고 한다. Y 및 Cb, Cr에 대해 다른 동일한 정량화 범위도 BT.2020 및 BT.709에 적용된다.

또는 디지털 Y′CbCr은 다음과 같은 방정식에 따라 디지털 R'dG'dB'd(샘플당 8비트, 각 구성 요소는 검은색을 나타내는 0과 흰색을 나타내는 255를 사용하여 전체 범위를 사용)에서 파생될 수 있다.

:\begin{align}

Y' &=& 16 &+& \frac{ 65.481 \cdot R'_D}{255} &+& \frac{128.553 \cdot G'_D}{255} &+& \frac{ 24.966 \cdot B'_D}{255}\\

C_B &=& 128 &-& \frac{ 37.797 \cdot R'_D}{255} &-& \frac{ 74.203 \cdot G'_D}{255} &+& \frac{112.0 \cdot B'_D}{255}\\

C_R &=& 128 &+& \frac{112.0 \cdot R'_D}{255} &-& \frac{ 93.786 \cdot G'_D}{255} &-& \frac{ 18.214 \cdot B'_D}{255}

\end{align}

아래 공식에서 스케일링 팩터는 \frac{256}{255}로 곱해진다. 이렇게 하면 분모에 256 값이 허용되며, 이는 단일 비트 시프트로 계산할 수 있다.

:\begin{align}

Y' &=& 16 &+& \frac{ 65.738 \cdot R'_D}{256} &+& \frac{129.057 \cdot G'_D}{256} &+& \frac{ 25.064 \cdot B'_D}{256}\\

C_B &=& 128 &-& \frac{ 37.945 \cdot R'_D}{256} &-& \frac{ 74.494 \cdot G'_D}{256} &+& \frac{112.439 \cdot B'_D}{256}\\

C_R &=& 128 &+& \frac{112.439 \cdot R'_D}{256} &-& \frac{ 94.154 \cdot G'_D}{256} &-& \frac{ 18.285 \cdot B'_D}{256}

\end{align}

R'd G'd B'd 디지털 소스에 풋룸 및 헤드룸이 포함된 경우, 풋룸 오프셋 16을 먼저 각 신호에서 빼야 하며, \frac{255}{219}의 스케일 팩터를 방정식에 포함해야 한다.

역변환은 다음과 같다.

:\begin{align}

R'_D &=& \frac{298.082 \cdot Y'}{256} &&&+& \frac{408.583 \cdot C_R}{256} &-& 222.921\\

G'_D &=& \frac{298.082 \cdot Y'}{256} &-& \frac{100.291 \cdot C_B}{256} &-& \frac{208.120 \cdot C_R}{256} &+& 135.576\\

B'_D &=& \frac{298.082 \cdot Y'}{256} &+& \frac{516.412 \cdot C_B}{256} &&&-& 276.836

\end{align}

반올림 없이(ITU-R BT.601 권고안에서 직접 가져온 값 사용) 역변환은 다음과 같다.

:\begin{align}

R'_D = \frac{255}{219}\cdot(Y'-16) && && && &+ \frac{255}{224}\cdot1.402 \cdot(C_R-128)\\

G'_D = \frac{255}{219}\cdot(Y'-16) &-& \frac{255}{224}\cdot1.772 && \cdot\frac{0.114}{0.587} &&\cdot(C_B-128) &- \frac{255}{224}\cdot1.402 \cdot\frac{0.299}{0.587}\cdot(C_R-128)\\

B'_D = \frac{255}{219}\cdot(Y'-16) &+& \frac{255}{224}\cdot1.772 && &&\cdot(C_B-128)

\end{align}

이러한 형태의 Y′CbCr은 주로 이전 CRT의 형광체 방출 특성에 맞는 RGB 모델을 사용하므로 오래된 표준 화질 텔레비전 시스템에 사용된다.

2. 3. 2. ITU-R BT.709 변환

Rec. 709Rec. 2020


Y′CbCr의 다른 형태는 주로 HDTV 사용을 위해 ITU-R BT.709 표준에 지정되어 있다. 새로운 형태는 sRGB와 같이 일부 컴퓨터 디스플레이 지향 응용 프로그램에서도 사용된다(sRGB 형태의 YCbCr에 사용되는 매트릭스인 sYCC는 여전히 BT.601이다). 이 경우, KB와 KR의 값은 다르지만, 이를 사용하는 공식은 동일하다. ITU-R BT.709의 경우, 상수는 다음과 같다.

:KB = 0.0722

:KR = 0.2126

:(KG = 1 - KB - KR = 0.7152)

이 형태의 Y′CbCr은 새로운 CRT와 다른 현대적 디스플레이 장비의 형광체 방출 특성에 더 잘 맞는 RGB 모델을 기반으로 한다.

BT.709의 변환 행렬은 다음과 같다.

:\begin{bmatrix} Y' \\ C_B \\ C_R \end{bmatrix}

=

\begin{bmatrix}

0.2126 & 0.7152 & 0.0722 \\

  • 0.1146 & -0.3854 & 0.5 \\

0.5 & -0.4542 & -0.0458

\end{bmatrix}

\begin{bmatrix} R' \\ G' \\ B' \end{bmatrix}

:\begin{bmatrix} R' \\ G' \\ B' \end{bmatrix}

=

\begin{bmatrix}

1 & 0 & 1.5748 \\

1 & -0.1873 & -0.4681 \\

1 & 1.8556 & 0

\end{bmatrix}

\begin{bmatrix} Y' \\ C_B \\ C_R \end{bmatrix}

R', G', B' 신호의 정의 또한 BT.709와 BT.601 간에 다르며, 사용 중인 TV 시스템의 유형(PAL 및 SECAM과 같은 625 라인 또는 NTSC와 같은 525 라인)에 따라 BT.601 내에서도 다르며, 다른 사양에서도 추가로 다르다. 다른 설계에서는 R, G 및 B 색도 좌표의 정의, 기준 백색점, 지원되는 색상 영역 범위, R, G 및 B에서 R', G' 및 B'를 파생하기 위한 정확한 감마 사전 보정 기능, 그리고 R'G'B'에서 Y′CbCr로 변환하는 동안 적용할 스케일링 및 오프셋에 차이가 있다. 따라서 한 형태에서 다른 형태로 Y′CbCr을 제대로 변환하는 것은 단순히 한 행렬을 반전시키고 다른 행렬을 적용하는 문제가 아니다. 사실, Y′CbCr이 이상적으로 설계되었을 때, KB 및 KR의 값은 RGB 색상 기본 신호의 정확한 사양에서 파생되어 휘도(Y′) 신호가 감마 조정된 휘도 측정값(일반적으로 인간 시각 시스템의 색상 자극에 대한 CIE 1931 측정값을 기반으로 함)에 가능한 한 가깝게 대응한다.[4]

2. 3. 3. ITU-R BT.2020 변환

ITU-R BT.2020 표준은 BT.709와 동일한 감마 함수를 사용하며, 비-상수 휘도(Non-constant luminance, NCL) Y'CbCr과 상수 휘도(Constant luminance, CL) Y'cCbcCrc를 정의한다.[5]

두 경우 모두 기본 색상에서 파생된 계수는 다음과 같다.

KBKRKG
0.05930.26270.6780


  • NCL의 정의: Y' = 0.2627R' + 0.6780 G' + 0.0593 B'; Cb = (B' - Y') / 1.8814; Cr = (R' - Y') / 1.4746
  • NCL 디코딩 행렬 (소수점 14자리):

:\begin{align}

\begin{bmatrix} R \\ G \\ B \end{bmatrix}

&=

\begin{bmatrix}

1 & 0 & 1.4746 \\

1 & -0.16455312684366 & -0.57135312684366 \\

1 & 1.8814 & 0

\end{bmatrix}

\begin{bmatrix} Y' \\ C_B \\ C_R \end{bmatrix}

\end{align}

행렬의 작은 값은 반올림되지 않은 정확한 값이다. 정밀도가 제한된 시스템(예: 8비트 또는 10비트)에서는 소수점 이하 6자리 등 낮은 정밀도의 행렬을 사용할 수 있다.[6]

  • CL (YcCbcCrc) 정의:
  • Y'c = (0.2627R + 0.6780 G + 0.0593 B)' (선형 RGB에서 계산된 실제 휘도에 적용된 감마 함수)
  • B' < Y'c인 경우 Cbc = (B'-Y'c) / (-2 Nb), 그렇지 않으면 (B'-Y'c) / (2 Pb). (NbPb는 색상 영역에 해당하는 (B'-Y'c)의 이론적 최소 및 최대값, 반올림된 "실용적인" 값은 Pb = 0.7910, Nb = -0.9702)
  • R' < Y'c인 경우 Crc = (R'-Y'c) / (-2 Nr), 그렇지 않으면 (R'-Y'c) / (2 Pr). (PrNr은 이론적 한계, 반올림된 값은 Pr = 0.4969, Nr = -0.8591)


CL 함수는 휘도 보존이 가장 중요한 경우나 "전송을 위해 향상된 코딩 효율성을 기대하는 경우"에 사용할 수 있다. ITU-R 보고서 BT.2246에 따르면 CL은 압축 효율성과 휘도 보존을 개선했지만, NCL은 HDTV YCbCr에서 색상 혼합 및 기타 제작 관행을 처리한 직원이 더 익숙할 것이라고 명시한다.[5][7]

BT.2020은 PQ와 HDR을 정의하지 않으며, 이는 BT.2100과 SMPTE ST 2084에서 더 자세히 정의된다. BT.2100은 "거의 상수 휘도"인 ICTCP의 사용을 도입할 것이다.[8]

2. 3. 4. SMPTE 240M 변환

SMPTE 240M 표준(MUSE 아날로그 HD 텔레비전 시스템에서 사용됨)은 다음 계수를 사용하여 YCC를 정의한다.[1]

:K_B = 0.087

:K_R = 0.212

이 계수는 240M 표준에 사용된 SMPTE 170M 기본 색상과 백색점에서 파생된다.[1]

2. 3. 5. JPEG 변환

JPEG의 JFIF 사용은 수정된 Rec. 601 Y′CbCr을 지원하며, 여기서 Y′, CB 및 CR은 [0...255]의 전체 8비트 범위를 갖는다.[9] 다음은 정밀도 여섯 자리로 표현된 변환 방정식이다. (이상적인 방정식은 ITU-T T.871을 참조).[10]

다음 공식에서 각 입력(R, G, B)의 범위도 [0...255]의 전체 8비트 범위이다.

:Y′ = 0 + (0.299 × R′D) + (0.587 × G′D) + (0.114 × B′D)

:CB = 128 − (0.168736 × R′D) − (0.331264 × G′D) + (0.5 × B′D)

:CR = 128 + (0.5 × R′D) − (0.418688 × G′D) − (0.081312 × B′D)

위를 통해 변환된 값은 다음을 통해 다시 되돌릴 수 있다.

:R′D = Y′ + 1.402 × (CR−128)

:G′D = Y′ − 0.344136 × (CB−128) − 0.714136 × (CR−128)

:B′D = Y′ + 1.772 × (CB−128)

위의 변환은 입력이 sRGB로 주어질 때 sYCC와 동일하며, IEC 61966-2-1:1999/Amd1:2003은 소수점 4자리만 제공한다는 점이 다르다.

3. YCbCr 색 공간의 활용

MPEG-2[2] 같은 표준에서는 8비트 표현을 사용할 때 Y′ 구성 요소에 대해 검은색은 16, 흰색은 235 값을 갖도록 스케일링 및 오프셋을 적용한다. CB 및 CR은 16에서 240까지의 범위로 스케일링된다. YCbCr 공간에서 색상 처리 시 (235-16)/(240-16) = 219/224의 분수로 다시 스케일링해야 하는 경우가 있는데, 이는 후속 처리가 더 높은 비트 심도에서 수행되지 않으면 양자화 왜곡을 유발할 수 있다.

이러한 스케일링은 처리 중 "오버슛"과 "언더슛"을 허용하여 클리핑을 방지한다. 또한 "헤드룸"과 "투룸"[3]은 xvYCC에서 지정한 대로 공칭 색상 색영역을 확장하는 데 사용될 수 있다.

값 235는 최대 (255 - 235) / (235 - 16) = 9.1%의 오버슛을 허용하는데, 이는 이론적 최대 오버슛 (깁스 현상)인 약 8.9%보다 약간 크다. 투룸은 16 / 219 = 7.3% 오버슛만 허용하여 이론적 최대 오버슛보다 작다. HDMI에서는 값 0과 255가 예약되어 있어 실제 사용 가능한 공간은 더 적다.

3. 1. 디지털 영상 및 비디오 압축

YCbCr 색 공간은 밝기 정보(Y)와 색차 정보(Cb, Cr)를 분리하여 영상 및 비디오 압축에 효율적으로 사용된다. 인간의 시각 시스템이 색차 정보보다 밝기 정보에 더 민감하다는 점을 이용하여, 색차 정보의 해상도를 낮추는 크로마 서브샘플링 기법을 적용한다. 이를 통해 화질 저하를 최소화하면서 압축률을 크게 높일 수 있다.[13]

디지털 구현에서 RGB → Y′UV 변환은 대부분 정수 연산을 사용하며, 특히 고정 소수점 근사를 사용한다. 이는 계산 속도를 향상시키기 위한 절충안으로, 마지막 이진 숫자 정도의 정밀도 손실이 발생할 수 있다.

Y′ 값은 일반적으로 [16, 235] 범위(스튜디오 스윙 또는 "TV 레벨")로 조정되며, U 및 V 값은 128을 더해 항상 양수가 되도록 한다. 이러한 범위는 비디오 편집 및 제작 과정에서 중요하다.[13]

RGB 파일은 픽셀당 8, 12, 16 또는 24비트로 인코딩될 수 있다. 픽셀당 24비트인 RGB888의 표준 바이트 형식은 `r0, g0, b0, r1, g1, b1, ...`이다.

YCbCr 패킹 픽셀 형식은 "YUV"라고도 불리며, 픽셀당 12, 16 또는 24비트로 인코딩될 수 있다. 서브샘플링에 따라 4:4:4, 4:2:2, 4:2:0 등으로 나뉜다. 실제 파일 형식에서는 4:2:0이 가장 일반적이며, 데이터가 더 축소되고 파일 확장자는 ".YUV"이다.[15][16]

  • 4:4:4: 픽셀 그룹화가 수행되지 않으며, 각 채널에 할당된 비트 수와 배열에 따라 달라진다.
  • 4:2:2: 2개의 픽셀을 수평으로 그룹화한다. YUY2 ( `y0, u, y1, v` )와 UYVY ( `u, y0, v, y1` ) 두 가지 배열이 있다.

YUY2 형식

  • 4:1:1: 거의 사용되지 않으며, 픽셀은 가로 4개 그룹으로 구성된다.[16]
  • 4:2:0: 매우 흔하게 사용되며, IMC2, IMC4, YV12, NV12 등의 형식이 있다. 이들은 모두 "평면" 형식을 사용하여 Y, U, V 값이 섞이지 않고 함께 그룹화된다. 픽셀당 12비트를 사용한다.[16]
  • IMC2: 전체 이미지를 Y로 배치한 후, 각 크로마 라인을 V0 ... Vn, U0 ... Un 순서로 배열한다.
  • IMC4: IMC2와 유사하지만 U0 ... Un, V0 ... Vn 순서로 배열된다.
  • I420: 전체 Y 이미지를 먼저 기록한 다음 U 이미지, V 이미지를 기록한다.

I420 레이아웃

  • YV12: I420과 동일하지만 U와 V 이미지의 순서가 바뀐다.[18]
  • NV12: 안드로이드 카메라 미리보기의 기본 형식이다.[19] 전체 Y 이미지를 먼저 기록한 다음 U0, V0, U1, V1 등의 인터리브된 라인이 기록된다.

참조

[1] 웹사이트 Full Non-Branded Delivery Specification v9.2 https://partnerhelp.[...] 2022-09-24
[2] 문서 e.g. the [[MPEG-2]] specification, ITU-T [[H.262]] 2000 E pg. 44
[3] 웹사이트 MFNominalRange (mfobjects.h) - Win32 apps https://docs.microso[...] 2020-11-10
[4] 서적 Digital Video and HDTV Morgan Kaufmann
[5] 뉴스 BT.2020 : Parameter values for ultra-high definition television systems for production and international programme exchange https://www.itu.int/[...] International Telecommunication Union 2014-09-08
[6] 웹사이트 ITU-T H Suppl. 18 https://www.itu.int/[...] 2017-10
[7] 웹사이트 BT.2246-8 (03/2023) The present state of ultra-high definition television https://www.itu.int/[...]
[8] 웹사이트 Subsampling in ICtCp vs YCbCr https://www.dolby.co[...] Dolby Laboratories, Inc.
[9] 문서 JPEG File Interchange Format Version 1.02 http://www.w3.org/Gr[...]
[10] 간행물 T.871: Information technology – Digital compression and coding of continuous-tone still images: JPEG File Interchange Format (JFIF) http://www.itu.int/r[...] ITU-T 2016-07-25
[11] 문서 See libjpeg-turbo documentation for: [https://github.com/libjpeg-turbo/libjpeg-turbo/blob/6b9e3b04008165260a13f77cf235170438d5adf8/java/org/libjpegturbo/turbojpeg/TJ.java#L402 CS_YCCK] 'YCCK (AKA "YCbCrK") is not an absolute colorspace but rather a mathematical transformation of CMYK designed solely for storage and transmission', [https://github.com/libjpeg-turbo/libjpeg-turbo/blob/6b9e3b04008165260a13f77cf235170438d5adf8/jccolor.c#L396 cmyk_ycck_convert()]; see
[12] 웹사이트 EBU Tech 3237 Supplement 1 https://tech.ebu.ch/[...] 2021-04-15
[13] 서적 Video Demystified https://archive.org/[...] HighText Publications
[14] 웹사이트 Use libjpeg-turbo for YUV->RGB conversion in jpeg encoder · google/skia@c7d01d3 https://github.com/g[...]
[15] 문서 msdn.microsoft.com, YUV Video Subtypes http://msdn.microsof[...]
[16] 문서 msdn.microsoft.com, Recommended 8-Bit YUV Formats for Video Rendering http://msdn.microsof[...]
[17] 웹사이트 2.7.1.1. Packed YUV formats — The Linux Kernel documentation https://docs.kernel.[...]
[18] 웹사이트 VideoLAN Wiki: YUV https://wiki.videola[...]
[19] 문서 fourcc.com YUV pixel formas https://fourcc.org/y[...]
[20] 웹사이트 2.7.1.2. Planar YUV formats — The Linux Kernel documentation https://docs.kernel.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com