ImageWriters.h
Go to the documentation of this file.00001 #ifndef __ImageWriters_h
00002 #define __ImageWriters_h
00003
00004 #include <itkImageFileWriter.h>
00005 #include <itkResampleImageFilter.h>
00006
00007 template< typename T >
00008 void writeimage(const T* image,
00009 const std::string & filename)
00010 {
00011
00012 typename itk::ImageFileWriter<T>::Pointer writer =
00013 itk::ImageFileWriter<T>::New();
00014 writer->SetFileName(filename);
00015 writer->UseCompressionOn();
00016 writer->SetInput(image);
00017 writer->Update();
00018 }
00019
00020 template< typename T >
00021 void writeimage(itk::SmartPointer<T> image,
00022 const std::string & filename)
00023 {
00024 writeimage(image.GetPointer(), filename);
00025 }
00026
00027 template< typename T, typename J>
00028 void writeimage(const T* image,
00029 const J* transform,
00030 const std::string & filename)
00031 {
00032 typedef itk::ResampleImageFilter<T, itk::Image<short, 3> > ResampleImageFilter;
00033 typename ResampleImageFilter::Pointer resampler =
00034 ResampleImageFilter::New();
00035
00036 resampler->SetInput(image);
00037 resampler->SetOutputOrigin(image->GetOrigin());
00038 resampler->SetOutputSpacing(image->GetSpacing());
00039 resampler->SetOutputDirection(image->GetDirection());
00040 resampler->SetSize(image->GetLargestPossibleRegion().GetSize());
00041 resampler->SetTransform(transform);
00042 resampler->Update();
00043
00044
00045 typename itk::ImageFileWriter<itk::Image<short, 3> >::Pointer writer =
00046 itk::ImageFileWriter<itk::Image<short, 3> >::New();
00047 writer->SetFileName(filename);
00048 writer->UseCompressionOn();
00049 writer->SetInput(resampler->GetOutput());
00050 writer->Update();
00051 }
00052
00053 template< typename T, typename J>
00054 void writeimage(const T* image,
00055 itk::SmartPointer<J> transform,
00056 const std::string & filename)
00057 {
00058 writeimage(image, transform.GetPointer(), filename);
00059 }
00060
00061 #endif