第二章 自动曝光(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调优流程,每次做新项目我都会贴出来对照:
2.5 实战调优避坑指南
最后分享几个我踩过的坑,希望能帮你少走弯路:
- 不要同时调太多参数。我刚开始时恨不得把所有AE参数都改一遍,结果根本不知道哪个改了效果。后来我一次只改一个参数,记录前后对比,效率高多了。
- 注意帧率与曝光时间的矛盾。如果你要30fps,那Shutter最长只能33ms。我曾经设了50ms的曝光时间,结果帧率掉到20fps,用户说卡顿。嗯,这个要提前算清楚。
- Gain不是万能的。数字增益超过4x后,画质下降非常明显。我一般限制Gain不超过4x,实在不够就降帧率或提ISO。
- 目标亮度要结合场景。同一个Y值,在室内和室外看起来完全不一样。我习惯用“人脸亮度”作为参考,而不是全图平均亮度。
小技巧:高通平台提供了AE调试工具,可以实时看到每帧的ISO、Shutter、Gain变化曲线。我每次调优都会开着这个工具,盯着曲线看收敛过程,比看画面直观多了。
自动曝光调优,说白了就是找到ISO、Shutter、Gain之间的平衡点,同时让收敛又快又稳。掌握了这些基础,后面讲AE策略和场景适配时,你会更容易理解。