4. AWB统计信息:ISP统计窗口配置与色温估计
AWB(自动白平衡)的准确性高度依赖ISP前端提供的统计信息质量。本章深入剖析统计窗口(Zone/Region)的划分策略、R/G/B直方图的解读方法以及色温区间估计(CCT Estimator)的实现原理,帮助调试人员快速定位AWB统计异常。
4.1 统计窗口配置(Zone/Region)
ISP通常将整帧图像划分为M×N个统计窗口(Zone),每个窗口独立计算R、G、B的均值与直方图。窗口划分方式直接影响AWB对不同光源场景的适应能力。
4.1.1 窗口划分策略对比
| 策略 | 划分方式 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|---|
| 均匀网格 | 固定行列数(如16×12) | 常规室内/室外 | 实现简单,硬件开销低 | 无法适应主体偏移 |
| 自适应加权 | 根据亮度/色度分布动态调整 | 逆光、高动态场景 | 突出主体区域权重 | 算法复杂,实时性受限 |
| 人脸优先 | 结合人脸检测框覆盖 | 人像拍摄 | 肤色还原准确 | 非人脸场景失效 |
| 中心加权 | 中心区域权重高于边缘 | 手机/监控定焦 | 符合构图习惯 | 边缘物体偏色 |
调试建议:在ISP调优初期,建议使用均匀网格(如15×11)作为基线,待AWB基础稳定后再根据产品场景引入加权策略。避免一开始就使用复杂自适应方案,否则难以区分是统计窗口问题还是AWB算法本身的问题。
4.1.2 窗口配置参数清单
以下为典型ISP统计窗口配置寄存器参数(以某主流ISP芯片为例):
// 统计窗口尺寸配置
STAT_WIN_H_NUM = 15; // 水平方向窗口数
STAT_WIN_V_NUM = 11; // 垂直方向窗口数
STAT_WIN_WIDTH = 128; // 每个窗口宽度(像素)
STAT_WIN_HEIGHT = 96; // 每个窗口高度(像素)
// 窗口使能与权重
STAT_WIN_ENABLE = 0xFFFF; // 全窗口使能
STAT_WIN_WEIGHT[0..164] = {1}; // 均匀权重
// 有效像素范围(排除黑边/OVB)
STAT_VALID_START_X = 16;
STAT_VALID_START_Y = 12;
STAT_VALID_END_X = 4095;
STAT_VALID_END_Y = 3071;
常见问题:如果统计窗口尺寸设置过大(如单个窗口覆盖超过200×200像素),会导致窗口内包含多种颜色/光源,AWB统计均值被“平均化”,丢失局部色温信息。建议单个窗口覆盖不超过150×150像素。
4.2 R/G/B统计直方图
每个统计窗口输出的R、G、B直方图是AWB算法判断场景色温分布的核心依据。直方图通常包含256个bin(8bit数据)或1024个bin(10bit数据),反映每个颜色通道的像素值分布。
4.2.1 直方图数据结构
以10bit RAW数据为例,每个窗口的直方图数据结构如下:
// 单个窗口直方图结构体
typedef struct {
uint32_t r_hist[1024]; // R通道直方图
uint32_t g_hist[1024]; // G通道直方图
uint32_t b_hist[1024]; // B通道直方图
uint32_t pixel_count; // 窗口内有效像素总数
uint32_t r_sum; // R通道像素值累加和
uint32_t g_sum; // G通道像素值累加和
uint32_t b_sum; // B通道像素值累加和
} awb_stat_window_t;
4.2.2 直方图典型异常模式
| 异常模式 | 直方图表现 | 可能原因 | 排查方向 |
|---|---|---|---|
| R通道整体右偏 | R直方图峰值在bin 700~900 | 传感器R增益过高或光源偏红 | 检查传感器增益配置、光源色温 |
| G通道双峰 | G直方图出现两个明显峰值 | 窗口内包含强光源与阴影区域 | 缩小窗口尺寸或启用局部统计 |
| B通道低端截断 | B直方图在bin 0~50堆积 | B通道黑电平校正异常或欠曝 | 检查OB(光学黑电平)校正值 |
| 三通道均集中在低端 | 峰值在bin 0~100 | 整体欠曝或镜头光圈过小 | 增加曝光时间或增益 |
调试技巧:在ISP调试工具中,建议同时显示“R/G/B直方图叠加图”和“R/G比值散点图”。如果直方图显示R通道整体偏高,但R/G比值散点图却集中在低比值区域,说明可能是G通道异常偏低而非R通道偏高——需要结合多维度统计交叉验证。
4.3 色温区间统计(CCT Estimator)
CCT Estimator(相关色温估计器)是AWB模块中负责将统计窗口的R/G、B/G比值映射到色温区间的关键组件。它通常基于预定义的色温查找表(LUT)或多项式模型进行估计。
4.3.1 CCT Estimator工作流程
4.3.2 色温区间划分参考
实际工程中,CCT Estimator通常将色温划分为若干离散区间,每个区间对应一组AWB增益。以下为典型划分方案:
| 色温区间 | CCT范围(K) | 典型光源 | R/G比值范围 | B/G比值范围 |
|---|---|---|---|---|
| 低色温 | 2000 ~ 3000 | 白炽灯、烛光 | 1.8 ~ 2.4 | 0.6 ~ 1.0 |
| 中低色温 | 3000 ~ 4500 | 暖白荧光灯、卤素灯 | 1.4 ~ 1.8 | 0.8 ~ 1.2 |
| 中性色温 | 4500 ~ 5500 | 日光、闪光灯 | 1.0 ~ 1.4 | 1.0 ~ 1.4 |
| 中高色温 | 5500 ~ 7000 | 阴天、荧光灯 | 0.8 ~ 1.0 | 1.4 ~ 1.8 |
| 高色温 | 7000 ~ 10000 | 蓝天阴影、LED冷白 | 0.6 ~ 0.8 | 1.8 ~ 2.4 |
常见问题:当场景中存在大面积单色物体(如蓝色墙面、红色旗帜)时,CCT Estimator可能被“欺骗”,输出错误的色温估计。解决方法:在有效窗口筛选中加入“色度饱和度”判断,排除饱和度高于阈值的窗口(通常饱和度阈值设为0.3~0.5)。
4.4 统计信息调试实战要点
4.4.1 统计窗口可视化调试
在ISP调试工具中,建议开启以下可视化功能:
- 窗口覆盖图:在图像上叠加显示统计窗口网格,每个窗口用颜色标记其R/G比值(如红色表示R/G偏高,蓝色表示R/G偏低)。
- 直方图实时刷新:选中任意窗口,实时显示该窗口的R/G/B直方图,支持叠加显示多个窗口的直方图对比。
- 色温分布热力图:将每个窗口估计的CCT值映射为颜色,生成整帧的色温分布热力图,快速定位色温异常区域。
4.4.2 常见统计异常排查清单
| 现象 | 排查步骤 | 预期结果 |
|---|---|---|
| 全帧偏红,AWB无法校正 | 1. 检查R通道直方图是否右偏 2. 检查传感器R增益寄存器 3. 检查黑电平校正值 |
R通道直方图峰值应在bin 400~600(10bit) |
| 局部区域色温跳变 | 1. 检查该区域窗口尺寸是否过大 2. 检查窗口权重配置 3. 检查该区域是否有强光源 |
窗口尺寸应小于光源区域 |
| CCT估计值长时间不更新 | 1. 检查统计窗口使能状态 2. 检查有效窗口筛选阈值 3. 检查AWB算法帧间隔配置 |
统计窗口应每帧更新 |
| 直方图出现大量空bin | 1. 检查ADC位宽配置 2. 检查数字增益是否过大 3. 检查量化步长 |
直方图应连续分布,无大量空bin |
总结:AWB统计信息的质量决定了白平衡校正的上限。窗口配置要兼顾分辨率与计算效率,直方图分析要关注分布形态而非仅看均值,CCT Estimator需要结合置信度机制避免被单色物体误导。在ISP调优工程中,建议将统计信息调试作为AWB校准的第一步,统计信息准确后再进行增益矩阵和色温曲线的精细调优。