用Python在黑白图像中,加入高斯噪声,最后编写均值、中值滤波进行去噪
时间: 2024-05-15 20:19:49 浏览: 113
【图像去噪】基于均值和中值滤波实现图像去噪附matlab代码 上传版本.zip
以下是Python代码实现:
```python
import cv2
import numpy as np
# 读取黑白图像
img = cv2.imread('lena.jpg', 0)
# 添加高斯噪声
noise = np.random.normal(0, 25, img.shape)
img_noise = img + noise.astype(np.uint8)
# 定义均值滤波函数
def mean_filter(img, kernel_size):
kernel = np.ones((kernel_size, kernel_size), np.float32) / (kernel_size ** 2)
img_filtered = cv2.filter2D(img, -1, kernel)
return img_filtered
# 定义中值滤波函数
def median_filter(img, kernel_size):
img_filtered = cv2.medianBlur(img, kernel_size)
return img_filtered
# 对加噪图像进行均值滤波和中值滤波
img_mean = mean_filter(img_noise, 3)
img_median = median_filter(img_noise, 3)
# 显示原图、加噪图、均值滤波后的图和中值滤波后的图
cv2.imshow('Original Image', img)
cv2.imshow('Noisy Image', img_noise)
cv2.imshow('Mean Filtered Image', img_mean)
cv2.imshow('Median Filtered Image', img_median)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
代码中使用`np.random.normal()`函数生成高斯噪声,并将其添加到原图像上,得到加噪图像。然后,定义了均值滤波和中值滤波函数,分别使用`cv2.filter2D()`和`cv2.medianBlur()`函数进行滤波处理。最后,将加噪图像输入滤波函数,得到均值滤波和中值滤波后的图像,并显示出来。
阅读全文