scipy.ndimage.

binary_erosion#

scipy.ndimage.binary_erosion(input, structure=None, iterations=1, mask=None, output=None, border_value=0, origin=0, brute_force=False, *, axes=None)[源代码]#

使用给定的结构元素进行多维二值腐蚀。

二值腐蚀是一种用于图像处理的数学形态学操作。

参数:
inputarray_like

要腐蚀的二值图像。非零(True)元素形成要腐蚀的子集。

structurearray_like,可选

用于腐蚀的结构元素。非零元素被认为是 True。如果未提供结构元素,则会生成一个具有等于 1 的方形连通性的元素。

iterationsint,可选

腐蚀重复 iterations 次(默认为一次)。如果迭代次数小于 1,则会重复腐蚀,直到结果不再改变。

maskarray_like,可选

如果给出掩码,则在每次迭代中,只会修改在相应掩码元素处具有 True 值的那些元素。

outputndarray,可选

与输入形状相同的数组,输出将被放置到该数组中。默认情况下,会创建一个新数组。

border_valueint(转换为 0 或 1),可选

输出数组边界的值。

originint 或 int 元组,可选

滤波器的放置位置,默认为 0。

brute_force布尔值,可选

内存条件:如果为 False,则仅跟踪在上次迭代中值发生更改的像素,作为当前迭代中要更新(腐蚀)的候选像素;如果为 True,则所有像素都将被视为腐蚀的候选像素,而不管前一次迭代中发生了什么。默认为 False。

axesint 元组或 None

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

返回值:
binary_erosion布尔值的 ndarray

通过结构元素对输入进行的腐蚀。

注释

腐蚀 [1] 是一种数学形态学操作 [2],它使用结构元素来缩小图像中的形状。通过结构元素对图像进行二值腐蚀,是指将结构元素居中放置在该点上,且该结构元素的叠加完全包含在图像的非零元素集合中的点的轨迹。

参考文献

示例

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((7,7), dtype=int)
>>> a[1:6, 2:5] = 1
>>> a
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 1, 1, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> ndimage.binary_erosion(a).astype(a.dtype)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 1, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])
>>> #Erosion removes objects smaller than the structure
>>> ndimage.binary_erosion(a, structure=np.ones((5,5))).astype(a.dtype)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]])