python实现中值滤波
时间: 2023-10-20 15:05:51 浏览: 40
中值滤波是一种常用的图像处理方法,可以用于去除图像中的噪声。下面是Python实现中值滤波的代码:
```python
import cv2
import numpy as np
def median_filter(img, kernel_size):
# 获取图像的行数和列数
rows, cols = img.shape[:2]
# 创建一个空白的图像用于存储中值滤波后的结果
result = np.zeros((rows, cols), dtype=np.uint8)
# 计算中值滤波器的半径
radius = kernel_size // 2
# 遍历图像中的每个像素
for i in range(radius, rows - radius):
for j in range(radius, cols - radius):
# 提取以当前像素为中心的邻域
neighborhood = img[i - radius:i + radius + 1, j - radius:j + radius + 1]
# 计算邻域的中值
median_value = np.median(neighborhood)
# 将中值赋给当前像素
result[i, j] = median_value
return result
# 读取图像
img = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
# 对图像进行中值滤波
result = median_filter(img, 3)
# 显示原图和中值滤波后的图像
cv2.imshow("Original Image", img)
cv2.imshow("Median Filtered Image", result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,`median_filter`函数接受两个参数:待处理的图像和中值滤波器的大小(即卷积核的大小)。函数通过遍历图像中的每个像素来计算中值滤波后的结果。对于每个像素,函数提取以其为中心的邻域,然后计算邻域的中值,并将中值赋给当前像素。最后,函数返回中值滤波后的结果。