4、AE核心指标:目标亮度、平均亮度、收敛速度与稳定性
好,咱们今天聊点实在的。自动曝光(AE)这玩意儿,说复杂也复杂,说简单也简单。但不管算法怎么变,最终都得落到几个核心指标上。我个人习惯把这四个指标称为AE的「四根柱子」——目标亮度、平均亮度、收敛速度、稳定性。
你想想看,如果连目标亮度都定不准,后面全是白搭。如果平均亮度算得不准,那曝光就是瞎蒙。如果收敛太慢,用户一抬手画面还在闪。如果画面来回抖,那还不如不调。
嗯,咱们一个一个拆开讲。
4.1 目标亮度(Target Luminance)
目标亮度是什么?说白了,就是你觉得画面「应该有多亮」。这个值不是传感器测出来的,是算法定出来的。
核心观点:目标亮度是AE的「锚点」。锚定错了,后面全错。
我在项目中遇到过一件事。某款手机在夜景模式下,目标亮度定得太高,结果画面噪点爆炸。后来我们把目标亮度从120降到80(8bit域),噪点立刻压下去了。你看,一个数字的差别,效果天差地别。
目标亮度通常怎么定?一般有几种策略:
- 固定值策略:比如直接定在100(8bit Y域)。简单粗暴,但适应性差。
- 场景自适应策略:根据场景检测结果动态调整。比如人脸场景目标亮度高一些,夜景场景低一些。
- 用户偏好策略:让用户手动调EV补偿,本质就是在调目标亮度。
我个人建议,工程落地时至少用场景自适应。固定值太容易翻车了。
4.2 平均亮度(Average Luminance)
平均亮度,就是当前画面实际有多亮。这个值怎么算?不是简单像素平均,那会出大问题。
举个例子。你拍一张夜景,画面大部分是黑的,但有一盏路灯很亮。如果做算术平均,亮度值会被路灯拉高,结果AE以为画面够亮了,实际暗部全死黑。
所以,工程上常用的方法有:
| 方法 | 原理 | 适用场景 |
|---|---|---|
| 算术平均 | 所有像素Y值求和除以总数 | 均匀光照场景 |
| 加权平均 | 中心区域权重高,边缘权重低 | 中心主体场景 |
| 直方图统计 | 按亮度区间统计,取中位数或众数 | 高动态场景 |
| 人脸加权 | 检测到人脸时,人脸区域权重极高 | 人像场景 |
经验之谈:我一般用直方图统计+人脸加权组合。直方图能抗高动态,人脸加权能保肤色。两个一起上,基本稳。
4.3 AE收敛速度
收敛速度,就是AE从当前亮度调整到目标亮度需要多长时间。这个指标直接影响用户体验。
你想想看,用户从室内走到室外,如果AE要3秒才反应过来,画面一直过曝,用户早就骂娘了。
但收敛速度也不是越快越好。太快了,画面会「抽风」——突然变亮又突然变暗,看着头晕。
工程上怎么控制收敛速度?核心是调整步长:
- 大步长:收敛快,但容易过冲,画面抖动。
- 小步长:收敛慢,但平滑,适合微调。
- 自适应步长:误差大时用大步,误差小时用小步。这是主流方案。
注意:我曾经踩过一个坑——自适应步长的阈值设得太激进。结果在明暗交替场景下,AE反复在「大步-小步」之间切换,画面反而更抖了。后来加了滞回区才解决。
4.4 AE稳定性(防抖)
稳定性,说白了就是画面不能来回晃。这个指标和收敛速度是矛盾的——你越想快,就越容易抖。
AE抖动的原因通常有几种:
- 噪声干扰:传感器噪声导致平均亮度计算值波动。
- 场景变化:风吹树叶、行人走动,导致亮度突变。
- 算法振荡:步长和增益配合不当,形成正反馈。
怎么防抖?我常用的手段:
- 时域滤波:对平均亮度做低通滤波,比如一阶IIR。系数0.3~0.5比较常用。
- 滞回比较:误差超过阈值才调整,小于阈值就保持。避免微小的亮度波动触发调整。
- 帧间平滑:增益和曝光时间的变化速率做限幅,每帧最多变化多少。
核心原则:AE稳定性优先于收敛速度。画面稳了,用户才觉得「专业」。画面抖了,再快也没用。
4.5 四个指标的关系
这四个指标不是孤立的。我画了一张图,帮你理清它们的关系:
从图上你能看到,目标亮度和平均亮度是「输入」,收敛速度和稳定性是「输出」。但输出之间又互相制约。说白了,这就是一个多目标优化问题。
工程落地时,我的建议是:
- 先定目标亮度策略——场景自适应是底线。
- 再选平均亮度算法——直方图+人脸加权是稳妥组合。
- 然后调收敛速度——自适应步长,但加滞回区防抖。
- 最后压稳定性——时域滤波+帧间限幅,双保险。
一个小技巧:调试时先把稳定性拉到最大(收敛慢但稳),确认目标亮度和平均亮度没问题后,再逐步放开收敛速度。这样定位问题快很多。
嗯,这四个指标讲完了。记住一句话:目标亮度是方向,平均亮度是现状,收敛速度是节奏,稳定性是底线。四个都抓好了,AE才算真正落地。