3. AWB(自动白平衡)基本原理:色温与色彩校正、灰世界假设、色温估计方法

3.1 色温与色彩校正基础

色温是描述光源光谱特性的物理量,单位为开尔文(K)。低色温(如 2000K-3000K)光源偏红/黄,高色温(如 6000K-8000K)光源偏蓝。人眼具有色彩恒常性,能在不同光源下感知物体真实颜色,但图像传感器不具备此能力,因此需要 AWB 算法进行色彩校正。

核心概念: AWB 的目标是消除光源色温对图像颜色的影响,使白色物体在任何光源下都呈现为白色(R=G=B),从而还原场景的真实色彩。
高通平台经验: 在 Qualcomm ISP Pipeline 中,AWB 模块位于 BPC(坏点校正)和 Demosaic 之后,在 CCM(色彩校正矩阵)之前。AWB 输出的 R/G/B 增益会直接影响后续的色彩还原精度。
色温与色彩校正关系 2000K 3500K 5500K 7000K 8000K 烛光/白炽灯 日光/闪光灯 阴天/阴影 R增益↑ G增益↓ R=G=B 平衡 B增益↑ R增益↓ 校正目标:使白色物体在任意色温下 R=G=B,消除光源色偏

3.2 灰世界假设(Gray World Assumption)

灰世界假设是 AWB 最经典的统计模型之一,其核心思想是:自然场景中所有颜色的平均反射率趋于中性灰,即场景中 R、G、B 三个通道的平均值应相等。

3.2.1 数学表达

// 灰世界假设公式
R_avg = (1/N) * Σ R(i,j)
G_avg = (1/N) * Σ G(i,j)
B_avg = (1/N) * Σ B(i,j)

// 计算各通道增益
R_gain = G_avg / R_avg
B_gain = G_avg / B_avg
G_gain = 1.0

// 校正后像素
R_corrected = R_original * R_gain
G_corrected = G_original * G_gain
B_corrected = B_original * B_gain

3.2.2 优缺点对比

维度 优势 局限性
计算复杂度 极低,仅需统计均值 对大面积单色场景失效
适用场景 色彩丰富的自然场景 纯色墙壁、天空、草地等
鲁棒性 对噪声不敏感 受强光源色偏影响大
高通平台适配 可作为初始估计快速收敛 需配合其他算法做场景判断
实战避坑: 在调试高通平台时,如果场景中存在大面积绿色植物(如草坪、树林),灰世界假设会错误地将绿色平均为灰色,导致图像偏品红。此时需要引入“排除区域”或“加权统计”策略。
灰世界假设原理 输入图像 统计平均 R_avg = 128 G_avg = 150 B_avg = 100 G_avg ≠ R_avg ≠ B_avg 计算增益 R_gain = 150/128 = 1.17 G_gain = 1.0 B_gain = 150/100 = 1.50 校正后 R=G=B=150

3.3 完美反射假设(Perfect Reflector Assumption)

完美反射假设认为场景中最亮的像素点对应一个“完美反射面”,该反射面应呈现纯白色(R=G=B=255)。算法通过寻找图像中的最亮点来估计光源色温。

3.3.1 算法步骤

  1. 亮度排序: 计算每个像素的亮度值(如 Y = 0.299R + 0.587G + 0.114B)
  2. 选取候选点: 取亮度最高的前 1%-5% 像素作为候选
  3. 统计均值: 计算候选点的 R_avg、G_avg、B_avg
  4. 计算增益: 以 G_avg 为基准,计算 R_gain 和 B_gain

3.3.2 两种假设对比

对比项 灰世界假设 完美反射假设
统计对象 全图所有像素 最亮的前 1%-5% 像素
适用场景 色彩丰富、光照均匀 场景中存在高光或白色物体
失效场景 大面积单色 无高光区域或过曝
高通平台融合 作为基础统计 作为高光区域权重参考
高通调试技巧: 在 Qualcomm 的 AWB 统计引擎中,可以同时使能灰世界和完美反射两种统计模式,并通过 awb_stats_control 参数配置各自的权重比例。典型配置为灰世界 70% + 完美反射 30%。

3.4 色温曲线(CCT Curve)估计方法

色温曲线法是目前主流相机平台(包括高通)最常用的 AWB 方法。它通过预先标定的色温曲线(在 R/G vs B/G 色度空间中的一条或多条曲线),将统计得到的色度点映射到最接近的色温值。

3.4.1 色温曲线原理

在 R/G - B/G 二维色度空间中,不同色温下的灰点(白色物体)会形成一条平滑曲线。算法流程如下:

  1. 将图像划分为 M×N 个统计块(如 16×16 或 32×32)
  2. 对每个块计算 R/G 和 B/G 比值
  3. 剔除过暗、过曝、饱和度异常的区域
  4. 将有效块的色度点投影到色温曲线上,找到最近的色温值
  5. 根据色温值查表得到 R_gain 和 B_gain

3.4.2 高通平台色温曲线标定

色温点 (K) R/G 比值 B/G 比值 R_gain B_gain
2500 1.85 0.55 0.54 1.82
4000 1.40 0.80 0.71 1.25
5500 1.10 1.00 0.91 1.00
6500 0.95 1.15 1.05 0.87
8000 0.80 1.40 1.25 0.71
高通平台关键参数: 在 chromatix.xml 的 AWB 模块中,CCT_Curve 节点定义了 5-9 个色温标定点。每个点包含 rg_ratio、bg_ratio、rg_gain、bg_gain 四个值。标定精度直接影响 AWB 的收敛速度和准确性。
色温曲线与色度空间映射 B/G R/G 0.5 1.0 1.5 2.0 2.0 1.5 1.0 0.5 2500K 4000K 5500K 6500K 8000K 统计点 投影 统计色度点投影到色温曲线,通过最近邻或插值得到色温值,再查表获得 R/B 增益

3.5 三种色温估计方法对比总结

方法 原理 计算量 鲁棒性 高通平台实现
灰度世界 全图 R/G/B 均值相等 低 中(受大面积单色影响) ISP 统计引擎直接输出
完美反射 最亮点为白色 中 中(依赖高光存在) 需配置亮度阈值筛选
色温曲线 色度空间投影匹配 高 高(需精确标定) chromatix 标定 + 查表
高通平台实战要点:
  • 色温曲线法是高通平台默认的 AWB 主算法,灰度世界和完美反射作为辅助和回退策略
  • 在 camx 驱动层,AWB 统计信息通过 awb_stats_buffer 传递给算法层
  • 色温曲线标定需要在 D65(6500K)、A(2856K)、TL84(4000K)等标准光源下完成
  • 实际调试中,建议在 2500K-8000K 范围内至少标定 7 个色温点,以保证插值精度

3.6 高通平台 AWB 统计引擎架构

高通 ISP 中的 AWB 统计引擎采用硬件加速方式,以 16×16 或 32×32 像素块为单位进行统计,大幅降低 CPU 负载。以下是统计引擎的软件架构:

高通平台 AWB 统计引擎架构 RAW 图像输入 16×16 分块统计 (R/G/B 均值) 灰度世界统计 全图 R/G/B 均值 完美反射统计 Top 1% 最亮点 色温曲线匹配 R/G vs B/G 投影 AWB 融合决策 (加权投票) R/B Gain 输出
高通平台关键文件:
  • chromatix_xxx_awb.xml:AWB 算法参数配置文件,包含色温曲线、增益表、收敛速度等
  • camxawb.cpp:AWB 算法核心实现,包含三种统计方法的融合逻辑
  • awb_stats_hw.cpp:硬件统计引擎驱动,负责从 ISP 读取统计信息

通过以上三种色温估计方法的组合使用,高通平台的 AWB 模块能够在各种复杂场景下实现快速、准确的自动白平衡。实际调试中,需要根据项目的光学模组特性和目标场景,精细调整色温曲线标定点和各方法的融合权重。