scipy.ndimage.
binary_hit_or_miss#
- scipy.ndimage.binary_hit_or_miss(input, structure1=None, structure2=None, output=None, origin1=0, origin2=None, *, axes=None)[源代码]#
多维二值击中或错过变换。
击中或错过变换在输入图像中找到给定模式的位置。
- 参数:
- input类似数组(转换为布尔值)
要检测模式的二值图像。
- structure1类似数组(转换为布尔值),可选
要拟合到 input 的前景(非零元素)的结构元素的一部分。 如果未提供值,则选择方形连通性 1 的结构。
- structure2类似数组(转换为布尔值),可选
结构元素的第二部分,它必须完全错过前景。 如果未提供值,则取 structure1 的补集。
- outputndarray,可选
与输入形状相同的数组,输出放置在该数组中。 默认情况下,创建一个新数组。
- origin1int 或 int 元组,可选
结构元素 structure1 的第一部分的放置位置,默认情况下,对于中心结构为 0。
- origin2int 或 int 元组,可选
结构元素 structure2 的第二部分的放置位置,默认情况下,对于中心结构为 0。 如果为 origin1 提供值,但未为 origin2 提供值,则将 origin2 设置为 origin1。
- axesint 元组或 None
应用过滤器的轴。 如果为 None,则沿所有轴过滤 input。 如果提供 origin1 或 origin2 元组,则它们的长度必须与轴的数量匹配。
- 返回:
- binary_hit_or_missndarray
使用给定结构元素(structure1,structure2)对 input 进行的击中或错过变换。
另请参阅
参考文献
示例
>>> from scipy import ndimage >>> import numpy as np >>> a = np.zeros((7,7), dtype=int) >>> a[1, 1] = 1; a[2:4, 2:4] = 1; a[4:6, 4:6] = 1 >>> a array([[0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> structure1 = np.array([[1, 0, 0], [0, 1, 1], [0, 1, 1]]) >>> structure1 array([[1, 0, 0], [0, 1, 1], [0, 1, 1]]) >>> # Find the matches of structure1 in the array a >>> ndimage.binary_hit_or_miss(a, structure1=structure1).astype(int) array([[0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]) >>> # Change the origin of the filter >>> # origin1=1 is equivalent to origin1=(1,1) here >>> ndimage.binary_hit_or_miss(a, structure1=structure1,\ ... origin1=1).astype(int) array([[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0]])