[CV] Color Image(2) - Color Models

Yeontachi·2025년 8월 6일

Computer Vision Note

목록 보기
12/47
post-thumbnail

컬러 모델(Color Model)은 색을 수학적 또는 기하학적으로 표현하기 위한 시스템이다. 디지털 이미지 처리에서 컬러 모델은 색의 표현, 변환, 처리에 필수적이다. 기본적으로 컬러 모델은 색을 3차원 좌표계(RGB, XYZ, HSV 등)로 나타내어, 특정 색을 정량적으로 정의하고 조작할 수 있도록 한다.

대표적인 컬러 모델로는 다음이 있다.

  • RGB 모델 : 가산 혼합(Additive Color Mixing), 디스플레이 장치에서 사용
  • CMY/CMYK 모델 : 감산 혼합(Subtractive Color Mixing), 인쇄 장치에서 사용
  • HSI/HSV 모델 : 인간의 색 인지에 가까운 표현 방식
  • CIE XYZ 모델 : 색을 표준화한 기초 모델

RGB Color Models

아래 그림은 RGB 컬러 큐브(RGB Color Cube)를 설명하는 도식이다. 이 큐브는 디지털 이미지 처리에서 색상을 정의하기 위해 사용되는 RGB 컬러 모델을 3차원 공간에 표현한 것이다.

각 축은 Red(R축), Green(G축), Blue(B축) 성분을 나타내며, (0,0,0)은 Black, (1,1,1)은 White를 나타낸다.

대각선은 (Black \to White) 점들이 회색 계조(Gray Scale)로 구성되어 있다.(R=G=B일 때, 채도가 없는 색(무채색)이므로 흰색 ~ 검정 사이의 회색)

RGB 모델가산 혼합(Additive Color Mixing) 원리에 기반한다. 빛을 더할수록 밝아지며, 세 가지 색을 모두 더하면 흰색이된다. 컴퓨터 모니터, TV, 카메라 센서 등에서 사용되는 표준 색 표현 방식이다.

아래 왼쪽 이미지는 RGB 24bit color cube이다.

RGB 컬러 모델에서 색상이 결합되는 원리

(1) 입력: 개별 채널(그레이스케일)

그림의 왼쪽에서 보는 것 처럼, Red, Green, Blue 세 개의 입력 이미지는 각각 그레이스케일 이미지이다.

  • Red 채널 : 픽셀의 밝기가 높을수록 빨강 성분이 강하다.
  • Green 채널 : 픽셀의 밝기가 높을수록 초록 성분이 강하다.
  • Blue 채널 : 픽셀의 밝기가 높을수록 파랑 성분이 강하다.

즉, 이 단계에서 각 채널은 독립적으로 존재하며, 실제 컬러 이미지를 형성하지 않는다.

(2) 채널 결합(Color Monitor)

세 개의 채널을 같은 위치의 픽셀 기준으로 합친다.

Pixel=(R(x,y),G(x,y),B(x,y))Pixel = (R(x, y), G(x,y), B(x, y))

이후 합성된 결과가 오른쪽 컬러 이미지이다.

위 그림 하단의 세 이미지(R=0, G=0, B=0)는 RGB 컬러 큐브의 단면을 나타낸다.

  • R=0 : 빨강 값이 0 \to 나머지 두 채널(G,B)만으로 색 표현 \to 청록색 계열
  • G=0 : 초록 값이 0 \to (R,B) 조합, 마젠타 계열
  • B=0 : 파랑 값이 0 \to (R,G) 조합, 노랑 계열

이 단면은 특정 채널이 꺼졌을 때 색 조합이 어떻게 변하는지를 시각적으로 보여준다.

Web Safe Colors

RGB 컬러 모델은 디지털 영상에서 가장 기본적인 색 표현 방식이다. 이 모델은 빨강(Red), 초록(Green), 파랑(Blue) 세 가지 기본 색을 조합하여 다양한 색을 생성한다. 각 색상의 강도는 일반적으로 0에서 255 사이의 값으로 표현되며, 이때 8비트(1바이트)로 하나의 채널을 저장한다. 따라서 한 픽셀은 세 개의 채널을 가지므로, 전체 24비트(약 1,670만 가지 색상)를 표현할 수 있다.

