2. 色温与光源:黑体辐射曲线、标准光源与混合光源

做 AWB 的人,第一个要搞明白的就是「光」。说白了,相机看到的颜色不是物体本身的颜色,而是物体反射光源后的颜色。光源一变,整个画面的白平衡就全跑了。这一章我们就把光源这件事彻底讲清楚。

2.1 黑体辐射曲线——色温的物理基础

色温这个概念,最早是从黑体辐射来的。什么叫黑体?就是一个理想化的物体,能吸收所有入射的电磁辐射,不反射也不透射。你把它加热,它就会发光,而且发光的颜色随温度变化。

我记得刚入行时,导师跟我说:「你记住,色温不是温度,是颜色。」当时我还不理解。后来做项目调白平衡,才真正体会到这句话的分量。

核心概念:色温(单位 K)描述的是光源的颜色外观。低色温偏红黄(暖),高色温偏蓝(冷)。

黑体辐射曲线在色度图上是一条弧线,从深红到橙黄到白到蓝白。这条曲线就是普朗克轨迹(Planckian locus)。所有标准光源的色度坐标,都落在这条轨迹附近。

黑体辐射轨迹与常见色温点 A光源 2856K D65 6504K D75 7500K 烛光 1850K 说明:黑体辐射轨迹(红色曲线)上标注了常见标准光源的色温位置。 色温越高,颜色越偏蓝;色温越低,颜色越偏红黄。

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 的变体)。但灰点法有个前提:场景中要有足够的「灰色」像素。

如果场景全是纯色物体(比如一片红墙),灰点法就失效了。这时候需要引入边缘信息或高光信息做辅助。

实用技巧:我建议你在做色温估计时,同时计算三个统计量:

  1. 全局平均色度(Gray World)
  2. 高光区域色度(Specular)
  3. 暗部区域色度(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 的根基。黑体辐射曲线告诉你色温的物理意义,标准光源给你校准的锚点,混合光源场景才是真正的战场。记住一句话:没有万能的色温估计算法,只有针对场景的工程取舍。