scipy.ndimage.

binary_fill_holes#

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

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

参数:
输入array_like

带有孔洞的 N-D 二进制数组,需要填充

结构类似数组, 可选

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

输出ndarray,可选

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

起源int, int 的元组, 可选

结构元素的位置。

返回:
ndarray

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

注释

此函数中使用的算法包括从图像的外边界开始,使用二值膨胀侵入 input 中形状的补集。孔洞不与边界相连,因此不会被侵入。结果是被侵入区域的补集。

参考文献

[1]

https://en.wikipedia.org/wiki/数学形态学

示例

>>> 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]])