2. 曝光三要素:光圈、快门、ISO的物理意义与对图像亮度的影响
做ISP算法这些年,我见过太多工程师把AE调参当成「调三个滑块让画面不黑不白」的活儿。说实话,这么想也能跑通流程,但一旦遇到极端场景——比如大逆光、夜景运动、或者客户非要你做到14bit动态范围——你就会发现,不懂三要素的物理本质,根本没法下手。
这一章,咱们就把光圈、快门、ISO这三个东西彻底聊透。不是背参数,而是理解它们到底怎么影响进光量、怎么影响图像质量,以及你在AE策略里该怎么权衡。
2.1 光圈:通光孔径与景深控制
光圈说白了就是镜头里那个可调节的孔。孔开得大,进光多;孔收得小,进光少。这个大家都能理解。但我要强调一个容易忽略的点:光圈值F-number是焦距与孔径的比值,不是孔径本身。
核心公式:
F-number = 焦距 / 有效孔径直径
F值越小,孔径越大,进光量越大。F1.4比F2.0大一档(2倍光量)。
我在项目中遇到过一件事:某款手机镜头标称F1.8,但实测暗光下画面比竞品F2.0还暗。查了半天,发现是镜头透光率虚标,实际T-stop(透光率修正后的光圈值)只有F2.2。所以做AE时,别只看F值,要关注实际通光效率。
| 光圈值 | 相对进光量 | 景深 | 典型场景 |
|---|---|---|---|
| F1.4 | 1x(基准) | 极浅 | 暗光、人像虚化 |
| F2.0 | 0.5x | 较浅 | 室内、夜景 |
| F4.0 | 0.125x | 适中 | 日常拍摄 |
| F8.0 | 0.03125x | 很深 | 风景、文档扫描 |
避坑指南:我曾经在调试一款安防摄像头时,为了追求大光圈,把F值从2.0改到1.4。结果边缘画质崩得一塌糊涂,紫边严重。大光圈带来的不只是进光量,还有像差和色散。AE策略里,光圈优先级不能只看亮度,还要考虑光学质量。
2.2 快门:曝光时间与运动模糊
快门时间,就是传感器收集光线的时长。1/30秒比1/60秒多一倍的进光量。这个很好理解。但快门对图像的影响远不止亮度——它直接决定了运动物体的清晰度。
你想想看,如果场景里有人在走路,你用1/30秒拍,人就是模糊的;用1/200秒拍,人就冻住了。这个「冻住」的能力,取决于物体在传感器上的移动速度。
经验法则:
- 手持拍摄安全快门:1/焦距(秒)。比如50mm镜头,至少1/50秒。
- 行人运动:1/125秒以上
- 汽车运动:1/500秒以上
- 体育/飞鸟:1/1000秒以上
我记得有一次做运动相机的AE算法,客户要求「跑步场景不能有运动模糊」。我一开始把快门锁死在1/500秒,结果暗光下ISO飙到6400,噪点炸了。后来我改成动态快门策略:检测到运动区域时,局部提高快门速度;静止背景用慢快门降噪。嗯,这个思路后来成了我们产品的一个卖点。
注意:快门速度不能无限快。传感器有读出速度限制,卷帘快门(Rolling Shutter)下,过快的快门会导致逐行曝光不同步,出现「果冻效应」。做AE时,快门上限要参考传感器规格书,别想当然。
2.3 ISO:增益与噪声的博弈
ISO,全称是国际标准化组织感光度标准。但说白了,它就是传感器信号的放大倍数。光信号转成电信号后,再乘以一个增益系数。
ISO 100是基准,ISO 200就是放大2倍,ISO 400放大4倍,以此类推。每翻一倍,亮度翻一倍。
但问题来了:放大信号的同时,也放大了噪声。传感器本身有读出噪声、暗电流噪声、光子散粒噪声……这些噪声和信号一起被放大。所以ISO越高,信噪比(SNR)越低,画面越「脏」。
| ISO值 | 增益倍数 | 噪声水平 | 适用场景 |
|---|---|---|---|
| 100 | 1x | 极低 | 充足日光、三脚架 |
| 400 | 4x | 较低 | 室内、阴天 |
| 1600 | 16x | 明显 | 暗光、夜景 |
| 6400 | 64x | 严重 | 极限暗光(尽量不用) |
个人经验:我习惯把ISO分成三个区间:
- 原生ISO区间(通常100-400):画质最佳,AE应优先使用
- 中增益区间(400-1600):可接受,但需要配合降噪算法
- 高增益区间(1600以上):最后手段,必须配合多帧降噪或AI降噪
AE策略里,ISO永远是最后调整的参数。先动光圈和快门,实在不行了再拉ISO。
2.4 三要素的协同与AE策略
好了,三个东西都讲完了。现在问题来了:给定一个场景亮度,你怎么分配光圈、快门、ISO?
曝光量公式很简单:
曝光量 ∝ (光圈面积) × (快门时间) × (ISO增益)
但实际AE算法要考虑的远不止这个。我画了一张图,帮你理清三要素的权衡关系:
从这张图你能看到,AE算法本质上是一个多目标优化问题。你要在硬件限制、场景条件、画质要求之间找到平衡点。
实战中的AE策略示例:
// 伪代码:AE曝光参数计算
if (场景亮度 >= 目标亮度) {
// 光线充足,优先保证画质
光圈 = 最佳画质光圈(通常F4-F5.6)
快门 = 安全快门(1/焦距)
ISO = 原生ISO(100-200)
} else if (场景亮度 < 目标亮度) {
// 光线不足,逐步放宽约束
光圈 = 最大可用光圈(考虑像差)
快门 = 最大允许快门(考虑运动模糊阈值)
ISO = 计算所需增益
if (ISO > 噪声阈值) {
触发多帧降噪或HDR模式
}
}
一个常见的坑:我曾经看到有人把AE写成「先固定ISO,再调快门,最后调光圈」。这个顺序在大多数场景下没问题,但遇到景深敏感场景(比如微距、人像)就会翻车。正确的做法是:根据场景语义动态调整三要素的优先级。检测到人脸时,优先保证光圈够大(虚化背景);检测到文档时,优先保证光圈够小(全图清晰)。
2.5 小结
这一章我们聊了三件事:
- 光圈控制进光量和景深,F值越小越亮但像差越大
- 快门控制曝光时间和运动模糊,越慢越亮但越容易糊
- ISO控制信号增益,越高越亮但噪声越大
三要素不是独立调节的,它们通过曝光量公式耦合在一起。做AE算法时,理解每个参数的物理代价比记住公式更重要。你想想看,如果不知道大光圈会带来紫边,不知道高ISO会吃掉暗部细节,你怎么写出靠谱的AE策略?