4. AE(自动曝光)基础理论:曝光三角、亮度统计直方图与目标亮度设定
各位好,我是老周。在瑞芯微平台上调了这么多年3A,我始终觉得AE是门槛最低、但坑最多的模块。说白了,AE不像AF那样需要复杂的搜索算法,也不像AWB那样涉及色温估计——它核心就三件事:曝光三角怎么配合、直方图怎么看、目标亮度设多少。但就是这三件事,能把人折腾得够呛。
今天这一章,咱们就把AE的底裤扒干净。你把这些基础吃透了,后面调RK平台的AE策略时,至少能少走一半弯路。
4.1 曝光三角:光圈、快门、ISO的物理本质
先问个问题:曝光三角里哪个参数最重要?
我的答案是——没有最重要的,只有最受限的。你想想看,在手机或IPC这种小尺寸传感器上,光圈基本是固定的,能调的只有快门和增益。但在RK平台上,我们面对的传感器五花八门,有的带P-Iris,有的只有固定光圈,所以理解三者的物理限制比背公式重要得多。
| 参数 | 物理含义 | RK平台常见范围 | 我踩过的坑 |
|---|---|---|---|
| 光圈 (F-Number) | 通光孔径与焦距的比值 | F1.4 ~ F16 (P-Iris) 或固定值 | P-Iris校准不准,导致AE来回跳 |
| 快门 (Exposure Time) | 传感器感光的时间长度 | 1/10000s ~ 30fps帧长 | 50Hz工频闪烁,快门设成1/50s整数倍 |
| ISO (Gain) | 模拟/数字增益倍数 | ISO 100 ~ ISO 3200 (典型) | 增益超过800后,噪点压不住 |
核心公式(记住这个就够了):
曝光量 ∝ (光圈面积) × (快门时间) × (1 / ISO增益)
注意:ISO增益越大,信噪比越低。这不是线性关系,增益翻倍,信噪比大约下降3dB。
在RK平台上,AE算法通常按优先级调整:先动快门,再动增益,最后才动光圈(如果有的话)。为什么?因为光圈机械结构有寿命,增益会引入噪点,快门相对最“干净”。
个人习惯:我在调RK3588的AE时,会把快门上限卡在1/120s(室内)或1/1000s(室外),增益上限卡在ISO 1600。超过这个范围,我宁愿降低目标亮度,也不让画面全是噪点。
4.2 亮度统计直方图:AE的眼睛
直方图这东西,很多工程师觉得就是看看亮度分布。其实在RK平台上,直方图是AE决策的核心依据——它决定了AE是收敛还是震荡。
RK的ISP硬件会输出一个256bin的亮度直方图,每个bin代表一个灰度级(0~255)。AE算法拿到这个直方图后,会做三件事:
- 计算平均亮度——加权平均,不是简单平均。RK默认权重是中间亮区域权重高,暗区和亮区权重低。
- 判断场景类型——通过直方图形状判断是逆光、顺光还是均匀光照。
- 调整曝光参数——让平均亮度逼近目标亮度。
举个例子,我在RK3566上调一个室内监控项目时,发现画面总是过曝。一看直方图,峰值集中在200~240之间,明显偏右。但奇怪的是,AE算法认为平均亮度只有150,还在目标范围内。后来查代码才发现,RK默认的直方图权重对高亮区域做了抑制——说白了,算法觉得高亮区域不重要。
避坑指南:我曾经在RK平台上遇到一个bug——直方图bin的统计范围被截断了。传感器输出10bit数据,但直方图只用了8bit,导致高亮区域全部被截断到255。AE永远觉得画面不够亮,一直往上提增益,最后画面全白。排查了三天才找到问题。所以拿到新平台,第一件事就是验证直方图原始数据是否正确。
直方图还有两个重要用途:
- 过曝/欠曝检测:如果直方图在0或255处有大量像素堆积,说明画面有严重的欠曝或过曝区域。AE需要做局部补偿或调整曝光策略。
- 场景切换检测:连续两帧直方图的差异超过阈值,说明场景变了,AE需要快速响应而不是慢慢收敛。
4.3 目标亮度设定:AE的“锚”
目标亮度(Target Luminance)是AE的最终目标。设高了,画面亮但噪点多;设低了,画面暗但细节好。这个值怎么定?
在RK平台上,目标亮度通常用8bit灰度值表示,范围0~255。常见的设定值:
| 应用场景 | 推荐目标亮度 | 理由 |
|---|---|---|
| 室内监控(白天) | 120 ~ 140 | 人脸和物体细节清晰,背景不过曝 |
| 室内监控(夜间) | 80 ~ 100 | 降低增益,减少噪点,保留轮廓 |
| 户外白天 | 140 ~ 160 | 光照充足,可以适当提高亮度 |
| 车载(前视) | 100 ~ 120 | 避免高亮区域(天空、车灯)过曝 |
| 医疗内窥 | 150 ~ 180 | 需要高亮度看清组织细节 |
我的经验:目标亮度不是一成不变的。我在RK3588上做过一个自适应目标亮度的方案——根据直方图的分布动态调整目标值。如果直方图显示场景偏暗(峰值在左侧),就适当降低目标亮度,避免增益过高;如果场景偏亮(峰值在右侧),就提高目标亮度,充分利用动态范围。这个方案在逆光场景下效果特别好。
设定目标亮度时,还要考虑动态范围。传感器的动态范围是有限的,比如IMX415的典型动态范围是70dB左右。如果目标亮度设得太高,高亮区域容易过曝;设得太低,暗部细节丢失。所以目标亮度本质上是在“亮部细节”和“暗部细节”之间做权衡。
嗯,这里要注意:目标亮度不是AE唯一的约束条件。RK平台的AE还支持最小/最大曝光时间约束、最小/最大增益约束、帧率约束等。这些约束的优先级高于目标亮度。比如你设了帧率不低于30fps,那快门时间就不能超过33ms,即使目标亮度还没达到,AE也不会继续增加快门。
4.4 知识体系总览
下面这张图把本章的核心逻辑串起来了。你把它存下来,后面调AE的时候对照着看,思路会清晰很多。
这张图把AE的三大支柱和它们之间的逻辑关系画清楚了。你注意看底部的说明框——曝光三角是执行层,直方图是反馈层,目标亮度是决策层。三层闭环,缺一不可。