色温基础:黑体辐射与色温
做AWB算法,第一个绕不开的概念就是色温。
很多人觉得色温就是「暖光偏黄,冷光偏蓝」,这个说法没错,但太粗糙了。你想想看,如果只是这样,那相机直接根据画面里红蓝比例做个判断不就行了?现实远没那么简单。
我个人习惯把色温理解成「理想黑体被加热到某个温度时发出的光的颜色」。这个定义听起来有点绕,咱们拆开看。
黑体辐射到底在说什么?
黑体是一个理想模型。它吸收所有入射光,不反射。当你加热它时,它只靠温度发光。
温度低的时候,比如 1000K,它发红光。温度升高到 3000K,变成橙黄。到 5500K 左右,接近白光。再往上到 8000K,就偏蓝了。
这个颜色变化是连续的,而且有严格的物理公式——普朗克公式。我在项目中遇到过有人直接用查表法做色温估计,结果在混合光源下全崩了。原因就是没理解黑体辐射的连续性,硬把离散的色温点当成了标准。
核心要点:色温不是「几个固定值」,而是一条连续的曲线。AWB算法要处理的是这条曲线上的任意一点,以及不在曲线上的点(非黑体辐射光源)。
色温与RGB通道的关系
好,现在咱们把色温和RGB联系起来。
不同色温的光源,照射到白色物体上,反射进传感器的RGB比例是不一样的。
- 低色温(2000K-3500K):红光分量多,蓝光分量少。R/G > 1,B/G < 1。
- 中等色温(4500K-5500K):RGB比例接近1:1:1。这就是我们常说的「标准白光」。
- 高色温(6000K-8000K):蓝光分量多,红光分量少。R/G < 1,B/G > 1。
说白了,色温估计的本质就是根据图像中R、G、B通道的统计关系,反推出当前光源的色温值。
我的经验:实际工程中不要直接用R、B的值做判断。我建议用R/G和B/G的比值。这样可以消除曝光差异和传感器增益变化带来的干扰。这个比值对,色温估计就稳了一半。
常见光源色温表
这张表是我这些年整理下来的。每次做新平台的AWB调试,我都会先对着这张表标定一遍。
| 光源类型 | 色温范围 (K) | 典型场景 | R/G 趋势 | B/G 趋势 |
|---|---|---|---|---|
| 烛光 | 1500 - 2000 | 烛光晚餐、暗光环境 | 极高 | 极低 |
| 白炽灯 | 2500 - 3000 | 家庭照明、老式台灯 | 高 | 低 |
| 卤素灯 | 3000 - 3500 | 车灯、摄影灯 | 偏高 | 偏低 |
| 荧光灯 (暖白) | 3500 - 4500 | 办公室、商场 | 中等 | 中等 |
| 日光 (正午) | 5000 - 5500 | 户外晴天 | 接近1 | 接近1 |
| 闪光灯 | 5500 - 6000 | 相机内置闪光 | 接近1 | 接近1 |
| 阴天/阴影 | 6500 - 7500 | 阴天户外、树荫下 | 低 | 高 |
| 蓝天 (无云) | 8000 - 10000 | 高原、雪地阴影 | 极低 | 极高 |
注意:荧光灯和LED灯通常不是黑体辐射光源。它们的频谱有尖峰,色温只是近似值。我曾经在调试一款手机摄像头时,遇到荧光灯下白平衡怎么调都偏绿。后来发现是荧光灯的绿色谱线峰值太强,单纯用色温模型根本搞不定。最后不得不加了荧光灯检测分支。
色温估计的核心逻辑
理解了色温和RGB的关系,咱们就可以画出AWB色温估计的核心逻辑图了。
嗯,这里要注意。很多刚入行的工程师只做了「是」分支,结果在荧光灯和LED灯下全翻车。我建议从一开始就把非黑体补偿的接口留好,后面调试会省很多事。
小结
色温不是玄学,它是可以用物理模型精确描述的。理解黑体辐射曲线,掌握RGB比值与色温的对应关系,再配合常见光源色温表,你就有了做AWB的基础工具。
下一块内容,咱们会基于这些基础,开始写真正的色温估计算法。