]> Creatis software - clitk.git/blobdiff - tools/clitkSetBackgroundGenericFilter.cxx
Change header includion from .h to .cxx file
[clitk.git] / tools / clitkSetBackgroundGenericFilter.cxx
index 5ad22aa1cd038b57cc86674e8dfe1abf1040cc52..2cb3c00bf0b329a03970c9bb6cff283cdfbdce5b 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to:
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-======================================================================-====*/
+===========================================================================**/
 #ifndef clitkSetBackgroundGenericFilter_cxx
 #define clitkSetBackgroundGenericFilter_cxx
 
@@ -50,19 +50,50 @@ SetBackgroundGenericFilter::SetBackgroundGenericFilter()
 void SetBackgroundGenericFilter::Update()
 {
   // Read the Dimension and PixelType
-  int Dimension;
+  int Dimension, Components;
   std::string PixelType;
-  ReadImageDimensionAndPixelType(m_InputFileName, Dimension, PixelType);
+  //ReadImageDimensionAndPixelType(m_InputFileName, Dimension, PixelType);
+  ReadImageDimensionAndPixelType(m_InputFileName, Dimension, PixelType, Components);
 
-
-  // Call UpdateWithDim
-  if(Dimension==2) UpdateWithDim<2>(PixelType);
-  else if(Dimension==3) UpdateWithDim<3>(PixelType);
-  else if (Dimension==4)UpdateWithDim<4>(PixelType);
-  else {
+  if (Dimension > 4) {
     std::cout<<"Error, Only for 2 , 3 or 4 Dimensions!!!"<<std::endl ;
     return;
   }
+  
+  if (Components > 3) {
+    std::cout<<"Error, Only 1, 2, or 3-component images are supported!!!"<<std::endl ;
+    return;
+  }
+
+  if (Components > 1 && PixelType != "float") {
+    std::cout<<"Error, Only float multi-component images are supported!!!"<<std::endl ;
+    return;
+  }
+
+  switch (Components) {
+    case 1:
+      // Call UpdateWithDim
+      if(Dimension==2) UpdateWithDim<2>(PixelType);
+      else if(Dimension==3) UpdateWithDim<3>(PixelType);
+      else if (Dimension==4)UpdateWithDim<4>(PixelType);
+      break;
+    case 2:
+    {
+      typedef itk::Vector<float, 2> TPixelType;
+      if(Dimension==2) UpdateWithDimAndPixelType<2, TPixelType>();
+      else if(Dimension==3) UpdateWithDimAndPixelType<3, TPixelType>();
+      else if (Dimension==4)UpdateWithDimAndPixelType<4, TPixelType>();
+      break;
+    }
+    case 3:
+    {
+      typedef itk::Vector<float, 3> TPixelType;
+      if(Dimension==2) UpdateWithDimAndPixelType<2, TPixelType>();
+      else if(Dimension==3) UpdateWithDimAndPixelType<3, TPixelType>();
+      else if (Dimension==4)UpdateWithDimAndPixelType<4, TPixelType>();
+      break;
+    }
+  }
 }