Показать алгоритм сегментации водораздела - PullRequest
0 голосов
/ 16 мая 2018

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

Существует ли какой-либо метод, с помощью которого это можно сделать, как это можно сделать в суперпиксельной сегментации простой линейной итеративной кластеризации с использованием функции простой линейной итеративной кластеризации и функции выделения границ

Использование Opencv и python.

Спасибо.

1 Ответ

0 голосов
/ 16 мая 2018

Сначала выполните ЭТУ ДОКУМЕНТАЦИЮ , чтобы получить маркеры на изображении.Я использовал то же изображение, представленное в этой документации.

После этого построчно следуйте этому коду и визуализируйте, что содержит каждая переменная:

Каждому уникальному связанному компоненту присваивается уникальное значение впеременная markers.Я нормализую эти значения в markers до целого числа.Каждый подключенный компонент может быть получен при конкретном пороговом значении, указанном в списке uniq_thresh.

label_hue = np.uint8(179*markers/1)
uniq_thresh = np.unique(label_hue).tolist()
cv2.imshow('label_hue', label_hue)
uniq_thresh.sort(reverse=True)

prev - это изображение, имеющее ту же форму, что и исходное изображение, но с пикселями со значением 0.

prev = np.zeros_like(label_hue)

Теперь для каждого из уникальных пороговых значений вlist uniq_thresh Я показываю подключенный компонент.Но поскольку thresh возвращает изображение, имеющее компоненты выше определенного порога, я вычитаю из него предыдущее пороговое изображение, чтобы получить один компонент.

for th in uniq_thresh:
    print(th)
    ret, thresh = cv2.threshold(label_hue, th, 255, cv2.THRESH_BINARY)
    cv2.imshow('ind', thresh)
    cv2.imshow('ind2', thresh - prev)
    prev = thresh
    cv2.waitKey(0)

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