origin说它只接受标量,但对我来说,它也接受类似数组的输入,就像scipy.ndimage.filters.convolve函数一样。传递0确实是脚印的中心。原点的值相对于中心。对于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)
输出:
输入数组:
^{pr2}$
居中输出:[[ 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.]]