设计不同尺度的均值滤波、高斯滤波、中值滤波模板分别对受椒盐噪声和高斯噪声干扰的图像进行去噪,模板窗口分别采用3*3,5*5,7*7,并对比去噪效果的代码
时间: 2024-11-05 22:26:03 浏览: 72
均值滤波、高斯滤波和中值滤波都是常见的图像去噪技术。它们各有特点:
1. **均值滤波**是最简单的平滑处理,它通过替换每个像素点的值为其所在窗口内像素值的平均值来消除噪声。对于椒盐噪声和高斯噪声,均值滤波可能会去除一些随机噪声,但对于椒盐噪声(离散的黑白点),可能会误识别噪声为图像的一部分。
```python
import cv2
import numpy as np
def mean_filter(image, kernel_size=3):
filter_kernel = np.ones((kernel_size, kernel_size)) / (kernel_size**2)
blurred = cv2.filter2D(image, -1, filter_kernel)
return blurred
# 示例:
noisy_image = ... # 加入噪声后的图像
filtered_mean = mean_filter(noisy_image, 3)
```
2. **高斯滤波**利用高斯函数作为权重分布,更倾向于保留边缘信息并减少高频噪声的影响。由于其平滑性较强,可以较好地应对高斯噪声。
```python
def gaussian_filter(image, kernel_size=5):
kernel = cv2.getGaussianKernel(kernel_size, 0) * cv2.getGaussianKernel(kernel_size, 0).T
blurred = cv2.filter2D(image, -1, kernel)
return blurred
# 示例:
filtered_gaussian = gaussian_filter(noisy_image, 5)
```
3. **中值滤波**主要用于非线性滤波,适用于椒盐噪声,因为它只考虑像素值的中间值,能有效抵抗孤立的像素突变。
```python
def median_filter(image, kernel_size=7):
blurred = cv2.medianBlur(image, kernel_size)
return blurred
# 示例:
filtered_median = median_filter(noisy_image, 7)
```
去噪效果对比通常通过查看PSNR(Peak Signal-to-Noise Ratio)和SSIM(Structural Similarity Index)等指标来进行评估。同时,可视化图像也是直观比较的重要手段。
阅读全文