웹에서 색상을 표현할 때는 16진수(Hexadecimal) 코드를 많이 사용한다. 예를 들어, #RRGGBB 형태로 표시하며, 각 채널은 00부터 FF까지(10진수로는 0~255) 값을 가진다.

웹 초기에는 대부분의 디스플레이가 256색 모드만 지원했기 때문에, 브라우저에서 색상이 정확하게 표현되도록 하기 위해 웹 안전 색상 팔레트라는 개념이 사용되었다. 이 팔레트는 Red, Green, Blue 각 채널이 6단계 값 중 하나를 가지도록 정의되었다.

  • 16진수 단계: 00, 33, 66, 99, CC, FF
  • 10진수 값: 0, 51, 102, 153, 204, 255

이렇게 하면 각 채널마다 6개의 값이 가능하므로, 전체 색상 수는 6×6×6=2166 \times 6 \times 6 = 216 이다.

이 216개의 색상을 웹 안전 색상이라고 하며, 모든 브라우저와 운영체제에서 동일하게 표시되도록 보장했다.

그레이스케일은 R,G,B 세 채널의 값이 동일할 때 생성된다. 웹 안전 색상 팔레트에도 이러한 회색 값들이 포함되어 있으며, 일정한 단계로 표현된다.

현대의 디스플레이는 24비트 True Color를 지원하므로 웹 안전 색상 팔레트를 사용할 필요는 거의 없다. 그러나 디자인 가이드라인에서 색상 일관성을 유지하거나 특정 구형 브라우저 호환성을 고려할 때 여전히 참조될 수 있다. CSS와 HTML에서 색상을 지정할 때는 여전히 Hex 코드가 기본적으로 사용되며 rgb() 또는 rgba() 함수 형태로도 지정할 수 있다.

safe color cube

CMY/CMYK Color Models

CMY 모델은 인쇄나 페인팅에서 사용하는 감산 혼합(Subtractive Color Mixing) 방식이다. 기본색은 Cyan(청록), Magenta(자홍), Yellow(노랑)이다. 이 세가지 색은 RGB의 보색 관계를 가지고 있으며, 빛을 흡수(감산)하는 원리로 색을 만든다.

  • Cyan은 Red를 흡수하고 Green과 Blue를 반사한다.
  • Magenta는 Green을 흡수하고 Red와 Blue를 반사한다.
  • Yellow는 Blue를 흡수하고 Red와 Green을 반사한다.

이 방식은 프린터나 잉크젯 인쇄처럼 빛을 반사하는 매체에서 사용된다.

RGB ↔ CMY 변환

RGB와 CMY는 수학적으로 간단히 변환할 수 있다.

  • 각 채널을 0~1로 정규화 했을 때:
    [CMY]=[111][RGB]\begin{bmatrix} C\\M\\Y \end{bmatrix}=\begin{bmatrix}1\\1\\1\end{bmatrix}-\begin{bmatrix}R\\G\\B\end{bmatrix}

즉, Cyan은 R의 보색이므로 R 값을 1에서 빼면 된다. Magenta는 G의 보색, Yellow는 B의 보색이다.

예를 들어, RGB가 (1,0,0)인 순수 빨강일 때

C=11=0,M=10=1,Y=10=1C = 1 - 1 = 0, M = 1-0=1, Y=1-0=1

따라서 CMY는 (0,1,1)이 되어, Cyan 성분은 없고 Magenta와 Yellow가 혼합된 형태가 된다.

HSI Color Model

RGB 모델은 컴퓨터가 색을 표현하기에 적합하지만, 인간의 색 지각과는 거리가 있다. 인간은 색을 인식할 때 색상(Hue), 채도(Saturation), 밝기(Intensity)의 세 요소로 구분한다. HSI(Color Model)는 이 세 요소를 기반으로 하여, 사람이 색을 직관적으로 조작하고 해석할 수 있도록 설계된 모델이다.

