Как удалить мелкие компоненты на изображении после использования морфологического истончения? - PullRequest
0 голосов
/ 16 февраля 2019

Я попытался использовать морфологическое истончение, и на выходе есть некоторый шум.Я использую Python.Первое изображение является исходным изображением.

Исходное изображение

Это код, который я пробовал для прореживания (частично взят из OpenCV Python Tutorials ):

from skimage import morphology
import cv2
import numpy as np

img = cv2.imread('m.png',0);

size = np.size(img)
skel = np.zeros(img.shape, np.uint8)

ret, img = cv2.threshold(img, 220, 255, cv2.THRESH_BINARY_INV);
element = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3))
done = False

while (not done):
    eroded = cv2.erode(img, element)
    temp = cv2.dilate(eroded, element)
    temp = cv2.subtract(img, temp)
    skel = cv2.bitwise_or(skel, temp)
    img = eroded.copy()

    zeros = size - cv2.countNonZero(img)
    if zeros == size:
        done = True

'cleaned = morphology.remove_small_objects(skel, min_size=64, connectivity=2) I tried to use this function to remove the noise but it gave the same output'

Это выходное изображение.

Вывод

Это то, что я получил, когда я изменил структурирующий элемент на:

element = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))

MORPH_RECT

Желаемый результат - получить прореженное изображение без помех.Может кто-нибудь, пожалуйста, помогите мне удалить эти маленькие точки (шум)?

Желаемый вывод

1 Ответ

0 голосов
/ 16 февраля 2019

Применение фильтра Гауса должно сделать это.

cv2.GaussianBlur(img,(5,5),0)

Документация , Теория + Примеры

Кроме тогоДля фильтрации можно использовать операцию открытия :

opening = cv.morphologyEx(img, cv.MORPH_OPEN, kernel)

Документация см. Пункт 3


Мои результаты: доказать, что это работаетresulting picture

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

kernel = np.ones((2,1),np.uint8)
skel = cv2.morphologyEx(skel, cv2.MORPH_OPEN, kernel)
cv2.imwrite('end_product.png',skel)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...