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


Python SciPy ndimage.binary_dilation用法及代码示例


本文简要介绍 python 语言中 scipy.ndimage.binary_dilation 的用法。

用法:

scipy.ndimage.binary_dilation(input, structure=None, iterations=1, mask=None, output=None, border_value=0, origin=0, brute_force=False)#

具有给定结构元素的多维二进制膨胀。

参数

input array_like

二进制 数组 被扩张。非零 (True) 元素构成要扩张的子集。

structure 数组,可选

用于膨胀的结构元素。非零元素被认为是 True。如果没有提供结构元素,则生成一个正方形连通性等于 1 的元素。

iterations 整数,可选

膨胀是重复迭代次数(默认情况下为一次)。如果迭代次数小于 1,则重复膨胀,直到结果不再变化。只接受整数次迭代。

mask 数组,可选

如果给定掩码,则每次迭代时仅修改在相应掩码元素处具有 True 值的那些元素。

output ndarray,可选

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

border_value int(强制转换为 0 或 1),可选

输出数组中边界处的值。

origin int 或整数元组,可选

过滤器的位置,默认为 0。

brute_force 布尔值,可选

memory 条件:如果为False,则只跟踪上次迭代中值发生变化的像素作为当前迭代中要更新(扩张)的候选;如果为真,则所有像素都被视为膨胀的候选对象,而不管前一次迭代中发生了什么。默认为假。

返回

binary_dilation 布尔数组

结构元素对输入的膨胀。

注意

膨胀 [1] 是一种数学形态学运算 [2],它使用结构元素来扩展图像中的形状。当结构元素的中心位于图像的非零点内时,结构元素对图像的二进制膨胀是结构元素覆盖的点的轨迹。

参考

例子

>>> from scipy import ndimage
>>> import numpy as np
>>> a = np.zeros((5, 5))
>>> a[2, 2] = 1
>>> a
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(a)
array([[False, False, False, False, False],
       [False, False,  True, False, False],
       [False,  True,  True,  True, False],
       [False, False,  True, False, False],
       [False, False, False, False, False]], dtype=bool)
>>> ndimage.binary_dilation(a).astype(a.dtype)
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> # 3x3 structuring element with connectivity 1, used by default
>>> struct1 = ndimage.generate_binary_structure(2, 1)
>>> struct1
array([[False,  True, False],
       [ True,  True,  True],
       [False,  True, False]], dtype=bool)
>>> # 3x3 structuring element with connectivity 2
>>> struct2 = ndimage.generate_binary_structure(2, 2)
>>> struct2
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)
>>> ndimage.binary_dilation(a, structure=struct1).astype(a.dtype)
array([[ 0.,  0.,  0.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  0.,  0.,  0.]])
>>> ndimage.binary_dilation(a, structure=struct2).astype(a.dtype)
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.]])
>>> ndimage.binary_dilation(a, structure=struct1,\
... iterations=2).astype(a.dtype)
array([[ 0.,  0.,  1.,  0.,  0.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 1.,  1.,  1.,  1.,  1.],
       [ 0.,  1.,  1.,  1.,  0.],
       [ 0.,  0.,  1.,  0.,  0.]])

相关用法


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