Color Space or Color Model
Color Space(색 공간)은
"사람의 눈"이 3개의 color에 반응하는 감각세포(cone cell)를 통해 색을 인식하는 것에 기반하여
Tristimulus values (X,Y,Z)와 각각의 color를 연관시키는 방식처럼
"특정 공간의 위치"에 "특정 color를 할당"하여
해당 위치 좌표(~position vector)를 통해 color를 표현하게 하는
수학적 모델을 가르킴 (Color model이라고도 불림).
다음과 같은 Color cube를 보면 보다 쉽게 이해할 수 있음.

좀 더 자세한 건 다음 url을 참고
https://monitor4u.com/31/?bmode=view&idx=120605997
방송용 모니터 스펙 이해하기 (3) : 방송장비 백과사전
휘도는 휘어지기 때문에 휘도라고 부르는 것인가요?한 20년 전에 디스플레이 화질 관련 교육을 하다가 어떤 분으로부터 이런 질문을 받았다. 잠시 어안이 벙벙했지만 곧 왜 그런 질문을 하게 되
monitor4u.com
0. Trichromatic Color Vision System
인간은 Trichromatic color vision 시스템을 가짐.
- cone cell이 색을 인지. (rod cell보다 수가 적고 sensitivity가 낮음)

Cone Cell and Rod Cell

3가지 종류의 cone cell에 대해 각 color에 대한 상대민감도는 다음과 같음 (겹쳐있어서 기계적으로 한종류만 activation되진 않음)

