Difference between revisions of "ITK/Examples/IO/VolumeFromSlices"

From KitwarePublic
< ITK‎ | Examples
Jump to: navigation, search
(Deprecated content that is moved to sphinxed)
 
Line 1: Line 1:
''Thanks to Dora Szasz whose original example inspired this one.''
+
{{warning|1=The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases.   In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.}}
 
 
This examples creates a 3D volume from a series of 2D images. The image filenames are generated from a user supplied pattern. The pattern uses printf format. For example, to select the following files for the volume:
 
 
 
c:/itkguru/File001.jpg
 
c:/itkguru/File002.jpg
 
c:/itkguru/File003.jpg
 
  ...
 
c:/itkguru/File010.jpg
 
 
 
run:
 
 
 
VolumeFromSlices c:/itkguru/File%03d.jpg 1 10 out.mhd
 
 
 
==VolumeFromSlices.cxx==
 
<source lang=cpp>
 
#include "itkImage.h"
 
#include "itkImageSeriesReader.h"
 
#include "itkImageFileWriter.h"
 
#include "itkNumericSeriesFileNames.h"
 
 
 
int main( int argc, char * argv[] )
 
{
 
  // Verify the number of parameters in the command line
 
  if( argc < 5 )
 
    {
 
    std::cerr << "Usage: " << std::endl;
 
    std::cerr << argv[0]
 
              << " pattern firstSliceValue lastSliceValue outputImageFile"
 
              << std::endl;
 
    return EXIT_FAILURE;
 
    }
 
 
 
  typedef unsigned char  PixelType;
 
  const unsigned int Dimension = 3;
 
 
 
  typedef itk::Image< PixelType, Dimension >  ImageType;
 
  typedef itk::ImageSeriesReader< ImageType > ReaderType;
 
  typedef itk::ImageFileWriter<  ImageType > WriterType;
 
 
 
  ReaderType::Pointer reader = ReaderType::New();
 
  WriterType::Pointer writer = WriterType::New();
 
 
 
  const unsigned int first = atoi( argv[2] );
 
  const unsigned int last  = atoi( argv[3] );
 
 
 
  const char * outputFilename = argv[4];
 
 
 
  typedef itk::NumericSeriesFileNames    NameGeneratorType;
 
 
 
  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;
 
    }
 
 
 
  reader->SetFileNames( names  );
 
 
 
  writer->SetFileName( outputFilename );
 
  writer->SetInput( reader->GetOutput() );
 
  try
 
    {
 
    writer->Update();
 
    }
 
  catch( itk::ExceptionObject & err )
 
    {
 
    std::cerr << "ExceptionObject caught !" << std::endl;
 
    std::cerr << err << std::endl;
 
    return EXIT_FAILURE;
 
    }
 
  return EXIT_SUCCESS;
 
}
 
</source>
 
 
 
{{ITKCMakeLists|{{SUBPAGENAME}}}}
 

Latest revision as of 19:58, 7 June 2019

Warning: The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.