3. 曝光三角模型:光圈、快门、增益(ISO)的物理意义,数字域与模拟域增益的区别,曝光量与亮度的线性关系

曝光三角,这个词做ISP的应该都不陌生。但说实话,很多人只是背下了「光圈大进光多、快门慢进光多、ISO高噪点多」这几句口诀。真正到了调AE收敛的时候,你会发现——光知道口诀,根本不够用。

这一章,我们就把曝光三角拆开揉碎。我会结合我在几个手机平台项目里踩过的坑,把光圈、快门、增益的物理意义讲清楚。尤其是模拟增益和数字增益的区别,很多工程师在这里翻过车。

3.1 光圈:进光的「水龙头」

光圈,说白了就是镜头里那个能开能合的孔。孔径越大,单位时间进光越多。

光圈值用F数表示,比如F1.8、F2.0。注意,F数越小,光圈越大。这个关系很多人一开始会搞反。

光圈F值 相对孔径 进光量(相对F2.0)
F1.4 大 2倍
F2.0 中 1倍(基准)
F2.8 小 0.5倍

在AE收敛里,光圈通常是固定的。手机镜头基本都是定光圈,你没法在运行时调它。所以,真正用来调节曝光量的,是快门和增益。

我的经验: 做多摄切换时,不同摄像头的F数不一样。主摄F1.8,广角F2.2,切换瞬间AE会跳变。我习惯在切换前预计算好曝光补偿量,避免画面闪烁。

3.2 快门:曝光时间的「闸门」

快门控制传感器收集光线的时间。时间越长,积累的光子越多,信号越强。

快门时间通常用毫秒或行数表示。比如1/30秒、1/60秒。在AE算法里,我们更常用「曝光行数」这个概念——因为传感器是逐行读出的。

这里有个关键点:快门时间不能无限长。手抖、物体运动都会导致模糊。我见过一个项目,AE为了追求亮度把快门拉到1/10秒,结果预览画面全是拖影。用户投诉说「这手机是不是坏了」。

注意: 快门时间超过1/30秒时,手持拍摄基本必糊。AE策略里一定要设上限,通常我设1/30秒为安全边界。

3.3 增益(ISO):信号的「放大器」

增益,也叫ISO,是对传感器输出信号的放大。但它不是白给的——放大信号的同时,噪声也被放大了。

增益分为两种:模拟增益和数字增益。这个区别,是AE调优里最容易出问题的地方。

3.3.1 模拟增益 vs 数字增益

模拟增益是在传感器读出电路上做的放大。它发生在信号被数字化之前。数字增益是在ADC之后,对数字信号做的乘法。

为什么这个区别重要?因为模拟增益放大的是「信号+噪声」,而数字增益放大的是「已经包含噪声的数字信号」。前者在信噪比上更有优势。

特性 模拟增益 数字增益
作用位置 ADC之前 ADC之后
信噪比影响 信号和噪声同时放大 放大已量化的噪声
量化噪声 不引入额外量化噪声 可能放大量化误差
AE优先级 优先使用 最后手段

我曾经在一个低光场景调试中,发现画面噪点特别多。查了半天,发现AE策略把数字增益用到了6倍,而模拟增益只用了2倍。调整策略后,优先把模拟增益推到4倍,数字增益降到1.5倍,画面干净了很多。

核心原则: AE收敛时,先调模拟增益,再调数字增益。数字增益是最后的「救命稻草」,不要一开始就往上堆。

3.4 曝光量与亮度的线性关系

曝光量(Exposure Value, EV)和最终图像亮度之间,存在一个线性关系。但这个线性关系,是在对数域里看的。

简单说:曝光量每增加一倍,图像亮度(在RAW域)也增加一倍。但人眼对亮度的感知是对数的,所以我们在AE里通常用对数或线性分段来处理。

曝光量的计算公式:

EV = log2( (光圈^2) / 快门时间 )

或者更直观的:

曝光量 ∝ 进光面积 × 曝光时间 × 增益

在AE算法里,我们通常用目标亮度(Target Luminance)来反推需要的曝光参数。比如,当前画面亮度是80(0-255范围),目标是120,那就需要增加50%的曝光量。

但这里有个陷阱:增益和快门对亮度的影响不是完全等价的。增益增加会带来噪声,快门增加会带来模糊。所以AE策略需要权衡。

我的习惯: 在AE收敛表里,我会把「增益优先区」和「快门优先区」分开。低光场景先提增益到阈值,再拉快门。正常光照下先调快门,保持增益在低档位。

3.5 曝光三角的SVG结构图

下面这张图,把曝光三角的关系和AE收敛的决策路径画出来了。你可以看到光圈、快门、增益如何共同影响最终亮度,以及AE策略的优先级顺序。

曝光三角与AE收敛决策路径 曝光量 光圈(F数) 快门(时间) 增益(ISO) AE收敛优先级 1. 先调快门(安全范围内) 2. 再调模拟增益 3. 最后调数字增益 手机端特点 光圈通常固定 AE只调快门和增益 曝光量 = 进光面积 × 曝光时间 × 增益(线性关系)

3.6 曝光量与亮度的线性映射

在RAW域,曝光量和像素值之间是严格线性的。但经过Gamma校正、色调映射后,这个线性关系会被打破。

AE算法通常工作在RAW域或线性RGB域。我们计算目标亮度时,用的也是线性值。

举个例子:

当前平均亮度(线性): 80
目标平均亮度(线性): 120
需要增加的曝光倍数: 120 / 80 = 1.5 倍

如果当前快门是1/60秒,增益是2倍
方案A:快门调到 1/40秒(1.5倍)
方案B:增益调到 3倍(1.5倍)
方案C:快门1/50秒 + 增益2.4倍(组合)

三种方案都能达到目标亮度,但效果完全不同。方案A可能引入运动模糊,方案B可能噪声过大,方案C是折中。

关键点: AE收敛不是简单的数学计算,而是带约束的优化问题。约束条件包括:最大快门时间、最大模拟增益、目标信噪比、帧率稳定性等。

3.7 避坑指南

最后,分享几个我在项目中踩过的坑:

  • 增益跳变太大: 我曾经在AE收敛里让增益从1倍直接跳到4倍,结果画面亮度突变,用户能明显感觉到闪烁。后来加了平滑过渡,每次只调0.25倍。
  • 快门和增益同时调: 有些AE策略会同时调整快门和增益,导致收敛不稳定。我建议每次只调一个参数,等画面稳定后再调下一个。
  • 忽略模拟增益上限: 不同传感器的模拟增益上限不同。有的传感器模拟增益只能到4倍,超过就切到数字增益。如果不了解这个特性,AE策略会失效。
  • 亮度目标设得太高: 在低光场景下,强行把目标亮度拉到正常光照水平,会导致增益过高、噪声爆炸。我习惯根据环境照度动态调整目标亮度。

曝光三角是AE的基础,但真正做好AE收敛,需要理解每个参数背后的物理限制和噪声特性。下一层,我们会深入AE收敛的具体算法实现。