Chapter 19

컬러 엔지니어링 워크벤치

앞의 열여덟 장에서 배운 공식들은 실무에서 몇 개의 고정된 질문으로 되돌아온다. “이 스펙트럼의 색온도와 Duv는?”, “이 hex 값의 Lab은?”, “두 시편이 허용차 안인가?”, “sRGB를 P3 패널에 정확히 띄우는 행렬은?”, “이 패널은 Rec.2020을 몇 % 덮는가?” 이 장은 개념 설명 대신 그 질문들에 바로 답하는 계산 도구와, 도구를 써서 실무 문제를 끝까지 푸는 예제로 구성된다. 모든 계산은 다른 장과 같은 CIE 원표와 같은 CB 헬퍼로 이뤄지므로, 여기서 얻은 숫자는 책 전체의 숫자와 일치한다.

워크벤치 사용법과 계산 규약

색 계산의 오류 대부분은 공식이 아니라 규약에서 생긴다. 같은 시료라도 XYZ를 Y=1로 쓰는지 Y=100으로 쓰는지, 2° 관측자인지 10° 관측자인지, Lab의 기준 백색이 D65인지 D50인지에 따라 숫자가 달라진다. 숫자를 남에게 넘길 때는 값과 함께 이 세 가지를 반드시 적어야 한다. 이 장의 도구는 아래 흐름을 따라 계산하고, 각 단계의 규약을 결과 표에 함께 표시한다.

스펙트럼 S(λ) 또는 R(λ)·S(λ) ∫ x̄ ȳ z̄ dλ 2° / 10° XYZ xyY · u′v′ 투영(정규화) CCT · Duv 주파장 · 순도 CAT → 백색 W Bradford 등 Lab · LCh ΔE76/94/00 M⁻¹ (원색·백색) 선형 RGB OETF → 신호 8비트 · hex 선형 sRGB → OKLab 발광체: Y=100 정규화 반사체: 완전 확산면 Y=100 모든 좌표의 출발점
그림 19-1. 워크벤치의 계산 흐름. XYZ 하나에서 세 갈래가 나온다: 투영 좌표(xy, u′v′와 그 파생인 CCT·주파장), 기준 백색이 필요한 지각 좌표(Lab·LCh와 색차), 원색이 필요한 장치 좌표(선형 RGB, 인코딩 신호). 백색과 원색이 개입하는 지점마다 규약을 명시해야 한다.
항목이 장의 규약흔한 다른 규약
XYZ 스케일표시는 Y=100 (반사체는 완전 확산면 Y=100, 발광체는 Y=100으로 정규화)Y=1 (영상·셰이더), 절대값 cd/m²
관측자XYZ·xyY·u′v′·Lab은 선택한 관측자. CCT·Duv·주파장·RGB는 항상 2° (CIE 1931)10° 관측자(인쇄·도료 측정에 흔함)
Lab 기준 백색도구마다 선택. 백색이 D65가 아니면 지정한 CAT로 적응한 뒤 계산ICC PCS는 D50 + Bradford
RGB 공간sRGB·P3·Rec.2020 모두 D65 백색, 원색은 5장의 표준값DCI-P3(DCI 백색), Adobe RGB
인코딩sRGB·Display P3: IEC 61966-2-1 곡선, Rec.2020: BT.2020 OETFBT.1886 감마 2.4 (표시 측)
CCTCIE 1960 uv에서 흑체 궤적 최근접점 직접 탐색, |Duv| ≤ 0.05에서만 유효McCamy 근사, Robertson 표
공학자 관점: 숫자 세 개만 넘기지 마라

“Lab = (54.3, 80.8, 69.9)”는 그 자체로는 불완전한 정보다. sRGB 빨강의 Lab은 D65 백색 기준이면 (53.24, 80.09, 67.20), ICC 방식대로 Bradford로 D50에 적응하면 (54.29, 80.80, 69.89)이다. 두 값의 ΔE00은 약 1.1로, 인쇄 허용차의 절반을 이미 써 버린다. 보고서에는 “D50, 2°, Bradford”처럼 규약을 함께 적는다.

스펙트럼 → 모든 좌표 변환기

측정 장비가 내놓는 가장 원초적인 데이터는 분광 분포다. 분광복사계는 광원의 \(S(\lambda)\)를, 분광광도계는 시료의 반사율 \(R(\lambda)\)를 준다(11장). 이 도구는 둘 중 무엇이든 받아 3자극치를 적분하고, 거기서 파생되는 모든 좌표를 한 표에 낸다. 적분은 380–780 nm, 5 nm 간격의 CIE 원표 위에서 이뤄진다(3장).

$$X = k\sum_\lambda \Phi(\lambda)\,\bar x(\lambda)\,\Delta\lambda,\qquad \Phi(\lambda)=\begin{cases}S(\lambda) & \text{발광체}\\ R(\lambda)\,S_{\text{조명}}(\lambda) & \text{반사체}\end{cases},\qquad k=\frac{100}{\sum S_{\text{조명}}\,\bar y\,\Delta\lambda}$$
발광체는 Y=100이 되도록 \(k\)를 정한다(상대 측색). 반사체는 완전 확산 반사면(R=1)의 Y가 100이 되도록 정한다. LER은 \(K_m=683\ \text{lm/W}\)와 \(V(\lambda)=\bar y(\lambda)\)로 \(\text{LER}=K_m\sum S\bar y\,\Delta\lambda / \sum S\,\Delta\lambda\)이며, 분모도 380–780 nm만 적분한다.

정밀 CCT와 Duv

