scipy.ndimage.

grey_erosion#

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

计算灰度腐蚀,使用结构元素或对应于平坦结构元素的足迹。

灰度腐蚀是一种数学形态学操作。对于完整和平坦结构元素的简单情况,可以将其视为滑动窗口上的最小值滤波器。

参数:
inputarray_like

计算灰度腐蚀的数组。

size整数元组

用于灰度腐蚀的平坦且完整结构元素的形状。如果提供了 footprintstructure,则为可选。

footprint整数数组,可选

用于灰度腐蚀的平坦结构元素的非无穷元素的位置。非零值给出选择最小值的中心的邻域集合。

structure整数数组,可选

用于灰度腐蚀的结构元素。structure 可以是非平坦结构元素。structure 数组对邻域中的每个像素应用减法偏移。

output数组,可选

可以提供一个用于存储腐蚀输出的数组。

mode{‘reflect’,’constant’,’nearest’,’mirror’,’wrap’},可选

mode 参数确定如何处理数组边界,其中当模式等于“constant”时,cval 是值。默认值为“reflect”

cval标量,可选

如果 mode 为“constant”,则填充输入边缘的值。默认值为 0.0。

origin标量,可选

origin 参数控制滤波器的放置。默认值为 0

axes整数元组或 None

应用过滤器的轴。如果为 None,则沿所有轴过滤 input。如果提供了 origin 元组,则其长度必须与轴的数量匹配。

返回:
outputndarray

input 的灰度腐蚀。

注释

由定义在域 E 上的结构元素 s 对图像输入进行的灰度腐蚀由下式给出

(input+s)(x) = min {input(y) - s(x-y), for y in E}

特别是,对于定义为 y 在 E 中 s(y) = 0 的结构元素,灰度腐蚀计算由 E 定义的滑动窗口内的输入图像的最小值。

灰度腐蚀 [1] 是一种数学形态学运算 [2]

参考

示例

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((7,7), dtype=int)
>>> a[1:6, 1:6] = 3
>>> a[4,4] = 2; a[2,3] = 1
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 3, 3, 3, 3, 3, 0],
       [0, 3, 3, 1, 3, 3, 0],
       [0, 3, 3, 3, 3, 3, 0],
       [0, 3, 3, 3, 2, 3, 0],
       [0, 3, 3, 3, 3, 3, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> ndimage.grey_erosion(a, size=(3,3))
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 3, 2, 2, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> footprint = ndimage.generate_binary_structure(2, 1)
>>> footprint
array([[False,  True, False],
       [ True,  True,  True],
       [False,  True, False]], dtype=bool)
>>> # Diagonally-connected elements are not considered neighbors
>>> ndimage.grey_erosion(a, footprint=footprint)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 3, 1, 2, 0, 0],
       [0, 0, 3, 2, 2, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])