numpy面具覆盖另一个面具

时间:2018-09-21 06:52:23

标签: numpy mask numpy-ndarray

我在图像中具有来自不同形状的不同蒙版。由于某些形状包含其他形状,因此我想检查给定的蒙版是否覆盖了另一个给定的蒙版。例如,请考虑以下内容:

A=[True, True, True, True, True, True, False, False, False, True, True, False, False, False, True, True, False, False, False, True, True, True, True, True, True]

B=[False, False, False, False, False, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, False, False, False, False, False]

在5x5的图像中,A覆盖了B。如何检查A是否覆盖B?

编辑: A和B也可以共享一些点,而A仍然覆盖B:

A=[True, True, True, True, True, True, False, False, False, True, True, False, False, False, True, True, False, False, False, True, True, True, True, True, True]

B=[False, False, False, False, False, True, True, True, False, False, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False]

1 个答案:

答案 0 :(得分:1)

我们可以为A填充一个斑点,然后对OR-ing执行B。如果OR-ing与填充孔A的数组相同,则得出A为“封面”的结论。要填补漏洞,我们可以使用SciPy's binary_fill_holes-

from scipy.ndimage.morphology import binary_fill_holes

Af = binary_fill_holes(A)
out = (Af == Af | binary_fill_holes(B)).all()
# or np.array_equal(Af, Af | binary_fill_holes(B))
相关问题