numpy 面具覆盖另一个面具

numpy mask covers another mask

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

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]

我们可以为 A 填充孔以获得一个 blob,然后用 B 执行 OR-ing。如果 OR-ing 与空洞填充 A 产生相同的数组,它会得出 A 与 "cover" 相同的结果。要填充孔,我们可以使用 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))