[vtkusers] ITK to VTK 3D WatershedImageFilter

ahmet mehmet nasil122002 at yahoo.de
Tue Apr 28 12:05:27 EDT 2009


Hello!
 
I wanted my 3D watershed segmentation combine with VTK and to show it in a VTK window. For the connection between ITK and VTK, I used itkImageToVTKImageFilter. But it gives following error. 
 
 

/home/hno4d/Desktop/MIRCIT/MIRCIT.cpp: In member function »virtual void MIRCIT::imageDisplayingWatershed()«:
/home/hno4d/Desktop/MIRCIT/MIRCIT.cpp:1719: Fehler: keine passende Funktion für Aufruf von »itk::ImageToVTKImageFilter<itk::OrientedImage<unsigned char, 3u> >::SetInput(itk::Image<itk::RGBPixel<unsigned char>, 3u>*)«
/home/hno4d/Desktop/MIRCIT/itkImageToVTKImageFilter.txx:79: Anmerkung: Kandidaten sind: void itk::ImageToVTKImageFilter<TInputImage>::SetInput(const TInputImage*) [with TInputImage = itk::OrientedImage<unsigned char, 3u>]
make[2]: *** [CMakeFiles/MIRCIT.dir/MIRCIT.o] Fehler 1
make[1]: *** [CMakeFiles/MIRCIT.dir/all] Fehler 2
make: *** [all] Fehler 2

 
 
How can I use my code with the following ITK VTK connection?
 
 
My code:
 
 

typedef unsigned char PixelType;
const unsigned int Dimension = 3;

typedef itk::OrientedImage< PixelType, Dimension > ImageType;
typedef itk::ImageSeriesReader< ImageType > ReaderType;

ReaderType::Pointer reader = ReaderType::New();

typedef itk::GDCMImageIO ImageIOType;
ImageIOType::Pointer dicomIO = ImageIOType::New();

reader->SetImageIO( dicomIO );
typedef itk::GDCMSeriesFileNames NamesGeneratorType;
 
NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
nameGenerator->SetUseSeriesDetails( true );
nameGenerator->AddSeriesRestriction("0008|0021" );
nameGenerator->SetDirectory( selectedDirectory);
 
typedef std::vector< std::string > SeriesIdContainer;
const SeriesIdContainer & seriesUID = nameGenerator->GetSeriesUIDs();
SeriesIdContainer::const_iterator seriesItr = seriesUID.begin();
SeriesIdContainer::const_iterator seriesEnd = seriesUID.end();
while( seriesItr != seriesEnd )
{
seriesItr++;
}

std::string seriesIdentifier;
seriesIdentifier = seriesUID.begin()->c_str();

typedef std::vector< std::string > FileNamesContainer;
FileNamesContainer fileNames;
fileNames = nameGenerator->GetFileNames( seriesIdentifier );

reader->SetFileNames( fileNames );
reader->Update();

typedef float InternalPixelType;
typedef itk::RGBPixel<unsigned char> RGBPixelType;
typedef itk::Image< RGBPixelType, Dimension > RGBImageType;
// typedef itk::ImageFileWriter< RGBImageType > WriterType;
typedef itk::WatershedImageFilter< ImageType > WatershedFilterType;
typedef itk::Functor::ScalarToRGBPixelFunctor< unsigned long> ColorMapFunctorType;
typedef WatershedFilterType::OutputImageType LabeledImageType;
typedef itk::UnaryFunctorImageFilter< LabeledImageType,RGBImageType,ColorMapFunctorType > ColorMapFilterType;
typedef itk::ImageToVTKImageFilter <ImageType> ConnectorType;
typedef itk::GradientMagnitudeImageFilter<ImageType, ImageType> GradientMagnitudeFilterType;

 
GradientMagnitudeFilterType::Pointer magnitudeFilter = GradientMagnitudeFilterType::New();
magnitudeFilter->SetInput(reader->GetOutput());

 
WatershedFilterType::Pointer watershedFilter = WatershedFilterType::New();
watershedFilter->SetInput( magnitudeFilter->GetOutput() );
watershedFilter->SetThreshold(this->sliderLevelWatershed->value());
watershedFilter->SetLevel(this->sliderThresholdWatershed->value());

ColorMapFilterType::Pointer colorMapFilter = ColorMapFilterType::New();
colorMapFilter->SetInput( watershedFilter->GetOutput() );

ConnectorType::Pointer connector = ConnectorType::New();
connector->SetInput(colorMapFilter->GetOutput());

vtkImageActor* actor = vtkImageActor::New();
actor->SetInput(connector->GetOutput());

vtkInteractorStyleImage * interactorStyle = vtkInteractorStyleImage::New();

vtkRenderer* renderer = vtkRenderer::New();
vtkRenderWindow* renWin = vtkRenderWindow::New();
vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();

renWin->SetSize(500, 500);
renWin->AddRenderer(renderer);
iren->SetRenderWindow(renWin);
iren->SetInteractorStyle( interactorStyle );
renderer->AddActor(actor);

renWin->Render();
iren->Start();

Thank you!


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20090428/76d3f300/attachment.htm>


More information about the vtkusers mailing list