scipy.ndimage.grey_erosion¶
- scipy.ndimage.grey_erosion(input, size=None, footprint=None, structure=None, output=None, mode='reflect', cval=0.0, origin=0)[源代码]¶
使用结构元素或与平面结构元素对应的示意图计算灰度侵蚀。
灰度侵蚀是一种数学形态学运算。对于完整扁平的结构元素的简单情况,可以将其视为滑动窗口上的最小过滤。
- 参数
- inputarray_like
要在其上计算灰度侵蚀的数组。
- size整数元组
用于灰度侵蚀的扁平且完整的结构元素的形状。在以下情况下可选 footprint 或 structure 是提供的。
- footprint整型数组,可选
用于灰度侵蚀的平面结构元素的非无限元素的位置。非零值给出了中心的邻居集合,在该集合上选择最小值。
- structure整型数组,可选
用于灰度侵蚀的结构元素。 structure 可以是非平坦的结构元素。
- output数组,可选
可以提供用于存储侵蚀输出的阵列。
- mode{‘反射’,‘常量’,‘最近’,‘镜像’,‘换行’},可选
这个 mode 参数确定如何处理数组边框, cval 模式等于‘Constant’时的值。默认值为‘Reflect’
- cval标量,可选
在以下情况下填充输入的过去边缘的值 mode 是“恒定的”。默认值为0.0。
- origin标量,可选
这个 origin 参数控制过滤的位置。默认%0
- 退货
- outputndarray
灰阶侵蚀 input 。
参见
注意事项
由在域E上定义的结构元素s输入的图像的灰度侵蚀由下式给出:
(输入+s)(X)=min{输入(Y)-s(x-y),对于E中的y}
具体地,对于对于E中的y定义为s(Y)=0的结构元素,灰度侵蚀计算由E定义的滑动窗口内的输入图像的最小值。
参考文献
示例
>>> from scipy import ndimage >>> 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, size=(3,3), 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]])