我想我理解ndimage.generic_filter的工作但是我不明白当你输入一个超过2维的数组时会发生什么(比如图像中的[[R],[G],[B]]
值)
给出以下代码:
import numpy as np
from scipy.ndimage import generic_filter
a = np.arange(36).reshape(3,3,4)
def fnc(buffer):
return np.min(buffer)
footprint = [
[[1, 1], [1, 1]],
[[1, 1], [1, 1]],
[[1, 1], [1, 1]]
]
generic_filter(a, fnc, footprint = footprint)
输出结果为:
array([[
[ 0, 0, 1, 2],
[ 0, 0, 1, 2],
[ 4, 4, 5, 6]
],[
[ 0, 0, 1, 2],
[ 0, 0, 1, 2],
[ 4, 4, 5, 6]
],[
[12, 12, 13, 14],
[12, 12, 13, 14],
[16, 16, 17, 18]
]])
在我看来,第一个数组是以最后输入的数组为代价重复的,我无法看到它的逻辑。这是故意的行为,还是我不应该像这样使用generic_filter?