scipy.ndimage.

binary_fill_holes#

scipy.ndimage.binary_fill_holes(input, structure=None, output=None, origin=0)[source]#

填充二进制对象中的孔洞。

参数:
inputarray_like

包含要填充的孔洞的 N 维二进制数组

structurearray_like, optional

计算中使用的结构元素;大尺寸元素使计算更快,但可能会错过与背景仅隔着薄区域的孔洞。默认元素(具有等于一的方形连通性)会产生直观的結果,即输入中的所有孔洞都已被填充。

outputndarray, optional

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

originint, tuple of ints, optional

结构元素的位置。

返回值:
outndarray

初始图像 input 的变换,其中孔洞已填充。

备注

该函数中使用的算法是从图像的外边界开始,使用二进制膨胀来入侵 input 中形状的补集。孔洞没有连接到边界,因此不会被入侵。结果是入侵区域的补集。

参考

示例

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((5, 5), dtype=int)
>>> a[1:4, 1:4] = 1
>>> a[2,2] = 0
>>> a
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])
>>> ndimage.binary_fill_holes(a).astype(int)
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])
>>> # Too big structuring element
>>> ndimage.binary_fill_holes(a, structure=np.ones((5,5))).astype(int)
array([[0, 0, 0, 0, 0],
       [0, 1, 1, 1, 0],
       [0, 1, 0, 1, 0],
       [0, 1, 1, 1, 0],
       [0, 0, 0, 0, 0]])