3. AWB基础原理:色温与白平衡、色度空间、灰世界假设与色温估计

自动白平衡(AWB)是Camera ISP Pipeline中决定色彩还原准确性的核心模块。本章从物理色温出发,逐步拆解AWB的数学基础、色彩空间变换、核心假设以及工程化估计方法,为后续高通平台AWB调试打下理论基础。

3.1 色温与白平衡的物理本质

色温(Color Temperature)并非描述物体的“温度”,而是描述光源光谱分布的一个度量。它基于黑体辐射理论:当黑体被加热到不同温度时,会发出不同颜色的光。单位是开尔文(K)。

色温范围 (K) 典型光源 视觉感受 R/G 比值趋势
2000 - 3000 烛光、白炽灯、日出/日落 暖黄/橙红 R 通道增益需求高
4000 - 5000 荧光灯、日光灯、阴天 中性白/微冷 R/G/B 增益接近
5500 - 6500 正午日光、闪光灯 标准白光 参考基准
7000 - 10000 阴天阴影、蓝天 冷蓝 B 通道增益需求高

白平衡的本质是:当场景光源色温偏离标准日光(D65,约6500K)时,通过数字增益分别调整R、G、B通道的强度,使得原本白色的物体在图像中仍然呈现为白色。数学上,白平衡校正可以表示为:

R_out = R_in * R_gain
G_out = G_in * G_gain
B_out = B_in * B_gain

其中,R_gain、G_gain、B_gain 是AWB算法计算出的校正增益。

工程提示: 在高通平台中,AWB增益通常以 R/G 和 B/G 的比值形式存储在ISP参数中。调试时,我们关注的是这两个比值的收敛曲线,而非绝对增益值。

3.2 色度空间:RGB与YCbCr

AWB算法并不直接在原始RGB空间中进行色温估计,而是将图像转换到更利于分离亮度与色度的色彩空间。最常用的是YCbCr空间。

3.2.1 RGB到YCbCr的线性变换

YCbCr空间将亮度信息(Y)与色度信息(Cb, Cr)分离。标准转换公式(基于BT.601标准)如下:

Y  =  0.299 * R + 0.587 * G + 0.114 * B
Cb = -0.169 * R - 0.331 * G + 0.500 * B + 128
Cr =  0.500 * R - 0.419 * G - 0.081 * B + 128

在AWB中,我们主要利用 Cb 和 Cr 分量。因为对于理想的白点(R=G=B),Cb和Cr的值均为128(中性灰)。任何偏离128的Cb/Cr值,都代表了色偏的方向和程度。

关键洞察: AWB算法的核心任务,就是计算出一组增益,使得图像中“灰点”的Cb和Cr统计值尽可能接近128。

3.2.2 色度空间在AWB中的作用

色彩空间 在AWB中的用途 优势
RGB 原始数据输入、增益施加 直接对应Sensor输出,物理意义明确
YCbCr 色温估计、灰点检测 亮度与色度分离,便于设定色度阈值
Cb/Cr 2D平面 色温曲线映射、统计直方图 直观展示色偏分布,便于调试
RGB → YCbCr 色度空间转换与AWB应用 Sensor RAW (RGB) ISP Demosaic RGB → YCbCr Y (亮度) Cb / Cr (色度) AWB 灰点统计 R/G/B 增益计算 反馈:增益应用于原始RGB通道

3.3 灰世界假设(Gray World Assumption)

灰世界假设是AWB算法中最经典、最基础的统计模型。其核心思想是:

对于一幅色彩丰富的自然图像,所有像素在RGB三个通道上的平均值趋于相等,即平均色为灰色。

数学表达为:

R_avg = G_avg = B_avg

如果图像存在色偏,则说明光源非中性,需要调整增益使得上述等式成立:

R_gain = G_avg / R_avg
B_gain = G_avg / B_avg

3.3.1 灰世界假设的局限性

场景类型 假设有效性 失效后果
自然风景、多色物体 ✅ 有效 色彩还原准确
大面积单色物体(如蓝天、绿草) ❌ 失效 整体色偏被错误校正,导致偏色
低饱和度场景(雪景、灰墙) ✅ 有效 表现良好
人工光源混合场景 ⚠️ 部分失效 需要结合其他算法
工程避坑: 在高通平台调试中,纯灰世界假设通常只作为初始化或后备方案。实际商用算法会结合“完美反射假设”或“色温曲线约束”来避免大面积单色场景的误判。

3.4 色温估计方法

色温估计是AWB算法的核心步骤。它决定了当前场景的光源类型,从而查表或计算得到对应的白平衡增益。以下是三种主流方法:

3.4.1 基于色温曲线的统计法

这是高通平台最常用的方法。预先在实验室标定不同色温光源下(如D65、A光源、TL84等)的R/G和B/G比值,形成一条“色温曲线”(也称为Planckian Locus)。

算法流程:

  1. 灰点筛选: 在YCbCr空间中,筛选出亮度适中(Y不饱和)、色度接近中性(Cb/Cr在阈值范围内)的像素。
  2. 统计平均: 计算筛选出的灰点的平均R/G和B/G比值。
  3. 曲线匹配: 将统计得到的(R/G, B/G)点与标定的色温曲线进行距离匹配,找到最近的色温点。
  4. 增益插值: 根据匹配到的色温,插值得到最终的R_gain和B_gain。
基于色温曲线的AWB增益估计流程 输入图像 灰点筛选 统计 R/G, B/G 色温曲线数据库 (D65/A/TL84...) 最近色温匹配 增益插值输出 最终白平衡图像

3.4.2 基于完美反射假设(White Patch)

该假设认为图像中最亮的像素点(R+G+B值最大)代表了场景中的白色参考点。算法流程:

  • 找到图像中亮度最高的前1%~5%的像素。
  • 计算这些像素的R、G、B平均值。
  • 以这些平均值为白点参考,计算增益。
对比总结: 灰世界假设关注全局统计,适合色彩丰富的场景;完美反射假设关注局部最亮点,适合有高光或镜面反射的场景。高通平台通常将两者加权融合,以适应更复杂的真实场景。

3.4.3 基于色度直方图的聚类法

这是一种更先进的统计方法,不依赖单一假设。算法在Cb-Cr二维平面上构建直方图,寻找色度分布的主要聚类中心。如果聚类中心偏离中性点(Cb=128, Cr=128),则说明存在色偏。该方法对大面积单色场景有更好的鲁棒性,但计算量较大,通常用于高端平台的辅助决策。

估计方法 计算复杂度 鲁棒性 高通平台应用
色温曲线统计法 低 中(依赖标定精度) 主力算法
完美反射假设 低 低(易受高光噪声影响) 辅助/融合
色度直方图聚类 高 高 高端平台辅助
高通调试实战: 在 chromatix 库中,AWB模块的 awb_algo 参数允许你调整“灰世界”和“完美反射”的权重比例。对于室内混合光源场景,建议将灰世界权重设为0.7,完美反射设为0.3,以获得更稳定的色彩表现。