You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

scipy.ndimage.median_filter偶数尺寸的工作原理探究

scipy.ndimage.median_filter 偶数尺寸的工作机制

核心规则

scipy.ndimage.median_filter 处理偶数尺寸窗口时,遵循两个关键逻辑:

  • 窗口范围与锚点:默认以输出位置为窗口的右下角,各维度上窗口覆盖从 当前索引 - (size-1) 到 当前索引 的区域,超出数组边界的部分按指定 mode 填充(如示例中constant模式用cval=0补0)。
  • 偶数元素的中位数选取:当窗口内元素总数为偶数时,取排序后数组的第 n//2 个元素(0-based 索引),即上中位数(例如4个元素时取排序后的第3个元素,1-based计数)。

2D 示例验证

以你提供的测试数组为例:

arr = np.array([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])

当size=2时,针对原数组右下角的9(索引(2,2)):

  1. 窗口覆盖元素:(1,1)=5、(1,2)=6、(2,1)=8、(2,2)=9
  2. 排序后数组:[5,6,8,9]
  3. 取0-based索引4//2=2对应的元素8,与输出结果完全匹配。

再验证左上角的(0,0)位置:

  1. 窗口覆盖元素:边界填充的3个0 + 原数组的1
  2. 排序后数组:[0,0,0,1]
  3. 取索引2对应的元素0,与输出一致。

1D 示例的“巧合”原因

你观察到1维下偶数尺寸与对应奇数尺寸结果一致,是递增数组特性+中位数规则共同作用的巧合:

  • size=2时,每个输出位置的窗口包含当前元素与前一个元素,排序后取索引1(2//2=1)的元素(即较大的那个),恰好等于当前元素,因此输出与size=1的结果一致。
  • size=4时,窗口包含前3个元素与当前元素(边界补0),对于递增数组,排序后取索引2(4//2=2)的元素,恰好和size=3时取中间元素的结果重合。

实际使用的表现

偶数尺寸的median_filter能有效模糊图像且难以察觉偏移,是因为窗口的右下角锚点带来的微小偏移在视觉上不明显,同时中位数滤波的固有特性保证了降噪、模糊效果的稳定性。

内容的提问来源于stack exchange,提问作者Mariia Tkachenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:48:22