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)[source]#

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

二进制腐蚀是一种用于图像处理的数学形态学运算。

参数:
input类数组

要腐蚀的二进制图像。非零 (True) 元素构成要腐蚀的子集。

structure类数组,可选

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

iterationsint,可选

腐蚀重复 iterations 次(默认值为一次)。如果 iterations 小于 1,腐蚀将重复,直到结果不再发生变化。

mask类数组,可选

如果给定掩码,则每次迭代时仅修改对应掩码元素为 True 的那些元素。

outputndarray,可选

与 input 形状相同的数组,输出结果将放置在其中。默认情况下,将创建一个新数组。

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

输出数组中边界的值。

originint 或 int 元组,可选

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

brute_force布尔值,可选

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

返回值:
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]])