3. AWB算法实现:基于色温估计的增益计算

3.1 自动白平衡(AWB)概述

自动白平衡(Auto White Balance, AWB)是ISP(图像信号处理器)中3A算法(AE、AWB、AF)的核心组成部分。其根本任务是:在不同光源(色温)下,将图像中原本为白色的物体还原为白色,从而消除光源颜色对物体真实色彩的干扰。

AWB算法的实现通常分为三个关键步骤:

  1. 色温估计:从输入图像中统计R/G/B通道信息,推断当前场景的光源色温。
  2. 增益计算:根据估计的色温,计算R、G、B三个通道的独立增益系数。
  3. 通道增益调整:将增益系数应用到原始图像数据上,完成白平衡校正。
关键指标: 优秀的AWB算法应能在2700K(白炽灯)到6500K(日光)甚至更高色温范围内,保持肤色自然、灰色物体中性,且不引入偏色。
AWB算法整体流程 原始RAW/Bayer 色温估计 增益计算 R/G/B通道调整 白平衡校正图像 统计反馈

3.2 基于色温估计的增益计算

色温估计是AWB算法的核心。常用的方法包括灰度世界法(Gray World)、完美反射法(Perfect Reflector)以及基于色温曲线的统计法。在工业级ISP中,通常采用基于色温曲线的统计法,因为它对复杂场景的鲁棒性更高。

3.2.1 色温估计原理

色温估计的核心思想是:在特定色温下,白色物体在R/G和B/G色度空间中的分布具有统计规律。通过统计图像中所有像素的R/G和B/G比值,可以找到最接近的色温点。

具体步骤如下:

  1. 统计R/G和B/G直方图:将图像划分为多个区域(如MxN网格),计算每个区域的R/G和B/G均值。
  2. 剔除异常点:去除过暗、过亮或饱和度过高的区域,避免噪声干扰。
  3. 匹配色温曲线:将统计得到的(R/G, B/G)点与预置的色温曲线(Plankian Locus)进行匹配,找到最接近的色温值。
工程经验: 在实际调优中,色温曲线通常由实验室标定获得。标定时使用标准光源箱(如D65、D50、A光源等),拍摄灰卡并记录R/G和B/G比值,形成一条平滑的色温曲线。

3.2.2 增益计算模型

一旦估计出色温 \( T_{est} \),即可计算R、G、B通道的增益。增益计算的目标是:使校正后的图像中,灰色物体的R、G、B分量相等。

设原始图像中某像素的R、G、B值为 \( R_{raw}, G_{raw}, B_{raw} \),校正后的值为 \( R_{wb}, G_{wb}, B_{wb} \),则:

R_wb = R_raw * gain_R
G_wb = G_raw * gain_G
B_wb = B_raw * gain_B

其中,增益系数通常以G通道为基准(gain_G = 1.0),R和B通道的增益根据色温查表或插值得到:

gain_R = 1.0 / (R/G ratio at T_est)
gain_B = 1.0 / (B/G ratio at T_est)
注意: 增益系数不宜过大(通常限制在1.0~4.0之间),否则会放大噪声并导致通道饱和。对于极端低色温(如2000K)或高色温(如10000K)场景,需要配合AE(自动曝光)和降噪模块协同处理。

3.3 R/G/B通道增益调整

通道增益调整是将计算出的增益系数应用到图像数据上的过程。在ISP流水线中,该步骤通常位于黑电平校正(BLC)和去马赛克(Demosaic)之间,或在RAW域直接进行。

3.3.1 增益调整的硬件实现

在嵌入式ISP中,增益调整通常通过硬件乘法器实现,以流水线方式处理每个像素。典型的处理流程如下:

步骤 操作 说明
1 读取RAW像素 从Bayer阵列中读取当前像素的原始值
2 判断通道类型 根据像素位置判断是R、G还是B通道
3 应用增益 将像素值乘以对应的通道增益系数
4 钳位处理 将结果限制在有效位宽内(如10bit: 0~1023)
5 输出校正像素 写入下一级ISP模块

3.3.2 增益调整的精度与位宽

增益调整的精度直接影响白平衡效果。通常使用定点数表示增益系数,例如Q8.8格式(整数8位,小数8位)。以下是一个典型的增益调整代码示例:

// 假设RAW数据为10bit,增益系数为Q8.8格式
uint16_t apply_gain(uint16_t raw_pixel, uint16_t gain_q8) {
    uint32_t result = (uint32_t)raw_pixel * (uint32_t)gain_q8;
    result >>= 8;  // 右移8位,恢复定点数
    if (result > 1023) result = 1023;  // 10bit钳位
    return (uint16_t)result;
}
R/G/B通道增益调整硬件流水线 RAW像素流 通道判断 增益乘法器 钳位处理 输出 增益系数表

