4. 传感器特性与噪声模型:量子效率、动态范围、信噪比、暗电流、读出噪声、光子散粒噪声

各位好,欢迎来到第四章。这一章我们聊点实在的——传感器本身的“脾气秉性”。

做ISP算法,说白了就是在跟传感器的物理极限做博弈。你算法写得再花哨,如果连传感器底层的噪声特性都没摸透,那调试出来的效果一定是“空中楼阁”。我个人习惯,拿到一颗新Sensor,第一件事不是跑AE/AWB,而是先把它的噪声底摸清楚。

这一章,我们就从几个最核心的指标入手:量子效率、动态范围、信噪比、暗电流、读出噪声、光子散粒噪声。这些概念是ISP 3A算法的地基,也是你后续做传感器调试时绕不开的硬骨头。

4.1 量子效率(QE):传感器对光的“敏感度”

量子效率,英文叫Quantum Efficiency,简称QE。它描述的是:入射到像素上的光子,有多少比例能转化为光电子。

公式很简单:

QE = (产生的光电子数) / (入射光子数) × 100%

举个例子,如果一颗Sensor的QE是50%,意味着每两个光子打进来,只有一个能成功“撞”出电子。剩下的那个光子,要么被反射了,要么被吸收了,反正没干活。

QE跟波长强相关。不同颜色的光,穿透深度不一样。红光穿透深,蓝光穿透浅。所以Sensor的QE曲线通常是一条“驼峰”形状——中间高,两头低。

关键点:QE决定了Sensor的“底子”。QE越高,弱光性能越好。但QE不是越高越好——QE太高,强光下容易饱和,动态范围反而受限。

我在项目中遇到过一颗Sensor,QE标称70%,看着挺漂亮。结果一上暗光场景,画面噪点炸裂。后来一查,QE高是高,但暗电流也大,读出噪声也大。所以,QE不能单独看,得跟噪声指标一起看。

4.2 动态范围(DR):能同时看清亮部和暗部的能力

动态范围,Dynamic Range,简称DR。它描述的是:传感器能同时记录的最亮信号与最暗信号的比值。

单位是dB(分贝)。公式:

DR = 20 × log10(满阱容量 / 噪声底)

满阱容量(Full Well Capacity)是像素能容纳的最大电子数。噪声底是传感器在无光条件下的总噪声。

举个例子:

  • 满阱容量 = 100,000 e⁻
  • 噪声底 = 10 e⁻
  • DR = 20 × log10(100,000 / 10) = 20 × log10(10,000) = 80 dB

80dB的动态范围,大概能区分10档光圈(1档≈6dB)。

实战经验:我调试过一款安防摄像头,Sensor标称DR 72dB。但在逆光场景下,人脸一片死黑,天空一片死白。后来发现,Sensor的DR是“理论值”,实际ISP处理时,如果tone mapping没做好,有效DR会大打折扣。所以,Sensor的DR是上限,ISP的tone mapping决定你能用多少。

4.3 信噪比(SNR):信号与噪声的“较量”

信噪比,Signal-to-Noise Ratio,简称SNR。它描述的是:有效信号强度与噪声强度的比值。

公式:

SNR = 20 × log10(信号强度 / 噪声强度)

单位也是dB。SNR越高,画面越干净。

SNR跟光照强度直接相关。光照越强,信号越强,SNR越高。光照越弱,信号弱,噪声不变,SNR就低。

这里有个关键点:SNR不是线性增长的。因为光子散粒噪声(后面会讲)跟信号的平方根成正比。信号翻倍,散粒噪声只增加√2倍。所以,光照越强,SNR提升越快。

注意:SNR和DR是两个不同的概念。DR描述的是“能容纳多少”,SNR描述的是“当前信号有多干净”。别搞混了。我见过有人把DR当SNR用,结果调试出来的AE曲线一塌糊涂。

4.4 暗电流(Dark Current):没有光也有“鬼影”

暗电流,Dark Current。它描述的是:在没有光照的情况下,像素内部仍然产生的电子。

这些电子是“非法”的,它们来自热激发、晶格缺陷、杂质等。温度越高,暗电流越大。每升高6-8°C,暗电流大约翻一倍。

暗电流的单位通常是:e⁻/s/pixel(每秒每个像素产生的电子数)。

暗电流的影响:

  • 增加噪声底:暗电流本身是噪声,会降低SNR。
  • 产生固定模式噪声(FPN):不同像素的暗电流不一致,导致画面出现“条纹”或“斑点”。
  • 限制长曝光:曝光时间越长,暗电流积累越多,画面越“脏”。

避坑指南:我曾经调试一款工业相机,客户要求长曝光10秒。结果画面全是“雪花”。一查,Sensor的暗电流在室温下是50 e⁻/s/pixel,10秒就是500 e⁻,噪声底直接炸了。后来只能强制客户加散热,或者缩短曝光时间。所以,做长曝光应用,一定要先看暗电流指标。

