成像基础与噪声模型:光子噪声、读出噪声、固定模式噪声、噪声来源与统计特性
在深入多帧降噪、HDR合成与实时夜景算法之前,我们必须先建立对图像噪声的精确数学描述。夜景拍摄的核心挑战在于:信号光子数极少,而各类噪声的贡献相对显著。若不能区分噪声的物理来源、统计分布与空间相关性,任何降噪算法都如同在黑暗中盲目摸索。本章将系统拆解CMOS图像传感器(CIS)中三大类噪声——光子散粒噪声、读出噪声(含复位噪声与行噪声)、固定模式噪声(FPN),并给出它们的数学模型、测量方法与对ISP流水线的具体影响。
2.1 光子散粒噪声:泊松统计与信噪比极限
光子到达传感器表面的过程本质上是离散随机事件。在给定曝光时间 \( T \) 内,到达像素感光区域的光子数 \( N_{ph} \) 服从泊松分布,其方差等于均值:\( \sigma_{ph}^2 = N_{ph} \)。光电转换后产生的电子数 \( N_e = \eta \cdot N_{ph} \)(\( \eta \) 为量子效率),同样满足泊松特性。这意味着信号本身携带的随机涨落——散粒噪声——是物理极限,无法通过电路优化消除。
散粒噪声的均方根值 \( \sigma_{shot} = \sqrt{N_e} \)(单位:e⁻)。当信号电子数为100时,噪声为10 e⁻,信噪比SNR = 20 dB;当信号为10000 e⁻时,噪声为100 e⁻,SNR提升至40 dB。这解释了为何夜景拍摄中暗部区域的噪声颗粒感远强于亮部——信号越弱,相对噪声越大。在ISP设计中,散粒噪声决定了多帧降噪的理论上限:若单帧SNR为20 dB,通过4帧平均可将SNR提升约6 dB(理论值),但若帧间存在运动,则需引入运动补偿。
| 信号电子数 (e⁻) | 散粒噪声 σ (e⁻) | SNR (dB) | 8-bit DN (增益1x) | 视觉表现 |
|---|---|---|---|---|
| 10 | 3.16 | 10 | ~2 | 严重颗粒感 |
| 100 | 10 | 20 | ~25 | 明显噪声 |
| 1000 | 31.6 | 30 | ~250 | 轻微噪声 |
| 10000 | 100 | 40 | ~2500(需HDR) | 几乎无噪声 |
2.2 读出噪声:复位噪声、行噪声与ADC量化
读出噪声是信号从光电二极管转移至ADC输出过程中引入的所有时域随机噪声的总和。其典型值在2-10 e⁻(现代背照式传感器),远低于散粒噪声在亮部的贡献,但在暗部(信号<100 e⁻)成为主导噪声源。读出噪声包含三个主要分量:
- 复位噪声(kTC噪声):复位晶体管关断时,光电二极管节点电容 \( C_{PD} \) 上的热噪声被采样,其方差为 \( kT/C_{PD} \)。例如 \( C_{PD}=10fF \) 时,\( \sigma_{kTC} \approx 40e⁻ \)。采用相关双采样(CDS)可完全消除该噪声,因此现代传感器均内置CDS。
- 行噪声(Row Noise):列放大器或读出总线上的共模干扰,表现为同一行像素叠加相同的随机偏移。其统计特性为行间随机、行内恒定,在图像上呈现水平条纹。行噪声无法通过帧间平均消除(因为每帧的行噪声模式不同),需专门的列/行校正算法。
- ADC量化噪声:理想ADC的量化噪声方差为 \( LSB^2/12 \)。对于10-bit ADC,若满阱电子数为10000 e⁻,则LSB≈9.8 e⁻,量化噪声σ≈2.8 e⁻,通常可忽略。但高增益场景下(如ISO 6400),模拟增益放大后量化噪声可能被放大,需注意ADC有效位数。
读出噪声的时域特性近似高斯分布,且与信号无关(加性噪声)。在ISP流水线中,读出噪声限制了暗部细节的恢复能力——若读出噪声为5 e⁻,则信号低于5 e⁻的区域完全淹没在噪声中,即使增益提升也无法恢复信息。
2.3 固定模式噪声(FPN):DSNU与PRNU
固定模式噪声是传感器在相同光照条件下,不同像素输出不一致的空间噪声。它不随时间变化,因此可通过标定校正。FPN分为两类:
- 暗信号非均匀性(DSNU):无光照时各像素的暗电流差异及偏移电压差异。典型值1-5 LSB(8-bit)。表现为暗场下的固定斑点图案。
- 光响应非均匀性(PRNU):相同光照下各像素光电转换增益的差异。典型值1-3%的响应偏差。表现为亮场下的网格状不均匀性,且随信号增大而增大。
FPN的校正方法为两点标定:在暗场采集偏移图(Offset Map),在均匀亮场采集增益图(Gain Map)。校正公式为:
校正后DN = (原始DN - Offset[i][j]) × Gain[i][j]
其中 Gain[i][j] = 目标均值 / (亮场DN[i][j] - Offset[i][j])
值得注意的是,FPN会随温度、增益设置和曝光时间变化。高增益下DSNU被放大,长曝光下暗电流非均匀性加剧。因此,专业相机通常在每次开机或切换ISO时重新标定,而手机ISP则使用出厂标定数据并配合温度补偿。
2.4 噪声模型综合与ISP设计考量
完整的CMOS噪声模型可表示为:
总噪声方差 σ²_total = σ_shot² + σ_read² + σ_FPN²
= (μ_signal + μ_dark) + σ_read² + (σ_DSNU² + σ_PRNU² × μ_signal²)
其中 \( \mu_{signal} \) 为信号电子数,\( \mu_{dark} \) 为暗电流电子数。该模型揭示了三个关键结论:
- 暗部噪声由读出噪声主导:当信号极低时,σ_total ≈ σ_read,此时多帧平均是唯一有效的降噪手段(FPN已通过标定去除)。
- 亮部噪声由散粒噪声主导:σ_total ≈ √μ_signal,此时降噪需在保持边缘的前提下进行空域滤波,或采用HDR合成避免过曝。
- FPN在中等亮度下不可忽视:PRNU项与信号平方成正比,在信号为满阱50%时,PRNU噪声可能超过散粒噪声。
2.5 实战案例:夜景模式噪声分析与降噪策略制定
背景:某旗舰手机在夜景模式下(ISO 3200,曝光1/4s)出现明显噪点,用户反馈暗部区域彩色噪点严重,且放大后可见水平条纹。开发团队需定位噪声来源并制定ISP优化方案。
初始数据采集:
- 暗场测试(镜头盖遮挡):拍摄30帧,计算像素均值与标准差。发现均值约2.3 DN(8-bit),标准差σ=4.1 DN。
- 均匀亮场(灰卡,18%反射率):信号均值128 DN,标准差σ=7.8 DN。
- 行噪声分析:对暗场每行像素求均值,行间标准差σ_row=1.2 DN,明显高于列间标准差0.3 DN。
分析判断:
- 暗场σ=4.1 DN,扣除读出噪声后,暗电流散粒噪声贡献约1.5 DN(因曝光时间较长)。读出噪声主导暗部。
- 亮场σ=7.8 DN,其中散粒噪声理论值√128≈11.3 DN(但受增益影响,实际DN域需换算)。PRNU贡献约2%×128=2.6 DN。
- 行噪声1.2 DN虽值不大,但在暗部区域(信号<10 DN)占比超过10%,视觉上形成条纹。
优化措施:
- 启用传感器内置CDS,确认复位噪声已消除(对比关闭CDS时σ增加至6.3 DN)。
- 在ISP前端增加行噪声校正模块:对每行像素减去该行均值(基于暗行数据),再叠加低通滤波避免引入新噪声。
- 实施FPN两点校正:在出厂标定基础上,增加温度补偿查找表(每5°C更新Offset图)。
- 多帧降噪采用3帧融合(因手持夜景,帧数过多易产生运动鬼影),融合权重根据局部散粒噪声估计自适应调整。
结果对比:优化后暗部σ从4.1 DN降至1.8 DN,行条纹完全消除,主观评分提升2.3分(满分10分)。代价是算法耗时增加12%,但通过NPU加速后仍满足实时性要求。
复盘经验:夜景降噪不能只依赖单一算法,必须按噪声模型分层处理:先校正FPN(空间固定),再抑制行噪声(列相关),最后用多帧平均降低时域随机噪声。任何一步缺失都会成为瓶颈。
2.6 总结与设计清单
| 噪声类型 | 统计特性 | 空间相关性 | 时域特性 | 消除/抑制方法 |
|---|---|---|---|---|
| 光子散粒噪声 | 泊松分布,σ²=μ | 无 | 随机 | 多帧平均、增大进光量 |
| 读出噪声(含kTC) | 高斯近似,σ≈常数 | 行噪声有列相关 | 随机 | CDS、行校正、降低模拟增益 |
| 暗电流噪声 | 泊松+高斯混合 | 无 | 随机 | 降低温度、短曝光 |
| DSNU | 固定偏移 | 像素级固定 | 恒定 | 暗场减除 |
| PRNU | 固定增益偏差 | 像素级固定 | 恒定 | 增益图校正 |
| ADC量化噪声 | 均匀分布 | 无 | 随机 | 提高ADC位数、抖动 |
在实际ISP开发中,建议按以下顺序处理噪声:① 暗场减除(DSNU)→ ② 增益校正(PRNU)→ ③ 行噪声消除 → ④ 时域多帧降噪 → ⑤ 空域降噪(残留噪声)。每一步的参数标定都需基于本章的统计模型,而非盲目调参。只有深刻理解噪声的物理本质,才能在算法效果与计算开销之间找到最优平衡点。