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 知识结构图:传感器噪声模型全景
下面这张图,把本章的核心概念串起来了。你可以看到,从光子入射到数字输出,每一步都有噪声“掺和”。
4.8 实战:如何用这些指标指导传感器调试
理论说完了,咱们聊聊怎么用。我总结了一个“三步走”的调试思路:
- 先测噪声底:盖上镜头盖,拍全黑图。分析读出噪声和暗电流。如果暗电流大,考虑降温或缩短曝光。如果读出噪声大,考虑换Sensor或优化PCB布局。
- 再测QE曲线:用单色光源,从400nm到1000nm扫一遍。看QE峰值在哪,跟Sensor datasheet是否一致。如果偏差大,可能是微透镜或滤光片有问题。
- 最后算DR和SNR:根据满阱容量和噪声底,算理论DR。再根据实际场景光照,算SNR。如果SNR不够,要么增加曝光(但小心过曝),要么做多帧融合。
核心原则:传感器调试,本质上是“在噪声和信号之间找平衡”。你不可能消除所有噪声,但你可以让噪声“藏”在信号看不见的地方。比如,把读出噪声压到散粒噪声以下,这样弱光下主要就是散粒噪声——它跟信号绑定,看起来更自然。
4.9 本章小结
这一章,我们聊了传感器最核心的6个指标:
| 指标 | 描述 | 对ISP的影响 |
|---|---|---|
| 量子效率 (QE) | 光子转电子的效率 | 决定弱光灵敏度 |
| 动态范围 (DR) | 最亮与最暗信号的比值 | 决定HDR需求 |
| 信噪比 (SNR) | 信号与噪声的比值 | 决定降噪强度 |
| 暗电流 | 无光时的电子产生 | 限制长曝光 |
| 读出噪声 | 读出电路的噪声 | 弱光性能瓶颈 |
| 光子散粒噪声 | 光子的量子随机性 | 无法消除,只能接受 |
这些指标,是ISP 3A算法的“输入参数”。你理解了它们,才能理解AE为什么要那样算,AWB为什么要那样调,AF为什么要那样跑。