Main Content

컬러스페이스 및 컬러스페이스 변환 이해하기

Image Processing Toolbox™는 통상적으로 색을 빨간색, 녹색, 파란색(RGB) 숫자형 값으로 나타냅니다. 하지만 RGB 외에도 수치적으로 색을 나타내는 모델이 있습니다. 이러한 다양한 모델을 컬러스페이스라고 부르는데, 대부분이 2차원, 3차원 또는 4차원 좌표계에 매핑될 수 있기 때문입니다.

컬러스페이스는 특정 계산을 더 간편하게 만드는 방식으로 색 정보를 나타내거나 색을 식별할 수 있는 더 직관적인 방법을 제공하기 때문에 다양한 컬러스페이스가 존재합니다. 예를 들어, RGB 컬러스페이스에서는 어떤 색을 정의할 때 그 색을 이루는 빨간색, 녹색, 파란색 성분의 비율로 정의합니다. 색상(색의 음영), 채도(회색 또는 순색의 양), 휘도(명암 또는 전반적인 밝기)를 사용하여 색을 설명하는 색상 모델도 있습니다.

이 툴박스는 수학적 변환을 통해 색 데이터를 하나의 컬러스페이스에서 다른 컬러스페이스로 변환할 수 있습니다.

RGB

RGB 컬러스페이스는 요소가 빨간색, 녹색, 파란색 색 채널의 명암 값을 지정하는 m×n×3 숫자형 배열로 영상을 나타냅니다. 숫자형 값의 범위는 영상의 데이터형에 따라 달라집니다.

  • single형 또는 double형 배열의 경우 RGB 값이 [0, 1] 범위에 있습니다.

  • uint8형 배열의 경우 RGB 값이 [0, 255] 범위에 있습니다.

  • uint16형 배열의 경우 RGB 값이 [0, 65535] 범위에 있습니다.

이 툴박스는 RGB 컬러스페이스의 변형을 지원합니다.

RGB 컬러스페이스설명
선형 RGB선형 RGB 값은 카메라 센서에서 얻은 원시 데이터입니다. R, G, B 값은 센서를 밝히는 빛의 양에 정비례합니다. 화이트 밸런스, 색 밸런스, 색수차 보정과 같은 원시 영상 데이터의 전처리는 선형 RGB 값에 대해 수행됩니다.
sRGB

sRGB 값은 선형 RGB 값에 감마 보정이라는 비선형 함수를 적용합니다. sRGB 컬러스페이스는 상대적으로 밝고 색을 구분하기가 더 쉽기 때문에 영상은 주로 sRGB 컬러스페이스에 표시됩니다. 선형 RGB 값을 sRGB 컬러스페이스로 변환하는 데 사용되는 파라미터 곡선은 다음과 같습니다.

f(u) = -f(-u), u < 0

f(u) = c ⋅ u, 0 ≤ u < d

f(u) = a ⋅ uɣ + b, u ≥ d,

여기서 u는 다음과 같은 파라미터를 사용하여 R, G, B 색 값 중 하나를 나타냅니다.

a = 1.055

b = –0.055

c = 12.92

d = 0.0031308

ɣ = 1/2.4

Adobe RGB(1998)

Adobe RGB(1998) RGB 값은 간단한 멱함수를 사용하여 선형 RGB 값에 감마 보정을 적용합니다.

v = uɣ, u ≥ 0

v = -(-u)ɣ, u < 0,

여기서

ɣ = 1/2.19921875입니다.

HSV

HSV(색상, 채도, 명도) 컬러스페이스는 RGB 컬러스페이스보다 사람이 색을 경험하는 방식에 더 가깝습니다. 예를 들어, 이 컬러스페이스는 색상환 또는 팔레트에서 페인트 색 또는 잉크 색을 선택하는 데 자주 사용됩니다.

특성설명
H색상으로, 색상환에서 색의 위치에 대응됩니다. H는 [0, 1] 범위에 있습니다. H가 증가하면 색은 빨간색에서 주황색, 노란색, 녹색, 녹청색, 파란색, 자홍색, 그리고 다시 빨간색으로 전환됩니다. 0과 1은 모두 빨간색을 나타냅니다.
S채도로, 색상 농도 또는 무채색으로부터의 거리입니다. S는 [0, 1] 범위에 있습니다. S가 증가하면 색은 무채색(회색 음영)에서 완전 유채색(흰색 성분 없음)으로 바뀝니다.
V

