2. 色温与光源:黑体辐射曲线、标准光源与混合光源
做 AWB 的人,第一个要搞明白的就是「光」。说白了,相机看到的颜色不是物体本身的颜色,而是物体反射光源后的颜色。光源一变,整个画面的白平衡就全跑了。这一章我们就把光源这件事彻底讲清楚。
2.1 黑体辐射曲线——色温的物理基础
色温这个概念,最早是从黑体辐射来的。什么叫黑体?就是一个理想化的物体,能吸收所有入射的电磁辐射,不反射也不透射。你把它加热,它就会发光,而且发光的颜色随温度变化。
我记得刚入行时,导师跟我说:「你记住,色温不是温度,是颜色。」当时我还不理解。后来做项目调白平衡,才真正体会到这句话的分量。
核心概念:色温(单位 K)描述的是光源的颜色外观。低色温偏红黄(暖),高色温偏蓝(冷)。
黑体辐射曲线在色度图上是一条弧线,从深红到橙黄到白到蓝白。这条曲线就是普朗克轨迹(Planckian locus)。所有标准光源的色度坐标,都落在这条轨迹附近。
2.2 标准光源——D65、A、F系列
做 AWB 算法,标准光源就是你的「校准基准」。我建议你把下面这几个光源的色度坐标背下来,调试时你会感谢我的。
| 光源 | 色温 (K) | 特点 | 典型场景 |
|---|---|---|---|
| D65 | 6504 | 平均日光,CIE 标准 | 户外晴天、标准评测 |
| D50 | 5003 | 印刷行业标准 | 印前打样、显示器校准 |
| A | 2856 | 白炽灯,暖黄 | 室内钨丝灯照明 |
| F2 | 4230 | 冷白荧光灯 | 办公室、商场 |
| F7 | 6500 | D65 模拟荧光灯 | 高显色照明 |
| F11 | 4000 | 窄带荧光灯 | 工厂、仓库 |
我的经验:D65 是 AWB 评测的黄金标准。但实际场景中,纯 D65 很少见。你想想看,窗户进来的日光、头顶的荧光灯、桌上的台灯,混在一起才是真实世界。
2.3 混合光源场景——AWB 的真正挑战
实验室里用积分球打 D65,AWB 跑得漂漂亮亮。一拿到真实场景,全崩了。为什么?因为真实场景几乎没有单一光源。
我曾经处理过一个车载摄像头项目,车内既有日光从挡风玻璃射入,又有仪表盘的 LED 背光,还有阅读灯的白炽光。三个光源色温从 3000K 到 7000K 不等,画面一半暖一半冷。传统的全局 AWB 算法直接傻掉。
避坑指南:混合光源场景下,全局色温估计会失效。我曾经在商场拍摄测试图卡,结果 AWB 把暖色区的白墙调成了蓝色。后来发现是算法被远处的冷色荧光灯「带偏」了。
混合光源的典型场景包括:
- 室内靠窗:日光(高色温)+ 室内灯(低色温)
- 舞台灯光:多色温聚光灯混合
- 夜景街拍:路灯(钠灯 2000K)+ 霓虹灯(可变)+ 车灯(卤素 3200K)
- 多光源会议室:投影仪(高色温)+ 筒灯(暖色)+ 窗户光
处理混合光源,我个人的习惯是:先做区域分割,再逐区域估计色温,最后做空间平滑过渡。说白了,就是不能用一个色温值代表整张图。
2.4 色温估计的实用方法
讲完理论,来点实际的。色温估计最常用的方法就是灰点法(Gray World 的变体)。但灰点法有个前提:场景中要有足够的「灰色」像素。
如果场景全是纯色物体(比如一片红墙),灰点法就失效了。这时候需要引入边缘信息或高光信息做辅助。
实用技巧:我建议你在做色温估计时,同时计算三个统计量:
- 全局平均色度(Gray World)
- 高光区域色度(Specular)
- 暗部区域色度(Dark Region)
三个结果做加权融合,鲁棒性会好很多。
下面是一个简单的色温估计流程:
// 伪代码:基于灰点法的色温估计
// 输入:RGB 图像
// 输出:估计色温 (K)
1. 将图像转换到 YCbCr 或 Lab 色彩空间
2. 筛选「灰色」像素:
- 饱和度低 (S < threshold)
- 亮度适中 (Y 在 [20, 240] 之间)
3. 计算筛选后像素的 R/G 和 B/G 比值
4. 根据 R/G 和 B/G 查找色温查找表 (LUT)
5. 输出色温值
// 注意:LUT 需要预先通过标准光源标定得到
我的建议:色温查找表(LUT)是工程化的关键。我在项目中会采集 20-30 个不同色温下的灰卡图像,建立 R/G-B/G 到色温的映射关系。这样做出来的 AWB 比纯理论模型准得多。
2.5 本章小结
色温是 AWB 的根基。黑体辐射曲线告诉你色温的物理意义,标准光源给你校准的锚点,混合光源场景才是真正的战场。记住一句话:没有万能的色温估计算法,只有针对场景的工程取舍。