]> Creatis software - clitk.git/blobdiff - tools/clitkNVectorImageTo4DImageGenericFilter.txx
Add 2 options to clitkImage2Dicom
[clitk.git] / tools / clitkNVectorImageTo4DImageGenericFilter.txx
index 0c2d42928918620930fb7d69e533477d5e671c44..1ea44362f08a6de6d35bb648df5d68279d73dcd9 100644 (file)
@@ -28,7 +28,6 @@
  ===================================================*/
 
 #include "itkVectorImageToImageAdaptor.h"
-#include <sstream>
 
 namespace clitk
 {
@@ -42,8 +41,27 @@ namespace clitk
   {
     if (m_Verbose) std::cout << "Image was detected to be "<<Dimension<<"D and "<< PixelType<<"..."<<std::endl;
 
-    if (m_Verbose) std::cout  << "Launching filter in "<< Dimension <<"D and 3D float..." << std::endl;
-    UpdateWithDimAndPixelType<Dimension, float >();
+    if (PixelType == "short") {
+      UpdateWithDimAndPixelType<Dimension, short>();
+    } else if (PixelType == "unsigned short") {
+      UpdateWithDimAndPixelType<Dimension, unsigned short>();
+    } else if (PixelType == "unsigned_short") {
+      UpdateWithDimAndPixelType<Dimension, unsigned short>();
+    } else if (PixelType == "char") {
+      UpdateWithDimAndPixelType<Dimension, char>();
+    } else if (PixelType == "unsigned_char") {
+      UpdateWithDimAndPixelType<Dimension, unsigned char>();
+    } else if (PixelType == "int") {
+      UpdateWithDimAndPixelType<Dimension, int>();
+    } else if (PixelType == "unsigned_int") {
+      UpdateWithDimAndPixelType<Dimension, unsigned int>();
+    } else if (PixelType == "double") {
+      UpdateWithDimAndPixelType<Dimension, double>();
+    } else if (PixelType == "float") {
+      UpdateWithDimAndPixelType<Dimension, float>();
+    } else {
+      std::cerr << "Error, pixel type : \"" << PixelType << "\" unknown !" << std::endl;
+    }
   }
 
 
@@ -80,15 +98,30 @@ namespace clitk
     typename OutputImageType::IndexType index;
     index.Fill(0);
     typename OutputImageType::SizeType size;
-    for (unsigned int pixelDim=0; pixelDim<input->GetNumberOfComponentsPerPixel(); ++pixelDim)
+    size.Fill(input->GetNumberOfComponentsPerPixel());
+    typename OutputImageType::SpacingType spacing;
+    spacing.Fill(1);
+    typename OutputImageType::PointType origin;
+    origin.Fill(0);
+    typename OutputImageType::DirectionType direction;
+    direction.SetIdentity();
+    for (unsigned int pixelDim=0; pixelDim<Dimension; ++pixelDim)
     {
-      size[pixelDim]=input->GetLargestPossibleRegion().GetSize(pixelDim);
+      size[pixelDim]=adaptor->GetLargestPossibleRegion().GetSize(pixelDim);
+      spacing[pixelDim]=input->GetSpacing()[pixelDim];
+      origin[pixelDim]=input->GetOrigin()[pixelDim];
+      for (unsigned int pixelDim2=0; pixelDim2<Dimension; ++pixelDim2)
+      {
+        direction[pixelDim][pixelDim2]=input->GetDirection()[pixelDim][pixelDim2];
+      }
     }
-    size[Dimension]=input->GetNumberOfComponentsPerPixel();
     typename OutputImageType::RegionType region;
     region.SetSize(size);
     region.SetIndex(index);    
     output->SetRegions(region);
+    output->SetOrigin(origin);
+    output->SetDirection(direction);
+    output->SetSpacing(spacing);
     output->Allocate();
     writer->SetInput(output);