HSI의 세 가지 구성 요소

  • Hue(색상)
    • 주된 색을 나타내는 속성
    • 색상환 상의 각도로 표현되며, 빨강을 기준으로 (0°0\degree) 시계 방향으로 증가
    • 빨강: 0°0\degree, 초록: 120°120\degree, 파랑: 240°240\degree
  • Saturation(채도)
    • 색의 선명함 또는 순도
    • 중심(회색)에서 멀어질수록 채도가 높다.
    • 0이면 회색, 1이면 완전한 색
  • Intensity(명도 또는 밝기)
    • 빛의 강도, 색의 밝기 정도
    • RGB 값의 평균으로 계산
      I=R+G+B3I = \frac{R+G+B}{3}

구조적 특징


HSI 공간의 형태
RGB 모델이 정육면체(RGB Cube)라면, HSI는 이중 콘(double cone) 형태로 표현된다.

  • 축:
    • 세로축: Intensity(밝기)
    • 원형 단면 : Hue와 Saturation

Hue와 Saturation 표현

또는 육각형 형태로 색상환을 표현하며, 중심에서의 길이가 채도(S), 중심에서 각도가 Hue(H)이다.

단면(특정 명도를 고정하고, 색상과 채도를 표현)은 세로축(명도 값)과 수직이다.

RGB \to HSI

(a) Intensity(I)

I=13(R+G+B)I = \frac{1}{3}(R+G+B)

Intensity(명도)는 세 채널(R, G, B)의 평균값으로 나타내며, 색상 정보(Hue, Saturation)와 독립적이다.

(b) Saturation(S)

S=13(R+G+B)min(R,G,B)S = 1 - \frac{3}{(R+G+B)} \cdot min(R, G, B)

Saturation(채도)는 R, G, B 값 중 가장 작은 값이 클수록 흰생 성분이 많으므로 채도가 낮다.

S=0이면 완전 회색, S=1이면 순수한 색

(c) Hue(H)

H={θ,if BG360θ,if B>GH = \begin{cases} \theta, & \text{if } B \leq G \\ 360^\circ - \theta, & \text{if } B > G \end{cases}
θ=cos1(12[(RG)+(RB)](RG)2+(RB)(GB)\theta = cos^{-1}(\frac{\frac{1}{2}[(R-G) + (R-B)]}{\sqrt{(R-G)^2+(R-B)(G-B)}}

Hue는 색상환 상에서의 각도를 의미하며, 빨강(Red)를 기준(0°0\degree)으로 시계방향으로 측정한다.

HSI \to RGB

HSI 값을 RGB로 변환할 때는 Hue의 범위에 따라 세 가지 경우로 나눈다.

(a) 0°H<120°0\degree ≤ H < 120\degree(Red ~ Green 사이)

B=I(1S)R=I[1+ScosHcos(60°H)]G=3I(R+B)B = I(1-S)\\\,\\R=I[1+\frac{S\,cosH}{cos(60\degree - H)}]\\\,\\G=3I-(R+B)

Intensity를 기준으로 채도(S)를 반영해 두 개의 주 색(R, G)를 계산하고, 남은 값으로 나머지 채널(B)을 구함

(b) 120°H<240°120\degree ≤ H < 240\degree(Green ~ Blue 사이)
H에서 120°120\degree를 빼고 위와 동일한 로직 적용

H=H120°R=I(1S)G=I[1+ScosHcos(60°H)]B=3I(R+G)H = H-120\degree\\\,\\R = I(1-S)\\\,\\G=I[1+\frac{S\,cosH}{cos(60\degree - H)}]\\\,\\B=3I-(R+G)

(c) 240°H<360°240\degree ≤ H < 360\degree(Blue ~ Red 사이)
H에서 240°240\degree를 빼고 동일한 방식 적용

H=H240°G=I(1S)B=I[1+ScosHcos(60°H)]R=3I(G+B)H = H-240\degree\\\,\\G = I(1-S)\\\,\\B=I[1+\frac{S\,cosH}{cos(60\degree - H)}]\\\,\\R=3I-(G + B)

Transformation Examples

References

Images from Rafael C. Gonzalez and Richard E.
Wood, Digital Image Processing, 2nd Edition.

profile
기초를 다지는 중입니다.📚🧑‍💻

0개의 댓글