상관 색온도는 “시료 색도에서 가장 가까운 흑체의 온도”이고, 거리는 CIE 1960 UCS \((u,v)\)에서 잰다(CIE 015:2018). McCamy 3차식은 xy만으로 빠르게 근사하지만 궤적에서 멀어지면 오차가 커지고 Duv는 주지 않는다. 이 도구는 흑체 궤적을 CMF로 직접 적분해 1–1000 mired 격자에서 최근접점을 찾은 뒤, 황금분할 탐색으로 거리를 최소화하는 온도를 구한다. Duv는 그 최소 거리이며, 궤적 위쪽(녹색 쪽)이 양수, 아래쪽(마젠타 쪽)이 음수다.

$$u=\frac{4x}{-2x+12y+3},\quad v=\frac{6y}{-2x+12y+3}=\tfrac23 v',\qquad T_{cp}=\arg\min_T \big\|(u,v)-(u_P(T),v_P(T))\big\|,\qquad D_{uv}=\pm\min_T\|\cdot\|$$
\((u_P,v_P)\)는 플랑크 분포를 CIE 1931 CMF로 적분한 흑체 색도. 탐색은 온도 대신 mired(\(10^6/T\))로 한다. 궤적이 mired에 대해 거의 등간격이기 때문이다. \(|D_{uv}|>0.05\)이면 CCT는 정의되지 않는다.
u (CIE 1960) v 흑체 궤적 1000 K 쪽 → ← ∞ K 쪽 등온선 T_cp 궤적 위 최근접점 시료 (u, v) Duv > 0 위쪽: 녹색을 띤 백색 (+Duv) 아래쪽: 마젠타를 띤 백색 (−Duv) Duv < 0 시료
그림 19-2. CCT와 Duv의 기하. 시료에서 흑체 궤적에 내린 수선의 발이 CCT를 정하고(그 발을 지나는 수직선이 등온선), 수선의 길이가 |Duv|다. 같은 6500 K라도 Duv가 +0.006이면 눈에 띄게 녹색, −0.006이면 분홍색을 띤다.

주파장과 자극 순도

주파장 \(\lambda_d\)는 기준 백색 W에서 시료 S를 지나 스펙트럼 궤적까지 그은 반직선이 만나는 단색광의 파장이다. 반직선이 궤적 대신 보라 직선(380–700 nm를 잇는 선)과 만나면 주파장이 없으므로, 반대 방향의 교점 파장을 여색 파장 \(\lambda_c\)로 보고하고 관례상 음수 부호나 “c”를 붙인다. 자극 순도는 \(p_e=\overline{WS}/\overline{WB}\) (B는 경계 위의 교점)로, 백색이면 0, 단색광이면 1이다. 주파장은 기준 백색에 따라 달라지므로 반드시 백색을 함께 적는다(4장).

보라 직선 (주파장 없음) W S₁ λd S₂ λc (여색 파장) S₁: 주파장 λd, 순도 = WS₁ / Wλd S₂: 보라 직선과 만남 → 반대쪽 교점이 여색 파장 λc 순도 분모는 보라 직선까지
그림 19-3. 주파장과 여색 파장. 마젠타·보라 계열 시료(S₂)는 단색광으로 등색할 수 없으므로, 백색 반대쪽 교점의 파장(여색 파장)으로 색상을 표기한다.
TOOL 1

스펙트럼 → XYZ · xy · u′v′ · CCT · Duv · 주파장 · Lab · RGB · LER

분광 분포
CIE 1931 xy (2°)
모드 · 입력
시료 종류
입력 방식
관측자
분포
가우시안 합성 (중심 · 반치폭 · 가중치)
조명 · 기준 백색
색도도 범위
xy (관측자)—
CCT (정밀)—
Duv—
주파장 · 순도—
hex (sRGB)—
—
양값규약 · 비고
해볼 것: ① 프리셋 D65 → x 0.3127, y 0.3290, CCT ≈ 6504 K, Duv ≈ +0.0032, sRGB (1, 1, 1)을 확인하자. 관측자를 10°로 바꾸면 xy는 (0.3138, 0.3310)으로 움직이지만 CCT·Duv는 2° 기준이라 그대로다. ② 흑체 2856 K는 Duv = 0.0000, 광원 A와 같은 색도다. ③ 반사체 모드에서 TCS09(진한 빨강)를 D65와 A 아래에서 비교하고, 기준 백색을 “자동”과 “D65”로 바꿔 보자. ④ 붙여넣기에 머리글이나 감소하는 파장을 넣어 오류 메시지를 확인하자.

아래 표는 이 도구로 계산한 표준 광원의 기준값이다. 다른 소프트웨어와 결과를 대조할 때 출발점으로 쓴다. 표의 LER은 380–780 nm만 적분했으므로 적외선을 많이 내는 백열광(A)의 실제 발광 효율(약 15 lm/W 수준)과는 전혀 다른 양이다. 이는 “가시광 안에서 스펙트럼 모양이 얼마나 ȳ에 집중되어 있는가”를 뜻한다(10장).

광원xyCCT 정밀 (K)McCamy (K)DuvLER₃₈₀₋₇₈₀ (lm/W)
A0.44760.4074285628570.0000154.1
D500.34570.358550025002+0.0032206.2
D650.31270.329065046504+0.0032203.5
FL2 (냉백색 형광)0.37210.375142254230+0.0018336.4
FL11 (3파장 형광)0.38050.3769399940070.0000336.7
LED-B3 (청색+형광체)0.37560.372341034112−0.0007316.9
LED-RGB10.45570.421128402842+0.0043291.4
HP1 (고압 나트륨)0.53300.415019591944+0.0008394.5
공학자 관점: McCamy는 어디까지 믿을 수 있나

