[Insight-users] Questions about transferring 3D model from vtktoitk.

Luis Ibanez luis.ibanez at kitware.com
Mon Sep 18 07:43:48 EDT 2006


Hi Vivian,


Thanks for trying the process of writing the stencil image.



It is strange that you can not open a file for writing.


Please try the following:



    std::ofstream outputfile;
    outputfile.open("D:\\linetube.mha")
    if( outputfile.fail() )
      {
      std::cerr << "Problem opening the file" << std::endl;
      }
    else
      {
      outputfile << "writing in a file" << std::endl;
      std::cout << "writing works" << std::endl;
      }
    outputfile.close();



And let us know what it does.


   Thanks


      Luis


----------------
fyy5581 wrote:
> Luis,
> I add following codes between vtkImageStencil and vtkImageExport:
>  vtkMetaImageWriter *writer = vtkMetaImageWriter::New();
>  writer->SetFileDimensionality(3);
>  writer->SetInput(stencil->GetOutput());
>  writer->SetFileName("D:\\linetube.mha");
>  writer->Write();
> But it have errors:  cannot open file "D:\\linetube.mha" for writing .
> If change the name to .mhd,the error still exsits.
>  
> vivian
>  
> ------------------------------------------------------------------------
> fyy5581
> 2006-09-18
> ------------------------------------------------------------------------
> *发件人:* Luis Ibanez
> *发送时间:* 2006-09-18 09:30:19
> *收件人:* fyy5581
> *抄送:* Insight Users
> *主题:* Re: [Insight-users] Questions about transferring 3D model from 
> vtktoitk.
>  
>  
> Hi Vivian,
>  
> Please try the following:
>  
> Connect a vtkMetaImageWriter to the output of the stencil filter.
> and write the image as a 3D volume.
>  
> Then visualize the image (e.g. with paraview, ImageViewer, Slicer,
> VolView...) and let us now if the file contains the rasterization
> of the tube.
>  
> This will allow to divide the problem between the generation of
> the stencil and the actual conversion to an ITK image.
>  
>  
> Please let us know what you find.
>  
>  
>   Thanks
>  
>  
>      Luis
>  
>  
> -----------------
> fyy5581 wrote:
>  >  
>  > There aren't compile problems or exceptions. The problem is I cannot 
>  > transfer the tube correctly to itk. I can draw the tube in VTK 
>  > correctly.But after it go through the itk pipeline,the result file (a 3d 
>  > file )have nothing in it,which expected to have a tube.
>  >  
>  > "vtkExporter -  >SetInput (lum-  > GetOutput());"
>  > shoud be
>  > "vtkExporter -  >SetInput (stencil-  > GetOutput());"
>  >  
>  > Thank you very much!
>  >  
>  > rgds,
>  > Vivian
>  > ------------------------------------------------------------------------
>  > fyy5581
>  > 2006-09-18
>  > ------------------------------------------------------------------------
>  > *发件人:* Luis Ibanez
>  > *发送时间:* 2006-09-14 21:32:04
>  > *收件人:* fyy5581
>  > *抄送:* insight-users
>  > *主题:* Re: [Insight-users] Questions about transferring 3D model from 
>  > vtkto itk.
>  >  
>  >  
>  > Hi Vivian,
>  >  
>  > 1) When you say:
>  >  
>  >     "But the first step does not work"
>  >  
>  >    Do you mean:
>  >  
>  >       1) It didn't compiled ?
>  >       2) It seg faulted at run time ?
>  >       3) It throws and exception ?
>  >       4) It produces an empty images ?
>  >       5) It produces an image of a tube with wrong dimensions ?
>  >  
>  >  
>  >    Please be kind and share more details with us.
>  >  
>  >  
>  >  
>  > 2) Where is the "lum" filter defined ?
>  >  
>  >   The input that you are passing to the vtkExporter filter
>  >   is the Output() of the "lum" object, but this object doesn't
>  >   appear in the rest of the code snippet that you posted.
>  >  
>  >  
>  >      vtkExporter -  >SetInput (lum-  > GetOutput());
>  >  
>  >  
>  >  
>  > 3) BTW, note that you can build a tube model directly in ITK
>  >    using the TubeSpatial Object, and then rasterize it into
>  >    an itkImage using the SpatialObject to Image filter:
>  >  
>  > http://www.itk.org/Insight/Doxygen/html/classitk_1_1TubeSpatialObject.html
>  >  
>  > http://www.itk.org/Insight/Doxygen/html/classitk_1_1SpatialObjectToImageFilter.html
>  >  
>  >  
>  >  
>  >  
>  >   Regards,
>  >  
>  >  
>  >  
>  >  
>  >      Luis
>  >  
>  >  
>  >  
>  > ----------------
>  > fyy5581 wrote:
>  >   > Hi all ,
>  >   > I have questions about transferring 3D model from vtk to itk.
>  >   
>  > In fact,I want to draw a tube in vtk, and then transfer it into itk,thus 
>  >   
>  > I can use raycasting to project it into an image.But the first step does 
>  >   > not work,which means I cannot transfer the tube I draw into itk.Can 
>  >   > anybody help me?Thanks a lot!!!
>  >   >  
>  >   > Vivian
>  >   >  
>  >   > Here are my code:
>  >   >  
>  >   >     //--------------------VTK pipeline-----------------------
>  >   > vtkLineSource* line3D = vtkLineSource::New();
>  >   >  line3D-  >SetPoint1(0,0,0);
>  >   >  line3D-  >SetPoint2(100,100,100); 
>  >   >  line3D-  >Update();
>  >   >  
>  >   >  vtkTubeFilter* LineTube = vtkTubeFilter::New();
>  >   >  LineTube-  >SetInput(line3D-  >GetOutput());
>  >   >  LineTube-  >SetNumberOfSides(8);
>  >   >  LineTube-  >SetRadius(2);
>  >   >  
>  >   > vtkImageData* image = vtkImageData::New();
>  >   >  image-  >SetOrigin(0,0,0);
>  >   >  image-  >SetSpacing(0.2,0.2,0.2);
>  >   >  image-  >SetDimensions(50,50,50);
>  >   >  image-  >SetScalarTypeToUnsignedChar();//double to unsighned Char
>  >   >  image-  >AllocateScalars();
>  >   >  image-  >Update();
>  >   >  for (int n=0; n  <image-  >GetNumberOfPoints(); n++){
>  >   >   image-  >GetPointData()-  >GetScalars()-  >SetTuple1(n, 127);
>  >   >  }
>  >   >  
>  >   >  vtkPolyDataToImageStencil * dataToStencil = 
>  >   > vtkPolyDataToImageStencil::New(); 
>  >   >  dataToStencil-  >SetInput(LineTube-  >GetOutput());
>  >   >  
>  >   >  vtkImageStencil* stencil = vtkImageStencil::New();
>  >   >  stencil-  >SetInput(image);
>  >   >  stencil-  >SetStencil(dataToStencil-  >GetOutput());
>  >   >  stencil-  >ReverseStencilOff();
>  >   >  stencil-  >SetBackgroundValue(0); 
>  >   >  stencil-  >Update();
>  >   >  
>  >   > // ----------------VTK-ITK-------------------------
>  >   > vtkImageExport* vtkExporter = vtkImageExport::New();
>  >   >  vtkExporter -  >SetInput (lum-  > GetOutput());
>  >   > 
>  >   >  typedef itk::Image  <unsigned char, 3  > ImageType;
>  >   >  typedef itk::VTKImageImport  <ImageType  > ImageImportType; 
>  >   >  ImageImportType::Pointer itkImporter = ImageImportType::New(); 
>  >   >  
>  >   >  ConnectPipelines(vtkExporter, itkImporter);  //it's code comes from 
>  >   > connectPipelines in VTKUtility.h  in 
>  >   >                                                             // 
>  >   > insightApplication
>  >   >  
>  >   >     //--------------------ITK pipeline-----------------------
>  >   >  typedef itk::RescaleIntensityImageFilter  
> < ImageType, ImageType   > 
>  >   > rescalefilterType;
>  >   >  rescalefilterType::Pointer itkrescaler = rescalefilterType::New(); 
>  >   >  itkrescaler-  >SetInput(itkImporter-  >GetOutput());
>  >   >  itkrescaler-  >SetOutputMinimum(0);
>  >   >  itkrescaler-  >SetOutputMaximum(65535);
>  >   >  
>  >   >  typedef itk::ImageFileWriter  < ImageType   > WriterType;
>  >   >  WriterType::Pointer writer = WriterType::New();
>  >   >  
>  >   >  typedef itk::VTKImageIO    ImageIOType;
>  >   >  ImageIOType::Pointer vtkIO = ImageIOType::New();
>  >   >  
>  >   >  writer-  >SetFileName(".\tubelineOutput.vtk");
>  >   >  writer-  >SetInput(itkrescaler-  >GetOutput()); 
>  >   >  
>  >   >  vtkIO-  >SetFileTypeToASCII();
>  >   >  writer-  >SetImageIO( vtkIO );
>  >   > 
>  >   >   writer-  >Update();
>  >   >  
>  >   > ...
>  >   
>  > ------------------------------------------------------------------------
>  >   > fyy5581
>  >   > 2006-09-12
>  >   > 
>  >   > 
>  >   
>  > ------------------------------------------------------------------------
>  >   > 
>  >   > _______________________________________________
>  >   > Insight-users mailing list
>  >   > Insight-users at itk.org
>  >   > http://www.itk.org/mailman/listinfo/insight-users
>  >  
>  >  
>  >  
>  
>  
>  




More information about the Insight-users mailing list