最近看到一个方法用了百分位滤波,到处搜也没看到一个解释,后来找到一篇说中值滤波就是0.5的百分位滤波,因此直接看中值滤波就明白了,因此首先看中值滤波
中值滤波
如上图所示,选定一个3*3的矩阵,计算均值就是均值滤波,计算中位数就是中值滤波,那相应的百分位滤波呢,自然就是中心点的像素值选择分位数即可。
实现函数
image.png看一下参数,size就是对应上述的3*3矩阵窗口算均值,也可以自定义为(10,5)的窗口,percentile即为选取的中位数。
看一下应用:
from scipy import ndimage, misc
import matplotlib.pyplot as plt
fig = plt.figure()
plt.gray() # show the filtered result in grayscale
ax1 = fig.add_subplot(121) # left side
ax2 = fig.add_subplot(122) # right side
ascent = misc.ascent()
result = ndimage.percentile_filter(ascent, percentile=20, size=20)
ax1.imshow(ascent)
ax2.imshow(result)
plt.show()
上述的参数20,即为(20,20),和input的shape保持一致,实现的效果如下:
网友评论