1. BMP: 비트맵 이미지는 여러 비트의 종류가 있는데 최근에 가장 널리 쓰이는것은 24비트이다. 

비트맵 행렬


비트맵은 R G B  세가지 채널로 구성되는데 이는 위 그림에서 보다시피  Red, Green, Blue의 약자이다. 이미지는 행렬(Matrix) 로 이뤄져있는데 우리가 보는 이미지를 실제로 뜯어보면 

( 0 33 32 32 244 ) 
( 0 102 32 21 24 ) 
( 0 255 55 2 244 ) 
( 0 255 32 2 255 )  

 

이런 식의 모습을 하고 있다. 해당 숫자 번호들은 0~255까지 색상 정보를 담고있는 하나의 픽셀(Pixel)이다. 즉 R,G,B 세가지 행렬이 겹쳐져서 보이는것이 비트맵 이미지인 것이다. 행렬방식으로 이뤄져있는 것은 다른 색공간 또한 마찬가지이다.
참고: RGB외 YUV(YCbCr)의 색정보 범위는 다르다. 0~255가 아니라 -128~128 등등 제각각.

YUV

YCbCr


2. YUV: YUV는 TV나 비디오 영상에서 사용하는 색 표시방식이다. 옛날에 흑백TV만 있었을때는 색상 정보가 필요없고 단지 밝기 정보만 필요했다. 하지만 컬러 TV가 만들어지자 색상정보가 필요하게 되었다. 여기서 가장 큰 문제는 흑백TV사용자에겐 영상이 흑백으로, 컬러TV 사용자에게는 영상이 컬러로 나오게 해야된다는 점이었다.[각주:1] 그래서 고안해낸 것이 이 방식인데, U,V는 색차 정보를 담고 있다. 그럼 Y는 무엇인가? '밝기(휘도)'를 나타낸다. YUV방식은 아날로그 인코딩 방식이고 절대 색공간이 아니라 RGB 공간을 변환해서 만드는 색 공간임을 명심해야 한다.  
 
3. YCbCr: YUV와 비슷한데 이것은 디지털 방식이라는 차이가 있다. 디지털 텔레비전 방송에선 약간 변형한  방식을 이용한다.(ITU-R BT.601) Cb Cr은 색차 정보를 가지고 있고 Y는 YUV에서 처럼 밝기 정보를 담고 있다.

YUV(CbCr)은 공통적으로 RGB정보를 인코딩해서 만들어지는데 다양한 공식이 존재한다. 보완의 보완을 거듭해서 일반적으로 널리 쓰이는 공식은 다음과 같다. 

Y = 0.299R + 0.587G + 0.114B

U = (B - Y )0.5643

V = (R - Y )0.7132

Y = 0.299R + 0.587G + 0.114B

Cb = (B - Y )0.5643 + 128

Cr = (R - Y )0.7132 + 128

 
각 채널들은 행렬이므로 모든 계산은 행렬연산으로 이뤄진다. 인코딩된 정보를 다시 RGB로 디코딩할때는 다음과 같은 공식을 쓴다.

G = Y - 0.714V - 0.334U

R = Y + 1.402V

B = Y + 1.772U.

G = Y - 0.714(Cr - 128) - 0.334(Cb - 128)

R = Y + 1.402(Cr - 128)

B = Y + 1.772(Cb - 128) 


인코딩, 디코딩 과정에서 발생하는 손실률은 거의 미미하다. (픽셀을 64라고 가정했을때 인코딩과 디코딩을 거쳤을 때의 값은 63.93xxx 정도)



그림 이미지는 wikipedia 출처. 

  1. 컬러 방송 시대가 개막했다고 흑백 TV로 더이상 방송을 못보게 하기엔 흑백 TV 보급률이 너무 높았다. 아니, 모두가 흑백 TV를 썼엉쓰니까 당연한 말. [본문으로]

+ Recent posts