[vtkusers] WatershedImageFilter in VTK

Yusuf OEZBEK nasil122002 at yahoo.de
Wed Jan 6 18:32:18 EST 2010


Hello,

I need help with my following problem.
How can I show my DICOM images as 3D (volumetric display) with VTK?
I read the DICOM images with itk::ImageSeriesReader and filter it with itk::WatershedImageFilter. For the connection between ITK and VTK I use itk:: ImageToVTKImageFilter. What classes should I use this in VTK, so that a volumetric display is out.



My Code:

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

typedef itk::OrientedImage< PixelType, Dimension > ImageType;
typedef itk::ImageSeriesReader< ImageType > ReaderType;
typedef itk::GDCMImageIO ImageIOType;
typedef itk::GDCMSeriesFileNames NamesGeneratorType;
typedef std::vector< std::string > SeriesIdContainer;
typedef std::vector< std::string > FileNamesContainer;

ImageIOType::Pointer dicomIO = ImageIOType::New();

ReaderType::Pointer reader = ReaderType::New();
reader->SetImageIO( dicomIO );

NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
nameGenerator->SetUseSeriesDetails( true );
nameGenerator->AddSeriesRestriction("0008|0021" );
nameGenerator->SetDirectory( selectedDirectory);

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();

FileNamesContainer fileNames;
fileNames = nameGenerator->GetFileNames( seriesIdentifier );

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

typedef float InternalPixelType;
typedef itk::RGBPixel<unsigned char> RGBPixelType;
typedef itk::Image< InternalPixelType, Dimension > InternalImageType;
typedef itk::Image< RGBPixelType, Dimension > RGBImageType;
// typedef itk::ImageFileWriter< RGBImageType > WriterType;
typedef itk::GradientMagnitudeImageFilter<ImageType, ImageType> GradientMagnitudeFilterType;
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<LabeledImageType> ConnectorType;

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

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

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

WriterType::Pointer writer = WriterType::New();
writer->SetInput( colorMapFilter->GetOutput() );
writer->SetFileName("abc.tiff" );
writer->Update();
ConnectorType::Pointer connector = ConnectorType::New();
connector->SetInput( colorMapFilter->GetOutput());


Thank you very much.

__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails. 
http://mail.yahoo.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100106/5a7f914f/attachment.htm>


More information about the vtkusers mailing list