Y가 0.5일 때의 색 평면 |
[clearfix]
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, 문서 등 정적인 화면)에 디스플레이 포트는 둘다 최적화 되어 있다는 얘기도 이 압축 전송과 관련이 깊다.
4. 명칭 혼용
YUV 뿐만 아니라 YIQ, YCbCr, YPbPr, YDbDr, Y'UV 등 비슷해 보이는 단어들이 산재해 있는데, 디지털이냐 아날로그냐 아날로그에선 NTSC냐 PAL이냐 등에서 다루는 차이지 원리와 개념은 똑같다.오늘날 우리가 영상을 시청하면서 가장 많이 접하게 될 녀석은 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)한다는 뜻으로 영상에서 픽셀 개수의 표본화 결과인 해상도를 줄이는 손실 압축 인코딩이다. 여기서 해상도 낮추는 건 오로지 색차 정보를 가진 픽셀들이며 휘도 해상도는 그대로이다.포유류 동물들은 색맹이 많고 그나마 색상을 잘 구분한다는 영장류 조차 색상차이를 민감하게 반응하지 않는다. 이를 이용해서 색상 정보를 제거하여 영상의 품질을 낮춰 용량을 줄여도 영장류인 인간은 이를 잘 구분하지 못하기 때문이다.
다만 하술하듯 고주파 영상이나 글자 같은 활자 표현, 일부 사진이나 움직이는 영상등에서는 구분이 되며 역체감 역시 심하기 때문에 최근엔 블루레이 영상, 스트리밍 영상 같은 저화질에서나 사용되고 대신 DSC 같은 다른 방법의 손실 압축 사용이 늘어나고 있다.
해당 샘플링은 H.264, H.265, H.266 등 다양한 코덱에서 지원한다. 수치 표현 시 Y:a:b 로 표시하고, 알파 채널까지 포함하면 Y:a:b:α 와 같이 쓴다. 각 수치의 의미는 다음과 같다.
- Y: 휘도 신호의 가로 샘플 갯수. 휘도 정보는 압축하지 않으므로 1개당 픽셀 하나에 해당하며 보통 기준치로 4를 사용한다.
- a: 색차(U, V) 신호의 첫번째 행의 가로 샘플 갯수.
- b: 색차(U, V) 신호의 두번째 행의 가로 샘플 갯수.
- α: (있으면) 알파값의 가로 샘플 갯수.
예컨대 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는 색차 신호가 줄어들지 않은 원본 영상으로 왜곡 없이 화질이 가장 좋지만 용량이 크다.
4:2:2는 상대적으로 둔감한 색차 신호를 줄여서 압축한다. 색차 신호의 가로 해상도가 1/2로 줄어든다. 용량과 화질 둘다 적당하게 타협을 봤기 때문에 가장 많이 쓰인다. 이 방식은 고해상도의 경우 채도가 높은 색으로 써진 작은 글씨를 보는 것이 아닐 경우 눈에 잘 띄지 않는다. 그 때문에 일반 영상 같이 고주파 요소가 적은 환경에서는 사람의 눈으로 이러한 차이를 구별해 내는것이 매우 어렵지만 일반적인 컴퓨터 화면 같은 글리프와 같은 고주파 요소가 많은 환경에서는 크로마 서브샘플링으로 인한 차이를 쉽게 구별해 내는 것이 가능하다.
4:1:1과 4:2:0은 색차 신호를 더욱 줄여서 압축한다. 4:1:1은 색차 신호의 가로 해상도가 1/4로 줄어들며, 4:2:0은 색차 신호의 가로 해상도가 1/2, 세로 해상도가 1/2로 줄어든다. 용량이 가장 적지만 왜곡이 심해서 화질 차이가 확연하게 나오는 편이다. 그래서 이 방식은 흑백 영상 전송이나 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:2가 많다. HDMI 2.0의 데이터 대역폭 한계로 4K HDR 60hz 영상을 출력하려면 4:2:2로 해야하기 때문이다.
현재는 데이터 대역폭 한계가 완화된 HDMI 2.1, DisplayPort 1.2 이상 제품들이 보급되고 H.266, AV1 같은 고압축 코덱과 DSC 1.2 같은 손실 압축 방법이 보급되면서 화질 저하가 없는 4:4:4 방식의 콘텐츠가 늘어나고 있다.
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도 지원한다.