scipy.ndimage.
binary_fill_holes#
- scipy.ndimage.binary_fill_holes(input, structure=None, output=None, origin=0, *, axes=None)[源代码]#
填充二进制对象中的孔洞。
- 参数:
- input类数组
待填充孔洞的N维二进制数组
- structure类数组, 可选
用于计算的结构元素;大尺寸元素可加快计算速度,但可能会遗漏被细小区域与背景分隔的孔洞。默认元素(方形连通性为一)会产生直观的结果,即输入中的所有孔洞都已被填充。
- outputndarray, 可选
与输入形状相同的数组,用于放置输出。默认情况下,会创建一个新数组。
- origin整型, 整型元组, 可选
结构元素的位置。
- axes整型元组或None
应用此过滤器的轴。如果为None,则input将在所有轴上进行过滤。如果提供了origin元组,其长度必须与轴的数量匹配。
- 返回:
- 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]])