第四章 瑞芯微ISP Pipeline概览:AE和AWB在流程中的位置

做图像调试,第一件事不是调参数,而是搞清楚数据流。我见过不少新人,上来就对着AE表格猛改,结果发现统计信息根本没走到算法模块——白忙一场。

这一章,咱们把瑞芯微的ISP Pipeline拆开看看。重点搞清楚两件事:AE和AWB到底插在流程的哪个位置?它们跟AEC、AWB统计信息是怎么交互的?

4.1 整体数据流:从Sensor到YUV

先看一张总图,心里有个框架。

核心观点:AE和AWB不是独立模块,它们寄生在ISP Pipeline的特定节点上,靠统计信息“反馈”调节前端参数。

瑞芯微ISP Pipeline与AE/AWB交互位置 Sensor RAW BLC / LSC AE 统计 AWB 统计 Demosaic RGB → YUV AEC 算法引擎 AWB 算法引擎 曝光参数(增益/快门) 白平衡增益(R/G/B) ISP处理模块 算法引擎 控制输出 统计信息采集点 数据流 反馈/控制流

这张图我画了好几个版本才定下来。你注意看红色和蓝色的统计采集点——它们都在Demosaic之前,也就是RAW域。为什么?因为一旦做了插值和颜色校正,统计信息就“脏”了,没法准确反映原始场景。

4.2 AE统计信息:在哪里采?采什么?

AE统计的采集位置,通常在BLC和LSC之后,Demosaic之前。说白了,就是拿到干净的RAW数据,但还没做颜色处理。

统计项 采集位置 用途
亮度直方图 RAW域,BLC后 评估整体曝光水平
分区平均亮度 RAW域,分块统计 背光/强光场景检测
饱和度统计 RAW域,R/G/B分别统计 防止高光溢出
运动检测 帧间比较 防抖/多帧合成触发

个人经验:我习惯在AE统计里额外开一个“暗区细节”统计通道。很多平台默认只关注整体亮度,结果拍夜景时人脸死黑一片。加一个低照度分区统计,能显著改善暗光场景的曝光策略。

4.3 AWB统计信息:色温估计的“眼睛”

AWB统计跟AE统计共享同一个RAW域采集点,但计算的内容完全不同。AWB关心的是:

  • R/G和B/G比值:这是色温估计的核心指标
  • 色温分布图:把全图分成M×N个块,每个块算一个色温值
  • 置信度权重:排除过暗、过饱和、纯色区域

为什么会这样?因为AWB算法本质上是在做“场景色温估计”。如果统计信息里混入了经过颜色校正的数据,那估计出来的色温就是错的。

我曾经踩过的坑:有一次调试AWB,发现室内白炽灯下总是偏黄。查了两天,最后发现是统计窗口配置错了——统计区域包含了画面边缘的黑色遮罩。黑色区域的R/G比值极低,直接把色温估计拉偏了。从那以后,我每次都会检查统计窗口的ROI配置。

4.4 AEC与AE统计的交互机制

AEC(Auto Exposure Control)是算法引擎,AE统计是数据源。它们之间的交互,我总结为三步:

  1. 采集:ISP硬件在每一帧的RAW域计算AE统计信息
  2. 上报:统计结果通过DMA写入内存,触发中断通知CPU
  3. 决策:AEC算法读取统计值,计算新的曝光参数(增益、快门、光圈)

这里有个关键点:统计信息是“上一帧”的。你当前帧看到的统计值,反映的是前一帧的曝光情况。所以AEC算法必须做预测——根据历史趋势推算下一帧该调多少。

核心参数:瑞芯微平台里,AE统计的帧延迟通常为1~2帧。如果你发现曝光收敛很慢,先检查统计延迟配置,别急着调PID参数。

4.5 AWB与AWB统计的交互机制

AWB的交互流程跟AE类似,但多了一个“增益应用”环节:

步骤 动作 说明
1 采集RAW域R/G/B统计 分块统计,排除无效区域
2 AWB算法计算色温 基于统计值查表或模型拟合
3 生成R/G/B增益 三个通道独立的数字增益
4 写入ISP增益寄存器 在Demosaic之后、RGB转换之前生效

你想想看,如果AWB增益在Demosaic之前就应用了,那插值算法会放大噪声。所以瑞芯微的Pipeline设计是合理的——统计在RAW域,增益应用在Demosaic之后。

4.6 AE与AWB的耦合关系

这里有个容易忽略的问题:AE和AWB不是独立的。

  • AE改变增益 → RAW数据整体缩放 → AWB统计的R/G/B比值不变,但信噪比变了
  • AE改变快门 → 运动模糊程度变化 → AWB在暗区的统计置信度变化
  • AWB改变增益 → RGB通道放大倍数不同 → AE统计的亮度值会受影响

说白了,你调AE的时候,AWB也在跟着动。反过来也一样。这就是为什么需要联合调试。

我的调试习惯:先固定AWB增益为日光白平衡(D65),单独调AE。等AE收敛到满意了,再打开AWB自动模式。这样能避免两个环路互相干扰,定位问题也快。

4.7 瑞芯微平台的特殊之处

瑞芯微的ISP相比其他平台,有几个设计特点值得注意:

  • 统计信息可编程:AE和AWB的统计窗口、权重、分块数都可以通过寄存器配置
  • 硬件直方图加速:AE的直方图统计由硬件完成,不占用CPU
  • AWB支持多色温模型:可以同时跟踪多个光源的色温

嗯,这些特性用好了,调试效率能翻倍。但用不好——比如统计窗口配错了——那就是灾难。

避坑指南:瑞芯微的AE统计默认开启“全局自动权重”。但在强背光场景下,这个自动权重会把高光区域的权重降低,导致人脸过曝。我建议在背光场景下强制使用“中心权重”模式。

4.8 小结:一张表看懂位置与交互

模块 统计采集位置 算法执行位置 控制输出 帧延迟
AE RAW域,BLC后 CPU/ISP协处理器 Sensor增益/快门 1~2帧
AWB RAW域,BLC后 CPU/ISP协处理器 RGB增益寄存器 1~2帧
AE+AWB联合 共享统计硬件 分时或并行执行 分别控制不同参数 需考虑耦合延迟