X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkAffineTransformGenericFilter.txx;h=0fa4869f2af12d9f680373060faa16ccba109f85;hb=e64bc938065fef91ca19fb4b5f4f3bb973bc6f81;hp=ec9db098493cb873f1f0d4478696b48da1e5b0f6;hpb=5c5fc58e0cbdcec1c9fdd19ec786912cb38d1722;p=clitk.git diff --git a/tools/clitkAffineTransformGenericFilter.txx b/tools/clitkAffineTransformGenericFilter.txx index ec9db09..0fa4869 100644 --- a/tools/clitkAffineTransformGenericFilter.txx +++ b/tools/clitkAffineTransformGenericFilter.txx @@ -143,14 +143,23 @@ AffineTransformGenericFilter::UpdateWithDimAndPixelType() return; } itk::Array transformParameters(2 * Dimension); - int pos = 0; - if (Dimension == 2) - transformParameters[pos++] = m_ArgsInfo.rotate_arg[0]; - else - for (unsigned int i = 0; i < 3; i++) - transformParameters[pos++] = m_ArgsInfo.rotate_arg[i]; - for (unsigned int i = 0; i < Dimension && i < 3; i++) - transformParameters[pos++] = m_ArgsInfo.translate_arg[i]; + transformParameters.Fill(0.0); + if (m_ArgsInfo.rotate_given) + { + if (Dimension == 2) + transformParameters[0] = m_ArgsInfo.rotate_arg[0]; + else + for (unsigned int i = 0; i < 3; i++) + transformParameters[i] = m_ArgsInfo.rotate_arg[i]; + } + if (m_ArgsInfo.translate_given) + { + int pos = 3; + if (Dimension == 2) + pos = 1; + for (unsigned int i = 0; i < Dimension && i < 3; i++) + transformParameters[pos++] = m_ArgsInfo.translate_arg[i]; + } if (Dimension == 4) { matrix.SetIdentity(); @@ -202,6 +211,12 @@ AffineTransformGenericFilter::UpdateWithDimAndPixelType() typename itk::Matrix invRotMatrix( clitk::GetRotationalPartMatrix(invMatrix) ); typename itk::Vector invTrans = clitk::GetTranslationPartMatrix(invMatrix); + // Display warning + if (m_ArgsInfo.spacing_given) + std::cout << "Warning --spacing ignored (because --transform_grid_flag)" << std::endl; + if (m_ArgsInfo.origin_given) + std::cout << "Warning --origin ignored (because --transform_grid_flag)" << std::endl; + // Spacing is influenced by affine transform matrix and input direction typename InputImageType::SpacingType outputSpacing; outputSpacing = invRotMatrix * @@ -326,14 +341,23 @@ void AffineTransformGenericFilter::UpdateWithDimAndVectorType() return; } itk::Array transformParameters(2 * Dimension); - int pos = 0; - if (Dimension == 2) - transformParameters[pos++] = m_ArgsInfo.rotate_arg[0]; - else - for (unsigned int i = 0; i < 3; i++) - transformParameters[pos++] = m_ArgsInfo.rotate_arg[i]; - for (unsigned int i = 0; i < Dimension && i < 3; i++) - transformParameters[pos++] = m_ArgsInfo.translate_arg[i]; + transformParameters.Fill(0.0); + if (m_ArgsInfo.rotate_given) + { + if (Dimension == 2) + transformParameters[0] = m_ArgsInfo.rotate_arg[0]; + else + for (unsigned int i = 0; i < 3; i++) + transformParameters[i] = m_ArgsInfo.rotate_arg[i]; + } + if (m_ArgsInfo.translate_given) + { + int pos = 3; + if (Dimension == 2) + pos = 1; + for (unsigned int i = 0; i < Dimension && i < 3; i++) + transformParameters[pos++] = m_ArgsInfo.translate_arg[i]; + } if (Dimension == 4) { matrix.SetIdentity();