1. CIE 1931 XYZ Color Space
1931년 International Commission on Illumination(CIE, Commission Internationale de l'Eclairage 국제 조명위원회)이 제안한 device-independent color space.
- 측색 및 조명, 디스플레이 환경이 달라져도 동일한 색을 재현(or 사용) 가능하도록 표준화하기 위해 제안됨.
- 여러 가지 color space 중, CIE XYZ 는 인간의 색채 인지를 직접 측정하여 color을 수학적으로 정의한 최초의 표준 color space임.
- 현재의 모든 color space의 기준이 되는 reference color space임: RGB, LAB(=CIE 1976, 지각적 균등이 특징), HSV 등의 기준.

다음은 Color Match Functions를 보여줌:

눈으로 들어오는 빛의 스펙트럼 $I(\lambda)$ 에 대한 인간의 Color Match Functions (CMFs)은 위와 같이 3개임: $\bar{\textbf{x}}(\lambda), \bar{\textbf{y}}(\lambda), \bar{\textbf{z}}(\lambda)$
- 2도의 시야에서 수많은 피험자들을 대상으로 color matching experiment를 수행하여 도출한 함수들임.
- 인간의 cone cell에서의 감응도를 기반으로 인간이 인식할 수 있는 모든 색 을 linear combination으로 표현할 수 있도록 정의된 세 개의 가상의 기본 색 함수( imaginary primary functions)임.
- 특히 $\bar{text{y}}(\lambda)$는 luminous efficiency function (=$V(\lambda)$)와 일치하도록 정의되어, 이로부터 얻어지는 $Y$는 luminance(밝기)를 나타냄.
이들을 basis로 삼아서, 빛의 스펙트럼 분포 $I(\lambda)$를 3개의 독립적인 축(axis)들의 linear combination 값으로 표시 (일종의 normalization을 수행하여 norm이 1이 되도록 처리)한 것이 CIE Color Space임.
- $X=\langle I(\lambda) \bar{\text{x}} \rangle, Y=\langle I(\lambda) \bar{\text{y}} \rangle, Z=\langle I(\lambda) \bar{\text{z}} \rangle$ : 빛의 스펙트럼 분포 $I(\lambda)$에 대해 $inner product$로 각 basis의 성분의 크기(=tristimulus values)인 $X,Y,Z$를 구함.
- $(X,Y,Z)$는 밝기 정보를 포함한 absolute color stimuli(절대 색 자극값)임.
- 위의 inner product를 적분형태로 기재한 것이 다음과 같음: $k$는 scaling constant 로 $Y$ 가 기준 luminance (밝기)가 되도록 조정됨.
$$X=k \int I(\lambda) \bar{x}(\lambda) d\lambda \\ Y= k \int I(\lambda) \bar{y}(\lambda) d\lambda \\ Z= k \int I(\lambda) \bar{z}(\lambda) d \lambda$$
다음은 Chromaticity Coordinates, $xyY$ 의 식 (색도좌표)으로 chromaticity diagram에서의 좌표임.
- $x=\frac{X}{X+Y+Z}, y=\frac{Y}{X+Y+Z}, Y=Y$ :
CIE 1931 의 chromaticity diagram이 CIE Color Space를 보여줌
Color에서의 방향(색상, 채도)를 밝기와 분리하여 표현하므로서 일종의 normalized color를 표현(밝기가 분리된)
(vector 라고 생각하면, 일종의 unit vector라고도 생각할 수 있음: 엄밀히는 $X+Y+Z=1$의 조건으로 비율화한 것임)

- 바깥의 곡선: 파장 $\lambda$ (400-700nm)별 순수 스펙트럼 색.
- 내부 삼각형: 특정 RGB 디스플레이의 색역: $(x_R, y_R), (x_G, y_G), (x_B,y_B)$에 원으로 표시.
- 삼각형 밖의 색은 해당 장치에서 재현이 불가함: out of gamut
- 장치의 백색점이 삼각형 내부에 있어야 백색이 재현됨(이론적 중심인 E와 일치하지 않아도 되며 대부분 일치하지 않음)
- E: Equal Energy White Point (모든 파장 에너지가 동일한 백색점, 참조용 중심)
2. 다양한 Color Space
완벽한 모델인 Color space는 존재하지 않음. ▷ 응용 분야에 따라 적합한 Color space (or color model)이 존재.
2-1. Gray-scale
흔히 애기하는 흑백 사진이 바로 gray-scale image임.
(엄밀하게 흑백만 존재할 경우, binary image이나 우리가 흔히 애기하는 흑백사진은 명암정보를 가짐)
모든 색이 단일 채널에 의해 표현된다.
- 0 : black
- max : white
intensity (brightness) : pixel의 value임.

2-2. RGB (or BGR)
Gray scale에서 pixel이 scalar를 값으로 가지는 것과 달리,
vector를 값으로 가짐. Vector의 "element 수"를 흔히 "channel 수"라고 부름.
Additive color model: 서로 가산될 수 있는 삼원색인 Red, Green, Blue로 구성.
- RGB 모형은 3개 채널만 가지고 수행하는 점 때문에 다루기 쉬움.
- 영상처리 알고리즘들이 바로 적용이 쉽지 않음(보통 gray-scale 즉 명암도만을 처리하거나 binary image에서 동작하도록 만들어진 알고리즘이 대다수)
PNG등의 경우, alpha channel이 존재 : 배경의 투명도를 위해서 존재하며, background영역의 pixel은 0인 값을 가짐. 이는 RGBA color space라고도 불림
Intensity 추출 공식 (Gray-scale의 intesity를 RGB모델에서 구하기)
- NTSC(National Television Standards Committee)표준:
- 명암도(Brightness) = 0.2999R + 0.587G + 0.114B
- 더 간단한 일반적인 변환: 명암도 = 0.333R + 0.333G + 0.333B
2-3. HSI, HSV, HSL
Color space 에서 영상처리 할 때 가장 많이 사용하게 되는 space 중 하나.
HSI 는 Color 에서 색의 밝기(휘도,Luminance, 명도,Lightness, 밀도,Intensity)를 분리시켜 다음과 같이 구성된 Color space임.

- HSV는 밝기를 Value로 표현하고, HSL은 Lightness(or Luminance)로 표기함
- 이름이 조금씩 다르다보니 실제 밝기의 값을 계산이 조금씩 차이가 있으나 거의 유사하다고 봐도 됨.
인간이 느끼는 색상 공간과 가장 유사한 것이라고하나,
인간의 시각 반응에 선형이지 않음.
(사실, RGB도 비선형임. 선형이 필요하다면.... CIELab을 참고 (Gonzalez2010, 6장)
HSI / HSV /HSL 의 의미:
- H : Hue (색상)
- 빛의 파장의 길이(wavelength or freq.)에 의해 결정됨.
- 빨강은 0도, 초록은 120도, 파랑색은 240도
- red: 165~180,0~15
- green: 45~75
- blue: 90~120
- 0° ~ 360°
- opencv의 경우, 0~255의 범위에서 표현.(0~180으로 표현됨(1/2 처리))
- S : Saturation (채도 : 색상의 탁하고 맑음의 정도)
- 예 : 붉은 색이 핑크색이 되는 과정같이 순색(붉은색)의 경우 saturation이 높고, 핑크를 거친후 결국 회색이 됨.
- 채도가 낮을수록 컬러는(명도에 따라) 흰색/회색/검정색 (무채색들)이 됨 : 흐린 색들
- 채도가 높을수록 짙은 색이라고 애기가 됨.
- 0% ~ 100% ( or \([0.0,1.0]\))
- opencv의 경우, 255가 1.0에 해당.

- V 또는 I : Value or Intensity, Lightness(명도) : 밝기의 정도
- 빛의 진폭(amplitude)에 의해 결정됨. 진폭이 크면 밝기가 커짐.
- 0% ~ 100% (or \([0.0,1.0]\))
- opencv의 경우, 255가 가장 밝은 색. 0이 가장 어두운 색(검은색)으로 표현됨.
다음과 같은 그림으로 표현됨.

2-4. YCbCr, YUV
사람이 색상보다 밝기에 더 민감하게 인식하는 특징을 이용함. (색상 인식이 밝기 인식에 비해 더 둔함)
- 밝기 정보와 칼러 정보를 따로 분리해서 다루므로,
명암대비 (contrast) 등이 나쁜 영상을 좋게 만드는데 사용됨. - 밝기 정보를 하나의 채널로 사용하므로 명암처리가 쉬움.
칼러 이미지 데이터에서
밝기 정보 추출시 자주 이용됨.
YCbCr : MPEG, JPEG 등의 디지털 컬러 정보 인코딩에 이용됨 (디지털 이미지/비디오 인코딩).
YUV : 아날로그 컬러 인코딩 시스템 Phase Alternating Line (PAL)에서 정의 (아날로그 영상전송용)
사실, YCbCr과 YUV는 엄밀하게는 차이가 있으나, 크게 보면 비슷하기 때문에 같이 다룸...
YcbCR는 디지털 표준에 맞춰 오프셋과 스케일링이 적용됨.
- Y : Luminance (휘도, 밝기)
- 많은 비트수를 할당. 4bit
- Luminance를 Y로 표기하는 전통이 있어서임... --;;
- Cb (or U) : Chroma Blue (밝기와 파란색과의 색상차)
- 둔감한 색상정보이므로 적은 비트수 할당. 2bit
- B-Y : Blue-difference Chrominance, U= (B-Y)*K
- $K_U=\frac{0.49211}{1}$ : BT.601 표준
- Cr (or V): Chroma Red (밝기와 붉은 색의 색상차)
- 둔감한 색상정보이므로 적은 비트수 할당. 2bit
- R-Y : Red-difference Chrominance, V=(R-Y)*k
- $K_V=\frac{0.877283}{1}$ : BT.601 표준
RGB to YCbCr 변환공식:
- Y = 0.29900R + 0.58700G + 0.11400B
- Cb = -0.16874R - 0.33126G + 0.50000B
- Cr = 0.50000R - 0.41869G - 0.08131B
YCbCr to RGB변환공식:
- R = 1.00000Y + 1.40200 Cr
- G = 1.00000Y - 0.34414 Cb - 0.71414 Cr
- B = 1.00000Y + 1.77200 Cb
2-5. CMY
컬러 프린터 등의 인쇄 시스템에서 사용되는 color space
- 청록색(Cyan),
- 자홍색(Magenta),
- 노랑색(Yellow)
“RGB color space와 보색관계(complement)”로 RGB 공간으로 변환이 간단함.
CMYK
color space는 CMY에 K(검정색)를 더한 공간.
컬러 잉크젯프린터의 경우, 흑색잉크가 따로 있음.
이를 반영한 color space.
RGB to CMY 변환 공식: C = 1.0 – R , M = 1.0 – G , Y = 1.0 - B
CMY to RGB 변환 공식: R = 1.0 - C , G = 1.0 - M , B = 1.0 - Y
RGB to CMYK
- K = min(C,M,Y) ,
- C = C - K ,
- M = M - K,
- Y = Y - K
3. 같이보면 좋은 자료들
https://dsaint31.me/mkdocs_site/DIP/cv2/ch02/dip_cv_color_space/
BME
color space Color Space (Simple Version) Color space에 대한 보다 자세한 내용은 다음 URL을 참고할 것 : [DIP] Color Space or Color Model Gray-scale 모든 색이 단일 채널에 의해 표현된다. 0 : black max : white (1. or 255) intens
dsaint31.me
'Programming > DIP' 카테고리의 다른 글
| [DIP] Modulation Transfer Function and Contrast (1) | 2022.09.26 |
|---|---|
| [DIP] OpenCV 에서 URL로 이미지 로딩 (0) | 2022.09.21 |
| [OpenCV] cv2.cvtColor (0) | 2022.07.14 |
| [Math] Hessian: Summary (0) | 2022.06.05 |
| PIL과 opencv에서의 image 변환. (1) | 2021.11.22 |