第二章 自动曝光(AE)基础:曝光三角与收敛调优

自动曝光,说白了就是让摄像头替人眼做决定——该亮多少、暗多少才算“正常”。我刚开始接触高通平台时,总觉得AE不就是调调ISO和快门嘛,后来才发现,这里面的坑比想象中多得多。

2.1 曝光三角:ISO、Shutter、Gain

曝光三角是AE的物理基础。三个参数互相牵制,任何一个动一下,画面亮度都会变。

参数 作用 典型范围(高通平台) 副作用
ISO 传感器模拟增益 100 ~ 3200 越高噪点越明显
Shutter 曝光时间 1/10000s ~ 30s 越长越容易手抖模糊
Gain 数字增益(ISP域) 1x ~ 16x 放大噪声,动态范围压缩

核心原则:优先调Shutter,其次ISO,最后才动Gain。为什么?因为Shutter影响的是时间,不引入噪声;ISO引入模拟噪声但可控;Gain是数字放大,噪声和信号一起放大,画质损失最大。

我在项目中遇到过这样一个场景:暗光下预览,AE算法拼命拉ISO到3200,画面全是彩色噪点。后来我强制限制了ISO上限为1600,让算法多提一点Shutter,虽然帧率降到了20fps,但画面干净多了。嗯,这就是曝光三角的权衡。

2.2 AE收敛速度与稳定性

收敛速度,就是摄像头从暗变亮或从亮变暗需要多少帧。稳定性,就是亮起来之后会不会来回晃。

你想想看,如果收敛太快,画面会“闪”一下;如果太慢,用户都开始拍照了还没稳定。高通平台里,AE收敛主要靠下面几个参数控制:

  • Convergence Speed:每帧允许的最大亮度变化步长
  • Stability Threshold:认为“已稳定”的亮度误差范围
  • Damping Factor:阻尼系数,防止过冲

我的调优习惯:先把Stability Threshold设宽一点(比如±5%),让AE快速进入稳定区;再逐步收窄到±2%,保证精度。这样既快又稳。

我曾经踩过一个坑:把Convergence Speed设得太大,结果从室内走到室外时,画面先过曝两帧再拉回来,用户投诉“闪瞎眼”。后来我加了帧间平滑,每次变化不超过目标亮度的15%,问题就解决了。

2.3 目标亮度设定

目标亮度(Target Luminance)是AE的“终点”。高通平台通常用Y值(亮度分量)来表示,范围0~255。

不同场景的目标亮度差异很大:

场景 推荐目标Y值 说明
普通室内 110 ~ 130 人脸肤色自然
户外晴天 140 ~ 160 保留高光细节
夜景 60 ~ 80 避免过曝,保留暗部
文档扫描 180 ~ 200 文字清晰,背景亮白

注意:目标亮度不是死的。如果场景中有大面积高亮区域(比如天空),算法会自动压低目标亮度,防止高光溢出。高通平台的AE引擎内置了场景检测,会动态调整目标值。

我个人习惯在调优时先固定目标亮度,等AE收敛稳定后再微调。不要一上来就改目标值,否则你分不清是收敛问题还是目标问题。

2.4 AE核心流程框架

下面这张图是我自己总结的AE调优流程,每次做新项目我都会贴出来对照:

AE自动曝光调优流程框架 AE自动曝光调优流程框架 传感器原始数据 3A统计(AE Stats) AE算法计算 收敛速度控制 目标亮度设定 曝光参数输出 反馈闭环 说明: AE算法根据统计值计算目标曝光量,通过收敛速度控制平滑输出,同时参考目标亮度设定。 输出参数反馈回传感器,形成闭环控制。

2.5 实战调优避坑指南

最后分享几个我踩过的坑,希望能帮你少走弯路:

  • 不要同时调太多参数。我刚开始时恨不得把所有AE参数都改一遍,结果根本不知道哪个改了效果。后来我一次只改一个参数,记录前后对比,效率高多了。
  • 注意帧率与曝光时间的矛盾。如果你要30fps,那Shutter最长只能33ms。我曾经设了50ms的曝光时间,结果帧率掉到20fps,用户说卡顿。嗯,这个要提前算清楚。
  • Gain不是万能的。数字增益超过4x后,画质下降非常明显。我一般限制Gain不超过4x,实在不够就降帧率或提ISO。
  • 目标亮度要结合场景。同一个Y值,在室内和室外看起来完全不一样。我习惯用“人脸亮度”作为参考,而不是全图平均亮度。

小技巧:高通平台提供了AE调试工具,可以实时看到每帧的ISO、Shutter、Gain变化曲线。我每次调优都会开着这个工具,盯着曲线看收敛过程,比看画面直观多了。

自动曝光调优,说白了就是找到ISO、Shutter、Gain之间的平衡点,同时让收敛又快又稳。掌握了这些基础,后面讲AE策略和场景适配时,你会更容易理解。