2. 光源与色温:黑体辐射、标准光源D65/A、色温与相关色温(CCT)
好,我们正式开始第二讲。光源与色温,这俩概念是自动白平衡的根基。说白了,你连「光是什么颜色」都没搞清楚,后面调白平衡、调CCM(色彩校正矩阵)就是瞎忙活。
我刚开始做图像算法那会儿,就犯过这个错。拿着一个色温计测出来的数据,直接往算法里怼,结果拍出来的照片偏蓝偏得一塌糊涂。后来才明白,我测的是「相关色温」,不是真正的「色温」。这俩差一个字,物理意义完全不同。
2.1 黑体辐射:光的颜色从哪来?
先聊黑体辐射。你想象一个理想物体,它能吸收所有照射到它身上的电磁波,不反射、不透过。然后你加热它——它就开始发光了。
温度低的时候,发红光。温度再高点,发黄光。再高,发白光。再高,发蓝光。这就是黑体辐射的轨迹。
普朗克公式描述了这件事:
M(λ, T) = (2πhc² / λ⁵) × 1 / (e^(hc/λkT) - 1)
其中:
- M:光谱辐射出射度
- λ:波长
- T:温度 (K)
- h:普朗克常数
- c:光速
- k:玻尔兹曼常数
公式看着复杂,但核心就一句话:温度决定颜色。温度越高,峰值波长越短,颜色越偏蓝。
关键理解:黑体辐射的色度坐标在CIE 1931色度图上形成一条连续的曲线,这就是「普朗克轨迹」。所有真实光源的色度点,要么落在这条线上,要么落在附近。
2.2 色温 vs 相关色温 (CCT)
这里有个坑,我踩过,所以必须讲清楚。
色温:只有黑体辐射光源才有真正的色温。比如白炽灯,它的光谱接近黑体辐射,所以可以说它的色温是2800K。
相关色温 (CCT):对于非黑体辐射光源(比如荧光灯、LED),它的色度点不在普朗克轨迹上。这时候我们找一条「等温线」,把它的色度点投影到普朗克轨迹上,投影点对应的温度就是相关色温。
你想想看,一个荧光灯管,它的光谱是离散的线状谱,跟黑体辐射完全不是一回事。但我们还是说它「色温5000K」,其实严格来讲是「相关色温5000K」。
| 概念 | 适用光源 | 物理意义 | 精度 |
|---|---|---|---|
| 色温 (CCT) | 黑体辐射光源(白炽灯、卤素灯) | 实际温度 | 精确 |
| 相关色温 (CCT) | 非黑体辐射光源(荧光灯、LED、日光) | 等效温度 | 近似 |
避坑指南:我曾经在调试一个手机摄像头时,发现AWB算法在荧光灯下总是偏绿。查了半天,发现算法把荧光灯的CCT当成了真实色温,直接用普朗克轨迹上的白平衡增益去校正。荧光灯的光谱在绿色波段有尖峰,这么校正当然偏绿。后来我加了一个「光源类型识别」模块,先判断光源类型,再选择对应的校正策略,问题才解决。
2.3 标准光源:D65 和 A
做图像处理,必须要有「标准」作为参考。CIE(国际照明委员会)定义了几种标准光源,其中D65和A是最常用的。
2.3.1 标准光源 D65
D65代表平均日光,相关色温6500K。它是我们做白平衡校正的「黄金标准」。几乎所有图像传感器的参考白点,都是基于D65定义的。
D65的光谱分布是连续的,覆盖了整个可见光波段。它的色度坐标在CIE 1931色度图上是:
x = 0.3127, y = 0.3290
这个点,就是我们在AWB算法中常说的「理想白点」。
2.3.2 标准光源 A
光源A代表白炽灯,相关色温2856K。它的光谱偏向红色/黄色波段,是典型的「暖色」光源。
光源A的色度坐标:
x = 0.4476, y = 0.4074
你看,跟D65比,x和y都大了不少,说明它更偏红黄。
| 标准光源 | 相关色温 (K) | CIE 1931 (x, y) | 典型场景 |
|---|---|---|---|
| D65 | 6500 | (0.3127, 0.3290) | 晴天户外、标准日光 |
| A | 2856 | (0.4476, 0.4074) | 白炽灯、暖色室内 |
个人习惯:我在做AWB算法评估时,一定会准备D65和A两个标准光源下的灰卡图像。这两个极端(冷色和暖色)能快速暴露算法的偏差。如果D65下白平衡准确,但A下偏蓝,说明算法对低色温的补偿不够。
2.4 色温与白平衡的关系
色温直接影响白平衡增益的计算。简单来说:
- 低色温(暖色):光源偏红黄,图像偏暖。白平衡需要增加蓝色增益,减少红色增益。
- 高色温(冷色):光源偏蓝,图像偏冷。白平衡需要增加红色增益,减少蓝色增益。
用公式表示就是:
R_gain = G / R_avg
B_gain = G / B_avg
其中R_avg、B_avg是图像中参考白点的红色和蓝色通道平均值,G是绿色通道平均值(通常作为基准)。
但这里有个问题:你怎么知道当前场景的色温?
嗯,这就是AWB算法的核心——色温估计。常用的方法有:
- 灰度世界法:假设场景中所有颜色的平均是灰色,从而估计色温。
- 完美反射法:假设场景中最亮的点是白色,从而估计色温。
- 色温查找表法:预先在不同色温下拍摄灰卡,建立色温到增益的映射表。
我个人更倾向于第三种。前两种在复杂场景下容易翻车,比如大面积单色物体(蓝天、绿草)会让灰度世界法完全失效。
2.5 知识结构图:光源、色温与白平衡
下面这张图,把本章的核心逻辑串起来了。你看一遍,应该能明白色温在整个白平衡流程中的位置。
2.6 实战中的色温处理
最后聊点实战经验。你在实际项目中处理色温,有几个点必须注意:
- 色温计不是万能的:消费级的色温计精度有限,而且只能测单点。场景中不同区域的色温可能不同(比如窗口边和室内深处)。
- 混合光源是噩梦:室内既有日光(从窗户进来),又有白炽灯,还有LED屏幕。这时候整个场景的色温是空间变化的,单一色温值无法描述。
- 人眼有适应性:人眼会自动校正色温,但相机不会。所以有时候你觉得「挺正常的」场景,拍出来偏色严重。
我的建议:在做AWB算法时,不要只依赖色温估计。结合场景识别(室内/室外、白天/夜晚、有无主光源)和统计信息(直方图、色度分布),综合判断。单一方法在真实场景中很容易翻车。
好,这一讲就到这里。色温的概念搞清楚了,后面讲白平衡算法和CCM调优时,你就能理解为什么不同色温下需要不同的校正参数了。