OpenCV - сохранение только отмеченных BLOB-объектов в Python

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

  1. маскировать
  2. семя

На изображении маски я пытаюсь сохранить только пятна, помеченные начальным изображением, и удалить остальные.

Ниже я размещаю маску и изображение семян

Изображение маски:

маска1

Семя Изображение:

Чтобы дополнительно проиллюстрировать проблему, я увеличил изображение и создал вспомогательный участок. подзаговор

В этом примере график справа от вас - начальное изображение, график слева - изображение маски. В конце операции я хотел бы, чтобы в результате у меня был слоб в форме туловища слона слева, так как он отмечен начальными координатами (слева).

Побитовые операции дадут мне только перекрывающиеся области между семенами и маской (в результате получится один и тот же квадратный шарик). Одним из возможных решений является использование открытия путем реконструкции, однако в OpenCV его реализации нет.

OpenCV - есть ли реализация реконструкции на основе маркеров в opencv

Любые указатели приветствуются!

1 ответ

Решение

Хорошо, спасибо всем, кто нашел время, чтобы просмотреть этот пост. Мне не удалось найти решение этой конкретной проблемы в OpenCV. Поэтому я прибег к использованию библиотеки PYMORPH.

https://pythonhosted.org/pymorph/

Функция Inf-реконструкции делает именно то, что я хотел.

pymorph.infrec (f, g, Bc = {3x3 cross})

Infrec создает изображение y с помощью бесконечного числа рекурсивных итераций (итераций до стабильности) расширения f с помощью Bc, обусловленного g. Мы говорим, что у - это инф-реконструкция g по маркеру f. Алгоритмы и приложения см. В Vinc:93b.

Параметры:
f: изображение маркера (серое или двоичное). g: кондиционирующее изображение (серое или бинарное). Bc: Элемент структурирования связности (по умолчанию: крест 3х3). Возвращает:
y: изображение

Надеюсь, что это помогает другим, преодолевающим подобные препятствия.

Спасибо

Другие вопросы по тегам