Skip to content

去噪滤波算法 ​

高斯滤波(Gaussian Filter) ​

通过使用高斯分布的权重来计算邻近像素的加权平均值

优点: 能够平滑图像的同时保留边缘信息

缺点: 参数设置较为复杂

使用现成库

python
# 高斯去噪
    img = cv2.GaussianBlur(img, (3, 3), 0)

自定义实现

python
import numpy as np

def gaussian_filter(image, sigma):
    kernel = create_gaussian_kernel(sigma)
    return cv2.filter2D(image, -1, kernel)

def create_gaussian_kernel(sigma):
    size = int(3 * sigma * 3) + 1
    kernel = np.zeros((size, size))
    center = (size - 1) // 2
    
    for i in range(size):
        for j in range(size):
            x = i - center
            y = j - center
            kernel[i][j] = (x * x + y * y) / (2 * sigma * sigma)
    
    return np.exp(-kernel) / (2 * np.pi * sigma * sigma)

均值滤波(Mean Filter) ​

取邻近像素的平均值来替代中心像素的值

优点: 简单快速

缺点: 会导致图像模糊

python
mean_blurred = cv2.blur(image, ksize=(5,5))

中位数滤波(Median Filter) ​

类似于均值滤波,但会取邻近像素的中位数作为结果

优点: 对噪声鲁棒性更强

缺点: 计算较慢

python
median_blurred = cv2.medianBlur(image, ksize=5)