Как заполнить края, обнаруженные canny в python?

Я хочу заполнить область краев легких, обнаруженную с помощью cv2.Canny(). Например:

Краи легких

Таким образом, результат будет примерно таким:

Область легких

Я попытался найти эти области с помощью cv2.SimpleBlobDetection(). Но не смог найти, чтобы правильно настроить параметры. Я новичок в OpenCV, поэтому, возможно, я просто еще не нашел нужную функцию. В результате получится маска для легких, так что было бы неплохо, если бы в процессе удалялись края от грудной клетки. Любой совет, как добиться этого, был бы замечательным. Большое спасибо!


person Red Boraley    schedule 16.12.2020    source источник
comment
обе ссылки указывают на одно и то же изображение, не могли бы вы добавить правильное изображение для области легких?   -  person Stephen Mylabathula    schedule 16.12.2020
comment
О, извините, я добавил правильное изображение   -  person Red Boraley    schedule 16.12.2020
comment
Вы не обнаружили легкие! Вы просто нашли их границы вместе с кучей других объектов, что на самом деле ничего не значит. Возможно, вы захотите попробовать другой подход к их сегментации вместо обнаружения границ: попробуйте это.   -  person karlphillip    schedule 16.12.2020
comment
Хорошо, я попытался получить маску легких с помощью методов, описанных в этой статье: /a> В настоящее время я нахожусь на рис. 5, но не могу получить интересующую область, как описано. Но попробую метод по вашей ссылке.   -  person Red Boraley    schedule 16.12.2020
comment
Как выглядит исходное изображение перед обработкой с помощью обнаружения краев Canny? Рассматривали ли вы определение порога, морфологию и контуры?   -  person fmw42    schedule 17.12.2020
comment
Исходное изображение взято из набора данных JSRT и выглядит примерно так: -JSRT-database.png" rel="nofollow noreferrer">Пример JSRT И да, я пытался использовать пороговое значение, морфологию и контуры. Но я также хотел попробовать решение из бумаги в моем другом комментарии   -  person Red Boraley    schedule 17.12.2020
comment
Вы можете выполнить заливку, выбрав некоторую точку внутри каждого легкого в качестве исходных точек.   -  person fmw42    schedule 16.03.2021


Ответы (1)


Вместо Canny вы можете попробовать следующие две функции OpenCV (на исходном изображении): cv.findContours(), cv.drawContours().

person SKG    schedule 16.03.2021