2、自动曝光(AE)基础:曝光三角、统计信息与控制策略

自动曝光,说白了就是让摄像头像人眼一样,能自动适应亮暗环境。你拿着手机从室内走到室外,画面不会突然过曝或全黑,这就是AE在干活。

我刚开始做ISP时,觉得AE不就是调调亮度嘛,有什么难的?直到第一次把模组装到户外球机上,大太阳底下画面一片惨白,树荫下又黑得啥也看不见。嗯,从那以后我才老老实实把AE的每个环节啃透。

2.1 曝光三角:光圈、快门、增益

曝光量由三个参数共同决定,这就是经典的曝光三角。在嵌入式摄像头里,光圈通常是固定的,所以我们主要调快门和增益。

参数 物理含义 嵌入式中的控制方式 典型范围
光圈 (Aperture) 进光孔大小 固定(手机/安防镜头)或电机驱动 F1.4 ~ F16
快门 (Shutter) 感光时间 寄存器写入曝光行数/时间 1/10000s ~ 30s
增益 (Gain) 信号放大倍数 模拟增益 + 数字增益 1x ~ 64x (通常)

核心原则:先调快门,再调增益。因为增益会放大噪声,快门只是延长曝光时间。我见过不少新手上来就拉增益,结果画面噪点满天飞。

举个例子。你在室内灯光下,目标亮度是120 lux。先拉长快门到1/30s,如果还不够亮,再加一点点增益。千万别反过来——先加增益到8x,再调快门,那画面就没法看了。

2.2 AE的统计信息

AE要干活,得先知道当前画面长什么样。Sensor把原始数据送过来,ISP的统计模块会算出几个关键指标。

2.2.1 亮度直方图

直方图把像素亮度从0到255分成256个bin,统计每个bin里有多少像素。它能告诉你画面的亮度分布。

  • 左偏:暗部像素多,画面偏暗
  • 右偏:亮部像素多,画面偏亮
  • 中间集中:对比度低,灰蒙蒙的
  • 两端溢出:过曝或欠曝区域

我的经验:只看平均亮度容易踩坑。比如夜景里有一盏路灯,平均亮度可能刚好,但暗部全黑、亮部过曝。直方图能帮你发现这种问题。

2.2.2 平均亮度

这个最简单,就是全图亮度的算术平均值。很多入门级AE算法就靠它做反馈。

但要注意——平均亮度对场景不敏感。大面积天空+小面积人物,平均亮度会被天空拉高,人脸就欠曝了。所以我一般建议用分区加权平均,把画面分成3x3或5x5的格子,中心区域权重高一些。

2.3 AE控制策略

有了统计信息,接下来就是怎么调。AE控制策略说白了就是一个闭环反馈系统。

AE 闭环控制流程图 目标亮度 误差计算 控制算法 曝光参数 Sensor 统计信息 核心反馈回路:统计信息 → 误差计算 → 控制算法 → 曝光参数 → Sensor → 统计信息

2.3.1 常用控制算法

实际工程里,AE控制算法就那么几种,各有各的脾气。

算法 原理 优点 缺点
PID控制 比例-积分-微分调节 响应快,稳态误差小 参数整定麻烦,场景切换可能震荡
查表法 预置曝光参数表 简单可靠,无震荡 场景覆盖不全,需要大量标定
爬山法 逐步逼近目标亮度 实现简单,适应性强 收敛慢,容易陷入局部最优

避坑提醒:我曾经在一个项目中用了纯PID控制,结果摄像头对着天空时,云飘过去就触发剧烈震荡,画面一闪一闪的。后来加了死区和滞回,才稳住。记住——AE控制一定要有防抖机制。

2.3.2 实际工程中的策略组合

我个人的习惯是,把场景分成几类,每类用不同的策略:

  1. 稳定场景(室内、监控):用PID,追求精度
  2. 快速变化场景(行车记录仪、机器人):用查表法+前馈,追求响应速度
  3. 极端光照(逆光、夜景):用爬山法+直方图约束,避免过曝或欠曝

你想想看,行车记录仪从隧道出来那一瞬间,如果AE反应慢了,画面白花花一片,啥也录不到。这时候查表法直接跳到户外参数,比PID慢慢调快得多。

2.4 小结

AE的基础就这些:曝光三角决定了你能调什么,统计信息告诉你怎么调,控制策略决定了调得好不好。下一块内容我们会深入AE的工程实现,包括参数标定、收敛速度优化和场景切换处理。