编写程序,分别使用中值滤波、均值滤波和高斯滤波对含噪的图像进行滤波处理,显示并观察他们的滤波效果。
时间: 2024-11-09 09:18:24 浏览: 35
在Python中,我们可以使用OpenCV库来实现中值滤波、均值滤波和高斯滤波。这里是一个简单的示例,展示了如何处理含有噪声的图像:
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
# 加载图像并引入噪声
img = cv2.imread('noisy_image.jpg', 0) # 读取灰度图像
# 添加高斯噪声
gaussian_img = img + np.random.normal(0, 50, img.shape)
# 定义滤波函数
def apply_filter(image, filter_name):
kernel_size = 3 # 可以调整滤波器大小
if filter_name == '中值':
filtered_img = cv2.medianBlur(image, kernel_size)
elif filter_name == '均值':
filtered_img = cv2.blur(image, (kernel_size, kernel_size))
elif filter_name == '高斯':
filtered_img = cv2.GaussianBlur(image, (kernel_size, kernel_size), 0)
else:
print("Invalid filter name.")
return None
return filtered_img
# 应用滤波并保存结果
filtered_gaussian = apply_filter(gaussian_img, '高斯')
filtered_median = apply_filter(gaussian_img, '中值')
filtered_mean = apply_filter(gaussian_img, '均值')
# 显示原始和过滤后的图像
plt.figure(figsize=(15, 5))
plt.subplot(1, 4, 1), plt.imshow(img, cmap='gray'), plt.title('Original')
plt.subplot(1, 4, 2), plt.imshow(filtered_gaussian, cmap='gray'), plt.title('Gaussian Filtered')
plt.subplot(1, 4, 3), plt.imshow(filtered_median, cmap='gray'), plt.title('Median Filtered')
plt.subplot(1, 4, 4), plt.imshow(filtered_mean, cmap='gray'), plt.title('Mean Filtered')
plt.show()
阅读全文