3. AE控制策略:步进调整、PID控制、基于场景的AE策略

曝光控制,说白了就是给传感器找那个「刚刚好」的进光量。太暗了细节全丢,太亮了高光一片死白。我做了这么多年ISP,见过太多团队在AE上翻车——不是来回震荡,就是场景切换时闪瞎眼。

今天咱们就把AE的三种主流控制策略掰开揉碎。从最基础的步进调整,到工业界最爱的PID,再到我实战中积累的场景化策略。嗯,这部分内容,够你少踩三年坑。

3.1 步进调整:最朴素的曝光控制

步进调整,也叫阶梯式调整。思路很简单:每次调一小步,直到目标亮度达标。

伪代码大概长这样:

// 步进调整伪代码
int target_luma = 120;  // 目标亮度
int current_luma = get_current_luma();
int step = 8;           // 步长

if (abs(current_luma - target_luma) < threshold) {
    // 稳定了,不动
    return;
}

if (current_luma < target_luma) {
    // 太暗,增加曝光
    exposure += step;
} else {
    // 太亮,减少曝光
    exposure -= step;
}

优点很明显:实现简单,计算量小。但问题也突出——步长选大了容易震荡,选小了收敛慢。我见过一个项目,步长设了4,结果从室内走到室外,花了将近3秒才稳定。用户都开始骂街了。

我的经验:步进调整适合低帧率或场景变化慢的设备,比如安防监控。手机这种频繁切换场景的,别用。

3.2 PID控制:工业级AE的标配

PID控制,比例-积分-微分。这玩意儿在工业控制领域用了快百年了,放到AE里一样好使。

核心公式:

error = target_luma - current_luma

P = Kp * error
I = Ki * ∫error dt
D = Kd * d(error)/dt

output = P + I + D

简单解释一下:

  • P(比例):当前误差有多大,就调多少。反应快,但容易过头。
  • I(积分):累计误差。专门对付稳态误差——就是那种「差一点点到目标」的情况。
  • D(微分):误差变化趋势。提前刹车,防止超调。

我在项目中遇到过最典型的场景:手机从暗光环境快速移到亮光环境。只用P的话,曝光会冲过头,然后来回震荡好几帧。加上D之后,一次到位,稳得很。

注意:PID参数调不好,比步进调整还烂。我曾经在一个项目里,Kp设大了,结果AE像抽风一样来回跳。后来花了整整两天调参才搞定。

PID参数调优口诀(我自己总结的):

现象 调大Kp 调大Ki 调大Kd
响应太慢 ✓
稳态误差大 ✓
超调严重 ✓
震荡不停 减小 减小 ✓

3.3 基于场景的AE策略

说实话,纯PID也不是万能的。不同场景下,AE的目标和行为应该不一样。这就是我接下来要讲的——场景化AE策略。

3.3.1 低光场景

低光下,核心矛盾是「亮度和噪声」的取舍。你强行提亮,噪声就炸了。

我的策略:

  • 目标亮度降低:从正常的120降到80-90。别追求亮,追求「看得清」就行。
  • 优先提增益:先拉模拟增益,再拉数字增益。模拟增益的噪声特性好一些。
  • 限制最大曝光时间:手持设备别超过1/30s,不然糊片。
避坑指南:我曾经在低光场景下把目标亮度设到140,结果画面亮是亮了,但噪点跟雪花似的。用户投诉「还不如暗一点」。后来我学乖了——低光下,信噪比优先于亮度。

3.3.2 逆光场景

逆光,人脸黑背景亮。这时候全局测光就是灾难——背景正常了,人脸死黑。

我的做法:

  • 切换到人脸ROI测光:检测到人脸后,以人脸区域为测光目标。
  • 开启局部HDR:如果硬件支持,直接上HDR合成。
  • 动态范围压缩:用tone mapping把高光压下来,暗部提上去。

你想想看,逆光场景下如果还用全局AE,人脸区域可能只有20-30的亮度值。这时候你强行提全局曝光,背景就过曝了。正确的做法是——以人脸为目标,背景过曝就过曝,后期用tone mapping拉回来。

3.3.3 高动态场景

高动态,就是场景里既有极亮又有极暗。比如窗户边的室内场景。

策略:

  1. 检测动态范围:统计直方图,看最亮和最暗的差距。
  2. 判断是否触发HDR:如果动态范围超过传感器能力(比如超过72dB),启动多帧合成。
  3. AE目标调整:HDR模式下,AE目标不再是单一亮度,而是「暗帧提亮、亮帧压暗」的折中。
我建议:高动态场景下,AE和HDR一定要联动。别AE调完了再去做HDR,那样效果差很多。最好是AE直接为HDR服务——比如短帧负责高光细节,长帧负责暗部细节。

3.4 三种策略的对比与选择

策略 收敛速度 稳定性 实现复杂度 适用场景
步进调整 慢 中 低 安防、低帧率设备
PID控制 快 高 中 手机、相机等主流设备
场景化策略 最快 最高 高 旗舰手机、专业相机

我个人习惯是:基础用PID,然后根据场景切换参数集。低光一套参数,逆光一套参数,普通场景一套参数。这样既保证了响应速度,又兼顾了场景适应性。

AE控制策略知识体系 AE控制策略 步进调整 实现简单,收敛慢 PID控制 工业标准,需调参 场景化策略 自适应,效果最好 低光策略 逆光策略 高动态策略 核心思路:PID为基础 + 场景参数切换 低光→降目标亮度 | 逆光→人脸ROI | 高动态→联动HDR

最后说一句:AE控制没有银弹。步进调整简单但慢,PID快但需要调参,场景化策略效果好但实现复杂。我的建议是——从PID起步,逐步加入场景判断逻辑。别一上来就想搞个大而全的系统,容易把自己绕进去。