Фильтр морфологического водораздела от маркеров на ITK

Я пытаюсь создать конвейер для сегментации изображений с библиотеками из ITK. Но когда я применяю itkMorphologicalWatershedFromMarkersFilter, в результате получается пустое изображение (двоичное изображение только с 1).

Кто-нибудь знает, как правильно применять этот фильтр?

Мое входное изображение должно быть градиентом изображения, а изображение маркера должно быть результатом применения фильтра водораздела к тому же изображению.

вход образ

маркер образ

И это объявление и применение фильтра:

typedef itk::MorphologicalWatershedFromMarkersImageFilter < OutputImageType, OutputImageType >
MorphologicalWatershedFromMarkersImageFilterType;

MorphologicalWatershedFromMarkersImageFilterType::Pointer CwatershedFilter
= MorphologicalWatershedFromMarkersImageFilterType::New();CwatershedFilter->SetInput1(reader1->GetOutput());
CwatershedFilter->SetMarkerImage(reader2->GetOutput());

CwatershedFilter->SetMarkWatershedLine(true);

try{

CwatershedFilter->Update();

}
catch (itk::ExceptionObject & error)
{
std::cerr << "Error: " << error << std::endl;
getchar();
return EXIT_FAILURE;
}

Кроме того, это ссылка на документацию этого фильтра с сайта itk.org:

http://www.itk.org/Doxygen48/html/classitk_1_1MorphologicalWatershedFromMarkersImageFilter.html#a20e3b8de42219606ba759e822be0aaa2

Огромное спасибо!!

0

Решение

Хотя это не C ++ ITK, есть SimpleITK Notebooks, который демонстрирует его использование:

http://insightsoftwareconsortium.github.io/SimpleITK-Notebooks/32_Watersheds_Segmentation.html

Ваше изображение маркера просто двоичное, а не изображение метки. Я имею в виду, что ваше изображение только 0 и 1 (или 255). В связанном примере обратите внимание на следующее:

min_img = sitk.RegionalMinima(feature_img, backgroundValue=0, foregroundValue=1.0, fullyConnected=False, flatIsMinima=True)
marker_img = sitk.ConnectedComponent(min_img, fullyConnected=False)

«Min_img» — это двоичное изображение, но затем оно обрабатывается с помощью фильтра изображений «ConnectedComponent», который присваивает каждому «острову» уникальный номер. Это то, что ожидается для изображения маркера (или метки) для фильтра WatershedFromMarker.

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]