пухлая маска покрывает другую маску - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть разные маски из разных форм на изображении.Поскольку некоторые фигуры содержат другие фигуры, я хотел бы проверить, покрывает ли данная маска другую данную маску.Например, рассмотрим следующее:

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 голосов
/ 21 сентября 2018

Мы могли бы заполнить отверстия для A, чтобы получить BLOB-объект, а затем выполнить 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))
...