본문 바로가기

학습컨텐츠/이미지프로세싱

이미지프로세싱 시작하기 - (3) 컬러 모델


  흑백 영상의 경우에는 각 픽셀의 밝기만으로 영상을 표현할 수 있지만, 컬러 영상에서는 다양한 표현 방법이 요구된다. 컬러 모니터와 같이 빛을 이용해서 색을 표현할 때는 빛의 삼원색을 이용한 RGB 컬러 모델을, 컬러 프린터에서는 색의 삼원색을 이용한 CMY 컬러 모델을 이용한다. 이외에도 색상, 명도, 채도의 혼합으로 색을 나타내는 HSI 컬러 모델이 있다.


(1) RGB 컬러 모델

  RGB컬러 모델은 빛의 삼원색인 빨강(Red), 초록(Green), 파랑(Blue)을 이용하여 색을 표현한다. 어떤 이미지라도 R, G, B 세 가지 색으로 분리하는 것이 가능하다.(그림 4) 흔히 R, G, B의 각 성분을 8비트 (256단계 : 가장 어두운 0.0을 00이, 가장 밝은 1.0은 FF가 나타내게 된다)로 표현하는 방식을 트루 컬러(True Color, Millions of colors)라고 한다. 각 성분에 16진수 두 자리씩 총 여섯 자리를 이용하면 모든 색을 나타내는 것이 가능하다.(그림 5) 빛은 혼합할수록 점점 밝아지기 때문에, RGB컬러 모델을 가산혼합(Additive Color Mixing)이라고 한다.

(그림 4) 사진을 RGB 컬러 모델의 각 성분으로 나눈 예



(그림 5) RGB 색상들과 컬러 큐브(Color Cube)


  3차원 좌표공간의 x, y, z축에 각각 R, G, B 성분을 대입하면 (0,0,0)에 검정색이, (1,1,1)에는 흰색이 있는 정육면체가 완성된다. (그림 5)의 오른쪽에 있는 정육면체가 바로 그것인데, 이것을 RGB 컬러 큐브(RGB Color Cube)라 한다.

  빛의 3원색이 빨강, 파랑, 초록이 된 것은 우리 눈의 감각 체계와 관련이 있다. 사람의 눈에는 빨강, 파랑, 초록에 해당하는 세 가지 파장의 빛을 받아들이는 수용체가 있어서, 각 수용체에 전달되는 감각의 세기로 빛의 색과 밝기를 구분하게 된다. 서로 다른 진동수를 가진 음들이 모두 우리에게 다양하게 들리듯이 400~700nm의 파장을 가진 빛들도 모두 다양하지만, 빨강, 파랑, 초록의 빛을 적절히 혼합하는 것만으로도 다른 모든 색의 빛을 보는 것과 같은 효과를 낼 수 있는 것이다. 만약 우리 눈에 네 가지 수용체가 있었으면, 컬러 큐브를 4차원에 그려야 했을지도 모른다.



(2) CMYK 컬러 모델

  CMYK 컬러 모델은 청록(Cyan), 자홍(Magenta), 노랑(Yellow), 검정(Key, black) 으로 구성된다. 원래 검정색이던 화면에 빛을 쏘아서 색을 만들어내는 모니터에서는 빛의 삼원색인 RGB를 이용했지만, 프린터와 같이 원래 흰색이던 종이에 잉크를 이용해 색을 만들어낼 때에는 물감의 삼원색인 CMY컬러를 이용해야 한다. 색을 섞을수록 더 어두워지기 때문에 이것을 감산혼합 (subtractive Color Mixing)이라고 한다. CMY만을 이용해도 이론적으로 모든 색을 표현할 수 있으나 검정색이 추가적으로 이용되는 까닭은 아래와 같다.


  • 완전히 순수한 컬러 잉크를 생산하는 것은 어렵기 때문에, CMY를 섞는 것으로 순수한 검정색을 만들어내는 것이 불가능하다.
  • 세 잉크를 모두 뿌리면 종이가 마르는 데에 오래걸리고, 특히 빠른 속도로 문서를 인쇄해야 하는 경우에 다음 페이지에까지 잉크가 번질 수 있다.
  • 흔히 문자는 검정색으로 인쇄된다. 하지만 세가지 색깔의 잉크가 정확히 똑같은 위치에 뿌려지려면 매우 섬세한 처리가 필요하게 된다.
  • 검정 잉크가 컬러 잉크보다 훨씬 싸기 때문에 검정 잉크를 사용하면 비용을 절감할 수 있다.

  RGB와 CMY는 서로 보색 관계에 있기 때문에, RGB를 CMY로 변환하는 작업은 간단하다.


RGB와 CMY의 상호 변환

RGB → CMY

CMY → RGB

C = 1.0 – R

M = 1.0 – G

Y = 1.0 - B

R = 1.0 – C

G = 1.0 – M

B = 1.0 - Y


  CMYK는 컬러 잉크를 가장 조금 쓰는 데에 그 목적이 있기 때문에, C, M, Y 성분 중 가장 작은 성분만큼을 검정으로 나타내고, 그 차이에 해당하는 부분을 컬러 성분으로 나타낸다. 수식으로 표현하면 아래와 같다.


RGB와 CMYK의 상호 변환

RGB → CMYK

CMYK → RGB

C = (1.0 – R – K) / (1.0 – K)

M = (1.0 – G – K) / (1.0 – K)

Y = (1.0 – B – K) / (1.0 – K)

