def median_filter(input_image, filter_size):
时间: 2023-07-31 11:11:41 浏览: 94
这段代码定义了一个名为 median_filter 的函数,它接受两个参数:input_image 表示输入图像,filter_size 表示中值滤波器的大小。
中值滤波器是一种常用的数字图像处理方法,用于去除图像中的噪声和平滑图像。中值滤波器的原理是将每个像素周围的像素按照灰度值大小排序,然后用中间值代替该像素的灰度值。这种方法能够有效地去除不同类型的噪声,包括椒盐噪声和高斯噪声。
在这个函数中,我们首先用 numpy 库中的 pad 函数对输入图像进行边缘填充,以便在处理边缘像素时不出现越界的情况。然后用 for 循环遍历输入图像中的每个像素,对于每个像素,我们提取它周围大小为 filter_size 的区域,并将该区域中的像素灰度值排序。最后,用中间值代替该像素的灰度值,得到中值滤波后的图像。
完整代码如下:
```python
import numpy as np
def median_filter(input_image, filter_size):
# Pad the input image with zeros
padded_image = np.pad(input_image, filter_size // 2, mode='constant')
# Create an empty output image
output_image = np.zeros_like(input_image)
# Loop over the input image pixels
for i in range(input_image.shape[0]):
for j in range(input_image.shape[1]):
# Extract the filter_size x filter_size neighborhood around the pixel
neighborhood = padded_image[i:i+filter_size, j:j+filter_size]
# Compute the median of the pixel values in the neighborhood
median_value = np.median(neighborhood)
# Set the output pixel value to the median value
output_image[i, j] = median_value
return output_image
```
阅读全文