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)[source]#
使用给定结构元素进行多维二进制开运算。
图像的开运算是指使用结构元素对图像进行腐蚀,然后再进行膨胀。
- 参数::
- inputarray_like
要进行开运算的二进制 array_like。非零(True)元素构成要进行开运算的子集。
- structurearray_like, optional
用于开运算的结构元素。非零元素被认为是 True。如果没有提供结构元素,则会生成一个连接性等于 1 的正方形元素(即,只有最近的邻居与中心连接,对角连接的元素不被认为是邻居)。
- iterationsint, optional
开运算的腐蚀步骤和膨胀步骤分别重复iterations 次(默认值为 1)。如果iterations 小于 1,则每个操作会重复进行,直到结果不再改变为止。只接受整数迭代次数。
- outputndarray, optional
与 input 形状相同的数组,输出结果将放置在其中。默认情况下,将创建一个新数组。
- originint 或 int 元组,optional
过滤器的放置位置,默认值为 0。
- maskarray_like, optional
如果给出了 mask,则每次迭代只修改对应 mask 元素为 True 的元素。
版本 1.1.0 中添加。
- border_valueint(转换为 0 或 1),optional
输出数组中边界的数值。
版本 1.1.0 中添加。
- brute_forceboolean, optional
内存条件:如果为 False,则只有在上次迭代中数值发生变化的像素会被跟踪,作为当前迭代中要更新的候选像素;如果为 true,则所有像素都会被视为更新候选像素,而不管上次迭代发生了什么。默认值为 False。
版本 1.1.0 中添加。
- 返回值::
- binary_opening布尔型 ndarray
输入图像使用结构元素进行开运算后的结果。
注意事项
开运算 [1] 是一个数学形态学运算 [2],它由使用相同结构元素对输入进行腐蚀和膨胀的连续操作组成。因此,开运算会去除小于结构元素的物体。
与闭运算 (
binary_closing
) 结合使用,开运算可以用于去除噪声。参考文献
示例
>>> 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]])