2. 降噪基础
各位做安防监控的同行,咱们直接进入正题。图像降噪,说白了就是跟画面里的“脏东西”做斗争。你想想看,一个监控摄像头,白天光线好时画面通透,一到晚上或者光线不足,满屏的颗粒感、闪烁点就出来了。这些“脏东西”就是噪声。
我做了这么多年安防图像处理,可以负责任地告诉你:降噪不是把画面变模糊,而是把噪声去掉的同时,尽量保留边缘细节。这中间的平衡,才是真正的技术活。
2.1 噪声类型:你得先认识敌人
不同的噪声,处理方式完全不同。我见过不少新手,上来就用高斯滤波一顿操作,结果椒盐噪声一个没去掉,反而把图像搞糊了。所以,先搞清楚你面对的是哪种噪声。
2.1.1 高斯噪声
这是最常见的一种。它源于传感器本身的电子热运动,或者光照不均匀。说白了,就是每个像素点都叠加了一个随机的小扰动,这个扰动服从高斯分布(正态分布)。
- 特点:每个像素都会受影响,但幅度不大。看起来像画面蒙了一层薄薄的“沙粒”。
- 成因:传感器温度升高、低光照环境、电路噪声。
- 数学表达:概率密度函数为 \( p(x) = \frac{1}{\sqrt{2\pi\sigma}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} \),其中 \(\sigma\) 是标准差,控制噪声强度。
2.1.2 椒盐噪声
这种噪声更“暴力”。它随机把一些像素点变成纯白(盐)或纯黑(椒)。你想想看,画面里突然出现一些白点或黑点,像撒了盐和胡椒一样。
- 特点:只有部分像素受影响,但幅度极大(要么0,要么255)。
- 成因:传输信道错误、模数转换器故障、存储介质损坏。
- 关键:高斯滤波对椒盐噪声基本无效,必须用中值滤波。
2.1.3 泊松噪声
这个稍微复杂一点。它跟光的量子特性有关。光线越弱,光子数越少,统计涨落就越明显。泊松噪声的强度跟信号本身有关——信号越强,噪声越大。
- 特点:信号依赖型噪声。亮区噪声大,暗区噪声小。
- 成因:光子计数统计特性,常见于微光夜视、X光成像。
- 处理:通常先做方差稳定变换(如Anscombe变换),把泊松噪声变成近似高斯噪声,再用高斯降噪算法处理。
三种噪声的对比,我整理了一个表格,方便你快速查阅:
| 噪声类型 | 分布特性 | 与信号关系 | 典型场景 | 推荐初处理 |
|---|---|---|---|---|
| 高斯噪声 | 正态分布,每个像素都受影响 | 独立于信号 | 低照度监控、传感器热噪声 | 高斯滤波、双边滤波 |
| 椒盐噪声 | 随机分布,部分像素突变 | 独立于信号 | 传输错误、存储故障 | 中值滤波 |
| 泊松噪声 | 泊松分布,与信号强度相关 | 信号依赖型 | 微光夜视、医学成像 | Anscombe变换 + 高斯降噪 |
2.2 降噪评价指标:怎么判断降得好不好?
降噪做完了,怎么评价效果?你不能光靠眼睛看,得用客观指标说话。我常用的两个指标是PSNR和SSIM。
2.2.1 PSNR(峰值信噪比)
PSNR是最经典的指标。它计算的是原始干净图像和降噪后图像之间的像素误差。单位是dB,数值越大,说明失真越小。
- 公式:\( PSNR = 10 \cdot \log_{10} \left( \frac{MAX_I^2}{MSE} \right) \),其中MSE是均方误差,\( MAX_I \)是像素最大值(8位图像为255)。
- 经验值:PSNR > 40dB,图像质量非常好;30-40dB,良好;20-30dB,可接受;< 20dB,不可接受。
- 局限:PSNR只关注像素级误差,不关注人眼感知。有时候PSNR很高,但图像看起来反而更“假”。
2.2.2 SSIM(结构相似性)
SSIM更聪明。它从亮度、对比度、结构三个维度比较两幅图像的相似性。取值范围是0到1,越接近1,说明结构保留得越好。
- 公式:\( SSIM(x, y) = \frac{(2\mu_x\mu_y + C_1)(2\sigma_{xy} + C_2)}{(\mu_x^2 + \mu_y^2 + C_1)(\sigma_x^2 + \sigma_y^2 + C_2)} \)
- 优势:更符合人眼视觉特性。降噪过度导致边缘模糊时,SSIM会明显下降。
- 我的习惯:我一般要求SSIM > 0.9,同时PSNR > 35dB,才算合格的降噪效果。
两个指标的对比:
| 指标 | 关注点 | 数值范围 | 优点 | 缺点 |
|---|---|---|---|---|
| PSNR | 像素误差 | 0 ~ ∞ (dB) | 计算简单,物理意义明确 | 不感知结构,对模糊不敏感 |
| SSIM | 结构相似性 | 0 ~ 1 | 符合人眼感知,对边缘保留敏感 | 计算稍复杂,对平移旋转不鲁棒 |
2.3 经典降噪算法概述
了解了噪声和评价指标,咱们来看看有哪些经典算法。这些算法是基础,后面的章节会深入讲。
2.3.1 空间域滤波
直接在像素空间上操作,简单粗暴。
- 均值滤波:用邻域像素的平均值代替中心像素。优点是快,缺点是边缘全糊了。
- 高斯滤波:用高斯核做加权平均。比均值滤波好一点,但边缘还是保不住。
- 中值滤波:用邻域像素的中值代替中心像素。对椒盐噪声有奇效,但对高斯噪声效果一般。
- 双边滤波:同时考虑空间距离和像素值差异。能保边,但计算量大,而且对高噪声图像效果有限。
2.3.2 变换域滤波
把图像变换到频域,在频域里处理噪声。
- 小波阈值降噪:对小波系数做软阈值或硬阈值处理。效果好,但参数选择比较麻烦。
- DCT降噪:离散余弦变换,JPEG压缩里用的就是它。适合处理块状噪声。
2.3.3 非局部均值(NLM)
这个算法思路很巧妙。它不只看邻域,而是在整幅图像里找相似的块,然后加权平均。效果非常好,但计算量巨大。我记得第一次在嵌入式平台上跑NLM,一帧1080p图像跑了十几秒,根本没法用。后来做了很多优化,才勉强达到实时。
2.3.4 基于深度学习的降噪
这是目前的主流方向。用CNN(卷积神经网络)直接学习从噪声图像到干净图像的映射。
- DnCNN:经典网络,用残差学习预测噪声,然后从原图减去噪声。
- FFDNet:可处理不同噪声水平的快速灵活降噪网络。
- 优势:效果远超传统算法,能处理复杂噪声。
- 劣势:需要大量训练数据,计算资源要求高,在低端IPC上部署困难。
下面这张图,是我整理的降噪知识体系框架,方便你理解各个模块之间的关系:
嗯,这张图把整个降噪流程串起来了。从输入噪声图像开始,先识别噪声类型,再选择合适的算法,最后用PSNR和SSIM评估。如果效果不达标,就调整参数或者换算法,直到满意为止。
好了,降噪的基础知识就讲到这里。记住:认识噪声是第一步,选对指标是第二步,用好算法是第三步。后面的章节,我们会深入每一种算法的细节和调优技巧。