给定源数据,写中值滤波程序
时间: 2023-05-26 12:05:39 浏览: 71
中值滤波程序
以下是一个简单的中值滤波程序,其中使用了Python语言和numpy库:
```python
import numpy as np
def median_filter(data, kernel_size=3):
# 获取数据维度
data_shape = np.shape(data)
data_rows = data_shape[0]
data_cols = data_shape[1]
# 创建输出结果数组
result = np.zeros_like(data)
# 对每个像素计算中值
for row in range(data_rows):
for col in range(data_cols):
# 获取 kernel_size x kernel_size 的邻域像素
neighborhood = data[max(0, row-kernel_size//2):min(data_rows, row+kernel_size//2+1),
max(0, col-kernel_size//2):min(data_cols, col+kernel_size//2+1)]
# 计算邻域像素的中值
pixel_value = np.median(neighborhood)
result[row, col] = pixel_value
return result
```
在上述代码中,median_filter函数调用时需要传入一个源数据数组(标准矩阵)。可选参数kernel_size表示中值滤波器的大小,其默认值为3。
该函数首先获取数据的维度,并创建一个与源数据数组相同的零数组(result),该数组存储处理过的中值过滤器中得出的像素值。
然后,该函数遍历源数据数组中的每个像素,从中心开始获取kernel_size x kernel_size的邻域像素,并计算邻域像素的中值。将该中值分配给对应的像素位置,最终返回一个所需滤波器大小的中值滤波器处理后的源数据。
阅读全文