본문 바로가기

ImageProccing

RGB와 YUV color format

명색이 영상처리 전공을 하고 싶다는 놈이 color format에 대해서 매우 무지 했었다. 영상이 몇 Bit이고, 어떤 구조를 가지고 있는지도 모르고 영상처리 한답시고 설쳤던 것이다.ㅡ_ㅡ 회사에서 이번 프로젝트가 아니였다면....으..생각만 해도 끔찍한 일다. -_- 물론 모든 구조를 이해하고 있는건 아니지만 급하게 정리해서 공부를 하였다.


◉ YUV : YUV 는 Video Data 형식으로 사용하며 TV에서 컬러페이스(컬러 서브 캐리어의 주파수와 진폭을 이용하여 2차원 컬러를 보내는것)로 전송하는 컬러 형식이다. YUV는 콤포넌트 비디오 시스템에서 아날로그 휘도신호와 색차신호를 말할 때 사용하는 약어로 Y는 휘도 신호, U V는 PAL방식에서 사용되는 2개의 부반송파(Subcarrier) 중심축을 뜻한다[디스플레이 포탈-모니터포유(주)].  YUV는 색과 빛이 따로 구성이 되어 있는 형식이다. 일반적으로 RGB 방식에 비하여 작은 대역폭으로 전송이 가능한 장점이 있다. 



Y : 명암(밝음과 어두움)을 나타낸다. 

U(Cb) : 명암에서 파란색(B) 성분.

V (Cr): 명암에서 붉은색(R) 성분.



◎ YUV의 종류 :  YUV422 , YUV444, YUV420, YUV 411 등의 형식이 있다. 각 숫자는 비율을 나타내는 의미이다. 

• YUV422 : Y가 4바이트 올 때, U 와 V 는 2바이트씩 가진다. 

[YUYV YUYV YUYV.....] 형식으로 픽셀이 구성된다.





• YUV420 : 12bit 데이터 포멧으로 4가지 종류가 존재[YV12, NV12, IMC2, IMC4]

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





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




• YUV411 : Y 가 4바이트 올 때, U 와 V신호가 각각 1바이트씩 위치한다. 밝기에 비해서 색상의 해상도가 1/4 로 떨어진다. 






출처 : http://iamflower.tistory.com/235, http://blog.naver.com/kevinsm?Redirect=Log&logNo=70023310997




◉ RGB : 일반적으로 사용하는 색상 구조로 이름 그대로 R(Rad) , G(Green), B(Blue) 색상의 조합으로 밝기는 없고 모두 색상으로 구성이 되어 있다. 3원색 이라고도 하는 이 3가지의 색상을 혼합하여 만드는 가색 방식을 사용한다. RGB 형식은 각 RGB 체널 마다 각 Bit 

(8/16/24/32 Bit) 구성의 색상이 모두 존재한다.

 


• 8Bit RGB : RGB24 라고도 부르며, 2의8승 구조로 각 체널 하나가 256의 색상을 가질 수 있다. 이 값을 모두 합하면 256X256X256 = 1,677,216 인 즉 16만 컬러 가 된다. 여기서 8비트 RGB는 모든 색상 중에서 256개를 선택하여 사용한다. (모든 색상을 다 사용하지 못한다) 그렇기 때문에 팔레트가 존재한다. 8비트 색상은 256개의 팔레트 정보를 가지고 있고 1바이트의 점을 표현하는데 이때 1바이트에 해당하는 것을 인덱스 칼라(Index Color) 라고 하며 이 색상은 어떤 팔레트  인지를 알려주는 것이지 색상 그 자체가 아니다. 


• 16Bit RGB : 16Bit 는 2BYTE 영상으로 2바이트로 표현 되므로 8비트 영상과 달리 팔레트가 없다. 2바이트로 모든 RGB요소를 공평하게 갖기 위해서 3으로 나누면 각각 5Bit씩 구성되는데 이때 1Bit가 남는다. 이 1비트로 인하여 RGB555 또는 RGB565 로 나뉘게 된다. 
RGB555 : 남은 1비트를 사용하지 않고 RGB에 각각 5bit를 할당
[ 0
RRRRRGG GGGBBBBB]

RGB565 : 16비트 구성의 1bit를 사람의 눈에 가장 민감한 G에 할당한 구성

[ RRRRRGGG GGGBBBBB]

• 24Bit RGB : RGB888이라고도 하며 각 체널이 24Bit로 구성이 되어 있다.  

[ RRRRRRRR GGGGGGGGG BBBBBBBB]



• 32Bit RGB : 32bit 구조는 24bit와 동일하지만 추가적으로 1BYTE가 더 존재하며 1BYTE는 Alpha 바이트로 투명도를 나타낸다. 앞에 오면 ARGB888 뒤에 오면 RGBA888이다 .

ARGB [AAAAAAAA RRRRRRRR GGGGGGGGG BBBBBBBB]

RGBA [RRRRRRRR GGGGGGGGG BBBBBBBB AAAAAAAA]