3、噪声模型与统计:光子散粒噪声、读出噪声、固定模式噪声(FPN)、噪声的泊松-高斯模型

做RAW域HDR,第一关就是搞懂噪声。你想想看,传感器采集到的信号,本质上就是「真实信号 + 各种噪声」的混合体。如果不把噪声的脾气摸清楚,后面做降噪、做融合,全是瞎蒙。

我个人习惯把噪声分成三类:光子散粒噪声、读出噪声、固定模式噪声。这三兄弟的物理来源、统计特性、对HDR的影响,完全不一样。咱们一个一个说。

3.1 光子散粒噪声:躲不掉的量子宿命

光本身就是离散的光子。传感器每个像素收集到的光子数,不是个固定值,而是围绕一个平均值随机波动。这个波动,就是光子散粒噪声。

核心特性:

  • 服从泊松分布。均值 = 方差。
  • 信号越强,噪声值越大(方差随均值增长)。
  • 但信噪比 SNR = 信号 / sqrt(信号),信号越强,SNR 越高。

我在项目中遇到过一件事:有次调试长曝光HDR,发现暗部区域全是颗粒感。一开始以为是读出噪声太大,后来一算,其实是散粒噪声在低光下占主导。因为光子数太少,泊松分布的离散性就特别明显。

关键公式:

光子数 N ~ Poisson(λ)
均值 E[N] = λ
方差 Var[N] = λ
散粒噪声标准差 σ_shot = sqrt(λ)

说白了,散粒噪声是物理极限。你换再好的传感器,它也躲不掉。HDR里,短曝光帧信号弱,散粒噪声就是暗部的主要噪声源。

3.2 读出噪声:电路里的「底噪」

读出噪声来自像素复位、电荷转移、模拟放大、ADC量化这一整套电路。它跟光信号无关,即使完全遮光,你读出来的值也不是零,而是有个随机波动。

核心特性:

  • 近似高斯分布,均值为0(或固定偏置)。
  • 方差基本恒定,不随信号强度变化。
  • 单位通常是 e- (电子数) 或 DN (数字码值)。

我曾经踩过一个坑:评估一款新传感器时,只看数据手册上的读出噪声指标,觉得挺低。结果实际HDR合成后,暗部出现条纹状噪声。后来排查发现,是列并行ADC的读出噪声在特定增益下不满足高斯假设,有低频分量。嗯,这里要注意:数据手册测的是理想条件,实际系统里读出噪声可能更复杂。

噪声类型 分布 与信号关系 HDR影响
光子散粒噪声 泊松 方差 = 均值 暗部主导
读出噪声 高斯 方差恒定 所有亮度都有贡献
固定模式噪声 固定偏移/增益 空间相关 产生竖条纹/网格

3.3 固定模式噪声(FPN):传感器的「指纹」

FPN 是像素之间、列之间、行之间的不一致性造成的。每个像素的暗电流、转换增益、复位电压都有微小差异,这些差异在空间上是固定的,所以叫固定模式噪声。

两种主要形式:

  • 暗信号非均匀性 (DSNU): 无光照时,各像素输出值的差异。主要来自暗电流。
  • 光响应非均匀性 (PRNU): 均匀光照下,各像素输出值的差异。主要来自光电转换效率不一致。

你想想看,如果FPN不校正,HDR合成时不同曝光帧的FPN模式叠加,会产生非常难看的固定图案。我建议在RAW域先做FPN校正,再做HDR融合。顺序不能乱。

实用技巧: 很多传感器提供暗行/暗列(optical black)区域,可以用来实时估计DSNU。PRNU则需要均匀光照下的标定数据。我习惯在产线标定阶段,把PRNU校正系数存到OTP里。

3.4 泊松-高斯模型:统一框架

把上面三种噪声合在一起,就得到了经典的泊松-高斯模型。这是RAW域噪声建模的基石,几乎所有降噪算法都基于它。

模型表达式:

观测值 y = x + n_shot(x) + n_read + n_fpn

其中:
x = 真实信号(电子数)
n_shot(x) ~ Poisson(x) - x  (零均值泊松噪声)
n_read ~ N(0, σ_read²)      (读出噪声)
n_fpn = 固定偏移 + 固定增益误差

实际工程中,我们通常把泊松部分近似为信号依赖的高斯噪声:

总方差 σ²(x) = x + σ_read² + σ_fpn²

这个近似在信号足够大时非常准确。但在极低光下(比如HDR的长曝光帧),泊松的离散性还是不能忽略。我一般会在算法里加一个判断:如果信号低于某个阈值,就用泊松精确模型;高于阈值,用高斯近似。这样既保证精度,又节省算力。

注意: 泊松-高斯模型假设各噪声源相互独立。但在实际传感器中,读出噪声和FPN有时会耦合。比如高增益模式下,读出噪声会放大,同时FPN也会被放大。这时候模型需要修正。

3.5 噪声参数标定:动手做实验

光有模型不够,你得知道具体参数。我分享一个我常用的标定流程:

  1. 暗场采集: 盖上镜头盖,拍100张暗帧。计算每像素的均值和方差。均值就是DSNU,方差就是读出噪声方差 + 暗电流散粒噪声(很小)。
  2. 平场采集: 用均匀光源拍不同亮度的平场(比如10%、30%、50%、70%、90%满阱)。每张拍100帧。
  3. 拟合: 对每个亮度,计算所有像素的均值 μ 和方差 σ²。然后拟合 σ² = a * μ + b。斜率 a 就是散粒噪声增益(包含系统增益K),截距 b 就是读出噪声方差。
  4. FPN提取: 对暗场和平场的均值图像,做空间滤波,提取固定模式。

我曾经用这套流程给一款手机传感器做标定,发现它的读出噪声在低增益下是1.2e-,高增益下跳到3.5e-。这个信息直接影响了HDR帧的增益分配策略。

3.6 本章知识体系

下面这张图总结了三种噪声的关系和泊松-高斯模型的整体框架。你可以把它当作本章的「地图」。

RAW域噪声模型与泊松-高斯框架 泊松-高斯模型 光子散粒噪声 泊松分布 · 方差=均值 读出噪声 高斯分布 · 方差恒定 固定模式噪声(FPN) DSNU + PRNU 高斯近似:σ² = a·μ + b HDR降噪算法设计 噪声参数标定 传感器性能评估 核心:噪声模型是RAW域HDR处理的「第一性原理」 不理解噪声,就做不好降噪和融合

这张图把本章的核心逻辑串起来了。从三种噪声源出发,汇聚到泊松-高斯模型,再通过高斯近似简化,最终落地到HDR降噪、标定、评估三个实际应用。你每次做HDR算法时,都可以回头看看这张图,确认自己当前处理的是哪一类噪声。

好了,噪声模型就讲到这里。记住一句话:噪声不是敌人,而是你需要理解的朋友。 只有摸清它的脾气,你才能在RAW域里游刃有余。