명도로, 특정 색의 빨간색, 녹색, 파란색 성분 중 최댓값입니다. V는 [0, 1] 범위에 있습니다. V가 증가하면 색은 점점 더 밝아집니다.

HSV 컬러스페이스 그림

The HSV color space is an inverted cone, where hue relates to the angle, saturation to the radius, and value to the height from the origin. The color white is at the origin and the color white is the furthest point along the value axis.

참고

MATLAB® 및 Image Processing Toolbox는 HSI 컬러스페이스(색상, 채도, 명암)를 지원하지 않습니다. 그러나 색상, 채도, 명암을 기준으로 한 색 데이터를 사용하려는 경우 HSV 컬러스페이스가 매우 비슷한 대안이 됩니다. LCH(광도, 채도, 색상) 컬러스페이스를 사용할 수도 있습니다. 이는 CIE L*a*b* 컬러스페이스의 극좌표 변환입니다. Device-Independent Color Spaces 항목을 참조하십시오.

rgb2hsv 함수를 사용하여 RGB 컬러스페이스를 HSV 컬러스페이스로, hsv2rgb 함수를 사용하여 HSV 컬러스페이스를 RGB 컬러스페이스로 변환할 수 있습니다.

CIE 1976 XYZ 및 CIE 1976 L*a*b*

CIE 1976 XYZ 및 CIE 1976 L*a*b*는 CIE(International Commission on Illumination, 국제조명위원회)에서 개발한 장치 독립적인 컬러스페이스입니다. 이들 컬러스페이스는 사람 눈에 있는 세 가지 유형의 원뿔 세포의 일반적인 민감도에 따라 색을 모델링합니다.

XYZ 컬러스페이스는 CIE에서 개발한 최초 모델입니다. Y 채널은 색의 휘도를 나타냅니다. Z 채널은 영상에 있는 파란색 양과 대략적인 관계가 있지만, XYZ 컬러스페이스의 Z 값은 RGB 컬러스페이스의 B 값과 동일하지 않습니다. X 채널은 뚜렷한 색 유사성이 없습니다. 그러나 XYZ 컬러스페이스를 3차원 좌표계라고 생각하면 X 값은 Y축(휘도)과 Z축에 직교하는 축을 따라 존재합니다.

L*a*b* 컬러스페이스는 XYZ 모델보다 더 균일하게 지각되는 컬러스페이스를 제공합니다. L*a*b* 컬러스페이스의 색은 RGB의 색역(RGB의 유효한 색 집합)을 벗어나서 존재할 수 있습니다. 예를 들어, L*a*b* 값 [100, 100, 100]을 RGB 컬러스페이스로 변환하면 반환되는 값은 [1.7682, 0.5746, 0.1940]으로, 이는 유효한 RGB 색이 아닙니다. 자세한 내용은 Determine If L*a*b* Value Is in RGB Gamut 항목을 참조하십시오.

특성설명
L*영상의 휘도 또는 밝기. 값은 [0, 100] 범위 내에 있으며, 여기서 0은 검은색을, 100은 흰색을 지정합니다. L*이 증가하면 색이 밝아집니다.
a*영상의 빨간색 또는 녹색 색조의 양. 큰 양수의 a* 값은 빨간색/자홍색에 대응됩니다. 큰 음수의 a* 값은 녹색에 대응됩니다. a* 값의 단일 범위는 존재하지 않으나, 값은 일반적으로 [-100, 100] 또는 [-128, 127) 범위 내에 있습니다.
b*영상의 노란색 또는 파란색 색조의 양. 큰 양수의 b* 값은 노란색에 대응됩니다. 큰 음수의 b* 값은 파란색에 대응됩니다. b* 값의 단일 범위는 존재하지 않으나, 값은 일반적으로 [-100, 100] 또는 [-128, 127) 범위 내에 있습니다.

장치 독립적인 컬러스페이스는 조명원의 효과(기준 흰색 점)를 포함합니다. 조명원은 광원의 색 온도에 따라 원시 영상 데이터에 색상을 부여합니다. 예를 들어, 일출 또는 일몰 중에 태양광은 영상에 노란색 색상을 부여하며, 정오 즈음의 태양광은 파란색 색상을 부여합니다.

