2. 光子散粒噪声(Shot Noise):泊松分布建模,信噪比与光子数的关系,高光照与低光照下的表现差异
散粒噪声,我习惯叫它“光子散粒噪声”。这是图像传感器里最根本、最躲不开的一种噪声。为什么?因为它来自光本身的量子特性。说白了,光是一份一份的光子,不是连续的水流。你想想看,光子到达像素的时间是随机的,就像雨滴落在屋顶上——有时候多几滴,有时候少几滴。
这种随机性,就是散粒噪声的根源。不管你用多好的传感器,它都在那里。我当年刚入行时,总想着能不能通过电路设计把它“滤掉”,后来才明白——这是物理极限,只能管理,不能消除。
2.1 泊松分布:散粒噪声的数学语言
散粒噪声服从泊松分布。为什么是泊松?因为光子到达事件满足三个条件:
- 独立:每个光子到达与否,跟其他光子没关系
- 稀有:在极短时间窗口内,到达的概率很小
- 平稳:平均到达率是常数
这三个条件一凑,泊松分布就来了。数学上,一个像素在曝光时间内接收到 k 个光子的概率为:
P(k) = (λ^k * e^(-λ)) / k!
其中 λ 是平均光子数。泊松分布有个重要性质:均值等于方差。也就是说,如果平均收到 100 个光子,那么方差也是 100,标准差就是 √100 = 10。
核心结论:散粒噪声的标准差 = √(信号强度)。信号越强,噪声值越大,但信噪比反而越高。
我在项目中遇到过一位同事,他坚持用高斯分布近似散粒噪声。在强光下问题不大,但一到暗光场景,模型就完全不准了。嗯,这里要注意——泊松分布只在光子数较少时表现出明显的“离散性”,光子数多了才接近高斯。
2.2 信噪比与光子数的关系
信噪比(SNR)是衡量图像质量的核心指标。对于散粒噪声,SNR 的计算非常简单:
SNR = 信号 / 噪声标准差 = λ / √λ = √λ
你看,信噪比只跟光子数的平方根成正比。这意味着什么?
| 平均光子数 λ | 散粒噪声标准差 √λ | 信噪比 SNR (dB) | 主观画质 |
|---|---|---|---|
| 10 | 3.16 | 10 dB | 噪点明显,细节模糊 |
| 100 | 10 | 20 dB | 可接受,轻度颗粒感 |
| 1,000 | 31.6 | 30 dB | 干净,细节丰富 |
| 10,000 | 100 | 40 dB | 极佳,接近无噪 |
从表格里能看出一个规律:光子数每增加 100 倍,SNR 只增加 10 dB。想提升画质,就得大幅增加进光量。这就是为什么手机在暗光下再怎么算法优化,也比不过大底相机的物理优势。
个人经验:我在调试一款 1.4μm 像素的传感器时,发现 SNR 在 25 dB 以下时,人眼就能明显感知到散粒噪声。所以我的调优目标通常是:保证主要场景 SNR ≥ 30 dB。
2.3 高光照 vs 低光照:表现差异
散粒噪声在不同光照下的表现,完全是两个世界。我分别说说。
高光照场景(λ > 1,000)
- 噪声形态:近似高斯分布,看起来像细密的颗粒
- 相对强度:噪声标准差 / 信号 = 1/√λ,很小(比如 λ=10,000 时只有 1%)
- 主观感受:图像干净,散粒噪声几乎不可见
- 主要矛盾:此时其他噪声(如读出噪声、固定模式噪声)可能更突出
低光照场景(λ < 100)
- 噪声形态:明显的泊松分布,出现“斑点状”噪声
- 相对强度:噪声标准差 / 信号 = 1/√λ,很大(λ=10 时高达 31.6%)
- 主观感受:图像粗糙,暗部细节被噪声淹没
- 主要矛盾:散粒噪声成为画质瓶颈
我曾经调试过一款安防摄像头,客户投诉夜间画面“全是雪花点”。我一看数据,暗部区域平均光子数只有 15 左右,SNR 不到 12 dB。这不是传感器坏了,是物理极限。后来我们通过延长曝光时间和像素合并(binning),把等效光子数提到了 60,SNR 到了 18 dB,客户才满意。
避坑指南:我曾经在低光照下盲目提高模拟增益,结果散粒噪声和读出噪声一起放大,画质反而更差。正确的做法是:先保证足够的曝光(延长积分时间或增大光圈),再考虑增益。
2.4 散粒噪声的视觉影响:一张 SVG 图说清楚
下面这张图展示了不同光子数下,散粒噪声对图像的影响。我把它画成了从“理想信号”到“实际观测”的流程。
2.5 实际调优中的应对策略
知道了散粒噪声的规律,调优就有方向了。我总结了几条实战经验:
- 优先保证曝光:延长积分时间、增大光圈、使用更大像素——这些物理手段直接提升 λ,是降噪的根本。
- 像素合并(Binning):在低光照下,把相邻 2×2 或 4×4 像素合并成一个超级像素。代价是分辨率下降,但 SNR 提升 √(合并数) 倍。
- 多帧叠加:拍摄多帧图像后平均,等效于增加曝光时间。适合静态场景。
- 避免过度增益:增益放大信号的同时也放大散粒噪声。我一般把模拟增益控制在 12 dB 以内,超过这个值就考虑其他手段。
- 算法降噪的边界:空域降噪(如双边滤波)可以平滑散粒噪声,但会损失细节。时域降噪(多帧)效果更好,但需要运动补偿。
一句话总结:散粒噪声是光子的“身份证”,你无法消除它,但可以通过增加光子数来“稀释”它。信噪比 = √λ,这个公式是所有图像质量调优的起点。