我想我理解 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 ?