4.7. 曝光与增益¶
有两个旋钮可以改变每个像素单元向流水线后续环节报告的亮度:
曝光时间(也称积分时间)——光电二极管在读出之前被允许收集电荷的时长。
模拟增益——在 ADC 之前由片上放大器施加于读出电压的倍数。
这两个旋钮都能让记录到的图像变得更亮,但它们达成这一点的方式各不相同,而且各有代价。
4.7.1. 曝光时间¶
曝光时间越长,每个单元每帧收集到的电子就越多,因此对于同一场景得到的数字计数也越高。曝光时间减半,计数大致减半;曝光时间加倍,计数大致加倍。这种关系在阱饱和之前都是线性的。
代价是运动。单元记录的是在整个积分窗口内到达它的平均光照,因此任何在这段窗口期间移动了明显距离的物体都会被涂抹到多个像素上——即运动模糊。一个行走的人在 1/30 秒曝光下会模糊到好几个像素;同一个人在 1/500 秒曝光下则显得清晰。
长曝光也会让单元更接近饱和,因此在光照充足的场景中,即使亮度本身没问题,曝光也必须降下来——否则高光部分会过曝裁切。
4.7.2. 模拟增益¶
模拟增益是位于光电二极管读出与 ADC 之间的一个小放大器。信号电压在被数字化之前会乘以增益,因此相同数量的电子最终读出的数值会更大。增益通常以分贝(dB)表示;增益加倍即为 +6 dB。
在光线太暗、无法再延长曝光的情况下,增益能派上用场——此时再延长曝光要么会让帧率降到低于应用所需,要么会引入过多的运动模糊。代价是噪声。放大器在放大信号的同时也会放大本底噪声,因此信噪比并不会随着增益增大而改善。在相同的场景亮度下,高增益产生的图像比低增益更粗糙、噪声更多。
有些传感器还提供一个数字增益旋钮,它是 ADC 之后的整数倍乘器。从噪声角度看,数字增益比模拟增益还要糟糕,因为它还会放大来自 ADC 的量化噪声。应当把它作为最后的手段。
4.7.3. 自动曝光与自动增益¶
真实的摄像头需要应对亮度跨度极大的场景——例如同一视野中既有昏暗的室内房间又有阳光照射的窗户。有两个控制环路会实时调节这些旋钮:
自动曝光控制(AEC)测量最近一帧中的平均像素值(通常偏向中心加权,或者对最亮的像素降权),并调节曝光时间,使该平均值趋向某个目标。
自动增益控制(AGC)对模拟增益做同样的事情,通常是在曝光时间已经被推到其安全上限之后作为后备手段。
次序很重要。先调曝光、后调增益,能在给定目标亮度下获得最佳的信噪比,因为曝光在不放大噪声的情况下采集到更多信号,而增益会同时放大信号和噪声。因此 AEC 和 AGC 按优先级工作:要照亮一个昏暗的场景时先增大曝光,只有当曝光达到其上限(由帧率或一个明确的运动模糊预算设定)后,增益才会介入。
4.7.4. 高动态范围¶
AEC 和 AGC 为场景的平均亮度选出合适的单帧亮度,但每个场景都有比平均值更亮和更暗的部分。单次曝光一次只能覆盖该范围的一部分——短曝光保住高光,却把阴影埋没在读出噪声里;长曝光提升阴影,却让高光在饱和处被裁切。传感器的动态范围——它能在不裁切的情况下记录的最亮像素与能从噪声中区分出的最暗像素之间的比值——由光电二极管的满阱容量和读出噪声本底所决定,而许多场景的范围比传感器在一帧内能够捕捉的更宽。昏暗室内房间中一扇阳光照射的窗户就是经典的例子。
高动态范围(HDR)成像通过把同一场景的两次或更多次曝光——至少一短一长,有时更多——合并成单个输出帧来绕过这一限制。短曝光在不饱和的情况下保住高光;长曝光把阴影从噪声本底中提起来。合并后的图像从短帧取高光、从长帧取阴影,最终得到的可用动态范围比任何单个输入单独所能承载的都要大。
合并既可以在片外进行,由软件拼接一段多帧连拍,也可以在片内进行,由传感器在交替的扫描行中交错排布短曝光行和长曝光行,或者让每个像素分别通过两条不同转换增益的读出路径。无论哪种方式,结果都是一帧具有比光电二极管在单次拍摄中所能记录的更多动态范围位数的图像。
这种扩展范围的帧无法直接显示。帧缓冲区以及位于其下游的任何消费方都以固定的位深度运行(通常为每通道 8 位),而 HDR 信号可达 12 位、16 位甚至更多。色调映射(Tone mapping)通过施加一条非线性曲线,把多出来的位压缩回输出位深度,同时让阴影和高光的细节都保持可见。对 HDR 信号进行简单的线性缩放,要么会把昏暗区域压成黑色,要么会把明亮区域裁切成白色;好的色调映射会牺牲一些绝对亮度的保真度,以保留范围两端的细节,其输出看起来比任何单次传感器曝光所能呈现的都更接近人眼在场景中实际所见。