]> Creatis software - clitk.git/commitdiff
Added templated version of GetBackwardAffineMatrix for clitkAffineRegistration (sr...
authorsrit <srit>
Thu, 15 Jul 2010 12:13:24 +0000 (12:13 +0000)
committersrit <srit>
Thu, 15 Jul 2010 12:13:24 +0000 (12:13 +0000)
common/CMakeLists.txt
common/clitkTransformUtilities.cxx [new file with mode: 0644]
common/clitkTransformUtilities.h

index 2dd06596e44c61fd9cf8bb2a3431f90b96cf283f..5434cd84b637629c756f1d3910ab2a6a800eaef3 100644 (file)
@@ -14,6 +14,7 @@ SET(clitkCommon_SRC
   clitkListOfPair.cxx
   clitkTimer.cxx
   clitkImageCommon.cxx
+  clitkTransformUtilities.cxx
   clitkIO.cxx
   clitkVoxImageIO.cxx  
   clitkVoxImageIOFactory.cxx
diff --git a/common/clitkTransformUtilities.cxx b/common/clitkTransformUtilities.cxx
new file mode 100644 (file)
index 0000000..b551248
--- /dev/null
@@ -0,0 +1,40 @@
+/*=========================================================================
+  Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
+
+  Authors belong to:
+  - University of LYON              http://www.universite-lyon.fr/
+  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
+
+  This software is distributed WITHOUT ANY WARRANTY; without even
+  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+  PURPOSE.  See the copyright notices for more information.
+
+  It is distributed under dual licence
+
+  - BSD        See included LICENSE.txt file
+  - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+======================================================================-====*/
+
+#include "clitkTransformUtilities.h"
+
+namespace clitk
+{
+
+//--------------------------------------------------------------------
+template < >
+itk::Matrix<double, 3, 3>
+GetBackwardAffineMatrix<2>(itk::Array<double> transformParameters)
+{
+  return GetBackwardAffineMatrix2D(transformParameters);
+}
+
+//--------------------------------------------------------------------
+template < >
+itk::Matrix<double, 4, 4>
+GetBackwardAffineMatrix<3>(itk::Array<double> transformParameters)
+{
+  return GetBackwardAffineMatrix3D(transformParameters);
+}
+
+}
index 7c4ebaa66748b5020390c0696e408483837391d8..47f92ce2b56063a7a6b63e8123b7a100725010b1 100644 (file)
@@ -15,6 +15,7 @@
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
 ======================================================================-====*/
+
 #ifndef CLITKTRANSFORMUTILITIES_H
 #define CLITKTRANSFORMUTILITIES_H
 #include "itkMatrix.h"
@@ -30,9 +31,12 @@ namespace clitk
   //Declarations
   //============================================================================
   itk::Matrix<double, 3, 3> GetForwardAffineMatrix2D(itk::Array<double> transformParameters);
-  itk::Matrix<double, 3, 3> GetBackwardAffineMatrix2D(itk::Array<double> transformParameters);
   itk::Matrix<double, 4, 4> GetForwardAffineMatrix3D(itk::Array<double> transformParameters);
+
+  itk::Matrix<double, 3, 3> GetBackwardAffineMatrix2D(itk::Array<double> transformParameters);
   itk::Matrix<double, 4, 4> GetBackwardAffineMatrix3D(itk::Array<double> transformParameters);
+  template <unsigned int Dimension > itk::Matrix<double, Dimension+1, Dimension+1> GetBackwardAffineMatrix(itk::Array<double> transformParameters);
+
   itk::Matrix<double, 3, 3> GetRotationMatrix3D(itk::Array<double> rotationParameters);
   itk::Point<double, 3> GetRotatedPoint3D(itk::Array<double> rotationParameters, itk::Point<double, 3> input);
   itk::Matrix<double, 4, 4> GetCenteredRotationMatrix3D(itk::Array<double> rotationParameters,itk::Point<double,3> centerOfRotation);
@@ -77,25 +81,6 @@ namespace clitk
     return matrix;
   }
   
-  inline  itk::Matrix<double, 3, 3> GetBackwardAffineMatrix2D(itk::Array<double> transformParameters)
-  {
-    itk::Matrix<double, 3, 3> matrix;
-    //rotation part
-    matrix[0][0]=cos(transformParameters[0]);
-    matrix[0][1]=sin(transformParameters[0]);
-    matrix[1][0]=-sin(transformParameters[0]);
-    matrix[1][1]=cos(transformParameters[0]);
-    //translation part
-    matrix[0][2]=transformParameters[1];
-    matrix[1][2]=transformParameters[2];
-    //homogenize
-    matrix[2][0]=0.;
-    matrix[2][1]=0.;
-    matrix[2][2]=1.;
-    return matrix;
-  }
   inline  itk::Matrix<double, 4, 4> GetForwardAffineMatrix3D(itk::Array<double> transformParameters)
   {
     itk::Matrix<double, 4, 4> matrix;
@@ -122,6 +107,25 @@ namespace clitk
   }
  
  
+  inline  itk::Matrix<double, 3, 3> GetBackwardAffineMatrix2D(itk::Array<double> transformParameters)
+  {
+    itk::Matrix<double, 3, 3> matrix;
+    //rotation part
+    matrix[0][0]=cos(transformParameters[0]);
+    matrix[0][1]=sin(transformParameters[0]);
+    matrix[1][0]=-sin(transformParameters[0]);
+    matrix[1][1]=cos(transformParameters[0]);
+    //translation part
+    matrix[0][2]=transformParameters[1];
+    matrix[1][2]=transformParameters[2];
+    //homogenize
+    matrix[2][0]=0.;
+    matrix[2][1]=0.;
+    matrix[2][2]=1.;
+    return matrix;
+  }
+
+
   inline  itk::Matrix<double, 4, 4> GetBackwardAffineMatrix3D(itk::Array<double> transformParameters)
   {
     itk::Matrix<double, 4, 4> matrix;
@@ -147,6 +151,12 @@ namespace clitk
     return matrix;
   }
   
+  template <unsigned int Dimension >
+  inline itk::Matrix<double, Dimension+1, Dimension+1>
+  GetBackwardAffineMatrix(itk::Array<double> transformParameters)
+  {
+  }
+
   inline itk::Matrix<double, 3, 3> GetRotationMatrix3D(itk::Array<double> rotationParameters)
   {
     itk::Matrix<double, 3, 3> matrix;