K = min { 1.0 – R , 1.0 – G , 1.0 – B }

R = (1.0 – C)(1.0 – K)

G = (1.0 – M)(1.0 – K)

B = (1.0 – Y)(1.0 – K)



  아래의 (그림 6)는 같은 사진을 CMY만 써서 나타낸 것(왼쪽)과, CMYK를 이용하여 컬러 잉크 사용량을 최소화한 경우를 비교한 것이다. CMYK 컬러 모델을 쓰는 경우에 컬러 잉크가 훨씬 절약된다는 것을 알 수 있다.


(그림 6) CMY 컬러 모델(왼쪽 4개)과 CMYK 컬러 모델(오른쪽 4개)



(3) HSB 컬러 모델과 HSL 컬러 모델

  색상을 이루는 원소별로 나누는 방법 외에도, 이미지의 색상과 채도와 밝기 정보를 구분해서 상을 만드는 HSB와 HSL 컬러 모델도 있다.

  HSB 컬러 모델(HSV컬러 모델)은 색상(Hue), 채도(Saturation), 밝기(Brightness 또는 Value)로 구성된다. 색상은 그 색의 원색을 나타내고, 채도는 색의 순수도를 나타내는 것으로 원색에 어느 정도의 흰색이 혼합되었는지를 나타낸다. 밝기는 색깔의 밝은 정도를 나타낸다.

  HSB 컬러 모델은 (그림 7)과 같이 원뿔 모양의 좌표계로 표현된다. 색상은 0도에서 360도 사이의 각도로 표현된다. 0도는 빨강색, 120도는 초록색, 240도는 파란색을 각각 나타낸다. 채도는 0에서 1까지의 값을 가지며 원뿔 중심으로부터의 수평거리 (z축과의 거리)로 표현된다. 명도는 세로축에 해당하며, 가장 아래쪽이 명도 0인 검정색을 나타내고, 가장 위쪽이 명도 1인 흰색을 나타낸다.

  RGB나 CMYK 컬러 모델이 인간의 신경계가 생물학적으로 빛을 감지하는 방법을 통해 구성되었다고 한다면, 이 컬러 모델은 인간이 감성적으로 색을 받아들이는 방법과 가장 가깝게 구성되었다고 할 수 있다. 인간이 색을 구분할 때에는 어떤 색상인가(Hue), 얼마나 선명한 색인가(Saturation), 얼마나 밝은 색인가(Brightness) 등을 기준으로 하기 때문이다.



(그림 7) HSB 컬러 모델


(그림 8) HSL 컬러 모델


  HSB 컬러 모델과 비슷한 HSL컬러 모델은 원뿔 두 개를 이용하여 색상공간을 구성한다. HSL 컬러 모델은 밝기를 그대로 하고 채도를 변화하면 원색으로부터 같은 밝기의 회색을 얻을 수 있기 때문에 '밝기'의 직관적인 개념과 일치하고, 밝은 색과 어두운 색이 공간상에서 서로 대칭적이라는 이점이 있다. 반면 분홍색과 같이 원색과 흰색 사이에 있는 색들이 100%의 채도를 가지게 되기 때문에 '채도'의 직관적인 개념과는 다소 차이가 생기게 된다.

  HSL 컬러 모델을 이용하는 Windows의 색 편집 대화상자(그림 9)에서는 2차원 영역에서 색상과 채도를 선택하고 1차원 막대로 밝기를 설정할 수 있다. HSB컬러 모델을 이용하는 포토샵(그림 10)의 경우 색상(Hue)를 1차원 막대로 설정하고 채도와 밝기를 2차원 영역에서 선택할 수 있도록 했다. 이 경우에는 2차원 영역을 적절히 변형하는 것으로 HSB원뿔의 단면이 될 수도 있고 HSL 원뿔의 단면이 될 수도 있기 때문에, 두 모델의 구분이 불필요해진다.

  많은 소프트웨어에서는 각 성분의 수치를 직접 입력할 수 있는데, 이 때 HSB 컬러 모델을 사용하는 소프트웨어는 MacOS X시스템, GIMP, Paint.NET과 Adobe사의 그래픽 프로그램들이 있고, HSL 컬러 모델을 사용하는 소프트웨어는 Inkspape, Macromedia Studio, Windows의 색 편집 대화상자, Paint Shop Pro등이 있다.

(그림 9) Windows의 색 편집 대화상자


(그림 10) 포토샵의 색깔 선택 화면



 

(4) 기타 컬러 모델들

  앞서 다룬 세 가지 컬러 모델 이외에도 YCbCr, YUV, YIQ 등 다양한 컬러 모델들이 있다. 여기서 Y는 공통적으로 광도를 나타낸다. YCbCr 모델에서 Cb와 Cr은 각각 푸른 정도와 붉은 정도를 나타내며 JPEG파일의 압축에 사용된다. 사람의 눈이 색상보다 광도에 더 민감하기 때문에, Cb와 Cr보다 밝기 정보를 더 구체적으로 저장하는 것으로 압축률을 높일 수 있다. YUV와 YIQ는 각각 PAL과 NTSC 컬러 TV방송에 사용되는 컬러 모델이다.




[목차] 이미지프로세싱 - 시작
[이전] 이미지프로세싱 시작하기 - (2) 이미지 프로세싱 기초
[다음] 이미지프로세싱 시작하기 - (4) 파이썬 이미징 라이브러리 PIL의 사용