2、自动曝光(AE)原理:曝光三角与收敛策略
自动曝光,说白了就是让摄像头像人眼一样,能自动适应不同亮度的环境。你想想看,从阳光明媚的户外走进昏暗的室内,人眼需要几秒钟来适应。摄像头也一样,但它靠的是算法——也就是我们今天要聊的AE。
我个人习惯把AE看作一个“找平衡”的过程。平衡什么?平衡进光量、感光度和快门速度。这三者就是经典的“曝光三角”。
2.1 曝光三角:光圈、快门、ISO
曝光三角是摄影的底层逻辑。在ISP的RAW域处理中,我们虽然不直接控制镜头光圈(那是模组厂商的事),但快门和ISO是AE算法的核心调控对象。
| 参数 | 物理含义 | 对图像的影响 | ISP中的控制方式 |
|---|---|---|---|
| 光圈(Aperture) | 镜头通光孔径的大小 | 控制进光量,影响景深 | 通常固定(F数由模组决定),AE不直接调节 |
| 快门(Shutter) | 传感器感光的时间长度 | 控制运动模糊与亮度 | 通过调整曝光行数(Line Count)或曝光时间(μs) |
| ISO(增益) | 模拟/数字信号放大倍数 | 控制亮度,但会放大噪声 | 通过调整模拟增益(AG)和数字增益(DG) |
核心原则:在RAW域中,AE的优先级通常是:先调快门,再调ISO。因为快门增加不会引入噪声,而ISO增益会放大传感器读出噪声。
我在项目中遇到过一个问题:某款手机在暗光下预览时,画面闪烁严重。查了半天,发现是快门时间刚好是工频(50Hz)的整数倍,导致荧光灯频闪。后来我强制AE在室内场景下,将快门锁定在1/100s的整数倍,问题就解决了。嗯,这里要注意,AE不能只盯着亮度,还得考虑环境光源的频闪特性。
2.2 亮度直方图:AE的眼睛
AE算法怎么知道当前画面是亮还是暗?靠的就是亮度直方图。直方图统计了图像中每个亮度级别的像素数量。在RAW域,我们通常统计的是Bayer阵列经过简单线性化后的亮度分布。
为什么要在RAW域做?因为此时图像还没经过Gamma校正、色调映射等非线性处理。RAW域的亮度是线性的,更接近真实的物理光强。你想想看,如果在sRGB域做AE,Gamma曲线会把暗部拉亮,导致AE误判“画面已经够亮了”。
我的经验:在实际工程中,我建议使用加权直方图。中心区域的像素权重更高,边缘区域权重降低。因为用户通常关注画面中央的主体。我曾经在安防摄像头项目里,因为没做中心加权,导致AE总是被天空的高亮区域“骗”了,让主体人物过暗。
直方图能告诉我们三件事:
- 过曝:像素大量堆积在右侧(高亮区),说明画面太亮,需要降低曝光。
- 欠曝:像素大量堆积在左侧(暗区),说明画面太暗,需要增加曝光。
- 动态范围不足:直方图集中在中间窄带,说明场景对比度低,可能需要调整对比度或HDR。
2.3 目标亮度设定
AE不是盲目地把画面调到最亮。它有一个“目标亮度”——也就是算法认为“看起来舒服”的平均亮度水平。这个目标通常用一个数值表示,比如在8bit RAW域中,目标平均亮度设为128(即50%灰度)。
但实际场景千变万化。一个雪景画面,如果目标亮度还是128,拍出来就是灰蒙蒙的。一个夜景画面,如果强行拉到128,噪声会爆炸。
所以,目标亮度需要根据场景自适应。我个人习惯的做法是:
- 基础目标:设定一个默认值,比如RAW域12bit数据下,目标平均亮度设为2048(满量程的50%)。
- 场景补偿:通过统计直方图的分布特征,判断场景类型。如果高亮像素占比超过30%,判定为“亮场景”,适当降低目标亮度;如果暗部像素占比超过40%,判定为“暗场景”,适当提高目标亮度(但要注意噪声)。
- 人脸优先:如果检测到人脸,以人脸区域的亮度为准。人脸的目标亮度通常比全局平均亮度高10%~20%。
避坑指南:我曾经在行车记录仪项目里,把目标亮度设得太高。结果晚上拍出来的画面,天空噪点像雪花一样。后来我加了一个“最大ISO限制”——当ISO超过某个阈值(比如1600)时,不再继续提亮,而是允许画面偏暗。这样虽然暗部细节少了,但整体画质干净多了。记住:宁可欠曝,不要过曝。欠曝还能拉回来,过曝的高光细节是永远丢失的。
2.4 AE收敛策略
AE算法不是一步到位的。它需要逐步调整,让画面亮度平滑地过渡到目标值。这个过程就是“收敛”。收敛策略的好坏,直接决定了用户体验——你肯定不想看到预览画面忽明忽暗地闪烁。
常见的收敛策略有三种:
| 策略 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 步进式 | 每次调整固定步长(如±1档曝光) | 实现简单,收敛稳定 | 收敛慢,容易在目标值附近震荡 |
| 比例式(P控制) | 调整量与当前亮度与目标亮度的差值成正比 | 收敛快,误差大时大步调整 | 容易超调,需要加阻尼 |
| PID控制 | 结合比例、积分、微分三项 | 收敛平滑,稳态误差小 | 参数整定复杂,需要调参经验 |
我个人最常用的是PID控制。为什么?因为AE的响应过程其实很像一个“惯性系统”——你调整了快门,亮度不会立刻变化,要等下一帧才能看到效果。这个延迟会导致比例控制容易超调。PID中的微分项(D项)可以预测变化趋势,提前减小调整量,避免震荡。
但PID的参数整定确实是个坑。我建议你从P=0.5, I=0.1, D=0.05开始试。如果画面震荡,就减小P和I;如果收敛太慢,就增大P。嗯,调参没有捷径,只能靠试。
2.5 AE知识体系总览
下面这张图,我把AE的核心逻辑串起来了。你可以把它当作一个快速参考。
好了,以上就是AE的核心原理。从曝光三角的物理约束,到直方图的统计方法,再到目标亮度的设定策略,最后是PID收敛的工程实现。每一步都有坑,但每一步也都有规律可循。记住:好的AE,不是让画面最亮,而是让画面看起来最自然。