From: Simon Rit Date: Wed, 24 Jul 2013 22:04:34 +0000 (+0200) Subject: Used euler3DTransform instead of CenteredEulerTransform. Similar result X-Git-Tag: v1.4.0~164^2~38^2~4 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=fa8617df448e18fed2f7e85a1f20726cc08103a0;p=clitk.git Used euler3DTransform instead of CenteredEulerTransform. Similar result but more consistent with Elastix. --- diff --git a/common/clitkElastix.h b/common/clitkElastix.h index ae5dc54..7452bb5 100644 --- a/common/clitkElastix.h +++ b/common/clitkElastix.h @@ -19,6 +19,8 @@ #ifndef clitkElastix_h #define clitkElastix_h +#include + //-------------------------------------------------------------------- namespace clitk { @@ -69,8 +71,8 @@ createMatrixFromElastixFile(std::vector & filename, bool verbose=tr } typename itk::Matrix matrix; - itk::CenteredEuler3DTransform::Pointer mat = itk::CenteredEuler3DTransform::New(); - itk::CenteredEuler3DTransform::Pointer previous; + itk::Euler3DTransform::Pointer mat = itk::Euler3DTransform::New(); + itk::Euler3DTransform::Pointer previous; for(uint j=0; j & filename, bool verbose=tr } std::vector cor; GetValuesFromValue(s, cor); + itk::Euler3DTransform::CenterType c; + for(uint i=0; i<3; i++) + c[i] = atof(cor[i].c_str()); + mat->SetCenter(c); + + // Get Transformparameters + GetElastixValueFromTag(is, "ComputeZYX ", s); // space is needed + mat->SetComputeZYX( s==std::string("true") ); // Get Transformparameters GetElastixValueFromTag(is, "TransformParameters ", s); // space is needed @@ -108,20 +118,18 @@ createMatrixFromElastixFile(std::vector & filename, bool verbose=tr GetValuesFromValue(s, results); // construct a stream from the string - itk::CenteredEuler3DTransform::ParametersType p; - p.SetSize(9); + itk::Euler3DTransform::ParametersType p; + p.SetSize(6); for(uint i=0; i<3; i++) p[i] = atof(results[i].c_str()); // Rotation for(uint i=0; i<3; i++) - p[i+3] = atof(cor[i].c_str()); // Centre of rotation - for(uint i=0; i<3; i++) - p[i+6] = atof(results[i+3].c_str()); // Translation + p[i+3] = atof(results[i+3].c_str()); // Translation mat->SetParameters(p); 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; + std::cout << "Center of rot (phy) : " << c[0] << " " << c[1] << " " << c[2] << std::endl; + std::cout << "Translation (phy) : " << p[3] << " " << p[4] << " " << p[5] << std::endl; } // Compose with previous if needed @@ -134,8 +142,10 @@ createMatrixFromElastixFile(std::vector & filename, bool verbose=tr } } // previous = mat->Clone(); // ITK4 - previous = itk::CenteredEuler3DTransform::New(); + previous = itk::Euler3DTransform::New(); previous->SetParameters(mat->GetParameters()); + previous->SetCenter(c); + previous->SetComputeZYX(mat->GetComputeZYX()); } mat = previous;