2. 图像噪声基础:噪声类型、模型与数学表示
做暗光拍摄修复这些年,我最大的体会就是——搞懂噪声,比搞懂算法更重要。你想想看,连敌人长什么样都不知道,你怎么打?
噪声这东西,说白了就是图像里「不该出现」的随机信号。我刚开始做去噪时,总想着一个算法搞定所有噪声。结果呢?遇到椒盐噪声,高斯滤波糊成一团;遇到高斯噪声,中值滤波又不够用。嗯,这里要注意——不同噪声,得用不同招数。
2.1 噪声从哪来?
先聊聊噪声的源头。我个人习惯把噪声来源分成三类:
- 传感器噪声:CMOS/CCD 传感器在暗光下,每个像素接收的光子数太少,信噪比自然就低。我在项目中遇到过,手机在 0.1 lux 下拍出来的图,基本就是「彩色雪花」。
- 电路噪声:读出电路、放大器带来的热噪声。你想想看,相机一开机,芯片温度升高,噪声就跟着涨。
- 量化噪声:ADC 把模拟信号转成数字信号时,精度有限。比如 8-bit 图像,每个像素只有 256 个灰度级,暗部细节很容易被「吃掉」。
核心观点:暗光拍摄的噪声,本质上是「信号弱 + 增益高」的必然结果。你没法完全消除它,只能尽量压制它。
2.2 三种常见噪声类型
做去噪这么多年,我打交道最多的就是这三种噪声。咱们一个一个说。
2.2.1 高斯噪声
高斯噪声是最常见的噪声模型。它出现在几乎所有电子设备中——传感器读出噪声、放大器热噪声,本质上都是高斯分布。
数学表示:
概率密度函数:p(x) = (1 / (σ * √(2π))) * exp(-(x - μ)² / (2σ²))
其中:
- μ = 均值(通常为 0)
- σ = 标准差(控制噪声强度)
我个人习惯用 μ=0 的高斯噪声,因为这样不会改变图像的整体亮度。你想想看,如果均值不为零,整张图会偏亮或偏暗,那就不是单纯的噪声问题了。
实战经验:我在做手机夜景模式时,发现暗部的高斯噪声标准差 σ 通常在 10-30 之间(8-bit 图像)。σ 超过 50 的话,基本就救不回来了。
2.2.2 泊松噪声
泊松噪声跟光子计数有关。说白了,就是每个像素接收到的光子数服从泊松分布。暗光下光子数少,噪声就明显。
数学表示:
P(k) = (λ^k * e^(-λ)) / k!
其中:
- λ = 平均光子数(也是方差)
- k = 实际观测到的光子数
这里有个关键点:泊松噪声的方差等于均值。也就是说,信号越强的地方,噪声也越强。我在项目中遇到过,拍星空时,亮星的周围噪声明显比暗空区域大——这就是泊松噪声在作怪。
避坑指南:我曾经把泊松噪声当成高斯噪声来处理,结果亮部去噪过度,暗部又去不干净。后来我学乖了——暗光场景下,先判断是不是泊松噪声,再选算法。
2.2.3 椒盐噪声
椒盐噪声,也叫脉冲噪声。它表现为图像中随机出现的白点(盐)和黑点(椒)。
数学表示:
概率模型:
- 以概率 p 出现白点(像素值 = 255)
- 以概率 p 出现黑点(像素值 = 0)
- 以概率 1-2p 保持原值
其中 p 通常很小(0.01 ~ 0.05)
椒盐噪声的来源很直接——传感器坏点、传输错误、存储介质损坏。我记得有一次,客户发来一张图,满屏都是黑白点。我一看就知道,这是相机 CMOS 坏了,不是算法能解决的问题。
一句话总结:高斯噪声是「均匀的雾」,泊松噪声是「随信号变化的雾」,椒盐噪声是「随机撒的盐和胡椒」。
2.3 噪声模型对比
为了方便你快速对比,我整理了一张表:
| 噪声类型 | 分布特性 | 数学形式 | 典型场景 | 常用去噪方法 |
|---|---|---|---|---|
| 高斯噪声 | 对称、连续 | 正态分布 | 传感器读出、热噪声 | 高斯滤波、BM3D |
| 泊松噪声 | 非对称、离散 | 泊松分布 | 暗光拍摄、医学成像 | 方差稳定变换 + 高斯去噪 |
| 椒盐噪声 | 稀疏、极端值 | 二值脉冲 | 传感器坏点、传输错误 | 中值滤波、形态学滤波 |
2.4 噪声模型在去噪中的意义
你可能会问:知道噪声类型有什么用?我直接上深度学习不就行了?
嗯,这里要注意——深度学习也不是万能的。我见过太多人,拿一个预训练的去噪模型,直接往暗光图上套。结果呢?高斯噪声去得不错,但泊松噪声留下的「纹理」反而更明显了。
我个人习惯的做法是:
- 先分析噪声类型:看直方图、看局部方差、看信号-噪声关系
- 再选去噪策略:高斯噪声用 BM3D,泊松噪声用 Anscombe 变换 + BM3D,椒盐噪声用自适应中值滤波
- 最后调参:根据噪声强度调整滤波参数
一个小技巧:如果你不确定噪声类型,可以拍一张纯色背景(比如白墙),然后分析它的直方图。高斯噪声的直方图是钟形,泊松噪声的直方图会偏右,椒盐噪声则会在 0 和 255 处出现两个尖峰。
2.5 本章知识体系
下面这张图,是我自己总结的噪声知识框架。你看一遍,基本就能把本章内容串起来了。
这张图把噪声的来源、类型、数学表示和去噪方法串在了一起。你以后遇到任何去噪问题,都可以先拿这张图来「对号入座」。
2.6 本章小结
聊了这么多,其实核心就三句话:
- 噪声类型决定去噪策略——搞错类型,算法再强也没用
- 数学表示是算法的基石——不理解分布,就调不好参数
- 实战中噪声往往是混合的——暗光下通常是高斯 + 泊松的混合体
我记得刚入行时,总觉得数学没用。直到有一次,一个简单的泊松噪声问题,我硬是用高斯滤波折腾了两天。后来老老实实补了概率论,才发现——数学不是用来考试的,是用来省时间的。
给读者的建议:如果你时间有限,至少记住三种噪声的「长相」和「脾气」。下次遇到暗光图,先问自己三个问题——这是高斯吗?这是泊松吗?有椒盐吗?问完这三个问题,你的去噪思路就清晰了一半。
公众号:蓝海资料掘金营,微信deep3321