2016-03-29 15 views
0

Görüntü bölümlendirme için ITK kütüphaneleri ile bir boru hattı oluşturmaya çalışıyorum. Ancak, itkMorphologicalWatershedFromMarkersFilter uyguladığınızda, sonuç boş bir görüntüdür (yalnızca 1'leri olan ikili bir resim).Morfolojik Havza İşaretleyicilerden filtreden geçirme ITK'ye göre

Bu filtrenin nasıl uygulanacağını bilen var mı?

Giriş resmim görüntünün degradesi olmalı ve işaretleyici görüntünün, aynı görüntü üzerinde bir su havzası filtresinin uygulanmasının sonucu olması gerekir.

giriş image

işaretleyici image

Ve bu beyan ve filtrenin uygulamadır: Ayrıca

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; 
} 

, bu İTK'da gelen bu filtrenin belgelerine link Tertibat:

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

Çok teşekkür ederim!

+0

İlgili kodu yapıştırırsanız yardımcı olur. – siavashk

+0

Kod var. Yardım edip edemeyeceğini bilmiyorum, ancak bağlantıyı filtrenin dökümanına da yapıştırdım. –

+0

Kodunuzu daha basit bir görüntü beslerseniz, filtre çalışır mı? Örneğin, ortada beyaz kare olan siyah bir görüntüyü giriş olarak ayarlamayı deneyin ve kodunuzun doğru sonucu üretip üretmediğini görün. Bu, sorunun kodda mı yoksa girişle mi kurulduğuna yardımcı olur. – siavashk

cevap

0

değil C++ ITK, kullanışındaki gösteren bir SimpleITK Defterler olsa da:

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

Kişisel işaretleyici görüntü sadece ikili olduğunu ve bir etiket görüntüsü. Bununla, senin görüntünün sadece 0 ve 1 (veya 255) olduğu anlamına gelir.

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" ikili görüntü, ama sonra görüntü her bir "ada" benzersiz bir numara verir "ConnectedComponent" görüntü filtre ile işlenir: bağlantılı örnekte şunları unutmayın. WatershedFromMarker filtresi için işaretleyici (veya etiket) görüntüsü için beklenen budur.

Ayrıca, giriş resminizin giriş olarak istemediğiniz bazı sınır çizgilerine de sahip olduğunuzu not edeceğim.

+0

Bu örnek için teşekkür ederim. Özelliğim, orijinalin degradesidir. Ve işaretleyici görüntü, bazı ön işleme sahip ikili bir görüntüdür. –

+0

Görüntüyü daha iyi görebilmek için soruyu düzenledim –

+0

Yani, giriş resmim sınır çizgileri içermemeli mi? Ama bu satırları nasıl çıkarabilirim? Ya da hangi resmi kullanmalıyım? Orijinal RGB olan mı, yoksa gri tonlamalı mı? Bunu anlamadım. Yardım için çok teşekkür ederim! –

İlgili konular