scipy.ndimage.
grey_dilation#
- scipy.ndimage.grey_dilation(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0, *, axes=None)[source]#
计算灰度膨胀,使用结构元素或对应于平面结构元素的足迹。
灰度膨胀是一种数学形态学操作。对于完整且扁平的结构元素这一简单情况,它可以被视为滑动窗口上的最大值滤波器。
- 参数:
- input类数组
要计算灰度膨胀的数组。
- size整数元组
用于灰度膨胀的扁平完整结构元素的形状。如果提供了footprint或structure,则此参数可选。
- footprint整数数组,可选
用于灰度膨胀的扁平结构元素中非无穷大元素的位置。非零值表示选择最大值时,中心像素的邻域集合。
- structure整数数组,可选
用于灰度膨胀的结构元素。structure 可以是非扁平结构元素。structure 数组为邻域中的每个像素应用一个加性偏移。
- output数组,可选
可以提供一个用于存储膨胀结果的数组。
- mode{‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’},可选
mode 参数决定了数组边界的处理方式,其中当 mode 等于 ‘constant’ 时,cval 是填充值。默认值为 ‘reflect’
- cval标量,可选
如果mode是‘constant’,用于填充输入数组边缘的值。默认值为 0.0。
- origin标量,可选
origin 参数控制滤波器的放置。默认值为 0
- axes整数元组或None
应用过滤器的轴。如果为 None,则input将沿所有轴进行过滤。如果提供了origin元组,其长度必须与轴的数量匹配。
- 返回:
- grey_dilationndarray
input的灰度膨胀。
另请参阅
备注
图像输入通过在域 E 上定义的结构元素 s 进行灰度膨胀,其定义为
(input+s)(x) = max {input(y) + s(x-y), for y in E}
特别是,对于定义为当 y 在 E 中时 s(y) = 0 的结构元素,灰度膨胀计算输入图像在由 E 定义的滑动窗口内的最大值。
参考文献
示例
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((7,7), dtype=int) >>> a[2:5, 2:5] = 1 >>> a[4,4] = 2; a[2,3] = 3 >>> a array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 3, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> ndimage.grey_dilation(a, size=(3,3)) array([[0, 0, 0, 0, 0, 0, 0], [0, 1, 3, 3, 3, 1, 0], [0, 1, 3, 3, 3, 1, 0], [0, 1, 3, 3, 3, 2, 0], [0, 1, 1, 2, 2, 2, 0], [0, 1, 1, 2, 2, 2, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> ndimage.grey_dilation(a, footprint=np.ones((3,3))) array([[0, 0, 0, 0, 0, 0, 0], [0, 1, 3, 3, 3, 1, 0], [0, 1, 3, 3, 3, 1, 0], [0, 1, 3, 3, 3, 2, 0], [0, 1, 1, 2, 2, 2, 0], [0, 1, 1, 2, 2, 2, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> s = ndimage.generate_binary_structure(2,1) >>> s array([[False, True, False], [ True, True, True], [False, True, False]], dtype=bool) >>> ndimage.grey_dilation(a, footprint=s) array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 3, 1, 0, 0], [0, 1, 3, 3, 3, 1, 0], [0, 1, 1, 3, 2, 1, 0], [0, 1, 1, 2, 2, 2, 0], [0, 0, 1, 1, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> ndimage.grey_dilation(a, size=(3,3), structure=np.ones((3,3))) array([[1, 1, 1, 1, 1, 1, 1], [1, 2, 4, 4, 4, 2, 1], [1, 2, 4, 4, 4, 2, 1], [1, 2, 4, 4, 4, 3, 1], [1, 2, 2, 3, 3, 3, 1], [1, 2, 2, 3, 3, 3, 1], [1, 1, 1, 1, 1, 1, 1]])