scipy.ndimage.

binary_hit_or_miss#

scipy.ndimage.binary_hit_or_miss(input, structure1=None, structure2=None, output=None, origin1=0, origin2=None)[源代码][源代码]#

多维二进制命中或未命中变换。

击中或未击中变换用于在输入图像中找到给定模式的位置。

参数:
输入类数组(转换为布尔值)

要检测图案的二值图像。

结构1array_like(转换为布尔值),可选

要拟合到 input 前景(非零元素)的结构化元素的一部分。如果没有提供值,则选择一个正方形连接性为1的结构。

structure2array_like(转换为布尔值),可选

结构元素的第二部分,必须完全错过前景。如果没有提供值,则采用 structure1 的补集。

输出ndarray,可选

与输入形状相同的数组,输出将被放置在其中。默认情况下,会创建一个新数组。

origin1int 或 int 的元组,可选

结构元素 structure1 的第一部分的放置位置,默认值为 0,表示居中结构。

origin2int 或 int 的元组,可选

结构元素 structure2 的第二部分的放置位置,默认值为0表示居中结构。如果为 origin1 提供了值而没有为 origin2 提供值,则 origin2 被设置为 origin1

返回:
二进制命中或未命中ndarray

使用给定的结构元素 (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]])