颜色与相机成像专题(2):颜色从哪里来?从光谱、同色异谱到 CIE XYZ
为什么三种光可以表达大量颜色?为什么两个物体看起来颜色相同,换一盏灯却不同?本文从光谱出发,建立后续理解白平衡和色彩空间所需的基础。
关键词:光谱、同色异谱、CIE XYZ、色度图、颜色科学
1. 颜色不是物体自带的一组三通道数
说"番茄是红色的"很自然,但相机真正收到的是来自番茄的光。对非荧光、漫反射表面的简化描述是:
L ( λ ) ∝ E ( λ ) ρ ( λ ) L(\lambda)\propto E(\lambda)\rho(\lambda) L(λ)∝E(λ)ρ(λ)
E ( λ ) E(\lambda) E(λ) 是入射光谱, ρ ( λ ) \rho(\lambda) ρ(λ) 是表面光谱反射率, L ( λ ) L(\lambda) L(λ) 是朝观察方向传播的光谱辐亮度。比例关系省略了几何因素;镜面反射、自发光和荧光物体需要更完整的模型。
同一个番茄放在不同灯下, ρ ( λ ) \rho(\lambda) ρ(λ) 可以不变,但 E ( λ ) E(\lambda) E(λ) 改变,因此进入眼睛或相机的光谱也会改变。讨论物体颜色时,如果不说明照明和观察条件,就容易把不同问题混在一起。
2. 人眼如何把光谱压缩成三个响应?
人眼在明视觉条件下主要通过三类视锥细胞产生颜色信息,通常记为 S、M、L,对短、中、长波段有不同的响应。它们的响应曲线有明显重叠,不能简单想象成三个互不相交的红、绿、蓝滤光片。
以 L 类视锥为例,其响应可以抽象为:
r L = ∫ L ( λ ) s L ( λ ) d λ r_L=\int L(\lambda)s_L(\lambda)\,d\lambda rL=∫L(λ)sL(λ)dλ
【补充lambda是什么东西,最好你的这个含义可以加一个中文解释,比如L的xxx,xxx怎么相当于用中文解释替换里面的数学符号,额外解释一轮】
其他两类类似。完整光谱包含大量维度,而观察系统最终只保留三个加权积分,所以信息一定会丢失。

图 1:曲线是帮助理解积分过程的示意,不是实测光谱或官方 CIE 数据。
暗视觉下,视杆细胞的作用增强;观察亮度、适应状态、视场等也影响颜色感知。因此"三个数决定颜色"应放在约定的观察条件下理解。
3. 同色异谱:颜色相同,光谱可以不同
如果两个不同光谱经过观察者的三通道加权积分后得到相同结果,就可能被感知为同一种颜色。这称为同色异谱。
【这里的光谱怎么理解,可以理解为一道光,就是带有分布的一种光谱?自然光是一种光谱?我们在自然光的环境下,进行拍摄,拍摄后加上一系列图像处理,实现同色异谱(补充英文原文)的效果?怎么产线你说的这个光谱,这个是不是可以用来说明相机如何还原显示世界色彩】

图 2:讲义 PDF 第 33 页。真实生菜与印刷图像可以产生相似颜色感觉,但对应的光谱分布不同。
它带来两个实际结论:
- 一般不能仅凭 RGB 或 XYZ 唯一恢复完整光谱。光谱重建模型必须依赖额外假设或先验。
- 对人眼同色的两种光谱,对某台相机未必同色,因为相机的光谱响应不等于人眼的响应。
还要区分固定条件下的同色异谱与"换灯后仍然相同"。两块色样在一种光源下匹配,不代表在另一种光源下仍然匹配。产品配色、纺织检测和跨相机颜色标定都可能受到影响。
4. CIE RGB:先做颜色匹配实验
早期颜色科学通过实验询问观察者:如何调节三束基色光的强度,让它们混合后与测试色匹配?

