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)[源代码][源代码]#

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

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

参数:
输入array_like

要被侵蚀的二值图像。非零(True)元素构成要被侵蚀的子集。

结构类似数组, 可选

用于腐蚀的结构化元素。非零元素被视为 True。如果没有提供结构化元素,则会生成一个连接性等于一的方形元素。

迭代int, 可选

侵蚀操作重复 iterations 次(默认一次)。如果 iterations 小于 1,则侵蚀操作会一直重复,直到结果不再变化为止。

掩码类似数组, 可选

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

输出ndarray,可选

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

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

输出数组边界处的值。

起源int 或 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]])