[vtkusers] VolumeRendering Problem

Yusuf OEZBEK nasil122002 at yahoo.de
Sun May 31 16:24:55 EDT 2009


Hello! 

I wanted my watershed-segmentation result (from ITK) through vtkVolumeProMapper 3D So make a volume. I have used vtkVolumeProMapper and vtkVolume. But I always get the error "undefined reference to vtkVolumeProMapper". Where is my mistake? I would be glad if you can help. 

Thank you! 

My code:

void MIRCIT::imageDisplayingWatershed(){

 this->displayImage3D->show();
 this->displayImage3D->redraw();

  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 <LabeledImageType> 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->SetLevel(this->sliderLevelWatershed->value());
  watershedFilter->SetThreshold(this->sliderLevelWatershed->value());

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

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

  vtkImageShiftScale *shift = vtkImageShiftScale::New();
  shift->SetInput(connector->GetOutput());
  shift->SetOutputScalarTypeToUnsignedChar();

  vtkVolumeProMapper *mapperb = vtkVolumeProMapper::New();
  mapperb->SetInputConnection(shift->GetOutputPort());

  vtkVolume *volumeb = vtkVolume::New();
  volumeb->SetMapper(mapperb);

  camera3D = vtkCamera::New();
  camera3D->SetViewUp(0, 0, -1);
  camera3D->SetPosition(0, 1, 0);
  camera3D->SetFocalPoint(0, 0, 0);
  camera3D->ComputeViewPlaneNormal();
  camera3D->Azimuth(20);

  renderer3DWaterShed = vtkRenderer::New();
  renderWindow3DWaterShed = vtkRenderWindow::New();
  renderWindow3DWaterShed->AddRenderer(renderer3DWaterShed);

  displayImage3D->SetRenderWindow(renderWindow3DWaterShed);
  displayImage3D->SetInteractorStyle(mode3DWaterShed);
  displayImage3D->Initialize();

  renderer3DWaterShed->AddViewProp(volumeb);
  renderer3DWaterShed->SetActiveCamera(camera3D);
  renderer3DWaterShed->ResetCamera();
  camera3D->Dolly(1.3);
  renderer3DWaterShed->ResetCameraClippingRange();
  renderer3DWaterShed->Render();

  this->displayImage3D->show();
  this->displayImage3D->redraw();

  WriterType::Pointer writer = WriterType::New();
  writer->SetInput( colorMapFilter->GetOutput() );
  writer->SetFileName("fds.tiff" );
  writer->Update();
}


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


More information about the vtkusers mailing list