写一个中值滤波程序
时间: 2023-08-07 18:17:46 浏览: 96
以下是 Python 代码实现一个简单的中值滤波程序,该程序使用了 OpenCV 库:
```python
import cv2
def median_filter(img, kernel_size):
h, w = img.shape[:2]
img_filtered = img.copy()
padding_size = kernel_size // 2
for i in range(padding_size, h - padding_size):
for j in range(padding_size, w - padding_size):
roi = img[i - padding_size:i + padding_size + 1,
j - padding_size:j + padding_size + 1]
img_filtered[i, j] = int(cv2.medianBlur(roi, kernel_size)[padding_size, padding_size])
return img_filtered
# 加载图像
img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
# 中值滤波
img_filtered = median_filter(img, 5)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Filtered Image', img_filtered)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
其中,`median_filter` 函数是实现中值滤波的核心部分。它接受两个参数:待处理的图像和滤波器大小,返回经过中值滤波后的图像。在函数内部,我们遍历每个像素,并将滤波器中的像素进行排序,取中间值作为该像素的新值。最后,返回处理完毕的图像。
在上述代码中,我们使用了 OpenCV 库提供的中值滤波函数 `cv2.medianBlur`,该函数接受两个参数:待处理的图像和滤波器大小。我们将滤波器大小设置为函数参数 `kernel_size` 的值,以便在程序中灵活调整。
阅读全文