1. AWB概述:白平衡的基本概念、人眼视觉与色彩恒常性、AWB在ISP Pipeline中的位置

1.1 什么是白平衡?

白平衡,说白了就是让白色物体在照片里看起来是白的。

你想想看,一张白纸在日光灯下是白的,在钨丝灯下发黄,在阴天里发蓝。但人眼不会觉得它变了色——这就是色彩恒常性。可摄像头没这个本事,它老老实实地把光源颜色拍进去了。所以我们需要AWB(Auto White Balance)来纠正。

我刚开始做ISP时,总觉得白平衡不就是乘几个系数嘛,有什么难的?后来被一个偏色case折磨了两周才明白——色温估计不准,后面所有颜色处理都是白搭。

核心定义:白平衡的目标是让图像中原本为白色的物体,在任意光源下都呈现为中性色(R=G=B)。数学上就是找到一组增益,把R、G、B三个通道拉回平衡。

1.2 人眼视觉与色彩恒常性

为什么人眼能做到色彩恒常?因为大脑在后台做了大量补偿。

  • 视网膜适应:视锥细胞对不同波长光的敏感度会动态调整
  • 大脑推断:根据场景中的高光、阴影、记忆色来“猜”光源
  • 局部对比:同一物体在不同背景下的感知色会变化

但摄像头没有大脑。它只有一组固定的RGB响应曲线。所以AWB算法本质上是在模拟人眼的色彩恒常能力。

我记得有一次调试一个户外监控摄像头,黄昏时分画面偏紫得厉害。我试了七八种算法都不行,最后发现是光源色温变化太快,AWB收敛速度跟不上。嗯,这里要注意——动态场景下的色温跟踪,比静态场景难得多。

特性 人眼视觉 摄像头传感器
色彩恒常性 天生具备,自动补偿 需要算法模拟
光源适应速度 毫秒级 依赖AWB收敛速度
记忆色辅助 有(知道天空是蓝的) 需要先验知识库
局部对比度影响 显著 通常忽略
个人经验:我在做手机摄像头调试时,经常用“灰卡法”来验证AWB精度。找一张标准灰卡放在场景中,拍一张raw图,看灰卡区域的R/G、B/G比值是否接近1。如果偏差超过5%,说明色温估计有问题。

1.3 AWB在ISP Pipeline中的位置

ISP(Image Signal Processor)是一条流水线,AWB只是其中一环。但它的位置很关键——在去马赛克和颜色校正之前。

为什么?因为如果白平衡没做对,后面的颜色校正矩阵(CCM)会放大偏色。我曾经见过一个case,AWB增益算错了5%,结果CCM把蓝色通道拉爆了,整张图像蒙了一层紫边。

典型的ISP Pipeline流程如下:

  1. Sensor Raw输入 —— 拜耳阵列原始数据
  2. 黑电平校正(BLC) —— 去除暗电流噪声
  3. 去马赛克(Demosaic) —— 插值出RGB全分辨率
  4. 白平衡(AWB) —— 色温估计 + 增益调整 ← 我们在这里
  5. 颜色校正(CCM) —— 从传感器RGB映射到标准色域
  6. Gamma校正 —— 亮度非线性映射
  7. 色彩增强/降噪 —— 后处理美化
避坑指南:千万不要在CCM之后做AWB!我曾经犯过这个错误——先做了颜色校正再调白平衡,结果色温一变,CCM矩阵就得重新标定,整个流程乱成一锅粥。记住:AWB必须在CCM之前。

下面这张图展示了AWB在ISP Pipeline中的位置和它与其他模块的关系:

ISP Pipeline 与 AWB 位置 Sensor Raw BLC Demosaic AWB(本章) CCM 色温估计模块 增益计算模块 增益应用模块 ⚠ 关键依赖关系 AWB的输出(R/G/B增益)直接影响CCM的输入色域映射精度

1.4 AWB的核心挑战

做AWB调试这么多年,我总结出三个核心难点:

  • 光源未知:摄像头不知道当前是什么光源,只能从图像数据里“猜”
  • 场景复杂:同一场景可能有多个光源(混合光源),比如室内窗边
  • 物体颜色干扰:红色物体在暖光下和白色物体在冷光下,传感器响应可能一模一样

举个例子:一个红色苹果在日光灯下,和一个白色苹果在红光下,拍出来的RGB值可能完全相同。AWB怎么区分?这就是所谓的“色温-物体颜色歧义性”。

关键认知:AWB本质上是一个病态问题——从2维图像数据去估计3维的光源信息,信息本身就不够。所以所有AWB算法都是在做“有根据的猜测”。

1.5 本章小结

这一章我们聊了三个事:

  1. 白平衡是什么 —— 让白色变白,消除光源色偏
  2. 人眼为什么能做到 —— 色彩恒常性,但摄像头需要算法模拟
  3. AWB在ISP里的位置 —— 在Demosaic之后、CCM之前,位置错了全盘皆输

我个人习惯把AWB比作ISP的“地基”——地基没打好,上面盖的楼再漂亮也没用。后面的章节我们会深入色温估计算法、调试工具和实战案例,一步步把这个地基夯实。