1. AE算法基础

各位同学好,我是老张。做高通平台ISP调试这些年,AE收敛性是我觉得最磨人、也最有意思的一块。今天咱们先打好地基,聊聊自动曝光的基本概念,以及它在Spectra平台上是怎么流转的。

1.1 自动曝光到底在干什么?

说白了,AE就是让摄像头像人眼一样,根据环境亮度自动调节进光量。太暗了提亮,太亮了压暗,最终输出一张亮度合适的图像。

但这里有个关键点——AE不是单纯追求“亮”,而是追求“准”。我在项目中遇到过好几次,AE收敛到很亮的画面,但人脸过曝、高光细节全丢了。所以AE的目标是:在动态范围内,把主体亮度映射到目标值附近。

AE核心三要素:

  • 目标亮度:通常用Y值(亮度分量)表示,比如目标Y=100(8bit范围)
  • 收敛速度:从当前亮度到目标亮度需要多少帧
  • 稳定性:收敛后画面不闪烁、不来回跳变

1.2 曝光三角在数字域中的映射

传统摄影的曝光三角——光圈、快门、ISO,到了数字图像传感器这边,映射关系发生了本质变化。我刚开始从传统相机转做手机摄像头时,也花了不少时间才理清楚。

物理参数 数字域映射 控制方式 影响范围
光圈 (Aperture) 固定(手机多为F1.6-F2.4) 硬件固定,少数可变光圈 进光量、景深
快门 (Shutter) 曝光时间 (Exposure Time) 寄存器写入,单位us/ms 亮度、运动模糊
ISO 模拟增益 + 数字增益 Sensor增益寄存器 + ISP数字增益 亮度、噪声

嗯,这里要注意:手机摄像头的光圈通常是固定的,所以AE实际只调节快门和增益两个维度。你想想看,少了光圈这个自由度,收敛策略就得更精细。

快门与增益的权衡

我在调试一个暗光场景时,AE算法倾向于拉高增益来提亮,结果画面噪点满天飞。后来我强制限制了最大增益,让快门适当延长,画质反而好了很多。这就是典型的曝光策略问题。

  • 快门优先:先调曝光时间,再补增益。适合静止场景,画质好。
  • 增益优先:先调增益,再调快门。适合运动场景,防抖。
  • 混合策略:根据场景动态分配权重。高通Spectra默认走这条路线。

个人经验:调试初期建议先用固定策略(比如快门优先),等收敛性调稳了再切混合策略。否则你根本分不清是策略问题还是算法问题。

1.3 数字域中的曝光值计算

AE算法内部其实不直接操作物理时间,而是操作一个叫曝光指数 (Exposure Index, EI)的归一化值。

// 曝光指数计算公式(简化版)
EI = exposure_time * analog_gain * digital_gain

// 实际代码中通常用对数域表示
log2_EI = log2(exposure_time) + log2(analog_gain) + log2(digital_gain)

为什么要用对数?因为人眼对亮度的感知是对数的,而且对数域做加减法比乘除法快得多。高通Spectra的AE引擎内部全是log2域运算,这一点后面调试时会反复用到。

1.4 高通Spectra平台的AE Pipeline概述

接下来是重头戏。Spectra平台的AE Pipeline,我画了一张流程图,你看看就明白了。

高通Spectra AE Pipeline 流程图 高通Spectra AE Pipeline 数据流 Sensor Raw Data ISP 3A统计引擎 (AE Stats) AE算法核心 (目标亮度计算 + 收敛策略) 曝光决策 (Exposure Decision) Sensor/ISP 寄存器配置 帧同步反馈 关键说明 • 每帧都会走完整个Pipeline • AE Stats由硬件统计,不占CPU • 反馈回路决定收敛速度

这个流程每帧都会跑一遍。我简单解释一下各模块的作用:

  1. Sensor Raw Data:传感器输出的原始Bayer数据,还没经过任何处理。
  2. ISP 3A统计引擎:硬件模块,实时统计亮度直方图、分区平均亮度等。这部分是硬加速,不占CPU。
  3. AE算法核心:软件算法,根据统计值计算当前亮度与目标亮度的偏差,决定下一步怎么调。
  4. 曝光决策:把算法结果拆解成具体的快门、增益值。
  5. Sensor/ISP配置:把决策写入硬件寄存器,下一帧生效。

曾经踩过的坑:有一次我发现AE收敛特别慢,查了两天才发现是统计引擎的窗口配置错了——统计区域只覆盖了画面中心一小块,边缘亮暗变化完全没被纳入计算。所以调试AE的第一步,永远是确认统计引擎的配置对不对。

1.5 Spectra AE的关键特性

高通Spectra相比其他平台,有几个让我印象深刻的特性:

特性 说明 调试影响
多分区统计 画面分成5x5或15x15网格,每个格子独立统计 分区权重配置直接影响测光区域
HDR融合支持 长短帧融合时,AE需要分别控制两帧的曝光 收敛策略复杂度翻倍
帧级流水线 当前帧的统计值用于下一帧的配置 存在1-2帧的延迟,调试时要考虑
用户回调接口 允许Tuning工程师注入自定义策略 灵活性高,但也容易引入bug

我个人觉得,多分区统计是Spectra最强大的地方。你可以针对人脸区域、天空区域、暗部区域分别设置权重,实现智能测光。但这也意味着,你得花大量时间去调这些权重表。

1.6 本章小结

好了,第一节课的内容就这些。咱们捋一下重点:

  • AE的本质是亮度闭环控制,目标Y值是核心参考点
  • 曝光三角在数字域简化为快门 + 增益两个自由度
  • 高通Spectra的AE Pipeline是硬件统计 + 软件决策的混合架构
  • 调试AE的第一步,永远是确认统计引擎配置正确