OpenCV - сохранение только отмеченных BLOB-объектов в Python
У меня есть морфологическая проблема, которую я пытаюсь решить с помощью OpenCV. У меня есть два изображения.
- маскировать
- семя
На изображении маски я пытаюсь сохранить только пятна, помеченные начальным изображением, и удалить остальные.
Ниже я размещаю маску и изображение семян
Изображение маски:
Семя Изображение:
Чтобы дополнительно проиллюстрировать проблему, я увеличил изображение и создал вспомогательный участок.
В этом примере график справа от вас - начальное изображение, график слева - изображение маски. В конце операции я хотел бы, чтобы в результате у меня был слоб в форме туловища слона слева, так как он отмечен начальными координатами (слева).
Побитовые операции дадут мне только перекрывающиеся области между семенами и маской (в результате получится один и тот же квадратный шарик). Одним из возможных решений является использование открытия путем реконструкции, однако в 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: изображение
Надеюсь, что это помогает другим, преодолевающим подобные препятствия.
Спасибо