]> Creatis software - clitk.git/blobdiff - tools/clitkImageArithmGenericFilter.txx
Add panel shift in y direction in Cone Beam Project
[clitk.git] / tools / clitkImageArithmGenericFilter.txx
old mode 100755 (executable)
new mode 100644 (file)
index e925f21..f3b1d44
@@ -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 CLITKIMAGEARITHMGENERICFILTER_TXX
 #define CLITKIMAGEARITHMGENERICFILTER_TXX
 
@@ -107,20 +107,20 @@ void ImageArithmGenericFilter<args_info_type>::UpdateWithInputImageType()
   IteratorType it(input1, input1->GetLargestPossibleRegion());
 
   // typedef input2
-  typename ImageType::Pointer input2 = this->template GetInput<ImageType>(1);
+  typename ImageType::Pointer input2 = NULL;
   IteratorType it2;
 
-  // Check dimension
-  if (!clitk::HaveSameSizeAndSpacing<ImageType, ImageType>(input1, input2)) {
-    std::cerr << "* ERROR * the images (input and input2) must have the same size & spacing";
-    return;
-  }
 
   if (mIsOperationUseASecondImage) {
-    // Read input2
-    input2 = this->template GetInput<ImageType>(1);
-    // Set input image iterator
-    it2 = IteratorType(input2, input2->GetLargestPossibleRegion());
+      // Read input2
+      input2 = this->template GetInput<ImageType>(1);
+      // Set input image iterator
+      it2 = IteratorType(input2, input2->GetLargestPossibleRegion());
+      // Check dimension
+      if (!clitk::HaveSameSizeAndSpacing<ImageType, ImageType>(input1, input2)) {
+          std::cerr << "* ERROR * the images (input and input2) must have the same size & spacing";
+          return;
+      }
   }
 
   // Check if overwrite and outputisfloat and pixeltype is not float -> do not overwrite
@@ -229,7 +229,6 @@ void  ImageArithmGenericFilter<args_info_type>::ComputeImage(Iter1 it1, Iter2 it
     }
     break;
   case 5: // Absolute difference
-      DD("AbsoluteDifff");
     while (!ito.IsAtEnd()) {
       ito.Set(PixelTypeDownCast<double, PixelType>(fabs((double)it2.Get()-(double)it1.Get())));
       ++it1;
@@ -364,6 +363,13 @@ void clitk::ImageArithmGenericFilter<args_info_type>::ComputeImage(Iter1 it, Ite
       ++ito;
     }
     break;
+  case 10: // exp
+    while (!it.IsAtEnd()) {
+      ito.Set(PixelTypeDownCast<double, PixelType>((0x10000 - (double)it.Get())/mScalar));
+      ++it;
+      ++ito;
+    }
+    break;
   default: // error ?
     std::cerr << "ERROR : the operation number (" << mTypeOfOperation << ") is not known." << std::endl;
     exit(-1);