scipy.ndimage.morphological_gradient

scipy.ndimage.morphological_gradient(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0)[源代码]

多维形态梯度。

形态梯度被计算为具有给定结构元素的输入的膨胀和侵蚀之间的差值。

参数
inputarray_like

要在其上计算形态梯度的数组。

size整数元组

用于数学形态学运算的扁平且完整的结构元素的形状。在以下情况下可选 footprintstructure 是提供的。一个更大的 size 会产生更模糊的渐变。

footprint整型数组,可选

用于形态运算的平面结构元素的非无限元素的位置。足迹越大,形态渐变越模糊。

structure整型数组,可选

用于形态运算的结构元素。 structure 可以是非平坦的结构元素。

output数组,可选

可以提供用于存储形态梯度的输出的阵列。

mode{‘反射’,‘常量’,‘最近’,‘镜像’,‘换行’},可选

这个 mode 参数确定如何处理数组边框, cval 模式等于‘Constant’时的值。默认值为‘Reflect’

cval标量,可选

在以下情况下填充输入的过去边缘的值 mode 是“恒定的”。默认值为0.0。

origin标量,可选

这个 origin 参数控制过滤的位置。默认%0

退货
morphological_gradientndarray

的形态梯度 input

注意事项

对于平面结构元素,在给定点计算的形态梯度对应于以该点为中心的结构元素覆盖的元素中输入元素之间的最大差值。

参考文献

1

https://en.wikipedia.org/wiki/Mathematical_morphology

示例

>>> from scipy import ndimage
>>> a = np.zeros((7,7), dtype=int)
>>> a[2:5, 2:5] = 1
>>> ndimage.morphological_gradient(a, size=(3,3))
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 0, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> # The morphological gradient is computed as the difference
>>> # between a dilation and an erosion
>>> ndimage.grey_dilation(a, size=(3,3)) -\
...  ndimage.grey_erosion(a, size=(3,3))
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 0, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 1, 1, 1, 1, 1, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> a = np.zeros((7,7), dtype=int)
>>> a[2:5, 2:5] = 1
>>> a[4,4] = 2; a[2,3] = 3
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 3, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 2, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> ndimage.morphological_gradient(a, size=(3,3))
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 1, 3, 3, 3, 1, 0],
       [0, 1, 3, 3, 3, 1, 0],
       [0, 1, 3, 2, 3, 2, 0],
       [0, 1, 1, 2, 2, 2, 0],
       [0, 1, 1, 2, 2, 2, 0],
       [0, 0, 0, 0, 0, 0, 0]])