]> Creatis software - clitk.git/blobdiff - tools/clitkResampleImageGenericFilter.txx
Merge branch 'master' into GammaIndex3D
[clitk.git] / tools / clitkResampleImageGenericFilter.txx
index 823acb9057cf2d188dc791104d0ef1033fcdb317..7ecf84298ba01aad9a1a63b749ed326857681309 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 CLITKRESAMPLEIMAGEGENERICFILTER_TXX
 #define CLITKRESAMPLEIMAGEGENERICFILTER_TXX
@@ -49,6 +49,8 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType()
   static const unsigned int dim = OutputImageType::ImageDimension;
   typename OutputImageType::SpacingType spacing;
   typename OutputImageType::SizeType size;
+  typename OutputImageType::PointType origin;
+  typename OutputImageType::DirectionType direction;
 
   if (mArgsInfo.like_given) {
     itk::ImageIOBase::Pointer header = clitk::readImageHeader(mArgsInfo.like_arg);
@@ -56,9 +58,17 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType()
       for(unsigned int i=0; i<dim; i++){
         spacing[i] = header->GetSpacing(i);
         size[i] = header->GetDimensions(i);
+        origin[i] = header->GetOrigin(i);
+      }
+      for(unsigned int i=0; i<dim; i++) {
+        for(unsigned int j=0;j<dim;j++) {
+            direction(i,j) = header->GetDirection(i)[j];
+        }
       }
       filter->SetOutputSpacing(spacing);
       filter->SetOutputSize(size);
+      filter->SetOutputOrigin(origin);
+      filter->SetOutputDirection(direction);
     }
     else {
       std::cerr << "*** Warning : I could not read '" << mArgsInfo.like_arg << "' ***" << std::endl;
@@ -91,6 +101,16 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType()
         size[i] = mArgsInfo.size_arg[i];
       filter->SetOutputSize(size);
     }
+    for(unsigned int i=0; i<dim; i++){
+      origin[i] = input->GetOrigin()[i];
+    }
+    for(unsigned int i=0; i<dim; i++) {
+      for(unsigned int j=0;j<dim;j++) {
+          direction(i,j) = input->GetDirection()[i][j];
+      }
+    }
+    filter->SetOutputOrigin(origin);
+    filter->SetOutputDirection(direction);
   }
 
   // Set temporal dimension