用python写一个中值滤波代码
时间: 2023-12-17 19:51:37 浏览: 69
中值滤波是一种常见的图像处理算法,可以用于去除图像中的噪声。下面是一个用 Python 实现的简单的中值滤波代码:
```python
import numpy as np
import cv2
def median_filter(image, kernel_size):
# 获取图像的行数和列数
rows, cols = image.shape
# 创建一个空的输出图像
output = np.zeros_like(image)
# 计算滤波器的边长
k = (kernel_size - 1) // 2
# 对图像进行边界扩充
padded_image = cv2.copyMakeBorder(image, k, k, k, k, cv2.BORDER_REPLICATE)
# 遍历图像的每个像素
for i in range(k, rows + k):
for j in range(k, cols + k):
# 提取滤波器窗口中的像素值
window = padded_image[i - k:i + k + 1, j - k:j + k + 1]
# 计算窗口中像素值的中位数,并将其赋值给输出图像
output[i - k, j - k] = np.median(window)
return output
```
这个函数接受两个参数:输入图像和滤波器的大小。它首先计算出滤波器的边长,然后对输入图像进行边界扩充。接下来,它遍历图像的每个像素,提取滤波器窗口中的像素值,并计算中位数。最后,它将中位数赋值给输出图像,并返回输出图像。