scipy.ndimage.
binary_opening#
- scipy.ndimage.binary_opening(input, structure=None, iterations=1, output=None, origin=0, mask=None, border_value=0, brute_force=False)[源代码][源代码]#
使用给定的结构元素进行多维二进制开运算。
通过结构元素对输入图像的 开运算 是该图像通过该结构元素的 腐蚀 后的 膨胀 。
- 参数:
- 输入array_like
要打开的二进制类数组。非零(True)元素构成要打开的子集。
- 结构类似数组, 可选
用于开头的结构化元素。非零元素被视为 True。如果没有提供结构化元素,则会生成一个连接性等于一的元素(即,只有最近的邻居连接到中心,对角线连接的元素不被视为邻居)。
- 迭代int, 可选
开运算的腐蚀步骤,然后是膨胀步骤,每个步骤都重复 iterations 次(默认一次)。如果 iterations 小于 1,则每个操作会重复进行,直到结果不再改变。只接受整数的迭代次数。
- 输出ndarray,可选
与输入形状相同的数组,输出将被放置在其中。默认情况下,会创建一个新数组。
- 起源int 或 int 的元组,可选
过滤器的放置位置,默认值为 0。
- 掩码类似数组, 可选
如果给定了掩码,则每次迭代时仅修改掩码元素对应位置为 True 的那些元素。
Added in version 1.1.0.
- border_valueint (转换为 0 或 1), 可选
输出数组边界处的值。
Added in version 1.1.0.
- brute_force布尔值,可选
内存条件:如果为 False,则只有在上一次迭代中值发生变化的像素才会被跟踪为当前迭代中可能更新的候选者;如果为 True,则所有像素都被视为更新候选者,无论前一次迭代中发生了什么。默认为 False。
Added in version 1.1.0.
- 返回:
- binary_opening布尔类型的 ndarray
通过结构元素打开输入。
注释
Opening [1] 是一种数学形态学操作 [2] ,它包括使用相同的结构元素对输入进行腐蚀和膨胀的连续操作。因此,Opening 会移除小于结构元素的对象。
与 closing (
binary_closing
) 一起,opening 可以用于去除噪声。参考文献
示例
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((5,5), dtype=int) >>> a[1:4, 1:4] = 1; a[4, 4] = 1 >>> a 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, 1]]) >>> # Opening removes small objects >>> ndimage.binary_opening(a, structure=np.ones((3,3))).astype(int) 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]]) >>> # Opening can also smooth corners >>> ndimage.binary_opening(a).astype(int) 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]]) >>> # Opening is the dilation of the erosion of the input >>> ndimage.binary_erosion(a).astype(int) 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(ndimage.binary_erosion(a)).astype(int) 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]])