2、噪声模型与特性分析:光子噪声、读出噪声、固定模式噪声、噪声功率谱密度、噪声与ISO/增益的关系
做ISP调优,说白了就是在跟噪声打架。你想想看,传感器捕捉到的信号里,真正有用的信息可能只占一小半,剩下全是各种噪声。不了解噪声的脾气,降噪算法就是瞎调。
我个人习惯,拿到一块新sensor,第一件事不是跑标板,而是先把噪声底摸清楚。这一章我们就来拆解一下,图像里那些烦人的噪声到底从哪来、长什么样、怎么量化。
2.1 三大噪声源:光子噪声、读出噪声、固定模式噪声
传感器里的噪声来源很多,但归纳起来,90%的调优工作都在跟下面这三个打交道。
| 噪声类型 | 物理来源 | 统计特性 | 与信号的关系 |
|---|---|---|---|
| 光子噪声 | 光子到达的随机性 | 泊松分布 | √信号,信号越强噪声越大 |
| 读出噪声 | 像素电荷读出电路 | 近似高斯分布 | 与信号无关,固定底噪 |
| 固定模式噪声 | 像素/列工艺偏差 | 空间固定模式 | 与信号相关或无关,帧间不变 |
2.1.1 光子噪声
这是物理极限,躲不掉的。光子到达传感器是随机的,服从泊松分布。信号越强,光子数越多,但噪声也跟着涨——标准差等于均值的平方根。
举个例子,暗光下信号只有100个电子,噪声就是10个电子,信噪比10:1。亮光下信号10000个电子,噪声100个电子,信噪比100:1。所以亮区看起来干净,暗区全是颗粒感。
关键认知:光子噪声是信号依赖噪声。降噪时如果对亮区和暗区用同样的强度,亮区细节会被磨掉,暗区噪声又压不干净。必须做信号自适应。
2.1.2 读出噪声
读出噪声是电路层面的。像素把电荷转换成电压、再经过模拟放大、ADC量化,每一步都会引入噪声。这部分噪声跟信号大小没关系,是一个固定底噪。
我在项目中遇到过一款sensor,读出噪声做到1.5e-,已经非常好了。但另一款便宜的sensor,读出噪声高达8e-,暗光下满屏都是横纹。嗯,这时候降噪算法再强也救不回来,硬件底子太差。
调优技巧:读出噪声是降噪的下限。如果读出噪声已经很大,优先建议换sensor,而不是在算法上死磕。我曾经在一个项目里花了两个月调降噪,最后发现是读出噪声超标——白费功夫。
2.1.3 固定模式噪声
这个噪声最气人——它不随时间变,每帧都在同一个位置出现。原因是像素和列读出电路的工艺偏差,每个像素的暗电流、增益、偏置都不一样。
FPN分两种:
- 像素FPN:每个像素的暗电平不同,表现为固定颗粒感
- 列FPN:同一列像素共享读出电路,表现为竖条纹
FPN在暗场下特别明显。你盖上镜头盖拍一张全黑图,如果看到固定的亮点或竖线,那就是FPN。好消息是,FPN可以通过暗场校准减去——前提是sensor温度稳定。
注意:FPN校准不是一劳永逸的。温度变了、增益变了、曝光时间变了,FPN都会漂移。我见过有人在校准室调好了FPN,结果产线上温度高了5度,暗场全花了。所以量产时一定要做温度补偿。
2.2 噪声功率谱密度
前面说的都是噪声的幅度特性,但噪声还有频率特性。噪声功率谱密度就是描述噪声在空间频率上怎么分布的。
说白了,有些噪声是低频的,看起来像大块色斑;有些是高频的,看起来像细沙。降噪算法对不同频率的噪声处理方式完全不同。
从图上能看出来:
- 低频噪声:功率集中在低频段,表现为大面积的色块或亮度不均匀。这种噪声用空域滤波效果好,比如双边滤波、引导滤波。
- 白噪声:功率在整个频段均匀分布,看起来像均匀的颗粒。这是最常见的噪声类型,光子噪声和读出噪声都属于白噪声。
- 高频噪声:功率集中在高频段,表现为细密的颗粒感。这种噪声用时域滤波效果好,因为帧间的随机性更强。
实战经验:我习惯在调优前先拍一张均匀灰卡,然后做FFT看噪声功率谱。如果看到某个频段有尖峰,说明有周期性噪声——可能是电源干扰或者sensor读出时序问题。这种噪声降噪算法很难处理,得先修硬件。
2.3 噪声与ISO/增益的关系
ISO本质上就是模拟增益和数字增益的组合。增益放大了信号,也放大了噪声。但不同类型的噪声对增益的响应不一样。
| 增益阶段 | 光子噪声 | 读出噪声 | FPN |
|---|---|---|---|
| 模拟增益前 | √信号 | 固定底噪 | 固定模式 |
| 模拟增益后 | 放大√信号 | 放大底噪 | 放大FPN |
| 数字增益后 | 再次放大 | 再次放大 | 再次放大 |
这里有个关键点:模拟增益放大的是模拟域的信号和噪声,数字增益放大的是数字域的信号和噪声。模拟增益引入的噪声比数字增益小得多。所以高ISO下,优先用模拟增益,少用数字增益。
我记得有一次调一个夜景模式,发现ISO 3200以上噪声突然恶化。查了半天,发现sensor的模拟增益只到ISO 1600,再往上全是数字增益。数字增益把ADC的量化噪声也放大了,信噪比直线下降。
核心结论:噪声随ISO的变化不是线性的。低ISO下,光子噪声占主导;中ISO下,读出噪声开始显现;高ISO下,数字增益的量化噪声成为主要问题。降噪参数必须分段设置,不能一套参数打天下。
2.4 噪声模型在调优中的应用
理解了噪声模型,调优就有方向了。我总结了一个简单的噪声分析流程:
- 拍暗场:盖上镜头盖,拍一组不同ISO、不同曝光时间的全黑图
- 分析FPN:多帧平均,提取固定模式噪声
- 分析随机噪声:减去FPN后,计算每帧的均值和标准差
- 拟合噪声模型:建立噪声标准差与信号强度的关系曲线
- 设计降噪策略:根据噪声模型,确定不同信号区间的降噪强度
避坑指南:我曾经在拟合噪声模型时,直接用sensor datasheet里的参数。结果发现实际噪声比datasheet大了30%。原因是datasheet是在理想条件下测的,实际模组有温度、电源纹波、镜头阴影等因素。所以一定要用自己的模组实测数据。
噪声模型拟合出来后,你会得到一条曲线:横轴是信号强度,纵轴是噪声标准差。这条曲线就是降噪参数设计的依据。暗区噪声大,降噪强度要高;亮区噪声小,降噪强度要低。中间过渡要平滑,不然会出现明显的噪声突变带。