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算法计算出的校正增益。
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值,都代表了色偏的方向和程度。
3.2.2 色度空间在AWB中的作用
| 色彩空间 | 在AWB中的用途 | 优势 |
|---|---|---|
| RGB | 原始数据输入、增益施加 | 直接对应Sensor输出,物理意义明确 |
| YCbCr | 色温估计、灰点检测 | 亮度与色度分离,便于设定色度阈值 |
| Cb/Cr 2D平面 | 色温曲线映射、统计直方图 | 直观展示色偏分布,便于调试 |
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)。
算法流程:
- 灰点筛选: 在YCbCr空间中,筛选出亮度适中(Y不饱和)、色度接近中性(Cb/Cr在阈值范围内)的像素。
- 统计平均: 计算筛选出的灰点的平均R/G和B/G比值。
- 曲线匹配: 将统计得到的(R/G, B/G)点与标定的色温曲线进行距离匹配,找到最近的色温点。
- 增益插值: 根据匹配到的色温,插值得到最终的R_gain和B_gain。
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,以获得更稳定的色彩表现。