4. 自动曝光(AE)策略:多帧合成曝光、局部曝光、基于场景的曝光权重分配
自动曝光(AE)这东西,说白了就是让摄像头自己决定“看多亮”。但安防场景里,光线变化太复杂了。大门口逆光、地下车库出入口、夜间路灯下的车牌……这些场景,单靠一套固定曝光参数根本搞不定。
我做了这么多年ISP调优,最深的体会就是:AE不是算法问题,是策略问题。你算法再牛,策略不对,出来的画面该黑还是黑,该过曝还是过曝。今天咱们就聊聊三种实战中非常有效的AE策略。
核心观点: 好的AE策略,不是让画面整体亮度均匀,而是让画面中“你关心的区域”亮度合适。其他区域,可以适当牺牲。
4.1 多帧合成曝光:用时间换动态范围
先说说多帧合成。这个技术现在很多高端IPC都在用。原理不复杂:连续拍几张不同曝光时间的帧,然后合成一张高动态范围的图像。
我记得有一次做某园区出入口的调优。白天有树荫遮挡,车牌一半在阴影里一半在阳光下。单帧怎么调都不行——要么车牌过曝,要么阴影里啥也看不见。后来上了多帧合成,问题一下就解决了。
4.1.1 多帧合成的典型流程
- 短曝光帧:捕捉高亮区域细节(比如天空、灯光)
- 中曝光帧:捕捉主体区域细节(比如人脸、车牌)
- 长曝光帧:捕捉暗部区域细节(比如阴影、夜间背景)
- 融合:按权重将三帧合成一帧
这里有个坑——运动物体。多帧合成最怕动。如果场景里有快速移动的人或车,三帧之间位置对不上,合成出来就会有鬼影。
避坑指南: 我曾经在一个停车场项目里,用了多帧合成,结果车辆快速通过时,画面出现严重的重影。后来加了运动检测模块,只在静止区域做多帧合成,运动区域用单帧。效果好了很多。
4.1.2 多帧合成的参数调优
| 参数 | 作用 | 我常用的值 |
|---|---|---|
| 帧数 | 合成使用的帧数量 | 2~3帧(再多延迟受不了) |
| 曝光差 | 相邻帧的曝光时间倍数 | 4x~8x(太大容易鬼影) |
| 融合权重 | 各帧在合成中的占比 | 中帧权重最高,短帧次之 |
| 运动阈值 | 判断像素是否运动的门限 | 根据场景噪声水平动态调整 |
4.2 局部曝光:让画面“分区自治”
多帧合成有个硬伤——延迟。拍三帧再合成,至少要多等几十毫秒。对于实时性要求高的场景(比如抓拍),这个延迟不能忍。
这时候就要用局部曝光了。说白了,就是把画面分成多个区域,每个区域独立计算曝光目标。亮的地方压低曝光,暗的地方拉高曝光。
我习惯把画面分成3×3或5×5的网格。每个格子有自己的亮度目标值。比如车牌区域,目标亮度可以设高一些;天空区域,目标亮度设低一些。
4.2.1 局部曝光的权重分配
这里有个关键点——权重怎么分。不是所有区域都重要。安防场景里,人脸、车牌、出入口这些才是重点。
- 人脸区域:权重 0.4~0.6(优先保证人脸亮度)
- 车牌区域:权重 0.3~0.5(车牌要清晰可辨)
- 背景区域:权重 0.1~0.2(能看清轮廓就行)
- 天空/光源区域:权重 0.05~0.1(允许过曝)
我的经验: 局部曝光最怕“权重打架”。比如人脸和车牌重叠的区域,两个权重都很高,算法会无所适从。我一般会设一个优先级——人脸优先于车牌,车牌优先于背景。这样冲突时有个明确的决策依据。
4.3 基于场景的曝光权重分配:让AI帮你做决策
前面两种策略,都需要人工设定参数。但实际场景是动态变化的——白天、黄昏、夜晚、逆光、顺光……每种场景的最佳曝光策略都不一样。
所以我现在更倾向于用场景识别来做曝光权重分配。让AI先判断当前是什么场景,然后自动切换到对应的曝光策略。
4.3.1 场景分类与对应策略
| 场景类型 | 特征 | 推荐AE策略 |
|---|---|---|
| 顺光场景 | 整体亮度均匀 | 全局AE,简单加权平均 |
| 逆光场景 | 背景亮、前景暗 | 局部曝光,前景权重提高 |
| 夜间场景 | 整体暗、有局部光源 | 多帧合成 + 局部曝光 |
| 混合光照 | 部分区域亮、部分暗 | 多帧合成为主 |
| 运动场景 | 有快速移动物体 | 单帧局部曝光,关闭多帧 |
你想想看,如果能让摄像头自己判断“现在是逆光,我要把前景权重提高”,那调优工作就轻松多了。
4.3.2 场景识别的实现思路
我个人习惯用亮度直方图 + 区域亮度方差来做场景分类。不需要太复杂的深度学习模型,轻量级算法就能跑在IPC的芯片上。
// 伪代码:场景识别与曝光策略切换
if (整体亮度 > 200) {
// 白天场景
if (前景亮度 < 80 && 背景亮度 > 220) {
// 逆光
启用局部曝光,前景权重 = 0.6
} else {
// 顺光
启用全局AE
}
} else if (整体亮度 > 50) {
// 黄昏/黎明
启用多帧合成(2帧)
} else {
// 夜间
启用多帧合成(3帧)+ 局部曝光
}
注意: 场景切换要加迟滞。我遇到过场景频繁切换导致画面闪烁的问题。比如黄昏时分,亮度在阈值附近来回跳,AE策略也跟着来回切。加个3~5秒的迟滞,或者用滑动平均,就能解决。
4.4 三种策略的对比与选择
最后做个总结。这三种策略不是互斥的,实际项目中经常组合使用。我一般这样选:
- 静态场景 + 高动态范围:多帧合成(效果好,延迟可接受)
- 动态场景 + 局部重要区域:局部曝光(实时性好,重点突出)
- 复杂多变场景:场景识别 + 动态切换(自适应强,但调试复杂)
嗯,这里要提醒一句:没有万能策略。每个项目都有自己的特点。我做过一个仓库项目,里面全是货架,光线均匀得很,全局AE就够用了。没必要上多帧合成,徒增功耗和延迟。
我的建议: 先做场景分析,再选策略。花一天时间采集场景数据,比花一周调参数更有价值。
好了,这一章的内容就这些。三种策略各有适用场景,关键是要理解它们的本质区别:多帧合成是用时间换动态范围,局部曝光是用空间换重点区域,场景识别是用智能换自适应。理解了这些,你就能根据实际项目灵活组合了。