]> Creatis software - clitk.git/commitdiff
Add tool to convert Elastix param into matrix file
authorDavid Sarrut <david.sarrut@creatis.insa-lyon.fr>
Mon, 8 Jul 2013 09:01:00 +0000 (11:01 +0200)
committerDavid Sarrut <david.sarrut@creatis.insa-lyon.fr>
Mon, 8 Jul 2013 09:01:00 +0000 (11:01 +0200)
tools/CMakeLists.txt
tools/clitkAffineTransformGenericFilter.h
tools/clitkAffineTransformGenericFilter.txx

index 1db0dcce834968e82f91fdfe4bb380eb1e106669..77f12f9f863e301e089cc28c49aab05a20276fe8 100644 (file)
@@ -108,6 +108,12 @@ IF (CLITK_BUILD_TOOLS)
   TARGET_LINK_LIBRARIES(clitkAffineTransform clitkCommon )
   SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkAffineTransform)
 
+  WRAP_GGO(clitkElastixTransformToMatrix_GGO_C clitkElastixTransformToMatrix.ggo)
+  ADD_EXECUTABLE(clitkElastixTransformToMatrix clitkElastixTransformToMatrix.cxx ${clitkElastixTransformToMatrix_GGO_C})
+  TARGET_LINK_LIBRARIES(clitkElastixTransformToMatrix clitkCommon )
+  SET(TOOLS_INSTALL ${TOOLS_INSTALL} clitkElastixTransformToMatrix)
+
+
   WRAP_GGO(clitkSetBackground_GGO_C clitkSetBackground.ggo)
   ADD_EXECUTABLE(clitkSetBackground clitkSetBackground.cxx clitkSetBackgroundGenericFilter.cxx ${clitkSetBackground_GGO_C})
   TARGET_LINK_LIBRARIES(clitkSetBackground clitkCommon)
index 6cd2a91f17127ac6c3e3195440a319046100324c..39506326f572a2bb614da44524c64547879eda41 100644 (file)
@@ -87,6 +87,11 @@ namespace clitk
     //----------------------------------------  
     void Update();
 
+    template<unsigned int Dimension, class PixelType>
+      static
+      typename itk::Matrix<double, Dimension+1, Dimension+1>
+      createMatrixFromElastixFile(std::vector<std::string> & filename, bool verbose=true);
+
   protected:
 
     //----------------------------------------  
@@ -103,13 +108,9 @@ namespace clitk
     template <unsigned int Dimension, class PixelType>  void UpdateWithDimAndPixelType();
     template <unsigned int Dimension, class PixelType>  void UpdateWithDimAndVectorType();
 
-    template<unsigned int Dimension, class PixelType>
-      typename itk::Matrix<double, Dimension+1, Dimension+1>
-      createMatrixFromElastixFile(std::vector<std::string> & filename);
-
-    bool GetElastixValueFromTag(std::ifstream & is, std::string tag, std::string & value); 
-    void GetValuesFromValue(const std::string & s, 
-                            std::vector<std::string> & values);
+    static bool GetElastixValueFromTag(std::ifstream & is, std::string tag, std::string & value); 
+    static void GetValuesFromValue(const std::string & s, 
+                                   std::vector<std::string> & values);
 
     //----------------------------------------  
     // Data members
index d3cd19e265a84b411ffd27a0791672502ca1d0d2..03cf862e2ee261548d6707761648821823b9e1fb 100644 (file)
@@ -183,7 +183,7 @@ namespace clitk
           if (m_ArgsInfo.elastix_given) {
             std::vector<std::string> s;
             for(uint i=0; i<m_ArgsInfo.elastix_given; i++) s.push_back(m_ArgsInfo.elastix_arg[i]);
-            matrix = createMatrixFromElastixFile<Dimension,PixelType>(s);
+            matrix = createMatrixFromElastixFile<Dimension,PixelType>(s, m_Verbose);
           }
           else 
             matrix.SetIdentity();
@@ -497,7 +497,7 @@ namespace clitk
   template<class args_info_type>
   template<unsigned int Dimension, class PixelType>
   typename itk::Matrix<double, Dimension+1, Dimension+1>
-                                                           AffineTransformGenericFilter<args_info_type>::createMatrixFromElastixFile(std::vector<std::string> & filename)
+                                                           AffineTransformGenericFilter<args_info_type>::createMatrixFromElastixFile(std::vector<std::string> & filename, bool verbose)
   {
     if (Dimension != 3) {
       FATAL("Only 3D yet" << std::endl);
@@ -509,7 +509,7 @@ namespace clitk
     for(uint j=0; j<filename.size(); j++) {
       
       // Open file
-      if (m_Verbose) std::cout << "Read elastix parameters in " << filename[j] << std::endl;
+      if (verbose) std::cout << "Read elastix parameters in " << filename[j] << std::endl;
       std::ifstream is;
       clitk::openFileForReading(is, filename[j]);
       
@@ -553,7 +553,7 @@ namespace clitk
         p[i+6] = atof(results[i+3].c_str()); // Translation
       mat->SetParameters(p);
     
-      if (m_Verbose) {
+      if (verbose) {
         std::cout << "Rotation      (deg) : " << rad2deg(p[0]) << " " << rad2deg(p[1]) << " " << rad2deg(p[2]) << std::endl;
         std::cout << "Center of rot (phy) : " << p[3] << " " << p[4] << " " << p[5] << std::endl;
         std::cout << "Translation   (phy) : " << p[6] << " " << p[7] << " " << p[8] << std::endl;
@@ -562,7 +562,7 @@ namespace clitk
       // Compose with previous if needed
       if (j!=0) {
         mat->Compose(previous);
-        if (m_Verbose) {
+        if (verbose) {
           std::cout << "Composed rotation      (deg) : " << rad2deg(mat->GetAngleX()) << " " << rad2deg(mat->GetAngleY()) << " " << rad2deg(mat->GetAngleZ()) << std::endl;
           std::cout << "Composed center of rot (phy) : " << mat->GetCenter() << std::endl;
           std::cout << "Compsoed translation   (phy) : " << mat->GetTranslation() << std::endl;