自动曝光(AE)基础:曝光三要素与亮度关系
自动曝光,说白了就是让摄像头帮你决定“怎么拍才够亮”。
我刚开始做摄像头驱动时,总觉得AE很简单——不就是调亮度嘛。直到在项目中遇到强逆光场景,画面一片死白,我才意识到,曝光这件事远没那么简单。
曝光三要素:光圈、快门、ISO
这三样东西,决定了最终图像有多亮。它们的关系,我习惯用一个比喻来理解:
- 光圈 —— 水龙头的口径。口径越大,单位时间流过的水越多。
- 快门 —— 开水龙头的时间。时间越长,接的水越多。
- ISO —— 你在水杯里加盐。盐越多,感觉水越“浓”,但味道也越怪(噪声)。
在嵌入式相机里,光圈通常是固定的(手机镜头大多如此)。所以我们真正能调的,其实是快门和ISO。
核心公式:
曝光量 ∝ 光圈面积 × 快门时间 × ISO增益
说白了,就是这三者的乘积决定了最终亮度。
曝光值与亮度关系
工程上,我们常用EV(Exposure Value)来量化曝光量。EV每增加1,亮度翻一倍。
| EV | 典型场景 | 参考亮度(cd/m²) |
|---|---|---|
| -6 | 深夜无月光 | 0.001 |
| 0 | 烛光 | 0.01 |
| 6 | 室内灯光 | 10 |
| 12 | 阴天户外 | 1000 |
| 15 | 晴天户外 | 10000 |
为什么这个表重要?因为AE算法需要知道当前场景大概在哪个EV范围,才能决定初始参数。我记得第一次调AE时,没做场景分类,结果在暗光下直接用了晴天参数,画面黑得什么都看不见。
AE的目标与评价指标
AE的目标听起来很简单:让图像亮度“刚刚好”。但什么叫“刚刚好”?
我个人习惯用三个指标来评价:
- 目标亮度偏差 —— 图像平均亮度与目标亮度的差值。一般控制在±5%以内。
- 收敛速度 —— 从场景变化到曝光稳定所需帧数。我要求手机端≤5帧,安防端≤10帧。
- 稳定性 —— 稳定后亮度是否来回跳动。跳动幅度超过2%就算不合格。
避坑指南:
我曾经在项目中只关注了目标亮度偏差,结果收敛速度很慢。后来发现是增益步长设得太小了。你想想看,每次只调一点点,当然要很多帧才能到位。
AE的典型工作流程
下面这张图,是我自己总结的AE核心流程。每次带新人,我都会先让他们看这个:
这个流程看起来简单,但实际落地时坑很多。比如:
- 直方图统计区域怎么选?全图平均还是中心权重?
- 目标亮度设多少?不同场景目标亮度应该不同。
- 调整步长怎么定?步长太大容易过冲,太小收敛慢。
注意:
千万不要在低光照场景下把ISO拉得太高。我曾经在项目中为了追求亮度,把ISO推到3200,结果图像全是彩色噪点,比暗一点还难看。
AE的评价指标详解
上面提到了三个指标,这里展开说说:
| 指标 | 定义 | 我常用的阈值 | 为什么重要 |
|---|---|---|---|
| 目标亮度偏差 | 实际亮度 / 目标亮度 - 1 | ±5% | 直接影响用户观感 |
| 收敛速度 | 从场景变化到稳定所需帧数 | ≤5帧(手机) | 影响用户体验流畅度 |
| 稳定性 | 稳定后帧间亮度波动 | ≤2% | 避免画面闪烁 |
嗯,这里要注意:这三个指标是相互制约的。你追求收敛速度快,步长就得大,但稳定性就会变差。你追求稳定性,步长就得小,收敛速度就慢。这就是AE算法设计的核心矛盾。
我的经验:
实际项目中,我一般先保证稳定性,再优化收敛速度。因为用户对闪烁的容忍度远低于对“稍微慢一点”的容忍度。你想想看,画面一闪一闪的,多难受。
小结
自动曝光的基础,说白了就是三件事:
- 理解光圈、快门、ISO怎么配合
- 知道EV和亮度的对应关系
- 明确AE的目标和评价指标
这些概念看起来简单,但它们是后续所有AE算法优化的基石。我见过不少工程师,上来就调PID参数,结果连目标亮度都没搞清楚,调了半天白费功夫。