(一)OpenCV——噪声去除(降噪)

高斯滤波器(针对高斯噪声)

高斯噪声是指它的概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。

高斯滤波(Gaussian filter) 包含许多种,包括低通、带通和高通等,我们通常图像上说的高斯滤波,指的是 高斯模糊(Gaussian Blur) ,是一种 高斯低通滤波 ,其过滤调图像高频成分(图像细节部分),保留图像低频成分(图像平滑区域),所以对图像进行 '高斯模糊' 后,图像会变得模糊。

高斯模糊对于抑制 高斯噪声 (服从正态分布的噪声) 非常有效。

高斯滤波是一种常用的图像去噪方法,它通过在图像上进行卷积操作来实现。

高斯滤波的计算过程:

高斯函数

在计算每个像素时,都把当前中心点看作坐标原点,可以使得均值 μ = 0 ,简化高斯函数的公式:

其中:

  • (x,y) 是核中某点相对于中心点的坐标

  • σ 是标准差(控制平滑程度)

高斯核的生成

高斯滤波的重要两步就是先找到高斯核然后再进行卷积

生成示例(3×3高斯核,σ=1)

python 复制代码
import numpy as np

def gaussian_kernel(size, sigma=1):
    kernel = np.fromfunction(
        lambda x, y: (1/(2*np.pi*sigma**2)) * 
                     np.exp(-((x-(size-1)/2)**2 + (y-(size-1)/2)**2)/(2*sigma**2)),
        (size, size)
    )
    return kernel / np.sum(kernel)  # 归一化

kernel = gaussian_kernel(3)
print(kernel)

输出结果:

python 复制代码
[[0.07511361 0.1238414  0.07511361]
 [0.1238414  0.20417996 0.1238414 ]
 [0.07511361 0.1238414  0.07511361]]

卷积计算

高斯滤波的卷积计算步骤如下:

  1. 核中心对准:将高斯核中心对准图像的每个像素

  2. 对应相乘:核覆盖区域的像素值与核权重逐点相乘

  3. 求和:将所有乘积结果相加

  4. 替换中心像素:用求和结果替换原中心像素值

计算示例(3×3区域):

python 复制代码
图像局部区域I:
[100 120 110]
[ 90 100 115]
[ 95 105 108]

高斯核:
[[0.07511361 0.1238414  0.07511361]
 [0.1238414  0.20417996 0.1238414 ]
 [0.07511361 0.1238414  0.07511361]]

计算后的结果:
[0.075 0.124 0.075]
[0.124 0.204 0.124]
[0.075 0.124 0.075]

计算过程:
新中心值 = 100*0.075 + 120*0.124 + 110*0.075 +
          90*0.124 + 100*0.204 + 115*0.124 +
          95*0.075 + 105*0.124 + 108*0.075
        ≈ 103.3

给原图加上高斯噪声,并绘制加噪后的像素值分布图

经过高斯滤波处理后的图像

归一化

归一化(Normalization)在图像滤波和卷积运算中是一个关键步骤,它确保滤波操作不会改变图像的整体亮度水平。

归一化的基本定义

归一化 指的是将滤波器(卷积核)的所有权重值进行缩放,使得它们的总和等于1。数学表达式为:

bash 复制代码
归一化核 = 原始核 / ∑(原始核所有元素)

为什么需要归一化?

保持图像亮度恒定

未经归一化:卷积后图像整体会变亮或变暗

bash 复制代码
kernel = np.array([[1, 1, 1],
                   [1, 1, 1],
                   [1, 1, 1]])  # 总和=9
# 应用该核会使每个像素值变为原来的9倍

归一化后:

bash 复制代码
normalized_kernel = kernel / 9  # 总和=1

不需要归一化的特殊情况

某些滤波器故意不归一化

  • 边缘检测算子(如Sobel、Laplacian)
bash 复制代码
sobel_x = np.array([[-1, 0, 1],
                    [-2, 0, 2],
                    [-1, 0, 1]])  # 总和=0
  • 锐化滤波器

  • 这些滤波器需要保留灰度变化信息

中值滤波器(针对椒盐噪声)

中值滤波(Median Filter)是一种非线性滤波方法,主要用于去除图像中的椒盐噪声(Salt-and-Pepper Noise)同时较好地保留图像边缘。它的计算过程与线性滤波器(如高斯滤波)完全不同。

基本计算步骤

