2. AWB基础概念:色温与白平衡的关系
做ISP调试这么多年,我经常跟新人说一句话:不懂色温,就别谈白平衡。这话听起来,但事实就是这样。
色温是什么?说白了,就是光源的颜色度量。你想想看,为什么阴天拍出来的照片偏蓝?为什么钨丝灯下拍出来偏黄?这就是色温在作怪。
2.1 色温的本质
色温的单位是开尔文(K)。它描述的是:一个理想黑体被加热到某个温度时发出的光的颜色。温度越低,光越偏红;温度越高,光越偏蓝。
| 光源类型 | 典型色温(K) | 视觉感受 |
|---|---|---|
| 烛光 | 1500 - 2000 | 暖红 |
| 钨丝灯 | 2700 - 3200 | 暖黄 |
| 日光灯 | 4000 - 5000 | 中性白 |
| 正午阳光 | 5000 - 5500 | 标准白 |
| 阴天 | 6000 - 7500 | 冷白 |
| 蓝天阴影 | 8000 - 10000 | 偏蓝 |
这里有个容易搞混的地方:色温越高,颜色越冷。我刚开始做调试时也经常搞反,后来干脆记成「火焰温度低是红色,温度极高变成蓝色」,这样就顺了。
2.2 白平衡的核心逻辑
白平衡要解决什么问题?很简单:让白色在任何光源下都看起来是白色。
人眼有色彩恒常性,不管在钨丝灯下还是日光下,我们看白纸都觉得是白的。但CMOS传感器没这个本事,它老老实实地记录真实光谱。所以就需要ISP算法来「校正」颜色。
校正的原理是这样的:
- 如果光源偏黄(低色温),图像中白色区域会偏黄
- 算法检测到偏色后,在R/G/B通道上施加增益补偿
- 偏黄就增加蓝色通道增益,减少红色通道增益
- 最终让白色区域的R=G=B
核心公式:
白平衡校正的本质就是找到一组增益系数 (R_gain, G_gain, B_gain),使得场景中白色区域的 R/G = 1, B/G = 1。
2.3 瑞芯微AWB算法中的灰度世界法
灰度世界法是最经典的AWB算法之一。它的假设很简单:一幅色彩丰富的图像,所有像素的R、G、B平均值应该趋于相等。
换句话说,整个场景的平均色应该是灰色。
算法流程:
- 统计整帧图像的R、G、B分量平均值:R_avg, G_avg, B_avg
- 计算增益:R_gain = G_avg / R_avg, B_gain = G_avg / B_avg
- 用增益校正每个像素
我在项目中遇到过一个问题:当场景中大面积是单一颜色时(比如一片绿草地),灰度世界法会失效。因为整个画面偏绿,算法会强行把绿色往灰色拉,结果草地变成了灰绿色,非常难看。
灰度世界法的局限性:
- 场景必须色彩丰富,否则失效
- 大面积单色场景(草地、天空、墙壁)会误判
- 无法处理混合光源场景
2.4 色温估计方法
瑞芯微平台在实际产品中,很少只用灰度世界法。更常用的做法是结合色温估计。
色温估计的思路是这样的:
- 从图像中提取白色或灰色区域
- 计算这些区域的R/G和B/G比值
- 在预先标定的色温曲线上查找对应的色温值
瑞芯微的ISP里有一张色温查找表,记录了不同色温下标准白点的R/G和B/G比值。算法实时计算当前图像的白点位置,然后查表得到估计色温。
我个人习惯的做法:
在调试时,我会先用DNP(Daylight Neutral Point)标定板采集一组标准数据,建立色温曲线。然后在实际场景中,用灰度世界法做粗估计,再用色温曲线做细校准。两者结合,效果比单一算法好很多。
2.5 瑞芯微AWB的混合策略
瑞芯微的AWB模块实际上是一个多算法融合框架。它同时运行多个色温估计器,然后根据置信度加权融合。
我记得有一次调试一个室内监控项目,场景里有窗户(日光)和钨丝灯(暖光)混合。单一算法怎么调都不对,后来用了瑞芯微的混合策略,把图像分成多个区域分别估计色温,再根据区域权重融合,效果一下子就对了。
混合策略的典型流程:
- 图像分块,每块独立统计R/G、B/G
- 剔除过暗、过亮、饱和区域
- 灰度世界法计算全局色温估计值T1
- 白点检测法计算局部色温估计值T2
- 根据场景置信度加权融合:T_final = w1*T1 + w2*T2
- 查表得到最终增益系数
下面这张图展示了瑞芯微AWB算法的核心流程,我画出来方便你理解:
2.6 调试中的避坑指南
做了这么多年调试,踩过的坑不少。我挑几个典型的说说:
我曾经踩过的坑:
- 过度依赖灰度世界法:在纯色场景下,灰度世界法会强行把场景拉成灰色。后来我加了白点检测做约束,才解决这个问题。
- 色温曲线标定不准:有一次用错了标定板,色温曲线偏移了200K,结果所有场景都偏色。后来我坚持每次标定都用DNP标准板,并且做交叉验证。
- 忽略暗区噪声:低照度下,暗区的R/G、B/G统计值噪声很大,会严重干扰色温估计。我的做法是设置亮度阈值,低于阈值的像素不参与统计。
我的调试小技巧:
在瑞芯微平台上调试AWB时,我会先关掉AE,固定曝光参数,单独调AWB。这样能排除曝光变化对色温估计的干扰。等AWB调稳了,再联合AE一起调。
2.7 小结
色温与白平衡的关系,说白了就是:色温是原因,白平衡是解决方案。理解了这个因果关系,你就能明白为什么AWB算法要同时做色温估计和增益校正。
瑞芯微的AWB算法不是单一方法,而是灰度世界法、白点检测法、色温曲线法的组合拳。调试时不要死磕一种方法,要根据场景灵活调整融合权重。
嗯,这一章的内容就到这里。记住:白平衡调得好不好,关键看你对色温的理解深不深。