2

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

4

0 回答 0