3.4 AWB调试参数与色温曲线

AWB调试是ISP调优中最耗时、最依赖经验的环节之一。调试的核心是色温曲线和增益映射表的标定与优化。

3.4.1 色温曲线(Plankian Locus)

色温曲线描述了不同色温下,标准白色物体在(R/G, B/G)色度空间中的理论位置。在调试中,工程师需要根据实际传感器和镜头的光学特性,对理论曲线进行修正。

色温(K) 光源类型 典型R/G比值 典型B/G比值
2700 白炽灯(A光源) 1.85 0.55
4000 荧光灯(TL84) 1.40 0.75
5000 日光(D50) 1.20 0.90
6500 阴天(D65) 1.00 1.10
10000 蓝色天空 0.80 1.50
调试要点: 色温曲线并非固定不变。不同传感器(如OV、Sony、Samsung)的RGB响应曲线不同,同一传感器在不同镜头(CRA、IR滤光片)下也会偏移。因此,每次更换模组(Sensor+Lens)都必须重新标定色温曲线。

3.4.2 主要调试参数

AWB调试涉及多个可调参数,以下是最关键的几个:

  • 色温区间(CCT Range):定义算法支持的色温范围,如2000K~10000K。超出范围时,算法应进行钳位或使用边界值。
  • 增益上限(Gain Max):限制R和B通道的最大增益,防止噪声放大和通道饱和。典型值为4.0。
  • 统计窗口(Stat Window):定义用于色温估计的图像区域。通常避开边缘和过曝区域,使用中心权重窗口。
  • 收敛速度(Convergence Speed):在视频模式下,AWB需要平滑过渡。通过低通滤波器控制增益变化速率,避免闪烁。
  • 色温曲线插值点数:曲线上的标定点数量。点数越多,色温估计越精细,但计算量也越大。通常使用8~16个标定点。

3.4.3 色温曲线与增益映射关系

色温曲线与增益映射的关系可以通过以下SVG图直观展示:

色温曲线与增益映射关系 色温 (K) 增益系数 2000 4000 6000 8000 10000 Gain_R Gain_B Gain_G = 1.0 说明:低色温时R增益高、B增益低;高色温时R增益低、B增益高;G增益始终为1.0

3.5 工程案例:AWB调优实战

以下是一个典型的AWB调优案例,展示从问题发现到参数优化的完整过程。

3.5.1 问题现象

某款手机摄像头在室内白炽灯(2700K)下拍摄时,画面偏黄严重;在室外阴天(6500K)下拍摄时,画面偏蓝。经分析,原因为色温曲线标定不准确,导致增益计算偏差。

3.5.2 调优步骤

  1. 重新标定色温曲线:在标准光源箱中,使用灰卡拍摄2700K、4000K、5000K、6500K、8000K五组图像,记录R/G和B/G比值。
  2. 更新增益映射表:根据新标定的曲线,重新计算各色温下的gain_R和gain_B,并写入ISP寄存器。
  3. 调整统计窗口:将统计窗口从全图改为中心区域(占图像面积的60%),避免边缘偏色干扰。
  4. 设置增益上限:将gain_R和gain_B的上限从5.0降低到3.5,减少噪声放大。
  5. 验证与微调:在实际场景中拍摄,使用调试工具(如Imatest)测量色温误差,微调曲线插值点。
调优工具推荐: 使用Imatest的Color/Tone模块或DxO Analyzer进行客观评估。主观评估时,建议使用标准色卡(如X-Rite ColorChecker)和灰卡,确保在不同色温下灰色块的中性度。

3.5.3 调优前后对比

场景 调优前色温误差 调优后色温误差 主观效果
白炽灯(2700K) ±800K ±150K 偏黄明显改善
荧光灯(4000K) ±500K ±100K 肤色自然
阴天(6500K) ±700K ±120K 偏蓝消除

3.6 本章小结

本章详细介绍了AWB算法的实现原理,包括基于色温估计的增益计算、R/G/B通道增益调整的硬件实现,以及AWB调试参数与色温曲线的标定方法。核心要点如下:

  • 色温估计是AWB的基石,依赖于统计R/G和B/G比值与预置色温曲线的匹配。
  • 增益计算以G通道为基准,R和B通道的增益由色温查表得到,需注意增益上限和钳位处理。
  • 色温曲线需要针对具体传感器和镜头进行标定,调试参数包括色温区间、增益上限、统计窗口和收敛速度等。
  • 实际调优中,应结合客观测试(Imatest)和主观评估,反复迭代直至达到目标精度。
下一阶段提示: 在完成AWB调优后,下一步将进入自动对焦(AF)算法的实现与调试。AF与AWB在统计窗口和收敛策略上存在协同关系,需要统一考虑。