표에서 보듯 궤적 근처(|Duv| < 0.005)의 2,800–6,500 K에서는 McCamy 근사와 정밀 탐색이 10 K 안에서 맞는다(D65·D50은 1 K 이내). 그러나 고압 나트륨(1959 K)에서는 15 K, 3파장 형광(FL11)에서는 8 K가 벌어진다. 사양서의 CCT 허용 범위가 수백 K이므로 판정에는 대개 충분하지만, Duv가 필요하거나 2,000 K 이하·10,000 K 이상을 다룬다면 직접 탐색(또는 Ohno 2014 방법)을 써야 한다.

색 값 상호 변환기

코드 리뷰나 디자인 협업에서 가장 자주 나오는 질문은 “이 hex의 Lab은?”이나 “이 Lab을 sRGB로 표시하면?”이다. 변환 자체는 5장(RGB↔XYZ), 6장(전달 함수), 7장(Lab·OKLab), 8장(색순응)의 공식을 차례로 적용하는 것뿐이지만, 단계가 많아 실수하기 쉽다. 이 도구는 여덟 표현 중 어느 칸에 입력해도 나머지 일곱 칸을 즉시 갱신한다. 내부 기준값은 D65 백색 기준 XYZ(Y=1)이며, 모든 칸은 이 값에서 다시 계산된다.

$$\text{hex}\xrightarrow{\div255}\text{sRGB}'\xrightarrow{\text{EOTF}}\text{RGB}_{lin}\xrightarrow{M_{sRGB}}\text{XYZ}_{D65}\xrightarrow{\text{CAT}(D65\to W)}\text{XYZ}_W\xrightarrow{f(\cdot)}L^*a^*b^*\xrightarrow{\text{극좌표}}L^*C^*_{ab}h_{ab}$$
sRGB 디코딩: \(V\le0.04045\)이면 \(V/12.92\), 아니면 \(((V+0.055)/1.055)^{2.4}\) (IEC 61966-2-1). OKLab은 선형 sRGB에서 바로 계산된다(Ottosson 2020, D65 전제). Lab 기준 백색 W가 D65이면 CAT 단계는 항등 변환이다.
TOOL 2

hex · sRGB · 선형 RGB · XYZ · xyY · Lab · LCh · OKLab 양방향 변환

—
부가 정보값비고
해볼 것: ① hex에 #ff0000을 넣으면 Lab = (53.24, 80.09, 67.20)이 나와야 한다. 백색을 D50(Bradford)으로 바꾸면 (54.29, 80.80, 69.89)가 된다. ② Lab 칸에 50, 0, -90을 넣어 sRGB 가멋 밖 색이 어떻게 표시되는지 보자. ③ 같은 상태에서 색순응 방법을 XYZ 스케일링으로 바꾸면 D50 Lab 값이 얼마나 달라지는지 확인하자.
흔한 실수: 인코딩된 값으로 계산하기

hex를 읽어 8비트 값에 바로 3×3 행렬을 곱하거나, 두 색의 평균을 신호값으로 내는 코드는 흔하다. sRGB 신호 128은 선형 휘도 0.216이지 0.5가 아니다. 행렬·평균·보간·블렌딩은 모두 선형 값에서 하고, 마지막에 한 번만 인코딩한다(6장). 이 도구에서 hex #808080의 선형 값을 확인해 보라.

색차 계산기

허용차 판정의 핵심은 어떤 ΔE를 쓰는지 합의하는 것이다. ΔE76은 Lab의 유클리드 거리라 계산은 쉽지만 채도가 높은 색에서 과대평가한다. ΔE94는 채도에 비례하는 가중치 \(S_C, S_H\)를 도입했고, ΔE2000은 명도 가중 \(S_L\), 저채도 a* 보정 \(G\), 색상 의존 \(T\), 청색 영역의 회전항 \(R_T\)까지 넣었다(7장). 이 도구는 세 공식을 동시에 계산하고 각 항을 분해해 보여 준다.

