나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-12-21 15:01:38

YUV

YPbPr에서 넘어옴

'''[[색|색 공간 | {{{#!wiki style="font-family:Times New Roman, serif; font-style:Italic; display: inline;"]]'''
RGB · CMYK · HSV · HSL · YUV(YIQ, YCbCr, YPbPr, YDbDr, Y'UV) · Lab(CIELab, Oklab)
파일:YUV 색 평면.svg
Y가 0.5일 때의 색 평면
1. 개요2. 탄생 배경3. 현재의 쓰임4. 명칭 혼용5. 크로마 서브샘플링6. 변환 공식
6.1. RGB를 YUV로 바꿀 때6.2. YUV를 RGB로 바꿀 때
7. YUV, YIQ YCbCr, YPbPr이 쓰이는 곳8. 관련 항목

1. 개요

YUV(YIQ/YCbCr/YPbPr)는 색을 구성하는 방법 중 하나로 휘도(Y)와 청색 색차(U), 적색 색차(V) 정보로 색을 구성한다. 여기서 Y 신호만 받는다면 흑백이 된다. 여러 번 복제한 VHS 테이프나 방송 상태가 좋지 못한 채널에서 흑백으로 보이는 것도 이것 때문이다. Lab과 마찬가지로 인간이 색을 인식하는 방식으로 구성되었다.

휘도(Luminance)는 사전적 의미로는 특정 광원의 단위 면적당 밝기의 정도를 뜻하며, 과학적인 근거를 생각하지 않는다면 밝기라고 대략 이해해도 상관은 없다.

색차(Chrominance, Chroma)는 각 RGB 삼색 정보와 휘도 정보(Y)와의 차이 값이다. 녹색 색차는 신호 진폭이 작기 때문에 송출 중 여러 잡음에게 위협될 수 있고 휘도 정보에서 두 가지 색차 정보로부터 얻을 수 있어 사용하지 않는다.

2. 탄생 배경

컬러 텔레비전이 나왔을 때는 대부분의 사람들은 흑백 TV를 가지고 있었다. 문제는 컬러 방송을 RGB 색 공간으로 하면 컬러 영상을 흑백 TV로 보내기 어려우며, 그리고 기존의 송출 인프라를 뜯어 고치는 것은 너무 부담스러웠다. 그래서 나온 것이 기존의 흑백 신호에 색차 신호를 추가한 YUV이다. 컬러 TV는 YUV을 모두 받고 컬러 화면을 표시하며, 흑백 TV는 Y 신호만 받고 흑백 화면을 표시한다. 그리고 인간의 시각은 밝기에 더욱 민감한 특성을 가지는데, 흑백 신호의 해상도는 그대로 두고 색상 신호의 해상도만 줄이면 더 많은 대역폭을 확보할 수 있는 장점도 있었다.

3. 현재의 쓰임

더 이상 흑백TV가 쓰이지 않는 지금에도 YUV 방식은 여전히 사용중이다. 영상이나 사진 등의 압축(손실 압축 포맷)에 유용하기 때문이다.

사람의 시세포에는 명암을 보는 시세포와 색을 보는 시세포가 나뉘어 있다. 전체적인 이미지를 인지하는 것은 명암과 관계가 깊기 때문에, 사람의 눈은 색은 살짝 바래도 명암만 제대로 맞춰주면 원본과 큰 차이를 느끼지 못한다. 게다가 배경이나 발광체가 아닌 일반 피사체(얼굴)는 픽셀마다 색이 급격하게 변하는 일은 뜸하기 때문에 손실 대비 압축 효과가 뛰어나게 된다.

특히 영상에서는 색을 원본대로 표현하지 못하는 것보다 버퍼링으로 멈추는 것이 더 치명적이기 때문에 용량 및 처리량을 줄이는 것을 선호한다. 지나간 장면을 다시 돌아보지 않기에 색을 대충 칠해도 별로 표시가 나지 않아서 그렇다.

HDMI는 TV(YUV, 움직이는 화면[1]), DVI는 PC(RGB, 문서 등 정적인 화면)에 DisplayPort는 둘 다 최적화 되어 있다는 얘기도 이 압축 전송과 관련이 깊다.

4. 명칭 혼용

YUV 뿐만 아니라 YIQ, YCbCr, YPbPr, YDbDr, Y'UV 등 비슷해 보이는 단어들이 산재해 있는데, 디지털이냐 아날로그냐 아날로그에선 NTSCPAL이냐 등에서 다루는 차이지 원리와 개념은 똑같다.

오늘날 우리가 영상을 시청하면서 가장 많이 접하게 될 녀석은 YCbCr이다. CbCr은 각각 Chrominance blue, Chrominance red의 약어로 디지털 영상 용어이다. 아날로그에서 U, V로 불렀던 색차 이름을 그대로 사용한다.

NTSC에서 사용되는 YIQ의 I와 Q는 각각 QAM의 In-phase와 Quadrature를 의미한다. NTSC의 색생 전송에는 QAM을 사용하기에 해당 명칭을 따온 것. YIQ와 YUV와는 원리만 동일하고 색 공간 자체는 다르다. YIQ의 경우는 인간의 감각이 더 민감한 주황색에서 청색까지의 색상대가 I 신호로 묶여 있다.

휘도 신호(Y)에 구두점(')이 붙은 것은 감마 보정 된 신호라는 뜻이며 오늘날 대부분의 영상물은 감마 보정이 된 상태이기에 Y'UV 혹은 Y'CbCr로 쓰는 것이 맞아 보이나, 국내외 할 것 없이 YUV라는 용어가 계속 쓰는 이유는 상기했듯이 원리는 같고 YUV가 처음 나와 정의되었기에 해당 개념의 대명사로 취급되어 사용 중이다.

5. 크로마 서브샘플링

크로마 서브샘플링(Chroma Subsampling)을 단어대로 해석한다면 색차를 덜 표본화(sampling)한다는 뜻으로 영상에서 픽셀 개수의 표본화 결과인 해상도를 줄이는 손실 압축 인코딩이다. 여기서 해상도를 낮추는 건 오로지 색차 정보를 가진 픽셀들이며 휘도 해상도는 그대로이다.

포유류 동물들은 색맹이 많고 그나마 색상을 잘 구분한다는 영장류 조차 색상차이를 민감하게 반응하지 않는다. 이를 이용해서 색상 정보를 제거하여 영상의 품질을 낮춰 용량을 줄여도 영장류인 인간은 이를 잘 구분하지 못하기 때문이다.
파일:20221018173930_lmmdrypu.jpg
다만 하술하듯 고주파 영상이나 글자 같은 활자 표현, 일부 정지 화상에서는 구분이 될 수 있기에 게이밍이나 DSC 등을 사용하고 있다.

해당 샘플링은 H.264, H.265, H.266 등 다양한 코덱에서 지원한다. 수치 표현 시 Y:a:b 로 표시하고, 알파 채널까지 포함하면 Y:a:b:α 와 같이 쓴다. 각 수치의 의미는 다음과 같다.

예컨대 4:2:0 이라면 첫번째 행에는 휘도 정보 4개마다 색차 정보가 2개 있으며, 두번째 행에는 휘도 정보 4개마다 색차 정보가 0개 있다는 뜻이다. 두번째 행에는 색차 정보가 존재하지 않으므로 첫번째 행에서 가져온다. 따라서 휘도 픽셀 2x2마다 색차 정보가 하나씩 존재한다. 아래 표를 보면 좀 더 이해가 쉬울 것이다.
4:4:4 4:2:2 4:1:1 4:2:0
Y
UV
YUV

보통 4:4:4, 4:2:2, 4:1:1, 4:2:0의 방식이 있다.

4:4:4는 색차 신호가 줄어들지 않은 원본 영상으로 왜곡 없이 화질이 가장 좋지만 용량이 크다. CGI나 VFX, 컬러 그레이딩, 그래픽 작업 등 색상에 민감한 전문 프로덕션 분야에서 쓰인다. 또한 극장 배포용 코덱인 DCP도 4:4:4로 마스터링된다. [2]

4:2:2는 상대적으로 둔감한 색차 신호를 줄여서 압축한다. 색차 신호의 가로 해상도가 1/2로 줄어들지만 용량과 화질 둘다 적당하게 타협을 봤기 때문에 방송/비디오 프로덕션 환경에서 가장 많이 쓰이며, ProRes, DNxHD등 대부분의 편집 코덱들 또한 이 기반이다.[3] 채도가 높은 색으로 써진 작은 글씨를 보지 않는 이상 손실이 눈에 잘 띄지 않는다. 그 때문에 일반적인 영상과 같이 고주파 요소가 적은 환경에서는 사람의 눈으로 이러한 차이를 구별해 내는 것이 매우 어려우나, 컴퓨터 화면 등 글리프와 같은 고주파 요소가 많은 환경에서는 크로마 서브샘플링으로 인한 차이가 나타난다.[4] 여담으로, 컴포지트 기반 아날로그 영상들을 디지털화할 시 신호 간섭과 대역 제한으로 인해 색차 해상도가 아무리 높아도 4:2:2를 넘지 못하기에 4:4:4로 샘플링하는 것은 아무 의미가 없으며, VHS와 같은 색차 대역폭이 박살난 소비자급 포맷들은 후술할 4:1:1 또는 4:2:0으로도 차고 넘친다.

4:1:1과 4:2:0은 색차 신호를 더욱 줄여서 샘플링한다. 4:1:1은 색차 신호의 가로 해상도가 1/4로 줄어들며, 4:2:0은 색차 신호의 가로 해상도가 1/2, 세로 해상도가 1/2로 줄어든다. 대역폭은 제일 적지만 그만큼 4:4:4와의 화질 차이가 조금 더 뚜렷해 색 대비가 확실한 고채도, 고주파 영역에서의 색 번짐이 나타난다. 따라서 이 방식은 용량, 대역폭의 확보가 중요한 소비자급 영상 배포의 표준으로 자리잡았으며, 넷플릭스, 유튜브를 포함한 수많은 스트리밍 영상들과 디지털 방송(SD, HD, UHD 전부), 블루레이, DVD 등 오늘날 소비자용 영상들의 99%가 4:2:0으로 서브샘플링된다. 또한 HDMI 1.4 같은 대역폭이 떨어지는 구형 전송 환경에서 4K 60Hz를 전송하거나 흑백 영상을 전송할 때 쓰이기도 한다.

그외에도 거의 쓰이지 않는 마이너한 서브샘플링이 있다. 4:2:1은 위에 설명한 방법으로 해석하면 말이 안되는데 크로마 서브샘플링 표기법이 현재의 형태로 정립되기 전에 사용되었던 오래된 표기법이라 그렇다. 청색차(U)의 가로 해상도가 Y의 1/4, 적색차(V)의 가로 해상도가 Y의 1/2이다. 극소수의 코덱에서 지원한다. 3:1:1은 소니의 HDCAM 캠코더에서 사용되었던 규격이다. 4:1:0은 이론적으로 가능하며 일부 코덱에서 지원하지만 사용하는 사람은 거의 없다. 아날로그 방식이지만 PAL에서 색차 신호를 다루던 방식과 유사하다.

영상 코덱에서 이름 뒤에 '444', '420' 같은 의문의 숫자가 붙어 있으면 대부분은 바로 이 크로마 서브샘플링을 나타내는 것이다. 대중에게 가장 널리 사용 중인 방식은 4:2:0으로, 블루레이나 DVD와 같은 일반적인 소비자급 영상들이 4:2:0이기 때문. 일반적인 시청 환경에서는 큰 구분이 어렵기도 하다. 반면 영상 출력부에 한에선 컴퓨터의 영향으로 RGB나 4:4:4를 사용하는 경우가 많다. 다만 대역폭의 한계로 서브샘플링을 사용할때도 있는데, HDMI 2.0의 데이터 대역폭 한계로 4K HDR 60hz 영상을 출력하려면 4:2:2로 해야하기 때문이다.

현재는 데이터 대역폭 한계가 완화된 HDMI 2.1, DisplayPort 1.2 이상 제품들이 보급되고 H.266, AV1 같은 고압축 코덱과 DSC 1.2 같은 손실 압축 방법이 보급되면서 4:4:4 전송이 보다 수월해지고 있다. 다만 대부분의 4:4:4 콘텐츠는 여전히 RGB에서 변환된 게이밍과 같은 컨텐츠로, 소비자급 '영상'의 대다수는 여전히 4:2:0 기반으로 배포되고 있다.

6. 변환 공식

아래의 예제는 휘도 범위가 16~235의 SD RGB와 Rec. 601간의 변환이다. Rec. 709, Rec. 2020이나 HD RGB의 연산에서는 사용할 수 없으므로 유의. 이러한 이유 등으로 YUV<->RGB 간 변환은 비가역적이다.

6.1. RGB를 YUV로 바꿀 때

RGB를 YUV로 변환하는 공식은 다음과 같다.

[math(\displaystyle{Y = (0.257×R)+(0.504×G)+(0.098×B)+16})]
[math(\displaystyle{U = -(0.148×R)-(0.291×G)+(0.439×B)+128})]
[math(\displaystyle{V = (0.439×R)-(0.368×G)-(0.071×B)+128})]

6.2. YUV를 RGB로 바꿀 때

YUV를 RGB로 변환하는 공식은 다음과 같다.

[math(\displaystyle{R = 1.164(Y-16)+1.596(V-128)})]
[math(\displaystyle{G = 1.164(Y-16)-0.813(V-128)-0.391(U-128)})]
[math(\displaystyle{B = 1.164(Y-16)+2.018(U-128)})]

7. YUV, YIQ YCbCr, YPbPr이 쓰이는 곳

8. 관련 항목


[1] 다만, HDMI는 RGB도 지원한다.[2] 물론 이건 작업물 규격의 이야기이고, 모니터로 연결하는 규격은 RGB가 권장되는 것이 맞다. 4:4:4라고 해도 크로마 서브샘플링을 이용해 모니터로 출력하면 RGB로 처리된 컴퓨터 내부 신호가 YCbCr로 변환되어 출력되고, 모니터에서 RGB로 다시 처리되면서 2중변환의 오류가 생기기 때문. 대표적인 예로 HDMI로 모니터 연결 시에 YCbCr을 기본값으로 강제하는 macOS의 경우, 연두색이 형광녹색으로 떠 보이는 문제가 다발한다.[3] 최초의 디지털 컴포넌트 영상 포맷인 D-1조차도 4:2:2를 사용했고, 디지베타, HDCAM SR, DVCPROHD 등 수많은 테이프 포맷들도 4:2:2 기반이었다.[4] 따라서 컴퓨터 환경에서는 처음부터 RGB 색 공간을 쓴다. 그게 더 컴퓨터 환경에 효율적이기도 하고.[YIQ] [YUV] [7] PAL-N은 YDbDr을 사용한다.[YDbDr]

분류