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