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

各位同学,欢迎来到《自动白平衡与色彩校正矩阵调优》的第一章。

做图像处理这么多年,我见过太多「偏色」的案例了。有的偏黄,有的偏蓝,有的在室内正常,一到户外就翻车。说白了,这些问题十有八九都跟白平衡有关。

这一章,我们先打好地基。把色温、白平衡、人眼视觉这些概念理清楚,再看看 AWB 在整个 ISP 流程里到底站在哪个位置。

1.1 色温:光的「性格」

色温这个概念,其实挺直观的。你想想看,一根铁棒被加热,温度低的时候发红,温度高了发蓝。色温就是用来描述这种「光色」的物理量,单位是开尔文(K)。

光源场景 典型色温(K) 视觉感受
烛光 / 日出日落 1800 - 2500 暖黄、温馨
白炽灯 2700 - 3200 暖白
荧光灯 / 阴天 4000 - 5000 中性白
正午日光 / 闪光灯 5500 - 6500 标准白
阴天阴影 / 蓝天 7000 - 10000+ 冷蓝、清冷

这里有个容易混淆的点:色温越高,光色越偏蓝;色温越低,光色越偏红。我刚开始做这行时也经常搞反,后来记住「铁烧红了是低温,烧白了是高温」就再也没错过。

我的经验: 实际场景中很少有单一色温的光源。比如室内既有窗外的日光,又有头顶的暖色灯,这种混合色温场景才是 AWB 真正的考验。

1.2 白平衡:让白色回归白色

白平衡的目的很简单:在任何光源下,让原本白色的物体在图像中呈现为白色。

为什么需要这个操作?因为传感器没有「脑子」。它只会老老实实地记录进入镜头的光线能量。如果场景色温偏暖,拍出来的白色物体就会偏黄;如果色温偏冷,白色就会偏蓝。

白平衡的数学本质,就是对 R、G、B 三个通道施加不同的增益,把「偏色」拉回来。

// 一个简化的白平衡增益计算
R_gain = G_avg / R_avg
B_gain = G_avg / B_avg
// 其中 R_avg, G_avg, B_avg 是统计窗口内的通道均值

嗯,这里要注意:这个公式只是最基础的灰度世界法。实际工程中,我们还要考虑很多约束,比如防止增益过大导致噪声放大,这些后面章节会细讲。

1.3 人眼视觉与色彩恒常性

为什么相机需要费这么大劲做白平衡,而我们人眼却几乎感觉不到偏色?

这就要说到人眼的色彩恒常性了。简单说,人脑会自动「校准」光源的影响。你拿着一本白书,在暖色灯下看,你依然觉得它是白的;在冷色灯下看,你还是觉得它是白的。大脑帮你做了白平衡。

但相机传感器没有这个能力。它记录的是物理真实——白书在暖灯下反射的光确实偏黄。所以我们必须用算法去模拟人眼的这种「自动校准」能力。

核心认知: AWB 的本质,就是让数字图像逼近人眼在色彩恒常性下的主观感知,而不是追求物理上的准确。

我在项目中遇到过一种情况:用户抱怨某款手机在黄昏时拍出来的照片太黄,但实际人眼看到的场景就是偏黄的。这就是「物理真实」和「感知真实」的冲突。后来我们调整了 AWB 策略,在黄昏场景下适当降低色温,用户满意度反而提升了。

1.4 AWB 在 ISP Pipeline 中的位置

ISP(Image Signal Processor)是一条流水线,AWB 只是其中的一个环节。它的位置很关键,直接影响后面所有色彩相关模块的输入质量。

下面这张图是我自己整理的典型 ISP Pipeline 中 AWB 的位置:

ISP Pipeline 中 AWB 的位置 RAW 输入 黑电平校正 去噪 去马赛克 AWB 自动白平衡 色温估计 + 增益计算 色彩校正矩阵 Gamma 校正 色调映射 输出 YUV 说明: AWB 通常放在去马赛克之后、色彩校正矩阵之前。因为需要 RGB 三通道数据才能准确估计色温。

从这张图可以看得很清楚:

  • AWB 位于去马赛克之后,色彩校正矩阵(CCM)之前
  • 它接收的是已经插值完成的 RGB 图像
  • 输出的白平衡增益会作用于后续的 CCM 和 Gamma 校正
我曾经踩过的坑: 有一版算法我把 AWB 放在了去噪之前,结果去噪模块把色温统计信息也给抹平了,导致白平衡收敛极慢。后来才意识到,AWB 的统计窗口一定要在去噪之后、或者至少使用未经过度平滑的数据。

1.5 本章小结

这一章我们聊了三个核心概念:

  1. 色温:描述光色的物理量,低色温偏暖,高色温偏冷
  2. 白平衡:通过 RGB 增益校正,让白色物体在任何光源下呈现白色
  3. 色彩恒常性:人脑的自动校准能力,AWB 的目标就是模拟这种能力

同时,我们明确了 AWB 在 ISP Pipeline 中的位置——它处于去马赛克之后、色彩校正矩阵之前,是整个色彩链路的第一道关卡。