origin 说它只接受一个标量,但对我来说它也接受类似数组的输入,scipy.ndimage.filters.convolve函数也是如此。通过 0 确实是足迹的中心。Origin 的值是相对于中心的。对于 3x3 封装,您可以指定值 -1.0 到 1.0。这里有些例子。请注意,在未指定原点的示例中,过滤器按预期居中。
import numpy as np
import scipy.ndimage
a= np.zeros((5, 5))
a[1:4, 1:4] = np.arange(3*3).reshape((3, 3))
default_out = scipy.ndimage.median_filter(a, size=(3, 3))
shift_pos_x = scipy.ndimage.median_filter(a, size=(3, 3), origin=(0, 1))
shift_neg_x = scipy.ndimage.median_filter(a, size=(3, 3), origin=(0, -1))
print(a)
print(default_out)
print(shift_pos_x)
print(shift_neg_x)
输出:
输入数组:
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 1. 2. 0.]
[ 0. 3. 4. 5. 0.]
[ 0. 6. 7. 8. 0.]
[ 0. 0. 0. 0. 0.]]
居中输出:
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 1. 0. 0.]
[ 0. 1. 4. 2. 0.]
[ 0. 0. 4. 0. 0.]
[ 0. 0. 0. 0. 0.]]
右移输出:
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 1. 0.]
[ 0. 0. 1. 4. 2.]
[ 0. 0. 0. 4. 0.]
[ 0. 0. 0. 0. 0.]]
移到左输出:
[[ 0. 0. 0. 0. 0.]
[ 0. 1. 0. 0. 0.]
[ 1. 4. 2. 0. 0.]
[ 0. 4. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]