对于一个像素点,中值滤波的计算过程如下:

  1. 定义滤波窗口:选择一个奇数尺寸的邻域窗口(如3×3、5×5等)

  2. 提取窗口内像素值:取出该窗口覆盖的所有像素值

  3. 排序像素值:将这些像素值按从小到大(或从大到小)排序

  4. 取中值:选择排序后的中间值作为该像素点的新值

  5. 替换原像素:用这个中值替换原图像中对应位置的像素值

具体计算示例

假设我们有一个3×3的图像区域和3×3的中值滤波窗口:

原始图像区域(3×3):

bash 复制代码
[120, 125, 130,
 115, 255, 120,  ← 中心像素255可能是噪声(椒盐噪声)
 110, 105, 140]

计算过程:

  1. 提取所有9个像素值:[120, 125, 130, 115, 255, 120, 110, 105, 140]

  2. 排序:[105, 110, 115, 120, 120, 125, 130, 140, 255]

  3. 取中值(第5个值):120

  4. 用120替换原中心像素255

中值滤波的特点

  1. 非线性处理:不能表示为核卷积

  2. 去噪效果:特别适合去除椒盐噪声

  3. 边缘保留:比均值滤波更好地保留边缘

  4. 计算复杂度:比线性滤波高,因为涉及排序操作

  5. 窗口大小:通常使用奇数尺寸(3×3, 5×5等)

给图像加入椒盐噪声,并去噪

均值滤波器(简单平滑)

均值滤波器(Mean Filter),也称为简单平滑滤波器箱式滤波器(Box Filter),是最基础的线性滤波器之一。

基本原理

均值滤波通过用邻域像素的平均值代替中心像素值来实现图像平滑:

  • 线性操作:可以表示为卷积运算

  • 均匀权重:滤波窗口内所有像素权重相同

  • 平滑效果:减少图像噪声和细节

计算过程

对于一个N×N的均值滤波器:

  1. 定义滤波窗口:选择滤波器尺寸(如3×3、5×5等)

  2. 遍历图像:对每个像素应用滤波窗口

  3. 计算平均值:计算窗口内所有像素的算术平均值

  4. 替换中心像素:用平均值替换原中心像素值、

数学表达式:

bash 复制代码
新像素值 = (1/N²) × Σ(窗口内所有像素值)

具体示例

考虑一个3×3的图像区域:

bash 复制代码
[50, 60, 70]
[40, 255, 80]  ← 中心像素255可能是噪声
[30, 20, 90]

计算过程:

  1. 提取所有9个像素值:[50, 60, 70, 40, 255, 80, 30, 20, 90]

  2. 计算平均值:(50+60+70+40+255+80+30+20+90)/9 = 85

  3. 用85替换原中心像素255

应用场景

  1. 快速平滑:需要简单快速平滑处理时

  2. 预处理:作为更复杂处理的预处理步骤

  3. 均匀区域处理:处理纹理较均匀的图像区域

高斯滤波、均值滤波与中值滤波的全面对比

基本性质对比

特性 高斯滤波 均值滤波 中值滤波
滤波器类型 线性滤波器 线性滤波器 非线性滤波器
计算复杂度 中等(可分离优化) 高(需要排序)
权重分配 中心权重高,边缘权重低 均匀权重 无权重概念
归一化要求 需要 需要 不需要

去噪效果对比

噪声类型 高斯滤波表现 均值滤波表现 中值滤波表现
高斯噪声 效果最好 效果较好 效果一般
椒盐噪声 效果较差 效果差 效果最好
脉冲噪声 效果差 效果差 效果极佳

边缘保持能力

边缘特性 高斯滤波 均值滤波 中值滤波
边缘模糊程度 中等(σ越大越模糊) 严重 最小
锐利边缘保持 较好 优秀
细节保留 中等

实际应用对比

高斯滤波最佳场景

  • 需要平滑但保留一定边缘

  • 预处理步骤(如Canny边缘检测前)

  • 光学系统产生的自然模糊建模

均值滤波适用场景

  • 快速简单平滑需求

  • 计算资源有限的场景

  • 均匀区域的噪声去除

中值滤波不可替代场景

  • 椒盐噪声去除(旧照片修复)

  • 需要保留锐利边缘(医学影像)

  • 脉冲噪声环境(工业检测)

参考文章:

https://blog.csdn.net/a435262767/article/details/107115249