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]
图画解说:
标签:窗口,signal,滤波,scipy,排序,size From: https://www.cnblogs.com/future-panda/p/17777138.html