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 增益会直接影响后续的色彩还原精度。
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 优缺点对比
| 维度 | 优势 | 局限性 |
|---|---|---|
| 计算复杂度 | 极低,仅需统计均值 | 对大面积单色场景失效 |
| 适用场景 | 色彩丰富的自然场景 | 纯色墙壁、天空、草地等 |
| 鲁棒性 | 对噪声不敏感 | 受强光源色偏影响大 |
| 高通平台适配 | 可作为初始估计快速收敛 | 需配合其他算法做场景判断 |
实战避坑: 在调试高通平台时,如果场景中存在大面积绿色植物(如草坪、树林),灰世界假设会错误地将绿色平均为灰色,导致图像偏品红。此时需要引入“排除区域”或“加权统计”策略。
3.3 完美反射假设(Perfect Reflector Assumption)
完美反射假设认为场景中最亮的像素点对应一个“完美反射面”,该反射面应呈现纯白色(R=G=B=255)。算法通过寻找图像中的最亮点来估计光源色温。
3.3.1 算法步骤
- 亮度排序: 计算每个像素的亮度值(如 Y = 0.299R + 0.587G + 0.114B)
- 选取候选点: 取亮度最高的前 1%-5% 像素作为候选
- 统计均值: 计算候选点的 R_avg、G_avg、B_avg
- 计算增益: 以 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 二维色度空间中,不同色温下的灰点(白色物体)会形成一条平滑曲线。算法流程如下:
- 将图像划分为 M×N 个统计块(如 16×16 或 32×32)
- 对每个块计算 R/G 和 B/G 比值
- 剔除过暗、过曝、饱和度异常的区域
- 将有效块的色度点投影到色温曲线上,找到最近的色温值
- 根据色温值查表得到 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 的收敛速度和准确性。
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 负载。以下是统计引擎的软件架构:
高通平台关键文件:
chromatix_xxx_awb.xml:AWB 算法参数配置文件,包含色温曲线、增益表、收敛速度等camxawb.cpp:AWB 算法核心实现,包含三种统计方法的融合逻辑awb_stats_hw.cpp:硬件统计引擎驱动,负责从 ISP 读取统计信息
通过以上三种色温估计方法的组合使用,高通平台的 AWB 模块能够在各种复杂场景下实现快速、准确的自动白平衡。实际调试中,需要根据项目的光学模组特性和目标场景,精细调整色温曲线标定点和各方法的融合权重。