3. 色度学基础:CIE 1931 XYZ色彩空间、色品坐标、色温定义
好,咱们进入正题。色度学这东西,说白了就是给颜色上户口。你肉眼看到的红绿蓝,在工程师眼里必须是一串数字,否则没法计算、没法复现、没法校准。这一章我们就把这套数字体系讲透。
3.1 从三刺激值到CIE 1931
1920年代末,Wright和Guild做了个很“笨”的实验——让受试者盯着一个半圆屏幕,左边打上待测色光,右边让他们自己调红绿蓝三盏灯,直到两边颜色看起来一模一样。结果发现:大部分人需要把其中一盏灯调到负值才能匹配某些颜色。
负值?这在实际工程里没法用。所以1931年CIE做了个数学变换,把负值全部消掉,搞出了一套标准观察者曲线——这就是CIE 1931 RGB色彩空间的前身。后来为了计算方便,又做了第二次线性变换,得到了XYZ色彩空间。
核心概念:XYZ色彩空间里的X、Y、Z不是真实的红绿蓝,而是三个虚构的“基色”。其中Y直接代表亮度,X和Z只负责色度信息。这个设计非常巧妙——你调整亮度时只动Y就行,XZ不变。
我个人习惯把XYZ理解成“颜色坐标系”。就像用经纬度定位地球上的点一样,用XYZ就能定位任何一种颜色。但注意,XYZ是三维的,而我们人眼对颜色的感知其实是二维的(去掉亮度后只剩色调和饱和度)。所以就有了色品坐标。
3.2 色品坐标 (x, y) 与色品图
色品坐标的公式很简单:
x = X / (X + Y + Z)
y = Y / (X + Y + Z)
z = Z / (X + Y + Z) = 1 - x - y
你看,x + y + z = 1,所以只要知道x和y,z就自动确定了。这就是为什么CIE 1931色品图是二维的——横轴x,纵轴y,所有颜色都落在那个马蹄形区域内。
我在项目中遇到过一件事:有次做LED灯具的色温标定,供应商给的色品坐标是(x=0.3127, y=0.3290),我一看就知道这是D65标准光源。为什么?因为D65的色品坐标我背过——(0.3127, 0.3290)。
实用技巧:常用标准光源的色品坐标建议记几个:A光源(0.4476, 0.4074)、D65(0.3127, 0.3290)、C光源(0.3101, 0.3162)。做色温计算时经常要用到。
色品图上有几个关键特征:
- 马蹄形边界——代表单色光(光谱色),也就是饱和度最高的颜色
- 底部直线——连接红色端和蓝色端,代表品红色系(非光谱色)
- 中心区域——白色区域,色温线就从这里穿过
嗯,这里要注意:色品图上的距离并不代表人眼感知的颜色差异。两个点距离很近,但人眼看可能差别很大;反过来,距离很远也可能感觉差不多。这就是CIE 1931色品图的局限性——它不均匀。后来才有了CIE 1976 UCS色品图,那个更接近人眼感知,但那是后话了。
3.3 色温的定义与黑体轨迹
色温这个概念,其实是从黑体辐射借来的。你加热一块金属,温度从低到高,它会依次发出红光、橙光、黄光、白光、蓝光。这个颜色变化轨迹在色品图上就是一条曲线——叫做普朗克轨迹(也叫黑体轨迹)。
色温的定义很简单:如果一个光源的颜色与黑体在某个温度T下发出的颜色相同,我们就说这个光源的色温是T,单位开尔文(K)。
注意:色温不是光源本身的物理温度。LED灯珠的结温可能只有80°C,但它的色温可能是5000K。色温描述的是颜色外观,不是热量。
黑体轨迹上的色温范围大致是:
| 色温范围 | 颜色外观 | 典型场景 |
|---|---|---|
| 1000K - 2000K | 橙红色 | 烛光、日出日落 |
| 2000K - 3000K | 暖白色 | 白炽灯、暖色LED |
| 3000K - 4500K | 中性白色 | 办公室照明、荧光灯 |
| 4500K - 5500K | 日光白色 | 正午阳光、D50/D65 |
| 5500K - 7000K | 冷白色 | 阴天、荧光灯 |
| 7000K - 10000K | 蓝白色 | 蓝天、高色温LED |
我曾经踩过一个坑:客户要求色温3000K,我按黑体轨迹上的点去配LED,结果做出来颜色偏绿。后来才发现,LED的光谱和黑体不一样,虽然色品坐标相同,但显色性差很多。从那以后,我每次做色温匹配都会同时检查显色指数。
3.4 相关色温(CCT)——当颜色不在黑体轨迹上时
现实世界中的光源,很少有恰好落在黑体轨迹上的。LED、荧光灯、显示器,它们的色品坐标通常偏离轨迹。这时候就需要相关色温的概念。
相关色温的定义:在色品图上,找到黑体轨迹上离该光源最近的那个点,那个点的色温就是相关色温。这个“最近”用的是欧几里得距离,但在CIE 1931色品图上直接算距离会有误差,所以实际计算时通常转换到CIE 1960 UCS色品图(u, v坐标)上去算。
关键公式:在(u, v)色品图上,光源点(u₀, v₀)到黑体轨迹上某点(u(t), v(t))的距离为:
d = √[(u₀ - u(t))² + (v₀ - v(t))²]
找到使d最小的t值,对应的温度T就是相关色温。
你想想看,这个计算其实是个优化问题。黑体轨迹是一条参数曲线,参数就是温度T。我们要找曲线上离光源点最近的点。常用的方法有:
- 查表法——预先计算好黑体轨迹上大量离散点的(u, v)坐标,然后找最近邻
- 迭代法——用牛顿法或二分法逼近最优温度
- 解析近似法——用多项式拟合黑体轨迹,然后求解析解
我个人习惯用查表法加插值,速度快,精度也够。后面章节我会给出具体的代码实现。
3.5 本章知识结构图
下面这张图把CIE 1931色彩空间、色品坐标、色温、相关色温的关系梳理清楚了:
3.6 避坑指南与实用建议
做色温计算这几年,我总结了几条经验:
避坑1:我曾经直接用CIE 1931色品图上的欧几里得距离算相关色温,结果和标准值差了200K。后来才发现,1931色品图不均匀,必须转换到(u, v)坐标再算。这个坑很多人都会踩。
避坑2:色温低于4000K时,黑体轨迹在色品图上弯曲得很厉害,查表法要加密采样点。我一般会在2000K-4000K区间每10K取一个点,4000K以上每50K取一个点。
避坑3:有些光源(比如荧光灯)的色品坐标可能落在黑体轨迹的“下方”,也就是偏绿方向。这时候算出来的相关色温虽然数值正确,但实际视觉效果和同色温的黑体差很多。所以做照明设计时,除了看CCT,一定要看Duv(偏离黑体轨迹的距离)。
好了,这一章的内容就到这里。色度学基础打牢了,后面讲色温计算算法时你才不会晕。记住:XYZ是根,色品坐标是干,色温和相关色温是果。根扎得深,果才结得实。