自动曝光(AE)基础:曝光三要素与评价指标
自动曝光,说白了就是让相机自己决定「进多少光」。我刚开始做手机相机算法时,觉得这玩意儿不就是调个亮度嘛,后来被各种场景打脸——逆光、夜景、灯牌闪烁……嗯,这里面的门道比想象中深得多。
今天咱们就把 AE 的底裤扒干净。从物理原理到算法目标,一条线捋清楚。
曝光三要素:光圈、快门、ISO
这三兄弟共同决定了一张照片的亮度。我习惯用一个比喻:曝光 = 水管灌水。
- 光圈(Aperture):水管的口径。口径越大(F 值越小),单位时间进水量越大。
- 快门(Shutter Speed):开水龙头的时间。时间越长,总进水量越多。
- ISO(感光度):水桶的放大倍数。ISO 越高,同样的水量看起来越「满」,但噪声也越明显。
你想想看,这三个参数互相制约。大光圈能进光,但景深浅;慢快门能累积光,但手抖就糊;高 ISO 能提亮,但画质崩。AE 算法的核心,就是在这些矛盾里找一个平衡点。
| 参数 | 物理含义 | 常见范围 | 副作用 |
|---|---|---|---|
| 光圈(F 值) | 镜头通光口径 | F1.4 ~ F16 | F 值越小,景深越浅 |
| 快门(秒) | 传感器曝光时间 | 1/8000s ~ 30s | 慢快门易模糊 |
| ISO | 信号放大增益 | 100 ~ 12800 | 高 ISO 噪声大 |
曝光值与亮度的数学关系
曝光值(EV, Exposure Value)是一个标准化的亮度度量。公式很简单:
EV = log₂(F² / T)
其中 F 是光圈 F 值,T 是快门时间(秒)。ISO 的影响单独算:
EV_iso = EV + log₂(ISO / 100)
举个例子:F2.0 光圈、1/100s 快门、ISO 100,EV 是多少?
EV = log₂(2² / 0.01) = log₂(4 / 0.01) = log₂(400) ≈ 8.64
这个值越高,场景越亮。晴天户外大概 12~15 EV,室内灯光大概 4~7 EV,月光下可能只有 -2~0 EV。
AE 的目标:到底要调成什么样?
AE 的目标说起来就一句话:让图像亮度落在人眼觉得「舒服」的范围内。但落到算法里,需要拆成几个具体指标。
目标亮度(Target Luminance)
通常用图像的平均亮度或中值亮度来衡量。我习惯把 Y 通道(亮度)的均值作为参考。目标值一般设在 100~120(8bit 图像,0~255 范围)。
- 18% 灰卡标准:专业相机常用,对应 Y ≈ 118。
- 人脸优先:检测到人脸时,人脸区域亮度优先达标,背景可以适当牺牲。
- 场景自适应:夜景可以偏暗一点(保留氛围),文档扫描要亮一点(文字清晰)。
过曝/欠曝容忍度
不是所有像素都要完美曝光。算法需要定义「哪些区域可以暗,哪些区域不能亮到爆」。我常用的策略:
- 高光保护:亮度 > 240 的像素占比不能超过 1%。否则天空、灯牌会变成一片死白。
- 阴影容忍:亮度 < 20 的像素占比可以到 5%~10%。暗部细节丢失比高光过曝更容易接受。
- 人脸区域:人脸像素必须在 80~200 之间,不能过曝也不能欠曝。
| 区域类型 | 容忍范围 | 惩罚权重 |
|---|---|---|
| 高光(>240) | < 1% 像素 | 高(过曝不可逆) |
| 人脸 | 80 ~ 200 | 极高(用户敏感) |
| 阴影(<20) | < 10% 像素 | 低(可后期提亮) |
| 主体区域 | 60 ~ 220 | 中 |
AE 的评价指标:怎么才算「好」?
算法调完了,总得有个量化标准。我一般用三个指标来评价 AE 效果:
- 亮度误差:实际平均亮度与目标亮度的差值。误差 < 5 算优秀,< 10 算合格。
- 过曝率:过曝像素占比。超过 2% 就要报警。
- 收敛速度:从场景切换到达标需要的帧数。手机相机一般要求 3~5 帧内收敛。
AE 核心流程:从场景到参数
下面这张图是我自己总结的 AE 算法核心流程。每次做新平台移植,我都会先把这个框架搭好。
这个流程里,最关键的其实是第 2 步——场景分析。你想想看,同一个亮度值,在白天和夜景里的「舒服」标准完全不一样。我见过不少团队直接把第 2 步省掉,结果就是夜景过曝、白天欠曝,怎么调都别扭。