当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python skimage.morphology.medial_axis用法及代码示例


用法:

skimage.morphology.medial_axis(image, mask=None, return_distance=False, *, random_state=None)

计算二值图像的中轴变换。

参数

image二进制ndarray,形状(M,N)

要骨架化的形状的图像。

mask二进制ndarray,形状(M,N),可选

如果给定掩码,则只有图像中掩码为真值的元素用于计算中轴。

return_distance布尔型,可选

如果为真,则返回距离变换以及骨架。

random_state{无,int numpy.random.Generator },可选

如果random_state是没有的numpy.random.Generator使用单例。如果random_state是一个int 一个新的Generator使用实例,播种random_state.如果random_state已经是一个Generator实例然后使用该实例。

返回

out布尔数组

图像的中轴变换

dist整数的ndarray,可选

图像的距离变换(仅在 return_distance 为 True 时返回)

注意

该算法将图像的中轴变换计算为其距离变换的脊。

算法的不同步骤如下
  • 使用查找表,将 0 或 1 分配给 3x3 二进制正方形的每个配置,无论中心像素应该被删除还是保留。如果一个点有多个邻居并且删除它不会改变连接组件的数量,我们希望它被删除。
  • 计算到背景的距离变换,以及像素的角点。
  • 前景(值为 1)点按距离变换排序,然后是角点。
  • 调用 cython 函数以将图像缩小为其骨架。它按照上一步确定的顺序处理像素,并根据查找表删除或维护一个像素。由于排序,可以仅在一次通过中处理所有像素。

例子

>>> square = np.zeros((7, 7), dtype=np.uint8)
>>> square[1:-1, 2:-2] = 1
>>> square
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]], dtype=uint8)
>>> medial_axis(square).astype(np.uint8)
array([[0, 0, 0, 0, 0, 0, 0],
       [0, 0, 1, 0, 1, 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, 1, 0, 1, 0, 0],
       [0, 0, 0, 0, 0, 0, 0]], dtype=uint8)

相关用法


注:本文由纯净天空筛选整理自scikit-image.org大神的英文原创作品 skimage.morphology.medial_axis。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。