4. 自动曝光控制:AE算法原理、目标亮度设定、低照度下的AE策略

自动曝光(AE),说白了就是让摄像头自己决定“看多亮”。

我刚开始做ISP的时候,觉得AE不就是调个快门和增益嘛,有啥难的?后来在项目里被各种场景“教做人”之后,才明白这里面门道很深。尤其是低照度下,AE策略直接决定了画面是“看得见”还是“看得清”。

4.1 AE算法核心原理:闭环控制

AE本质上是一个闭环控制系统。它不断测量当前画面的亮度,然后跟目标亮度做比较,再调整曝光参数去逼近这个目标。

我习惯把AE拆成三个环节:

  • 亮度统计:从图像传感器拿到原始数据,计算当前画面的平均亮度、区域亮度分布。
  • 误差计算:当前亮度 vs 目标亮度,算出差值。
  • 参数调整:根据误差,调整曝光时间、模拟增益、数字增益。

嗯,这里要注意,亮度统计不是简单算全图平均。你想想看,如果画面里有一盏灯,全图平均会被拉高,导致主体欠曝。所以实际工程中,我们会用权重分区统计——画面中心权重高,边缘权重低。

核心公式(简化版):

target_luminance = 120  // 目标亮度值(8bit)
current_luminance = get_frame_luminance()
error = target_luminance - current_luminance

// 比例积分控制(PI)
exposure_compensation = Kp * error + Ki * sum(error * dt)

// 调整曝光参数
adjust_exposure(exposure_compensation)

我在项目中遇到过一个问题:只用比例控制(P),画面会来回震荡,永远稳定不下来。后来加了积分项(I),才让AE收敛得又快又稳。这就是PI控制在AE里的典型应用。

4.2 目标亮度设定:不是越亮越好

目标亮度设多少?很多新手会设得很高,觉得画面亮就是好。其实不然。

我个人的经验是:

  • 室内场景:目标亮度设在100~140(8bit范围),画面自然,噪点可控。
  • 室外白天:目标亮度可以到160~200,因为环境光充足,信噪比高。
  • 低照度场景:目标亮度要降下来,60~90就够用了。为什么?因为强行拉亮只会放大噪点,画面反而更难看。

避坑指南:

我曾经在一个夜间监控项目里,把目标亮度设到了150,结果画面全是彩色噪点,客户直接投诉。后来降到80,虽然画面暗了一点,但干净多了,客户反而满意。记住:低照度下,“看得见”比“看得亮”更重要

另外,目标亮度不是一成不变的。我建议做动态目标亮度——根据场景照度自动调整目标值。比如环境照度从100lux降到1lux,目标亮度从140平滑降到70。这样画面过渡自然,不会突然变暗或变亮。

4.3 低照度下的AE策略:保帧率还是保亮度?

低照度下,AE面临一个核心矛盾:曝光时间越长,画面越亮,但帧率越低,运动模糊越严重。

我一般按这个优先级来调整:

  1. 先开模拟增益:模拟增益的噪声比数字增益小,优先使用。一般上限设在12dB~24dB。
  2. 再拉曝光时间:如果增益到上限了还暗,就增加曝光时间。但要注意帧率不能低于某个阈值(比如15fps)。
  3. 最后用数字增益:数字增益会放大所有噪声,能不用就不用。实在没办法了,控制在6dB以内。

警告:

千万不要在低照度下把曝光时间拉到100ms以上还不降帧率。我曾经见过一个方案,曝光时间200ms,帧率硬撑30fps,结果画面一卡一卡的,运动物体全是拖影。正确的做法是:曝光时间增加,帧率同步降低。比如曝光50ms时帧率20fps,曝光100ms时帧率降到10fps。

还有一个容易被忽略的点:AE收敛速度。低照度下,场景变化(比如有人开灯)会导致亮度剧烈波动。如果AE收敛太快,画面会闪烁;收敛太慢,用户会感觉反应迟钝。我习惯在低照度模式下把收敛速度放慢30%~50%,让画面过渡更平滑。

4.4 实战策略:多帧融合与HDR

如果单帧曝光实在搞不定,可以考虑多帧融合。比如:

  • 拍一帧短曝光(保留高光细节)
  • 拍一帧长曝光(保留暗部细节)
  • 两帧融合,得到一张动态范围更大的图像

这就是HDR(高动态范围)的思路。但要注意,多帧融合对运动物体不友好,容易产生鬼影。我建议只在静态场景下开启HDR,或者用运动补偿算法。

低照度AE策略总结表:

场景照度 目标亮度 模拟增益上限 曝光时间上限 帧率下限
>100 lux 120~160 6dB 10ms 30fps
10~100 lux 100~120 12dB 30ms 25fps
1~10 lux 70~100 24dB 80ms 15fps
<1 lux 50~70 36dB 200ms 8fps

这张表是我在实际项目中反复调出来的经验值。当然,不同传感器、不同镜头会有差异,但大方向不会错。

4.5 本章知识体系

下面这张图,是我自己画的AE控制逻辑框架,帮你理清思路:

自动曝光(AE)控制逻辑框架 图像传感器原始数据 亮度统计(权重分区) 误差计算(当前 vs 目标) PI控制器(比例+积分) 曝光参数调整(增益/时间/帧率) 反馈闭环 目标亮度设定 低照度AE策略

从这张图你可以看到,AE不是简单的“亮了调暗、暗了调亮”。它需要结合目标亮度、PI控制、低照度策略,形成一个完整的闭环。我在实际项目中,还会加入场景检测模块——比如检测到是夜晚,就自动切换到低照度AE策略,把目标亮度降下来,优先保证帧率和画面干净度。

好了,这一章的内容就到这里。AE这东西,理论不难,难的是在真实场景里把参数调得恰到好处。多动手,多试错,慢慢就有感觉了。


公众号:蓝海资料掘金营,微信deep3321