Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vtkSmartPointer.h>
- #include <vtkSmartPointer.h>
- #include <vtkImageViewer2.h>
- #include <vtkTIFFReader.h>
- #include <vtkRenderWindow.h>
- #include <vtkRenderWindowInteractor.h>
- #include "vtkImageActor.h"
- #include "vtkVersion.h"
- #include "vtkImageViewer.h"
- #include "vtkImageMapper3D.h"
- #include "vtkInteractorStyleImage.h"
- #include <vtkRenderer.h>
- #include "itkImage.h"
- #include "itkImageFileWriter.h"
- #include "itkImageRegionIterator.h"
- #include "itkTIFFImageIO.h"
- #include "itkImageSeriesReader.h"
- #include "itkNumericSeriesFileNames.h"
- #include "itkImageFileWriter.h"
- #include "itkImageToVTKImageFilter.h"
- int main(int argc, char* argv[])
- {
- // Verify the number of parameters in the command line
- if (argc < 4)
- {
- std::cerr [enter image description here][1]<< "Usage: " << std::endl;
- std::cerr << argv[0]
- << " pattern firstSliceValue lastSliceValue"
- << std::endl;
- return EXIT_FAILURE;
- }
- typedef unsigned short PixelType;
- typedef itk::Image< PixelType, 3 > ImageStackType;
- typedef itk::ImageSeriesReader< ImageStackType > ReaderType;
- typedef itk::NumericSeriesFileNames NameGeneratorType;
- const unsigned int first = atoi(argv[2]);
- const unsigned int last = atoi(argv[3]);
- //Generate Numerical File Names
- NameGeneratorType::Pointer nameGenerator = NameGeneratorType::New();
- nameGenerator->SetSeriesFormat(argv[1]);
- nameGenerator->SetStartIndex(first);
- nameGenerator->SetEndIndex(last);
- nameGenerator->SetIncrementIndex(1);
- std::vector<std::string> names = nameGenerator->GetFileNames();
- // List the files
- //
- std::vector<std::string>::iterator nit;
- for (nit = names.begin();
- nit != names.end();
- nit++)
- {
- std::cout << "File: " << (*nit).c_str() << std::endl;
- }
- //Read Stack as TIFFs
- ReaderType::Pointer stackReader = ReaderType::New();
- stackReader->SetImageIO(itk::TIFFImageIO::New());
- stackReader->SetFileNames(names);
- stackReader->Update();
- try
- {
- stackReader->Update();
- }
- catch (itk::ExceptionObject & err)
- {
- std::cerr << "ExceptionObject caught !" << std::endl;
- std::cerr << err << std::endl;
- return EXIT_FAILURE;
- }
- typedef itk::ImageToVTKImageFilter< ImageStackType > StackConnectorType;
- ImageStackType::SizeType size = stackReader->GetOutput()- >GetBufferedRegion().GetSize();
- int *extent = new int[6];
- extent[0] = 0;
- extent[1] = size[0];
- extent[2] = 0;
- extent[3] = size[1];
- extent[4] = 0;
- extent[5] = size[2];
- //Export to VTK
- StackConnectorType::Pointer stackConnector = StackConnectorType::New();
- stackConnector->SetInput(stackReader->GetOutput());
- stackConnector->Update();
- stackConnector->GetOutput()->GetExtent(extent);
- cout << "Size: " << extent[1] << "x" << extent[3] << "x" << extent[5] << endl;
- // Visualize
- vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
- imageViewer->SetInputConnection(stackReader->GetOutputPort());
- vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
- imageViewer->SetupInteractor(renderWindowInteractor);
- imageViewer->Render();
- imageViewer->GetRenderer()->ResetCamera();
- imageViewer->Render();
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement