Advertisement
Guest User

Untitled

a guest
Oct 25th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.36 KB | None | 0 0
  1. #include <vtkSmartPointer.h>
  2. #include <vtkSmartPointer.h>
  3. #include <vtkImageViewer2.h>
  4. #include <vtkTIFFReader.h>
  5. #include <vtkRenderWindow.h>
  6. #include <vtkRenderWindowInteractor.h>
  7. #include "vtkImageActor.h"
  8. #include "vtkVersion.h"
  9. #include "vtkImageViewer.h"
  10. #include "vtkImageMapper3D.h"
  11. #include "vtkInteractorStyleImage.h"
  12. #include <vtkRenderer.h>
  13. #include "itkImage.h"
  14. #include "itkImageFileWriter.h"
  15. #include "itkImageRegionIterator.h"
  16. #include "itkTIFFImageIO.h"
  17. #include "itkImageSeriesReader.h"
  18. #include "itkNumericSeriesFileNames.h"
  19. #include "itkImageFileWriter.h"
  20. #include "itkImageToVTKImageFilter.h"
  21.  
  22.  
  23. int main(int argc, char* argv[])
  24. {
  25. // Verify the number of parameters in the command line
  26. if (argc < 4)
  27. {
  28. std::cerr [enter image description here][1]<< "Usage: " << std::endl;
  29. std::cerr << argv[0]
  30. << " pattern firstSliceValue lastSliceValue"
  31. << std::endl;
  32. return EXIT_FAILURE;
  33. }
  34.  
  35. typedef unsigned short PixelType;
  36. typedef itk::Image< PixelType, 3 > ImageStackType;
  37. typedef itk::ImageSeriesReader< ImageStackType > ReaderType;
  38. typedef itk::NumericSeriesFileNames NameGeneratorType;
  39.  
  40. const unsigned int first = atoi(argv[2]);
  41. const unsigned int last = atoi(argv[3]);
  42.  
  43. //Generate Numerical File Names
  44. NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
  45. nameGenerator->SetSeriesFormat(argv[1]);
  46. nameGenerator->SetStartIndex(first);
  47. nameGenerator->SetEndIndex(last);
  48. nameGenerator->SetIncrementIndex(1);
  49.  
  50. std::vector<std::string> names = nameGenerator->GetFileNames();
  51.  
  52. // List the files
  53. //
  54. std::vector<std::string>::iterator nit;
  55. for (nit = names.begin();
  56. nit != names.end();
  57. nit++)
  58. {
  59. std::cout << "File: " << (*nit).c_str() << std::endl;
  60. }
  61.  
  62.  
  63. //Read Stack as TIFFs
  64. ReaderType::Pointer stackReader = ReaderType::New();
  65. stackReader->SetImageIO(itk::TIFFImageIO::New());
  66. stackReader->SetFileNames(names);
  67. stackReader->Update();
  68.  
  69. try
  70. {
  71. stackReader->Update();
  72. }
  73. catch (itk::ExceptionObject & err)
  74. {
  75. std::cerr << "ExceptionObject caught !" << std::endl;
  76. std::cerr << err << std::endl;
  77. return EXIT_FAILURE;
  78. }
  79.  
  80. typedef itk::ImageToVTKImageFilter< ImageStackType > StackConnectorType;
  81.  
  82. ImageStackType::SizeType size = stackReader->GetOutput()- >GetBufferedRegion().GetSize();
  83. int *extent = new int[6];
  84. extent[0] = 0;
  85. extent[1] = size[0];
  86. extent[2] = 0;
  87. extent[3] = size[1];
  88. extent[4] = 0;
  89. extent[5] = size[2];
  90.  
  91. //Export to VTK
  92. StackConnectorType::Pointer stackConnector = StackConnectorType::New();
  93. stackConnector->SetInput(stackReader->GetOutput());
  94. stackConnector->Update();
  95. stackConnector->GetOutput()->GetExtent(extent);
  96. cout << "Size: " << extent[1] << "x" << extent[3] << "x" << extent[5] << endl;
  97.  
  98. // Visualize
  99. vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
  100. imageViewer->SetInputConnection(stackReader->GetOutputPort());
  101. vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
  102. imageViewer->SetupInteractor(renderWindowInteractor);
  103. imageViewer->Render();
  104. imageViewer->GetRenderer()->ResetCamera();
  105. imageViewer->Render();
  106.  
  107. return EXIT_SUCCESS;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement