编写 Python 代码以使用 OpenCV 和 NumPy 库对带有椒盐噪声的图片施加三种空域滤波。
时间: 2023-06-07 07:07:23 浏览: 115
好的,让我来回答你的问题。下面是 Python 代码,使用 OpenCV 和 NumPy 库对带有椒盐噪声的图片施加三种空域滤波:
```python
import cv2
import numpy as np
# 加载带有椒盐噪声的图片
img = cv2.imread('noisy_image.jpg', cv2.IMREAD_GRAYSCALE)
# 定义三种滤波器:均值滤波器、中值滤波器和高斯滤波器
kernel_size = 3
mean_filter = np.ones((kernel_size, kernel_size), np.float32) / kernel_size ** 2
median_filter = cv2.medianBlur(img, kernel_size)
gaussian_filter = cv2.GaussianBlur(img, (kernel_size, kernel_size), 0)
# 显示滤波器效果
cv2.imshow('Original Image', img)
cv2.imshow('Mean Filtered Image', cv2.filter2D(img, -1, mean_filter))
cv2.imshow('Median Filtered Image', median_filter)
cv2.imshow('Gaussian Filtered Image', gaussian_filter)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先使用 `cv2.imread()` 函数加载一张带有椒盐噪声的灰度图片。然后,我们定义了三种滤波器:均值滤波器、中值滤波器和高斯滤波器。其中,均值滤波器使用了一个大小为 3x3 的矩阵进行计算;中值滤波器使用了 `cv2.medianBlur()` 函数进行计算,它的核心思想是取样本中的中位数代替当前像素的值;高斯滤波器使用了 `cv2.GaussianBlur()` 函数进行计算,它将当前像素周围的像素取加权平均值作为当前像素的值,权重呈现高斯分布。
最后,我们使用 `cv2.imshow()` 函数将原始图片和三种滤波器处理后的图片显示出来。注意,我们使用了 `cv2.waitKey(0)` 和 `cv2.destroyAllWindows()` 函数来等待用户按下键盘,以及销毁所有显示窗口。
阅读全文