scipy.ndimage.
grey_erosion#
- scipy.ndimage.grey_erosion(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0)[源代码][源代码]#
使用结构元素或对应于平面结构元素的足迹计算灰度腐蚀。
灰度腐蚀是一种数学形态学操作。对于完全和平坦的结构元素的简单情况,它可以被视为滑动窗口上的最小滤波器。
- 参数:
- 输入array_like
要计算灰度腐蚀的数组。
- 大小整数元组
用于灰度腐蚀的平面和完整结构元素的形状。如果提供了 footprint 或 structure,则此项可选。
- 足迹整数数组,可选
用于灰度腐蚀的平面结构元素中非无穷大元素的位置。非零值给出了中心点的邻居集合,在这些邻居中选择最小值。
- 结构整数数组,可选
用于灰度腐蚀的结构化元素。structure 可能是一个非平面结构化元素。structure 数组对邻域中的每个像素应用一个减法偏移。
- 输出数组,可选
可以提供一个数组用于存储腐蚀操作的输出。
- 模式{‘reflect’,’constant’,’nearest’,’mirror’, ‘wrap’}, 可选
mode 参数决定了数组边界的处理方式,其中 cval 是当 mode 等于 ‘constant’ 时的值。默认是 ‘reflect’。
- cval标量,可选
如果 mode 是 ‘constant’,则用于填充输入边缘之外的值。默认值为 0.0。
- 起源标量,可选
origin 参数控制过滤器的放置位置。默认值为 0
- 返回:
- 输出ndarray
input 的灰度腐蚀。
参见
注释
图像输入的灰度腐蚀,通过定义在域 E 上的结构元素 s 给出,如下所示:
(input+s)(x) = min {input(y) - s(x-y), for y in E}
特别是,对于结构元素定义为 s(y) = 0 对于 y 在 E 中,灰度腐蚀计算输入图像在由 E 定义的滑动窗口内的最小值。
参考文献
示例
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((7,7), dtype=int) >>> a[1:6, 1:6] = 3 >>> a[4,4] = 2; a[2,3] = 1 >>> a array([[0, 0, 0, 0, 0, 0, 0], [0, 3, 3, 3, 3, 3, 0], [0, 3, 3, 1, 3, 3, 0], [0, 3, 3, 3, 3, 3, 0], [0, 3, 3, 3, 2, 3, 0], [0, 3, 3, 3, 3, 3, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> ndimage.grey_erosion(a, size=(3,3)) array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 3, 2, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> footprint = ndimage.generate_binary_structure(2, 1) >>> footprint array([[False, True, False], [ True, True, True], [False, True, False]], dtype=bool) >>> # Diagonally-connected elements are not considered neighbors >>> ndimage.grey_erosion(a, footprint=footprint) array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 3, 1, 2, 0, 0], [0, 0, 3, 2, 2, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]])