Как удалить маленькие независимые маски из изображений? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть бинаризованное изображение.Желтый = 1 маска, фиолетовый = 0 фон:

enter image description here

Я могу отфильтровать, если целые маски малы по некоторому порогу, таким образом:

def filter_image(img):
    if img.sum() < 10:
        return np.zeros(img.shape)
    else:
        return img

Однако как избавиться от этой маленькой желтой точки?

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Это легко сделать с помощью морфологической трансформации

Вы можете проверить документы здесь

Примерно так должно работать:

import cv2
import numpy as np

img = cv2.imread('some_image.png',0)
kernel = np.ones((5,5),np.uint8)
closing = cv2.morphologyEx(img, cv.MORPH_CLOSE, kernel)

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

Надеюсь, это помогло

0 голосов
/ 15 октября 2018

Возможно, вы можете использовать последовательные морфологические расширения и эрозии для удаления этого шума.

Эти операции также известны как open и close .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...