rgb2xyz 함수를 사용하여 RGB 컬러스페이스를 XYZ 컬러스페이스로, xyz2rgb 함수를 사용하여 XYZ 컬러스페이스를 RGB 컬러스페이스로 변환할 수 있습니다. rgb2lab 함수를 사용하여 RGB 컬러스페이스를 L*a*b* 컬러스페이스로, lab2rgb 함수를 사용하여 L*a*b* 컬러스페이스를 RGB 컬러스페이스로 변환할 수 있습니다.

이 툴박스는 특정 용도에 XYZ보다 더 적합한 몇 가지 관련 컬러스페이스 사양을 지원합니다. 자세한 내용은 Device-Independent Color Spaces 항목을 참조하십시오.

YCbCr

YCbCr 컬러스페이스는 디지털 영상에 널리 사용됩니다. 이 형식에서 휘도 정보는 단일 성분(Y)으로 저장되고 색차 정보는 두 개의 서로 다른 성분(Cb 및 Cr)으로 저장됩니다. Cb와 Cr은 각각 기준 값과 파란색 성분의 차이와 기준 값과 빨간색 성분의 차이를 나타냅니다. (디지털 영상에 널리 사용되는 또 다른 컬러스페이스인 YUV는 YCbCr과 매우 비슷하지만 동일하지는 않습니다.)

특성설명
Y영상의 휘도 또는 밝기. Y가 증가하면 색이 밝아집니다.
Cb기준 값과 파란색 성분 사이의 차이를 나타내는 색차 값.
Cr기준 값과 빨간색 성분 사이의 차이를 나타내는 색차 값.

숫자형 값의 범위는 영상의 데이터형에 따라 달라집니다. YCbCr은 비디오 스트림이 추가(비영상) 정보를 포함할 수 있도록 이미지 데이터형의 일부 범위만 사용합니다.

  • single형 또는 double형 배열의 경우, Y는 [16/255, 235/255] 범위 내에 있고 Cb와 Cr은 [16/255, 240/255] 범위 내에 있습니다.

  • uint8형 배열의 경우, Y는 [16, 235] 범위 내에 있고 Cb와 Cr은 [16, 240] 범위 내에 있습니다.

  • uint16형의 경우, Y는 [4112, 60395] 범위 내에 있고 Cb와 Cr은 [4112, 61680] 범위 내에 있습니다.

rgb2ycbcr 함수를 사용하여 RGB 컬러스페이스를 YCbCr 컬러스페이스로, ycbcr2rgb 함수를 사용하여 YCbCr 컬러스페이스를 RGB 컬러스페이스로 변환할 수 있습니다.

YIQ

NTSC(National Television Systems Committee)에서는 YIQ라는 컬러스페이스를 정의합니다. 이것은 미국에서 텔레비전에 사용하는 컬러스페이스입니다. 이 컬러스페이스는 동일한 신호를 컬러 텔레비전과 흑백 텔레비전에서 모두 사용할 수 있도록 컬러 데이터에서 회색조 정보를 분리합니다.

특성설명
Y광도 또는 영상의 밝기. 값은 [0, 1] 범위 내에 있으며, 여기서 0은 검은색을, 1은 흰색을 지정합니다. Y가 증가하면 색이 밝아집니다.
I동위상으로, 영상에 있는 파란색 또는 주황색 색조의 대략적인 양입니다. I는 [-0.5959, 0.5959] 범위 내에 있으며, 여기서 음수는 파란색 색조를, 양수는 주황색 색조를 나타냅니다. I의 크기가 커지면 색의 채도가 높아집니다.
Q직교 위상으로, 영상에 있는 녹색 또는 자주색 색조의 대략적인 양입니다. Q는 [-0.5229, 0.5229] 범위 내에 있으며, 여기서 음수는 녹색 색조를, 양수는 자주색 색조를 나타냅니다. Q의 크기가 커지면 색의 채도가 높아집니다.

rgb2ntsc 함수를 사용하여 RGB 컬러스페이스를 YIQ 컬러스페이스로, ntsc2rgb 함수를 사용하여 YIQ 컬러스페이스를 RGB 컬러스페이스로 변환할 수 있습니다.

휘도는 NTSC 형식의 성분 중 하나이므로, RGB-NTSC 변환은 영상에서 회색 레벨 정보를 분리하는 데도 유용합니다. 툴박스 함수 rgb2grayind2grayrgb2ntsc 함수를 사용하여 컬러 영상에서 회색조 정보를 추출합니다.

관련 항목