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)[源代码][源代码]#
使用给定的结构元素进行多维二值膨胀。
- 参数:
- 输入array_like
要膨胀的二进制类数组。非零(True)元素形成要膨胀的子集。
- 结构类似数组, 可选
用于膨胀的结构元素。非零元素被视为 True。如果没有提供结构元素,则会生成一个连接性等于一的方形元素。
- 迭代int, 可选
膨胀操作重复 iterations 次(默认一次)。如果 iterations 小于 1,膨胀操作会一直重复直到结果不再变化。只接受整数形式的 iterations。
- 掩码类似数组, 可选
如果给定了掩码,则每次迭代时仅修改掩码元素对应位置为 True 的那些元素。
- 输出ndarray,可选
与输入形状相同的数组,输出将被放置在其中。默认情况下,会创建一个新数组。
- border_valueint (转换为 0 或 1), 可选
输出数组边界处的值。
- 起源int 或 int 的元组,可选
过滤器的放置位置,默认值为 0。
- brute_force布尔值,可选
内存条件:如果为 False,则仅跟踪在上一次迭代中值发生变化的像素作为当前迭代中要更新(膨胀)的候选像素;如果为 True,则无论上一次迭代中发生了什么,所有像素都被视为膨胀的候选像素。默认为 False。
- 返回:
- binary_dilation布尔类型的 ndarray
通过结构元素对输入进行膨胀。
注释
膨胀 [1] 是一种数学形态学操作 [2] ,它使用结构元素来扩展图像中的形状。通过结构元素对图像进行二值膨胀操作,是当结构元素的中心位于图像的非零点时,结构元素覆盖的点的轨迹。
参考文献
[1]https://zh.wikipedia.org/wiki/膨胀_(形态学)
[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.]])