$$\Delta E_{94}=\sqrt{\Big(\frac{\Delta L^*}{k_L}\Big)^2+\Big(\frac{\Delta C^*}{1+K_1C^*_1}\Big)^2+\Big(\frac{\Delta H^*}{1+K_2C^*_1}\Big)^2}$$ $$\Delta E_{00}=\sqrt{\Big(\frac{\Delta L'}{k_LS_L}\Big)^2+\Big(\frac{\Delta C'}{k_CS_C}\Big)^2+\Big(\frac{\Delta H'}{k_HS_H}\Big)^2+R_T\frac{\Delta C'}{k_CS_C}\frac{\Delta H'}{k_HS_H}}$$
ΔE94: 그래픽 아트 \(k_L=1, K_1=0.045, K_2=0.015\), 섬유 \(k_L=2, K_1=0.048, K_2=0.014\). 기준 시료(색 1)의 채도 \(C^*_1\)를 쓰므로 순서를 바꾸면 값이 달라진다. ΔE00의 \(\Delta H'=2\sqrt{C'_1C'_2}\sin(\Delta h'/2)\). 구현은 Sharma·Wu·Dalal(2005)의 시험 데이터로 검증된 CB.dE2000과 같은 식이며, 분해 결과의 합은 그 값과 일치한다.
a* b* 색 1 색 2 ΔC (반지름 방향) ΔH (원주 방향) h ΔE00 분해의 읽는 법 ΔL′/kLSL : 밝기 차 (중간 명도에서 엄격) ΔC′/kCSC : 채도 차 (고채도일수록 관대) ΔH′/kHSH : 색상 차 RT 항 : 청색(h≈275°)에서 C·H 상관 ΔE00² = ΣΔᵢ² + RT·ΔC·ΔH 가장 큰 항이 “수정할 방향”이다
그림 19-4. a*b* 평면에서의 색차 분해. 채도 차 ΔC는 원점에서 멀어지는 방향, 색상 차 ΔH는 원주 방향이다. ΔH는 각도가 아니라 길이(Lab 단위)라서 ΔE² = ΔL² + ΔC² + ΔH²가 성립한다. 분해된 항 중 가장 큰 것이 공정 조정의 방향을 알려 준다.
TOOL 3

색차 계산기 — ΔE76 · ΔE94 · ΔE2000 · ΔE_OK · Δu′v′

입력 형식
ΔE94 용도
ΔE00² 항별 기여
a*b* 평면 (색 1 → 색 2)
ΔE76—
ΔE94—
ΔE2000—
판정 (ΔE00)—
—
항목값비고
해볼 것: ① 기본값(고채도 녹색)은 ΔE76이 4.03인데 ΔE00은 1.26이다. 채도 가중 \(S_C\)가 4를 넘기 때문이다. ② Lab에 50, 2.6772, -79.7751과 50, 0, -82.7485를 넣으면 Sharma 시험 데이터 1번 쌍의 ΔE00 = 2.0425가 나와야 한다. ③ kL을 2로 바꾸면(섬유 관행) 밝기 차의 기여가 1/4로 줄어든다. ④ 색 1과 2를 바꿔 ΔE94만 달라지는 것을 확인하자.
공학자 관점: 허용차는 “어떤 ΔE, 어떤 백색, 어떤 측정 조건”까지가 한 세트

인쇄 공정 관리(ISO 12647 계열)와 브랜드 색 관리에서는 D50·2°·M1 측정 조건의 Lab과 ΔE00이 흔하고, 섬유·도료는 D65·10°와 CMC(l:c) 또는 ΔE00(2:1:1)을 쓰기도 한다. 같은 시편 쌍이라도 공식에 따라 2–3배 차이가 나므로(아래 예제 3), 계약서의 허용차 숫자는 공식·백색·관측자·측정 기하가 함께 적혀 있을 때만 의미가 있다.

RGB 공간 변환 행렬 생성기

두 RGB 공간 사이의 변환은 선형 영역에서 3×3 행렬 하나로 끝난다. 원색 xy 세 개와 백색점 xy 하나면 RGB→XYZ 행렬(NPM)이 정해지고(5장), 백색점이 다르면 그 사이에 색순응 행렬을 끼운다. 이 도구는 그 곱을 계산해 소수 6자리 텍스트로 내 주고, 원색과 백색을 실제로 변환해 결과를 검증한다.

$$M_{\text{src}\to\text{dst}} = M_{\text{dst}}^{-1}\;\underbrace{M_A^{-1}\,\mathrm{diag}\!\Big(\frac{\rho_{d}}{\rho_{s}},\frac{\gamma_{d}}{\gamma_{s}},\frac{\beta_{d}}{\beta_{s}}\Big)\,M_A}_{\text{CAT}(W_s\to W_d)}\;M_{\text{src}},\qquad M=\big[\,S_r\mathbf P_r\;\;S_g\mathbf P_g\;\;S_b\mathbf P_b\,\big],\ \ \mathbf S=P^{-1}\mathbf W$$
\(\mathbf P_i=(x_i/y_i,\,1,\,(1-x_i-y_i)/y_i)^T\)는 원색의 XYZ(Y=1), \(\mathbf W\)는 백색 XYZ(Y=1). \(M_A\)는 Bradford·CAT02·von Kries 등의 원추 공간 행렬, \((\rho,\gamma,\beta)\)는 각 백색을 그 공간으로 옮긴 값.
RGB_src 선형 XYZ (W_s) src 백색 기준 XYZ (W_d) dst 백색 기준 RGB_dst 선형 M_src CAT M_dst⁻¹ 백색이 같으면 항등 곱하면 3×3 하나
그림 19-5. RGB→RGB 변환의 행렬 연쇄. 세 행렬을 미리 곱해 하나로 만들면 픽셀당 곱셈 9번이다. 입력은 반드시 선형화(디코딩)한 값이어야 하고, 출력은 목적 공간의 전달 함수로 다시 인코딩한다.
TOOL 4

RGB → RGB 3×3 행렬 생성 · 역행렬 · 검증

복사 형식

M (원본 RGB → 목적 RGB)

—

M⁻¹ (목적 → 원본)

—

원본 RGB → XYZ (NPM)

—

목적 RGB → XYZ (NPM)

—
원본(실선) · 목적(점선) 가멋
입력 (원본 RGB)→ 목적 RGB판정
해볼 것: ① sRGB → Display P3: 첫 행이 0.822462, 0.177538, 0.000000이어야 한다. 백색 (1,1,1)은 정확히 (1,1,1)로 간다. ② 반대로 P3 → sRGB에서 P3 원색이 음수 성분을 갖는 것(= sRGB 가멋 밖)을 확인하자. ③ 목적을 DCI-P3(DCI 백색)로 바꾸고 색순응 방법을 바꿔 가며 행렬이 얼마나 달라지는지 보자. ④ 사용자 정의 원색에 일직선 위의 세 점을 넣으면 어떤 오류가 나는지 확인하자.
검증 습관: 행 합과 백색

백색점이 같은 두 공간의 RGB→RGB 행렬은 각 행의 합이 1이다(백색 (1,1,1)이 (1,1,1)로 가야 하므로). 백색점이 다르더라도 색순응을 넣었다면 역시 행 합이 1이다. 행 합이 1이 아니면 CAT를 빠뜨렸거나 백색 Y를 1로 정규화하지 않은 것이다. NPM의 둘째 행은 휘도 계수이므로 sRGB에서는 (0.2126, 0.7152, 0.0722)가 나와야 한다(ITU-R BT.709).

가멋 비교 도구

디스플레이 사양서의 “NTSC 72 %”, “DCI-P3 98 %”, “Rec.2020 80 %” 같은 숫자는 두 종류다. 면적비는 패널 삼각형 넓이를 기준 삼각형 넓이로 나눈 것이라, 삼각형이 기준 밖으로 삐져나가도 100 %를 넘을 수 있다. 커버리지는 두 삼각형의 교집합 넓이를 기준 넓이로 나눈 것이라 최대 100 %이며, 실제로 기준 공간의 색을 얼마나 재현하는지를 뜻한다. 그리고 둘 다 xy에서 재는지 u′v′에서 재는지에 따라 값이 달라진다. xy는 녹색 영역을 과장하므로 u′v′ 쪽이 지각에 더 가깝다(5장).

$$\text{면적비}=\frac{A(G_\text{패널})}{A(G_\text{기준})},\qquad \text{커버리지}=\frac{A(G_\text{패널}\cap G_\text{기준})}{A(G_\text{기준})}\le 1,\qquad A=\tfrac12\Big|\sum_i (x_iy_{i+1}-x_{i+1}y_i)\Big|$$
두 삼각형은 볼록이므로 교집합은 Sutherland–Hodgman 다각형 절단으로 정확히 구한다. 스펙트럼 궤적 면적은 380–700 nm 궤적과 보라 직선으로 닫은 다각형의 넓이다(xy 0.3333, u′v′ 0.1950).
기준 G_ref (실선) 패널 G_panel (점선) 면적비 = A(panel) / A(ref) → 110 % 처럼 100 %를 넘을 수 있다 커버리지 = A(panel ∩ ref) / A(ref) → 기준 색 중 재현 가능한 비율, ≤ 100 % 면적비가 커도 커버리지는 낮을 수 있다
그림 19-6. 면적비와 커버리지. 패널 삼각형이 기준보다 넓어도 한쪽(예: 녹색)으로 치우쳐 있으면 기준의 다른 쪽(예: 빨강) 색은 재현하지 못한다. 마케팅 수치가 면적비인지 커버리지인지, xy인지 u′v′인지 확인해야 한다.
TOOL 5

가멋 면적 · 상호 커버리지 · 색도도 오버레이

CIE 1931 xy
평면
비교할 공간
공간면적궤적 대비sRGB 대비 면적비sRGB 커버리지Rec.2020 커버리지
해볼 것: ① P3의 Rec.2020 커버리지는 xy에서 71.7 %다. u′v′로 바꾸면 얼마가 되는가? ② NTSC 1953 대비 면적비를 sRGB와 비교해 “NTSC 72 %” 패널이 대략 sRGB 정도의 크기라는 관행을 확인하자. ③ Adobe RGB와 P3는 면적이 거의 같지만 서로를 100 % 덮지 못한다. 상호 커버리지 표에서 확인하자. ④ 사용자 정의에 QD-OLED 패널 원색 같은 값을 넣어 보자(기본값은 가상의 예).
2D 커버리지의 한계

xy·u′v′ 커버리지는 색도만 본다. 실제 재현 가능한 색 집합은 명도까지 포함한 3차원 입체이며, 원색이 밝기 면에서 백색을 얼마나 지탱하는지(예: RGBW 패널, 광원 피크 휘도)에 따라 고명도 고채도 영역이 깎인다. 이를 정량화하려면 CIELAB 또는 ICtCp에서 가멋 부피를 계산한다(13장, 14장). 2D 수치는 비교의 출발점일 뿐이다.

예제 풀이: 실무 문제를 끝까지

아래 네 문제는 현업에서 실제로 받는 질문의 형태다. 각 문제는 손계산 단계와 함께 결과를 위 도구로 다시 열어 볼 수 있는 버튼을 단다. 버튼을 누르면 해당 도구에 조건이 입력되고 화면이 이동한다.

예제 1 · 6500 K 백색 LED의 Duv가 +0.006이다. 무엇을 바꿔야 하나?

청색 LED(450 nm, FWHM 20 nm) + 황색 형광체(FWHM 120 nm) 구조의 백색 LED가 CCT 6500 K, Duv +0.0060으로 측정됐다. 목표는 Duv 0이다. 형광체 조성이나 적색 성분을 어떻게 바꾸면 되는가?

  1. 현상 진단. Duv > 0은 흑체 궤적 위쪽, 즉 녹색 쪽이다(그림 19-2). 6500 K에서 양의 Duv 방향의 단위 법선은 1960 uv에서 약 (−0.809, +0.588)이다. 따라서 Duv +0.006은 Δu ≈ −0.00486, Δv ≈ +0.00353이며, u′v′ 거리는 약 0.0072다. Duv는 v 좌표 차이만을 뜻하지 않는다.
  2. 모델 세우기. 가우시안 두 개로 측정 스펙트럼을 근사한다. 수치 풀이로 청색 가중치 2.010, 형광체 중심 561.1 nm(가중치 1)에서 CCT 6500 K, Duv +0.0060, xy = (0.3121, 0.3339), LER 337.7 lm/W를 재현한다.
  3. 해법 A: 적색 성분 추가. 630 nm(FWHM 25 nm) 적색을 가중치 0.175만큼 더하고, 색온도를 지키려 청색을 2.195로 올리면 CCT 6500 K, Duv 0.0000, xy = (0.3135, 0.3237)이 된다. 이동량은 Δu′v′ = 0.0072다. LER은 327.0 lm/W로 3.2 % 떨어진다. 적색이 ȳ의 꼬리에 있어 시감 효율이 낮기 때문이다.
  4. 해법 B: 형광체 피크 이동. 적색 칩 없이 형광체 중심을 564.2 nm로 3 nm 장파장 쪽으로 옮기고 청색을 2.192로 맞춰도 Duv 0이 된다. LER은 330.0 lm/W로 손실이 2.3 %에 그친다. 대신 적색 성분이 부족해 연색성(특히 R9)은 해법 A보다 나쁠 것이다(10장).
결론. Duv를 낮추려면 스펙트럼의 무게중심을 “녹색에서 멀리”, 즉 적색 쪽으로 옮긴다. 적색 형광체나 칩을 추가하면 Duv와 연색성을 함께 잡지만 LER을 약 3 % 잃고, 황색 형광체의 피크를 장파장으로 옮기면 효율 손실은 작지만 연색성 개선은 제한적이다. 참고로 ANSI C78.377의 6500 K 등급은 Duv 목표가 약간 양수(≈ +0.003)이고 허용 폭이 약 ±0.006이므로, +0.006은 규격 경계 근처의 “녹색 끼가 도는” 제품이다.

예제 2 · Display P3 패널에서 sRGB 이미지를 정확히 보여 주는 행렬

색 관리가 없는 펌웨어 파이프라인에 sRGB 콘텐츠가 들어온다. 패널은 Display P3(D65)로 교정되어 있다. 픽셀 처리 단계와 행렬, 그리고 sRGB 순수 빨강과 (200, 120, 60)의 출력 신호를 구하라.

  1. 백색 확인. 두 공간 모두 D65이므로 CAT는 항등이다. \(M=M_{P3}^{-1}M_{sRGB}\).
  2. 행렬. \(M=\begin{bmatrix}0.822462&0.177538&0\\0.033194&0.966806&0\\0.017083&0.072397&0.910520\end{bmatrix}\). 행 합은 모두 1이다. 빨강·녹색 원색이 공유하는 파랑(0.15, 0.06)이 같으므로 첫 두 행의 셋째 열이 0이다.
  3. 순수 빨강 (255, 0, 0). 선형화 → (1, 0, 0). 곱하면 P3 선형 (0.8225, 0.0332, 0.0171). P3도 sRGB 곡선을 쓰므로 인코딩하면 (0.9175, 0.2003, 0.1386), 8비트 (234, 51, 35).
  4. (200, 120, 60). 선형 (0.5776, 0.1878, 0.0452) → P3 선형 (0.5084, 0.2008, 0.0646) → 인코딩 (0.7409, 0.4854, 0.2819), 8비트 (189, 124, 72).
결론. 처리 순서는 “sRGB 디코딩 → 3×3 행렬 → sRGB 곡선 인코딩”이다. 행렬을 생략하고 신호를 그대로 보내면 sRGB 빨강이 P3 빨강(0.68, 0.32)으로 늘어나 과포화된다. 그 오차는 sRGB 빨강 기준 ΔE00 6.8이다(D65 Lab (53.24, 80.09, 67.20) 대 P3 빨강 (54.97, 94.09, 94.77) — 도구 2의 XYZ 칸에 P3 빨강 48.657, 22.897, 0을 넣어 확인해 보라). 8비트 정수 파이프라인이라면 행렬 연산은 최소 12비트 이상 정밀도로 하고 마지막에 반올림해야 밴딩이 생기지 않는다(6장).

예제 3 · 인쇄 시안 허용차 ΔE00 2.0 판정

D50·2° 조건에서 측정한 세 쌍의 기준/시편 Lab이 있다. 고객 사양은 ΔE00 ≤ 2.0이다. 각 쌍을 판정하고, 불합격이면 무엇을 고쳐야 하는지 말하라.

쌍기준 Lab시편 LabΔE76ΔE94ΔE00판정
① 녹색70, −40, 5571, −43, 57.54.031.441.26합격
② 청색35, 10, −5535.6, 13.2, −53.53.581.982.78불합격
③ 회색50, 0, 050.4, 1.1, −1.01.541.541.89합격 (경계)
  1. ① 녹색. ΔE76은 4.03으로 크지만 대부분 채도 차(ΔC′ ≈ 3.8)다. 평균 채도가 약 70이라 \(S_C=1+0.045\times70\approx4.1\)로 나눠지며 채도항이 0.92로 줄어든다. ΔE00 1.26으로 합격. 고채도 색의 채도 차는 눈에 잘 띄지 않는다는 실험 사실이 반영된 것이다.
  2. ② 청색. ΔE94로는 1.98로 아슬아슬하게 합격이지만 ΔE00은 2.78이다. 분해하면 색상항 ΔH′/S_H = 2.55가 지배적이고, 평균 색상각 282°가 청색 회전 영역(275° 중심)에 있어 \(R_T=-1.64\)의 교차항이 +0.95를 더한다. 시편이 보라 쪽으로 돌았다(a* 증가). 시안(C) 대비 마젠타(M) 농도를 낮추는 방향으로 조정한다.
  3. ③ 회색. ΔE76은 1.54인데 ΔE00은 1.89로 오히려 커졌다. 저채도에서 \(G=0.5\)가 a*를 1.5배로 늘리기 때문이다. 회색 균형은 눈이 가장 민감한 영역이다. 합격이지만 여유가 0.11밖에 없으므로 회색 균형(CMY 비율)을 점검할 대상이다.
결론. ①, ③ 합격, ② 불합격. 같은 데이터로 ΔE76 기준이면 ①, ②가 모두 불합격, ΔE94 기준이면 모두 합격이 된다. 공식 선택이 판정을 뒤집는다는 것, 그리고 분해된 항 중 가장 큰 것이 조정 방향(②는 색상, ③은 a*)을 가리킨다는 것이 핵심이다.

예제 4 · 조명이 바뀌면 시료 색은 얼마나 변하나 (색 불변성)

CRI 시험색 TCS01(7.5R 6/4, 연한 회적색)을 D65 아래에서 승인했다. 같은 시료를 광원 A(2856 K) 아래에서 본 관찰자가 A에 완전히 순응했다고 할 때, 승인 색과 얼마나 다르게 보이는가?

  1. 각 조명 아래 XYZ. 반사율 × 조명 × CMF 적분. D65: (32.99, 29.78, 24.51), A: (42.34, 32.71, 7.97). A 아래에서 X가 크고 Z가 작은 것은 조명 자체가 붉기 때문이다.
  2. D65 기준 Lab. (61.47, 17.49, 11.89).
  3. A 아래의 대응색. A 백색 (109.85, 100, 35.58)에서 D65 백색 (95.04, 100, 108.88)으로 Bradford 적응하면 Lab (62.81, 18.86, 14.38). D65 대비 ΔE00 = 1.96.
  4. 방법 비교. CAT02로는 ΔE00 1.85, Lab 정규화만 쓰는 “XYZ 스케일링”(A 백색 기준 Lab을 그대로 비교)으로는 3.47이다. 적응을 무시하고 A 아래 XYZ를 D65 Lab으로 보면 17.96이라는 무의미한 값이 된다.
결론. 완전 순응을 가정해도 TCS01은 A 아래에서 약 ΔE00 2만큼 더 노랗게(b* +2.5) 보인다. 이 잔차가 바로 연색성 지수 계산에서 측정하는 “색 이동”이다(CRI는 W*U*V*와 von Kries 변환을 쓰므로 숫자는 다르다, 10장). 같은 계산을 TCS09(진한 빨강)에 하면 Bradford 기준 ΔE00 4.58로, 채도 높은 빨강일수록 조명에 민감하다. 수치는 색순응 모델에 따라 10 % 이상 달라지므로 보고서에 CAT를 명시한다.

도구 1의 반사체 모드에서 기준 백색을 “자동”으로 두면 Lab은 조명 자체의 완전 확산면을 백색으로 쓴다. 즉 4단계의 “XYZ 스케일링” 값 (63.93, 19.37, 16.34)이 나온다. 이를 D65 아래 값 (61.47, 17.49, 11.89)과 함께 도구 3에 넣으면 ΔE00 3.47을 확인할 수 있다.

검산표와 흔한 함정

새로 짠 색 변환 코드는 반드시 알려진 값으로 검산한다. 아래 표는 이 장의 도구로 재현되는 기준값이며, 소수 넷째 자리까지 맞지 않으면 어딘가에서 규약이 어긋난 것이다. 단위 테스트에 그대로 옮겨 쓰기를 권한다.

입력기대 출력틀리면 의심할 것
D65 SPD (2°)xy (0.3127, 0.3290), CCT 6504 K, Duv +0.0032CMF 표 간격·범위, 정규화
D65 SPD (10°)xy (0.3138, 0.3310)관측자 혼용
sRGB 백색 (255,255,255)XYZ (95.05, 100, 108.91)NPM 백색 정규화
sRGB 빨강, D65 Lab(53.24, 80.09, 67.20)디코딩 생략, 백색 Y 스케일 불일치
sRGB 빨강, D50 Lab (Bradford)(54.29, 80.80, 69.89)CAT 누락 또는 방법 차이
sRGB 빨강, OKLab(0.6280, 0.2249, 0.1258)선형화 누락
Sharma 쌍 1 ΔE002.0425평균 색상각 분기, G 계수
sRGB → P3 행렬 1행0.822462, 0.177538, 0행·열 전치, 백색 불일치
NPM sRGB 2행0.2126, 0.7152, 0.0722원색 xy 오기
P3 ∩ Rec.2020 / Rec.2020 (xy)71.7 %면적비와 커버리지 혼동
함정 모음

① Y 스케일 혼용: XYZ는 Y=100인데 백색을 Y=1로 넣으면 L*가 400을 넘는다. ② 행/열 전치: 행렬을 열 벡터 기준(\(\mathbf y=M\mathbf x\))으로 썼는지 행 벡터 기준(\(\mathbf y=\mathbf xM^T\))으로 썼는지 문서화한다. 셰이더·NumPy·MATLAB 관례가 다르다. ③ 클리핑 순서: 색공간 행렬과 광량 연산 전에 클리핑하면 복구할 수 있는 가멋 밖 정보까지 잃는다. 변환·가멋 매핑을 마친 뒤 출력 범위를 제한한다. 단조 sRGB 인코딩과 채널별 [0,1] 클리핑만 비교하면 순서는 같은 결과를 낸다. 색상 이동의 원인은 채널별 클리핑 자체다. ④ CCT 하나로 백색 지정: 같은 6500 K에도 Duv에 따라 녹색·분홍 백색이 모두 존재한다. 백색 사양은 항상 (CCT, Duv) 또는 xy로 준다. ⑤ ΔE 공식 미표기: “ΔE 2 이내”는 ΔE76인지 ΔE00인지에 따라 전혀 다른 요구다.

핵심 정리

  1. 모든 색 좌표는 XYZ 하나에서 갈라져 나온다. 투영 좌표(xy, u′v′)도 표준 관측자와 색도 좌표계가 필요하지만, 지각 좌표(Lab)는 기준 백색을, 장치 좌표(RGB)는 원색·백색·전달 함수를 필요로 한다.
  2. 숫자를 넘길 때는 Y 스케일, 관측자(2°/10°), 기준 백색, 색순응 방법을 함께 적는다. sRGB 빨강의 Lab만 해도 D65와 D50(Bradford)에서 ΔE00 약 1이 차이 난다.
  3. 정밀 CCT는 CIE 1960 uv에서 흑체 궤적 최근접점이고, Duv는 그 거리다. D65는 6504 K, Duv +0.0032. McCamy 근사는 궤적 근처 2,800–6,500 K에서만 10 K 이내 정확도이고 Duv를 주지 않는다.
  4. 주파장은 기준 백색에 따라 바뀌고, 보라 계열은 주파장 대신 여색 파장으로 표기한다.
  5. ΔE76·ΔE94·ΔE00은 같은 시편 쌍에 대해 두세 배 다른 값을 낼 수 있다. ΔE00을 항별로 분해하면 가장 큰 항이 공정 조정 방향을 알려 준다.
  6. RGB→RGB 변환은 \(M_\text{dst}^{-1}\,\text{CAT}\,M_\text{src}\) 하나의 3×3 행렬이며, 선형 값에 적용한다. 행 합 = 1, 백색 → 백색이 1차 검증이다.
  7. 가멋 수치는 면적비와 커버리지, xy와 u′v′를 구별해야 한다. P3는 xy에서 Rec.2020의 71.7 %를 덮는다.
  8. 새 코드는 검산표(D65 xy·CCT, sRGB 빨강 Lab, Sharma 쌍, sRGB→P3 행렬)로 단위 테스트를 만든다.

확인 퀴즈

1. 어떤 백색 LED가 CCT 5000 K, Duv −0.004로 측정됐다. 이 광원의 겉보기 색 특성은?

Duv는 CIE 1960 uv에서 흑체 궤적까지의 부호 있는 거리다. 음수는 궤적 아래쪽(마젠타 쪽)을 뜻한다. |Duv| ≤ 0.05이므로 CCT는 정의된다.

2. sRGB 빨강의 Lab을 D65 기준으로 계산하면 (53.24, 80.09, 67.20)이다. ICC 워크플로처럼 D50 기준으로 다시 계산하려면 무엇이 필요한가?

백색만 바꾸면 XYZ 스케일링 적응을 암묵적으로 쓰는 것과 같고, 결과도 ICC 관행과 다르다. ICC PCS는 Bradford로 적응한 D50 XYZ에서 Lab을 계산해 (54.29, 80.80, 69.89)를 얻는다.

3. 정밀 CCT 계산에서 흑체 궤적을 온도 T 대신 mired(10⁶/T)로 탐색하는 이유로 가장 알맞은 것은?

T로 등간격을 잡으면 고온 쪽은 색도가 거의 변하지 않고 저온 쪽은 급변한다. mired 간격은 색도 차이와 대략 비례해 1–1000 mired 격자 하나로 1000 K–10⁶ K를 고르게 덮는다.

4. 마젠타 시료의 주파장을 구하려 하는데, 백색에서 시료로 그은 반직선이 보라 직선과 만났다. 올바른 보고 방식은?

보라 직선 위의 색은 단색광이 아니다. 관례상 백색을 사이에 둔 반대쪽 스펙트럼 교점, 즉 여색 파장으로 표기한다. 순도의 분모는 보라 직선까지의 거리다.

5. 고채도 녹색 쌍에서 ΔE76 = 4.03인데 ΔE00 = 1.26이었다. 주된 이유는?

평균 채도가 약 70이면 S_C ≈ 4.1이다. 차이의 대부분이 채도 방향이었으므로 ΔE00에서 크게 줄어든다. RT는 청색 영역에서만, G는 저채도에서만 의미가 있다.

6. ΔE94는 두 색의 순서를 바꾸면 값이 달라질 수 있다. 왜 그런가?

CIE 1994 공식은 기준 시료의 채도로 가중치를 정한다(대칭형 변형으로 기하 평균을 쓰기도 한다). ΔE76과 ΔE00은 대칭이다.

7. 백색점이 같은 두 RGB 공간 사이의 변환 행렬을 만들었더니 첫 행의 합이 1.04였다. 가장 가능성 높은 원인은?

백색 (1,1,1)은 (1,1,1)로 가야 하므로 행 합은 1이다. 이 조건이 깨지면 NPM 구성이나 입력값이 틀린 것이다. 감마는 행렬 밖의 문제다.

8. 패널 사양서에 “DCI-P3 105 %”라고 쓰여 있다. 이 숫자에 대해 옳은 것은?

커버리지는 교집합/기준이므로 100 %를 넘을 수 없다. 105 %는 면적비이며, 삼각형이 치우쳐 있으면 P3의 일부 색은 재현하지 못한다.

9. sRGB 신호 (128, 128, 128)과 (0, 0, 0)을 50 % 블렌딩하려 한다. 올바른 결과 신호값에 가까운 것은?

128은 선형 0.216이다. 절반은 0.108이고, 이를 sRGB 곡선으로 인코딩하면 약 0.362 → 92가 된다. 신호값에서 평균 낸 64는 지나치게 어둡다.