[vtkusers] DICOM series loading and visulization

Xiaopeng Yang yxp233 at postech.ac.kr
Mon Jul 12 23:56:30 EDT 2010


Dear all,

 

I am trying to load a series of DICOM images and visualizing them through
VTK. Although I loaded several files, the VTK just visualized one image.
What I want is to visualize all of them through VTK, not just one file. It
is better that if I scroll the mouse wheel, I can review them slice by
slice. Anyone have the experience of doing this? Could you provide an
example code?

 

Attached is my code:

 

  //Define image parameters

  typedef    float    InputPixelType;

  typedef    float    OutputPixelType;

  typedef itk::Image< InputPixelType,  3 >   InputImageType;

  typedef itk::Image< OutputPixelType, 3 >   OutputImageType;

 

  // Load DICOM files

  typedef itk::ImageSeriesReader< InputImageType >     ReaderType;

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

  typedef itk::GDCMImageIO                        ImageIOType;

  typedef itk::GDCMSeriesFileNames                NamesGeneratorType;

 

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

  NamesGeneratorType::Pointer namesGenerator = NamesGeneratorType::New();

  

  namesGenerator->SetInputDirectory( "C:/test" );

 

  const ReaderType::FileNamesContainer & filenames = 

                            namesGenerator->GetInputFileNames();

 

  unsigned int numberOfFilenames =  filenames.size();

  std::cout << numberOfFilenames << " images loaded" << std::endl; 

  for(unsigned int fni = 0; fni<numberOfFilenames; fni++)

    {

    std::cout << "filename # " << fni << " = ";

    std::cout << filenames[fni] << std::endl;

    }

 

  reader->SetImageIO( gdcmIO );

  reader->SetFileNames( filenames );

 

  typedef itk::ImageToVTKImageFilter<InputImageType>FilterType;

  FilterType::Pointer connector = FilterType::New();

 

  try

    {

    reader->Update();

    }

  catch (itk::ExceptionObject &ex)

    {

    std::cout << ex << std::endl;

    return EXIT_FAILURE;

    }

 

  connector->SetInput(reader->GetOutput());

 

  vtkImageViewer *viewer = vtkImageViewer::New();

  vtkRenderWindowInteractor *renderWindowInteractor =
vtkRenderWindowInteractor::New();

 

  viewer->SetupInteractor(renderWindowInteractor);

  viewer->SetInput(connector->GetOutput());

  viewer->Render();

  viewer->SetColorWindow(255);

  viewer->SetColorLevel(128);

 

  renderWindowInteractor->Start();

 

return 0;

 

 

Thank you very much!

Xiaopeng

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


More information about the vtkusers mailing list