본문 바로가기

개발자/Computer Vision

YUV Image 관련 정리

반응형

0. 탄생 배경

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

1. YUV Format?

  • YUV format 은 RGB(Red, Green, Blue) 3 원색의 format 과 손실없이 1:1 변환(mapping)
  • 빛의 밝기를 나타내는 휘도(Y)와 Chroma Components 로 불리는 2개의 색상 신호(U, V)로 구성한다.
  • 인간의 눈이 색상신호보다 밝기 신호에 민감한 눈의 인지 원리를 이용한다.
  • 밝기를 담당하는 Y sample 은 모두 취하고, 상대적으로 둔감한 색상을 담당하는 U 나 V sample 은 4 개의 픽셀에서 1 개 또는 2 개의 픽셀만 취급하여 저장할 비디오의 용량을 줄일 수 있다.

1-1. YUV Format 종류

  • YUV format 은 Y, U(Cb), V(Cr)의 비율을 어떻게 하냐에 따라, 즉 샘플링 비율에 따라 YUV 444, YUV 422, YUV 420, YUV 411과 같이 이름을 명명
  • Y 가 4 바이트 올 때, U 와 V 가 각각 4 바이트가 오는 경우에는 YUV 444, 각각 2 바이트씩 가지는 경우에는 YUV 422, 각각 1 바이트씩 가지는 경우에는 YUV 411 로 명시한다.
  • 밑의 예제 코드에서는 YUV 420 format 동영상을 사용. YUV 420은 바이트 크기 상으로는 볼 때 YUV 411 format과 유사하지만 U, V sample의 배치할 때 차이가 발생한다.
  • YUV 420 format은 안드로이드 camera 클래스에서 제공되는 YUV format 으로 일반적으로 사용한다.
  • YUV 420 format 또한 앞서 설명한 포맷들과 유사하게 Y 값은 온전히 표현하되 U, V 정보를 줄여 데이터의 양을 줄이게 된다. Y 값을 가로와 세로의 곱한 크기만큼 읽고, U, V 는 Y 값의 1/4 만큼 읽어서 하나의 프레임 단위를 구성한다.

1-2. YUV format의 특징

  • YUV format 의 경우 파일의 정보를 표시하는 ‘헤더’가 별도로 존재하지 않는다. 앞서 설명한 방법으로 Y, U, V 값을 읽어 들여 아래 그림(YUV 420 format)과 같은 구조를 가지게 되고, 바이트 값을 통해 하나의 프레임(사진)을 구분할 수 있다.

 

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를 의미한다. YUV와는 조금 다른 색 공간을 가지는데 YIQ의 경우는 인간의 감각이 민감한 오랜지에서 블루 색상에 해당하는 I신호의 대역폭을 더 높이기 위해 개발되었다.

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

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

반응형