이미지프로세싱/알고리즘

YUV Format 개념 이해

야곰야곰+책벌레 2023. 11. 2. 13:20
728x90
반응형

YUV란?

RGB를 이용한 색 표현은 색 그대로를 전부 표현한다. 이는 무척 자세하고 풍부한 색 표현이 가능하지만 그만큼 용량이 커진다는 단점이 있다. 만약 동영상을 RGB를 사용한 데이터로 재생한다면 영상의 용량은 매우 커질 것이고 이는 치명적인 단점으로 돌아올 것이다. 그래서 생긴 포맷이 YUV 포맷이다. 빛의 삼원색을 표현하는 RGB와 달리 빛의 밝기를 나타내는 휘도(Y)색상신호 2개(U, V)로 표현하는 방식이다. 일반적인 TV나 비디오카메라에서 많이 사용되는 방식이며, 흑백을 표현하기 위한 흰색, 회색, 검정색을 표현하는 데 사용되는 

 

RGB와 YUV의 값은 다음과 같다.

흑백 TV가 없어진 현재도 YUV 신호를 사용하는 이유는 RGB에 비해 압축률을 크게 향상할 수 있기 때문이다. 흑백만을 표현할 때도 RGB는 모든 색의 데이터가 필요하기 때문에 상대적으로 많은 저장공간을 필요로 한다. 일반적으로 RGB에서 YUV로의 변환 만으로도 1/2정도의 데이터를 줄이게 된다. (서브 샘플링을 했을 경우) 이러한 효율차이가 나는 이유는 YUV 색 공간은 인간의 눈의 인지 원리를 응용했기 때문이다.

 

인간의 눈은 색상신호가 밝기 신호보다 더 둔하다. 때문에 색상정보가 더 풍부한 RGB신호나 색상 정보가 더 떨어지는 YUV신호의 영상 차이를 잘 느끼지 못한다. 영상 장치가 영상을 만들 때, 빛을 인식하여 RGB를 YUV로 바꿔 주게 되며, YUV의 데이터 양을 줄이고 효율을 유지하기 위해 서브 샘플링을 하여 저장장치에 저장하게 된다.

RGB-YUV 변환

YUV형식의 데이터는 카메라에서 얻은 RGB데이터를 변환함으로써 얻어진다. (보통 카메라 내부에서 수행됨.) 변환 공식은 여러 가지가 있다. 아래는 가장 일반적인 변환 공식이다.

의 공식으로 RGB를 YUV로 변환한 색상 값은 아래와 같다. YUV에서 UV의 값 128은 RGB의 0과 동일하다고 보면 된다.

서브샘플링

동영상의 크기를 줄이기 위해 YbCbCr(YUV)을 그대로 사용하기보다는 압축하는 것이 효율이 높다. 

(Y -> Y / U -> Cb(파란색성분)빨간색성분)

 

사람 눈은 휘도에(밝기) 더 민감하기 때문에 샘플링에도 적용하여 압축을 한다. 쉽게 말하면 Y성분을 CbCr보다 많이 할당하게 되면 감소한 데이터에 비해 시각적 차이는 거의 없게 된다는 것이다. 샘플링은 Y Cb Cr의 비율을 어떻게 하냐에 따라 여러 가지로 나뉜다.

 

YUV의 샘플링 비율에 따라 이름이 정해지며 아래와 같은 것 등이 있다.

1.    YCbCr 4:4:4 format(YUV 444)

2.    YCbCr 4:2:2 format(YUV 422)

3.    YCbCr 4:2:0 format(YUV 420)

4.    YCbCr 4:1:1 Format(YUV 411)

 

그림과 함께 간단히 살펴보자

YCbCr 4:4:4 format(YUV 444)

원본 YUV 색상이다. Y가 4 바이트 올바이트올 때 U도 4바이트, V도 4바이트가 온다.

[YUV YUV YUV YUV… 의 데이터 형식]

YCbCr 4:2:2 format(YUV 422)

Y가 4바이트올 때 U, V는 2바이트씩 가진다. [YUYV YUYV YUYV… 의…의 형식]

YCbCr 4:1:1 Format(YUV 411)

Y가 4바이트 올 때 U와 V신호가 각각 1바이트씩 위치한다.

밝기에 비해 색상의 해상도가 1/4로 떨어진다.

YCbCr 4:2:0 format(YUV 420)

안드로이드 Camera 클래스에서 제공하는 YUV데이터 포맷 타입이다.

12bit 데이터 포멧으로 4가지 종류가 존재한다(YV12, NV12, IMC2, IMC4).

2x2 배열 구조로 구성되며 Y가 4개 오면 U와 V가 1바이트씩 위치하며 4개의 Y값이 U와 V값을 공유한다.

YUV420을 좀 더 자세히 알아보자.

YUV의 경우 파일의 정보를 표시하는 ‘헤더’가 존재하지 않는다.

이유는 아래와 같은 데이터 구조를 가지기 때문이다.

빨간 점선은 프레임의 구분을 의미한다. 한 프레임에 해당하는 Y정보가 먼저 나오고, 뒤를 이어 Cb, Cr의 정보가 적혀 있다.

728x90
반응형