自动曝光(AE)基础:曝光三要素与图像亮度的关系

做ISP算法,第一个要啃的硬骨头就是自动曝光(AE)。说白了,AE要解决的核心问题就一个:让摄像头在不同光照下,都能输出亮度合适的图像。太暗了看不清细节,太亮了过曝一片死白,都不行。

要理解AE,必须先吃透曝光三要素——光圈、快门、增益。这三兄弟共同决定了最终图像的亮度。我当年刚入行时,以为AE就是调调曝光时间那么简单,结果在项目里踩了不少坑。今天咱们就把这三要素彻底讲明白。

1. 曝光三要素:谁在控制亮度?

先看一张整体关系图,帮你建立全局认知:

曝光三要素与图像亮度关系 图像亮度 光圈 (Aperture) F值控制进光量 快门 (Shutter) 曝光时间控制 增益 (Gain) 模拟/数字放大 三要素协同影响亮度 光圈决定单位时间进光量 → 快门决定曝光时长 → 增益决定信号放大倍数 三者共同作用:亮度 ∝ 光圈面积 × 曝光时间 × 增益 光圈 影响景深 物理限制大 快门 影响运动模糊 范围最灵活 增益 影响噪声 最后手段

2. 光圈:进光量的阀门

光圈是镜头里控制通光孔径的机械结构。你想想看,它就像水龙头阀门——开得越大,单位时间流过的水就越多。

光圈大小用F值表示,比如F1.4、F2.0、F2.8、F4.0……这里有个容易搞混的地方:F值越小,光圈越大。F1.4比F2.0进光量多一倍。为什么?因为F值是焦距除以孔径直径,分母越大值越小嘛。

关键公式:进光量 ∝ 1 / (F值)²

F2.0的进光量是F2.8的2倍,是F4.0的4倍。

我在项目中遇到过一个问题:某款手机摄像头最大光圈F1.8,但边缘画质很差。后来发现是光圈全开时镜头像差太大。最后我们不得不收一档到F2.4,牺牲一点进光量换画质。这就是工程上的取舍。

3. 快门:曝光时间的控制器

快门控制传感器接收光线的时间长度。单位通常是秒或毫秒,比如1/30s、1/60s、1/120s。

快门时间越长,进光量越多,图像越亮。但代价是什么?运动模糊。手持拍摄时,1/30s以下就容易糊片。拍运动物体时,1/500s都不一定够。

场景 推荐快门范围 注意事项
室内静止场景 1/30s ~ 1/60s 三脚架可更慢
手持日常拍摄 1/60s ~ 1/125s 防抖可降低要求
运动物体 1/500s 以上 需要足够光照
暗光环境 1/10s ~ 1/30s 配合防抖或固定

做AE算法时,快门是最常用的调节手段。因为它调节范围大、连续可调、没有物理磨损。我习惯把快门作为AE的第一优先级调节对象。

4. 增益:最后的救命稻草

增益是对传感器输出的电信号进行放大。分为模拟增益和数字增益两种。

  • 模拟增益:在ADC转换前放大,放大的是原始信号+噪声。通常增益范围1x~16x。
  • 数字增益:在ADC转换后放大,放大的是数字信号+量化噪声。增益可以很高,但噪声也大。

避坑指南:我曾经在一个安防项目中,为了省成本用了低端传感器。暗光下增益拉到8x以上时,图像全是噪点,根本没法看。后来我学乖了——增益是最后的手段。能调光圈和快门解决的问题,绝不动增益。

增益和噪声的关系,可以用一个简单公式理解:

信噪比(SNR) = 信号 / 噪声
增益放大信号的同时也放大噪声
所以 SNR 基本不变,但噪声值变大
人眼看起来就是「噪点变多了」

5. 三要素的协同与权衡

实际AE算法中,三要素不是独立调节的。它们之间存在互易关系:

亮度 = k × (光圈面积) × (快门时间) × (增益)

其中k是常数,取决于场景反射率、传感器量子效率等。要达到目标亮度,三要素可以互相补偿:

  • 光圈收一档 → 快门放慢一档 或 增益提高一倍
  • 快门加快一档 → 光圈开大一档 或 增益提高一倍
  • 增益降低一半 → 快门放慢一档 或 光圈开大一档

但实际工程中,我们得考虑更多约束:

要素 调节优先级 主要约束 典型范围
快门 第一优先 运动模糊、闪烁 1/10000s ~ 30s
光圈 第二优先 景深、镜头像差 F1.4 ~ F16
增益 最后手段 噪声、动态范围 1x ~ 64x

我的经验:做AE策略时,先定一个「无噪声目标亮度区间」。在这个区间内,优先调快门和光圈。只有两者都到极限了,才动增益。这样能保证大部分场景下图像质量最优。

6. 实战中的AE策略示例

假设一个监控摄像头项目,传感器参数如下:

  • 最大快门:1/10000s
  • 最小快门:1/30s(避免运动模糊)
  • 光圈:固定F2.0(低成本镜头)
  • 增益范围:1x ~ 8x

AE算法的调节逻辑可以这样设计:

// 伪代码:AE策略示例
if (当前亮度 < 目标亮度) {
    if (快门 < 最大快门) {
        增加快门时间
    } else if (增益 < 最大增益) {
        增加增益
    } else {
        报告「光照不足,无法达到目标亮度」
    }
} else if (当前亮度 > 目标亮度) {
    if (增益 > 最小增益) {
        降低增益
    } else if (快门 > 最小快门) {
        减少快门时间
    } else {
        报告「光照过强,需要减光」
    }
}

你看,这个策略里增益的优先级低于快门。为什么?因为增益引入的噪声是「不可逆」的——一旦放大,后续的降噪算法只能缓解,不能消除。

7. 总结:记住这三句话

曝光三要素和亮度的关系,其实没那么复杂。我总结了三句话,你记牢就行:

  1. 光圈管「单位时间进光量」——开大光圈进光多,但景深浅、像差大。
  2. 快门管「曝光总时长」——慢快门进光多,但容易糊片。
  3. 增益管「信号放大倍数」——增益高亮度高,但噪声也高。

做AE算法时,记住一个原则:先调快门,再调光圈,最后动增益。这个顺序能帮你避开大部分坑。