中值滤波(一)

发布时间 2023-10-20 16:59:48作者: 许个未来—

1.首先我们要知道中值滤波是什么?

  首先,中值滤波对于图片来说的一个降噪操作,此处讲解矩阵已经拉平为一维的情况。(具体含义后续在下一个图片中值中解释,此处例子为一个数组)

2.中值滤波核心是什么?具体是怎么进行的?

  中值滤波会设定一个窗口值,也就是在滑动窗口的时候,窗口大小。那么这个中值是怎么进行的。

步骤:

  1.确定窗口大小, 因为窗口是奇数,必然能找到中间的数。
  2.从第一个数开始,每一个数都会作为最中间的数,前后为窗口数一半,总共构成窗口大小的值。
  3.然后进行排序,一半是升序,选取窗口数最中间的中位数依次替换原始值。

注意点:

  第一点:窗口大小只能是奇数,因为这样才能找到最中间的值,也就是中位数。

  第二点:在选定窗口大小的值之内,需要进行排序,通常是以升序来进行排序。

  第三点:中值滤波默认窗口以外的值以0填充进行排序。

3.代码展示以及图片解释。(此处采用的是python中的scipy的signal,如果没有安装scipy的同学也可以直接安装)

  【python的第三方库比较简单,一句话就可以【pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple/】】

  中值滤波因为第三方库的原因,也是比较简单的,已经将核心都封装为了函数。

from scipy import signal
import numpy as np

window_size = 5
signal_data = np.array([1, 5, 2, 8, 4, 6, 7, 3, 9, 2, 5, 9, 8, 8, 4])
filtered_data1 = signal.medfilt(signal_data, kernel_size=window_size)

print(signal_data)
print(filtered_data1)
# Output:[1 2 4 5 6 6 6 6 5 5 8 8 8 8 4]

图画解说: