第1部我们看到,颜色归根结底是L·M·S三个数的比例。但要把「我看到的红」精确传达给别人,需要的不是感觉,而是人人都能复现的标准坐标。1931年,国际照明委员会(CIE)让人坐到实验台前测量颜色,其结果成为今天一切显示器、相机与印刷的基石。
1. 测量颜色 — 颜色匹配
方法出奇地简单而优美。把圆形视场分为两半,一半照射待测的单色光(单一波长),另一半照射三种原色,红(700nm)、绿(546.1nm)、蓝(435.8nm)的混合。
观察者转动三原色的亮度旋钮,使两半看起来完全相同。匹配瞬间的三个值R·G·B,就是该波长之色「用三原色表示的坐标」。对所有可见波长重复此实验,便得到三条曲线:每个波长各需多少R·G·B。
图 1. 颜色匹配实验。视场分为两半,一半照射待测单色光,另一半照射三原色(R 700·G 546·B 436nm)的混合,转动旋钮直到两半看起来相同。
2. 颜色匹配函数 r̄ ḡ b̄
这三条曲线就是颜色匹配函数。r̄(λ)·ḡ(λ)·b̄(λ)告诉你复现每个波长各需多少R·G·B。任意光的颜色由此积分得到。
可初看曲线会发现怪处。r̄(λ)有一段降到零以下,变成了负值。给光加上「负的量」究竟是什么意思?每个学颜色匹配的人都会在此卡住。
图 2. CIE RGB颜色匹配函数 — 复现各波长所需的R·G·B量。注意r̄(λ)在约440–545nm之间降到零以下,变为负值。
颜色匹配模拟 ● LIVE
左侧单色光源产生待测色,右侧三原色产生混合色。青色波段R变为负值时,不是右侧而是左侧辅助光源点亮,把R加到待测色 — 这正是颜色匹配函数中的负值。
3. 为何出现负值
关键在此。某种青色(约500nm)单色光太纯太饱和,无论怎样相加红、绿、蓝都达不到那样的青。混合只会越混越浊。
于是实验者反转思路。不在原色一侧,而是把少许红加到待测的青色一侧,让它略微变浊,再与剩下的绿+蓝匹配。写成方程:「待测色 + 红 = 绿 + 蓝」,即「待测色 = 绿 + 蓝 − 红」。这被减去的红正是负的r̄。
换言之,负值是「加到另一侧之光」的记录。并非物理上减光,而是人类色觉的极限 — 有些颜色只有靠减才能匹配 — 被刻进了数字。它也意味着仅凭三种真实原色,无法用正值表示一切颜色。
图 3. 负值的真相。饱和的青色(≈500nm)无法靠相加R·G·B得到。于是把红加到「待测色一侧」使其变浊再匹配 — 方程中红被减去(−R),记为负值。
4. 消除负值的X·Y·Z
负值不便于计算。于是CIE做了巧妙的变换:定义了三个并不真实存在的虚拟原色X·Y·Z。它们比任何真实光都更饱和、物理上无法制造,但作为坐标却完美运作。
用这些原色改写后,所有匹配函数x̄·ȳ·z̄在全域均为正。更妙的是,ȳ(λ)被设计为与人感知的亮度一致,故单一Y值即为光度。
对任意光S(λ),如下积分即得三个数X·Y·Z,即三刺激值。第1部的「L·M·S三个数」在此被标准化为X·Y·Z三个数。
X = ∫ S(λ) x̄(λ) dλ Y = ∫ S(λ) ȳ(λ) dλ Z = ∫ S(λ) z̄(λ) dλ
图 4. CIE 1931 XYZ颜色匹配函数。用虚拟原色X·Y·Z改写后,三函数在全域均为正。ȳ(λ)被设计为与人感知的亮度(光度)一致。
5. CIE 1931色度图 — 马蹄形
三刺激值X·Y·Z是三维的,不便画在纸上。于是剥离亮度,只把「色相·饱和度」投影到二维(下式)。这个(x, y)平面便是著名的马蹄形色度图。
外缘曲线是纯单色光的光谱轨迹,下方直线是连接红与蓝的紫线,中心是白点。一切真实颜色都落在此马蹄形内。显示器能表现的颜色范围(色域, gamut)画作其中的三角形 — sRGB、DCI-P3、BT.2020是逐渐变大的三角形。
x = X / (X+Y+Z) y = Y / (X+Y+Z)
图 5. CIE 1931 xy色度图。外缘曲线为纯单色光(光谱轨迹),下方直线为紫线,中心为白点。一切真实颜色都落在此马蹄形内。显示器色域是其中的三角形。
6. 1931的局限 — 并不均匀
CIE 1931是一场革命,却有一个弱点:在色度图上,相同的距离并不意味着相同的「色差」。
1942年麦克亚当测量了人「刚能察觉差异」的边界,结果呈现为小椭圆。问题是这些椭圆的大小与方向随位置各不相同 — 绿色区巨大(迟钝),蓝色区很小(敏感)。即便在坐标上测两色的距离,也与人的体感差异不成比例。
要管理颜色 — 比如用一个数判定两块面板是否足够接近 — 就需要距离=差异成立的更均匀坐标。
图 6. 麦克亚当椭圆(概念图)。「刚能察觉的色差」边界,随位置不同大小与方向各异 — 绿色区巨大(迟钝),蓝色区很小(敏感)。距离 ≠ 体感差异。
7. 更均匀 — CIE 1976 u'v'与CIELAB
第一次修正是将坐标非线性地重新拉伸,使麦克亚当椭圆尽量接近圆。由此产生了CIE 1976 UCS,即u'v'色度图(下式),椭圆铺展得均匀得多。
同年CIE更进一步,定义了包含亮度的三维均匀色空间CIELAB(L*a*b*)。L*为亮度(0黑~100白),a*为绿(−)↔红(+),b*为蓝(−)↔黄(+)轴 — 正是把第1部的对立色结构直接化为坐标。
变换是把XYZ除以参考白,再经一个立方根状函数。关键效果很简单:两色之差如今可仅以两点间的距离来度量。
u′ = 4X / (X+15Y+3Z) v′ = 9Y / (X+15Y+3Z)
L* = 116·f(Y/Yn) − 16
a* = 500·[f(X/Xn) − f(Y/Yn)] b* = 200·[f(Y/Yn) − f(Z/Zn)]
图 7. CIE 1976 u'v'色度图。把1931马蹄形非线性拉伸,使色差更少依赖位置。绿色区域被压缩,整体铺展得更均匀。
图 8. CIELAB色空间。L*为亮度(0~100),a*为绿(−)↔红(+),b*为蓝(−)↔黄(+)。把第1部的对立色结构直接化为坐标轴。a*b*平面是真实色彩的色相·彩度轮。
8. 色差的完成 — 从ΔE76到CIEDE2000
在CIELAB中,两色之差是欧氏距离ΔE*ab(下式,1976)。直观且沿用已久,但CIELAB也并非完全均匀,尤其在蓝色与高彩度区域与人的感觉偏离。
于是1994年、继而2000年出现了修正式。当前的工业标准CIEDE2000(ΔE00)对明度、彩度、色相之差分别加权(SL·SC·SH),彩度越高越弱化差异,并加入捕捉蓝区色相-彩度相互作用的旋转项(RT)。
公式冗长复杂,但目的只有一个 — 让计算出的单个ΔE尽量贴合人实际感受的色差。ΔE00约为1,便是训练有素的眼睛勉强能分辨的差异,那正是今天显示器、印刷与涂料的质量标准。
ΔE*ab = √( ΔL*² + Δa*² + Δb*² )
ΔE00 = √[ (ΔL′/kLSL)² + (ΔC′/kCSC)² + (ΔH′/kHSH)² + RT·(ΔC′/kCSC)(ΔH′/kHSH) ]
图 9. 色差ΔE的演进。ΔE76是简单的欧氏距离;CIEDE2000为明度·彩度·色相加权(SL·SC·SH)并加入蓝区修正(旋转项RT),以贴合体感。
两部作结
若第1部是「眼睛造出颜色」的生物学,第2部便是「把那颜色钉成人人共享之数」的标准史。从L·M·S三种视锥,到X·Y·Z三刺激值、马蹄形色度图,再到CIEDE2000 — 我们之所以能说每天所见屏幕的颜色「准确」,全靠这一个世纪的测量。这些坐标在真实显示器中如何用于色域、校准与色彩管理,留待下次再谈。