4.5 读出噪声(Read Noise):读出电路带来的“杂质”

读出噪声,Read Noise。它描述的是:在将像素中的电荷转换为电压、并读出到ADC的过程中,引入的噪声。

读出噪声的来源:

  • 复位噪声(KTC噪声):像素复位时,电容上的热噪声。
  • 源跟随器噪声:像素内放大器的噪声。
  • ADC量化噪声:模数转换时的量化误差。
  • 列放大器噪声:列并行读出时的噪声。

读出噪声的单位是:e⁻ rms(均方根电子数)。

读出噪声是Sensor的“硬伤”。它跟曝光时间无关,跟温度关系也不大(相比暗电流)。所以,在弱光下,读出噪声是主要的噪声源。

我的习惯:拿到一颗新Sensor,我会先测它的读出噪声。方法很简单:盖上镜头盖,用最短曝光时间拍一张全黑图,然后计算像素值的标准差。这个值,基本就是读出噪声的“底”。如果这个底太高,那这颗Sensor的弱光性能基本没救了。

4.6 光子散粒噪声(Photon Shot Noise):光的“量子本性”

光子散粒噪声,Photon Shot Noise。它描述的是:光子到达的随机性带来的噪声。

光子的到达是随机的,服从泊松分布。所以,即使光照完全均匀,每个像素接收到的光子数也会有波动。这个波动,就是散粒噪声。

散粒噪声的特性:

  • 跟信号的平方根成正比:信号强度为S,散粒噪声 = √S。
  • 是白噪声:频谱平坦,没有固定模式。
  • 无法消除:这是光的量子本性决定的,任何传感器都无法避免。

举个例子:

  • 信号 = 100 e⁻,散粒噪声 = √100 = 10 e⁻,SNR = 20 dB
  • 信号 = 10,000 e⁻,散粒噪声 = √10,000 = 100 e⁻,SNR = 40 dB

你看,信号越强,散粒噪声虽然值变大,但相对值变小,SNR反而提升。

重要:散粒噪声是“好噪声”——它跟信号绑定,信号强时它相对小。而读出噪声是“坏噪声”——它跟信号无关,信号弱时它占主导。所以,弱光下,读出噪声是瓶颈;强光下,散粒噪声是天花板。

4.7 知识结构图:传感器噪声模型全景

下面这张图,把本章的核心概念串起来了。你可以看到,从光子入射到数字输出,每一步都有噪声“掺和”。

传感器噪声模型全景图 传感器噪声模型全景图 光子入射 量子效率 (QE) 光电子产生 电荷积累 读出电路 + ADC 数字输出 光子散粒噪声 暗电流 (Dark Current) 读出噪声 (Read Noise) 动态范围 / 信噪比 关键关系 QE → 光电子数 → 信号强度 散粒噪声 = √信号 暗电流 ∝ 温度 × 时间 读出噪声 = 固定底噪

4.8 实战:如何用这些指标指导传感器调试

理论说完了,咱们聊聊怎么用。我总结了一个“三步走”的调试思路:

  1. 先测噪声底:盖上镜头盖,拍全黑图。分析读出噪声和暗电流。如果暗电流大,考虑降温或缩短曝光。如果读出噪声大,考虑换Sensor或优化PCB布局。
  2. 再测QE曲线:用单色光源,从400nm到1000nm扫一遍。看QE峰值在哪,跟Sensor datasheet是否一致。如果偏差大,可能是微透镜或滤光片有问题。
  3. 最后算DR和SNR:根据满阱容量和噪声底,算理论DR。再根据实际场景光照,算SNR。如果SNR不够,要么增加曝光(但小心过曝),要么做多帧融合。

核心原则:传感器调试,本质上是“在噪声和信号之间找平衡”。你不可能消除所有噪声,但你可以让噪声“藏”在信号看不见的地方。比如,把读出噪声压到散粒噪声以下,这样弱光下主要就是散粒噪声——它跟信号绑定,看起来更自然。

4.9 本章小结

这一章,我们聊了传感器最核心的6个指标:

指标 描述 对ISP的影响
量子效率 (QE) 光子转电子的效率 决定弱光灵敏度
动态范围 (DR) 最亮与最暗信号的比值 决定HDR需求
信噪比 (SNR) 信号与噪声的比值 决定降噪强度
暗电流 无光时的电子产生 限制长曝光
读出噪声 读出电路的噪声 弱光性能瓶颈
光子散粒噪声 光子的量子随机性 无法消除,只能接受

这些指标,是ISP 3A算法的“输入参数”。你理解了它们,才能理解AE为什么要那样算,AWB为什么要那样调,AF为什么要那样跑。