2、色温与光源:黑体辐射与色温、常见光源色温表(D65、A、TL84等)、相关色温(CCT)与色温偏移
聊白平衡,绕不开色温。说白了,色温就是描述光源颜色的一个数值。你想想看,为什么日光灯下拍的照片发绿?为什么白炽灯下发黄?这些现象背后,都是色温在作怪。
我刚开始做ISP调试那会儿,总觉得色温是个很玄的概念。后来真正理解了黑体辐射,才发现它其实很直观。
2.1 黑体辐射与色温
什么是黑体?一个理想的物体,能吸收所有入射的电磁辐射,不反射也不透射。给它加热,它会发光。温度不同,发光的颜色也不同。
温度低的时候,黑体发红光。温度升高,变成橙黄。再升高,变成白、蓝白。这个颜色变化的轨迹,在色度图上就是一条曲线——普朗克轨迹。
核心概念:色温就是黑体辐射到某个颜色时对应的开尔文温度。单位是K(开尔文)。
比如:一个光源的颜色和3000K的黑体一样,我们就说它的色温是3000K。
这里有个容易混淆的点——色温越高,颜色越冷(偏蓝);色温越低,颜色越暖(偏红)。我当年第一次接触时也觉得很反直觉。为什么3000K是暖黄,6500K反而是冷白?
嗯,你记住一个场景就好:铁匠打铁。铁块刚开始加热是暗红(低温),烧到白热化(高温)就是亮白。温度再高,就带蓝色了。这样想是不是好理解多了?
2.2 常见光源色温表
实际工作中,我们不会每次都去查黑体辐射曲线。行业内有一些标准光源,它们的色温是固定的。我整理了一张表,这些数值我建议你记下来,调试时经常用到。
| 光源名称 | 相关色温 (CCT) | 典型场景 | 特点 |
|---|---|---|---|
| D65 | 6504K | 晴天正午日光 | 标准白光,白平衡基准 |
| D50 | 5003K | 印刷、摄影灯箱 | 偏暖,常用于印刷行业 |
| A | 2856K | 白炽灯、钨丝灯 | 暖黄光,R/G通道增益大 |
| TL84 | 4000K | 商场、办公室荧光灯 | 冷白光,光谱不连续 |
| CWF | 4150K | 北美商用荧光灯 | 偏绿,容易引起色偏 |
| U30 | 3000K | 暖色荧光灯 | 类似白炽灯,但光谱不同 |
个人经验:我在调试手机摄像头时,D65和A光源是必测的。这两个光源覆盖了色温的两端。如果这两个光源下白平衡能做好,中间色温基本不会出大问题。
但TL84是个坑。它的光谱有尖峰,不是连续谱。用传统方法估计色温,很容易偏。我建议你单独处理这类荧光灯光源。
2.3 相关色温 (CCT) 与色温偏移
问题来了——现实中的光源,大多数不是完美的黑体辐射。LED灯、荧光灯,它们的光谱和黑体不一样。那怎么描述它们的颜色?
这时候就要引入相关色温(CCT)的概念。
CCT的定义很简单:在色度图上,找一个离该光源颜色最近的黑体辐射轨迹点,那个点的色温就是CCT。
说白了,就是近似匹配。不是精确等于,而是最接近。
注意:CCT相同的两个光源,颜色可能完全不同!
举个例子:一个LED灯和一个荧光灯,CCT都是4000K。但LED可能偏紫,荧光灯可能偏绿。为什么?因为它们的色温偏移方向不同。
所以只看CCT是不够的,还要看色温偏移(Duv)。
Duv表示光源颜色偏离普朗克轨迹的程度。正值表示偏绿,负值表示偏紫。我调试AWB算法时,会把CCT和Duv一起作为输入特征。这样能更准确地描述光源。
下面这张图展示了整个知识体系的结构,我建议你对照着理解:
在实际项目中,我遇到过一个问题:同一个场景,用不同相机拍,色温估计结果差很多。为什么?因为每个相机的传感器光谱响应不同。所以色温估计不能只看理论值,还要结合传感器特性做校准。
我曾经调试一个项目,在TL84光源下白平衡总是偏绿。查了很久才发现,是传感器对绿光的响应比标准曲线高。后来我在算法里加了一个光源补偿系数,问题就解决了。
嗯,这里要注意:色温表是死的,但场景是活的。标准光源只是参考,实际环境往往是混合光源。比如窗户进来的日光 + 室内的LED灯,色温怎么算?这时候就要靠AWB算法去估计了。
调试建议:
- 先校准D65和A光源,确保两端准确
- 中间色温用插值,但要考虑传感器非线性
- 荧光灯和LED灯单独处理,不要用黑体轨迹硬套
- 记录Duv值,它能帮你判断光源类型
最后总结一下:色温是光源颜色的量化描述,CCT是近似匹配,Duv是偏移修正。这三者构成了AWB算法中光源估计的基础。你想想看,如果连光源都描述不准,后面的白平衡校正怎么可能做好?