python中scipy.signal.medfilt2d背后的概念

时间:2011-05-22 22:57:07

标签: python matrix numpy scipy

我试图了解scipy.signal.medfilt2d的工作原理。在查看scipy文档后,其格式为:

scipy.signal.medfilt2d(input,kernel_size = 3)

如果我有像

这样的矩阵,那就好了
1 2 3 7 2 4
3 4 2 2 6 7
1 7 3 1 2 6
3 2 3 4 3 1
2 6 7 8 2 5
3 4 2 2 1 8

由于内核大小默认设置为3。如果我将medfilt2d应用于此矩阵,矩阵将变为如下所示吗? (我所做的是将3 x 3盒子中的每个元素都取出来,将它们全部加起来除以9(平均值))

2.8   2.8   2.8   4.1   4.1  4.1
2.8   2.8   2.8   4.1   4.1  4.1
2.8   2.8   2.8   4.1   4.1  4.1
3.5   3.5   3.5   3.7   3.7  3.7
3.5   3.5   3.5   3.7   3.7  3.7
3.5   3.5   3.5   3.7   3.7  3.7

那么请与我分享您的知识和见解?告诉我,如果我错了,我可以从这个错误中吸取教训。非常感谢

1 个答案:

答案 0 :(得分:1)

正如Scipy documentation中所述,medfilt2是中位数过滤器。引自文档,

The sample median is the middle array value in a sorted list of neighborhood values

因此,对于您的示例,位于1,1

的子矩阵
1 2 3
3 4 2
1 7 3

将被分类到

1 1 2 2 3 3 3 4 7

中间元素是3,因此它将是过滤器的输出。还有更多细节on Wikipedia