图 3:讲义 PDF 第 43 页。标准化实验把主观感受转化为可记录的匹配系数。
有些测试色不能仅靠向匹配侧添加三种基色得到。这时可将某种基色加到测试色一侧,再实现匹配。把等式移项后,这种操作对应"负的匹配系数"。
负系数并不表示灯泡真的发出了负能量,而是说明选定的三个真实基色无法通过非负混合覆盖所有可见颜色。
5. CIE XYZ:一种标准的颜色坐标
CIE XYZ 在颜色匹配实验的基础上,通过线性变换构造了一套便于使用的坐标。它的三条颜色匹配函数记为 x ˉ ( λ ) \bar{x}(\lambda) xˉ(λ)、 y ˉ ( λ ) \bar{y}(\lambda) yˉ(λ)、 z ˉ ( λ ) \bar{z}(\lambda) zˉ(λ)。
X = k ∫ L ( λ ) x ˉ ( λ ) d λ X=k\int L(\lambda)\bar{x}(\lambda)\,d\lambda X=k∫L(λ)xˉ(λ)dλ
Y = k ∫ L ( λ ) y ˉ ( λ ) d λ , Z = k ∫ L ( λ ) z ˉ ( λ ) d λ Y=k\int L(\lambda)\bar{y}(\lambda)\,d\lambda,\qquad Z=k\int L(\lambda)\bar{z}(\lambda)\,d\lambda Y=k∫L(λ)yˉ(λ)dλ,Z=k∫L(λ)zˉ(λ)dλ
k k k 取决于绝对测量还是相对归一化的约定。实际程序通常在离散波长上求和,同时考虑采样间隔。

图 4:讲义 PDF 第 48 页,CIE 1931 2° 标准观察者的颜色匹配函数。
XYZ 的重要性质不是"颜色更鲜艳",而是提供了跨设备讨论颜色的共同参照。它不是传感器原生 RGB,也不是三盏可以实际制造出来的 XYZ 灯。 Y Y Y 被设计为与明视觉亮度测量相关的分量。
"设备无关"也不等于无条件统一:观察者、参考白、测量几何和数值归一化仍必须明确。
6. 辐射量、光度量与感觉,分别是什么?
| 概念 | 关注什么 | 例子 |
|---|---|---|
| 辐射度学 | 光的物理能量 | 辐照度、辐亮度 |
| 光度学 | 按人眼明视觉敏感度加权的光量 | 照度 lux、亮度 cd/m² |
| 色度学 | 标准观察者下的颜色匹配 | XYZ 三刺激值 |
| 主观感知 | 观察者觉得多亮、什么颜色 | brightness、色适应 |
两个光源具有相同物理功率,不代表看起来一样亮,因为人眼对不同波长的敏感度不同。相反,相同 XYZ 也不能证明两个光源具有相同光谱。
7. xyY:把色度和亮度拆开
当 X + Y + Z > 0 X+Y+Z>0 X+Y+Z>0 时,定义:
x = X X + Y + Z , y = Y X + Y + Z x=\frac{X}{X+Y+Z},\qquad y=\frac{Y}{X+Y+Z} x=X+Y+ZX,y=X+Y+ZY
再保留原来的 Y Y Y,就得到 xyY。已知 x , y , Y x,y,Y x,y,Y 且 y > 0 y>0 y>0 时:
X = x Y y , Z = ( 1 − x − y ) Y y X=\frac{xY}{y},\qquad Z=\frac{(1-x-y)Y}{y} X=yxY,Z=y(1−x−y)Y
例如 ( X , Y , Z ) = ( 0.3 , 0.4 , 0.3 ) (X,Y,Z)=(0.3,0.4,0.3) (X,Y,Z)=(0.3,0.4,0.3) 与 ( 0.6 , 0.8 , 0.6 ) (0.6,0.8,0.6) (0.6,0.8,0.6) 的 x , y x,y x,y 相同,但亮度分量不同。色度图只画 x , y x,y x,y,正是把这类强度差异压掉了。纯黑点的色度没有定义,不应直接用零分母计算。

图 5:讲义 PDF 第 57 页。二维马蹄形图便于讨论基色和白点,但不能完整表示三维颜色体积。
数学上,这是沿射线归一化到 X + Y + Z = 1 X+Y+Z=1 X+Y+Z=1 平面,再使用两个坐标。不能把讲义中的简写理解为同时投到三个平面 X = 1 X=1 X=1、 Y = 1 Y=1 Y=1、 Z = 1 Z=1 Z=1。
图中的距离也不是均匀的感知色差;显示器无法真正显示所有边界颜色,因此图里填充的颜色只能辅助理解。
8. 对视觉工程有什么帮助?
如果两个设备都经过了可靠标定,可以先映射到共同的 XYZ 表示,再讨论颜色差异。如果直接比较两个设备的原生 RGB,差异可能来自光谱响应,而不全是算法误差。
如果任务要求识别材料而非"看起来是什么颜色",还应考虑照明变化和同色异谱。只有三个通道时,有些材料本来就不可区分,需要更好的照明设计、更多波段,或者其他视觉线索。
参考与出处
- Michael S. Brown,ICCV 2019 教程,PDF 第 24~61 页;照明与反射关系见第 63~64 页。
上一篇:为什么照片不是光照测量