X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkMultipleBSplineDeformableTransform.txx;h=ebcfae976bd89ac3a5e28bbb37e5807f8bfede47;hb=e751b47051ae80ecd388418ae39b388f15e627eb;hp=3a609a2e6017275c0934a60c881b8e11ac694a21;hpb=46e15948191b583a7333683663c3975a279274a6;p=clitk.git diff --git a/registration/clitkMultipleBSplineDeformableTransform.txx b/registration/clitkMultipleBSplineDeformableTransform.txx index 3a609a2..ebcfae9 100644 --- a/registration/clitkMultipleBSplineDeformableTransform.txx +++ b/registration/clitkMultipleBSplineDeformableTransform.txx @@ -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 __clitkMultipleBSplineDeformableTransform_txx #define __clitkMultipleBSplineDeformableTransform_txx @@ -28,8 +28,7 @@ namespace clitk { // Constructor with default arguments template - MultipleBSplineDeformableTransform - ::MultipleBSplineDeformableTransform() : Superclass(OutputDimension, 0) + MultipleBSplineDeformableTransform::MultipleBSplineDeformableTransform() : Superclass(0) { m_nLabels = 1; m_labels = 0; @@ -325,7 +324,7 @@ namespace clitk #undef LOOP_ON_LABELS template - inline unsigned int + inline typename MultipleBSplineDeformableTransform::NumberOfParametersType MultipleBSplineDeformableTransform ::GetNumberOfParameters(void) const { @@ -426,14 +425,10 @@ namespace clitk } template - inline const typename MultipleBSplineDeformableTransform::JacobianType & + inline void MultipleBSplineDeformableTransform - ::GetJacobian( const InputPointType & point ) const + ::ComputeJacobianWithRespectToParameters (const InputPointType &point, JacobianType &jacobian) const { - /* - for (unsigned i = 0; i < m_nLabels; ++i) - m_trans[i]->ResetJacobian(); - */ if (m_LastJacobian != -1) m_trans[m_LastJacobian]->ResetJacobian(); @@ -443,15 +438,18 @@ namespace clitk if (lidx == -1) { m_LastJacobian = lidx; - return this->m_Jacobian; + jacobian = this->m_SharedDataBSplineJacobian; + return; } - m_trans[lidx]->GetJacobian(point); + JacobianType unused; + m_trans[lidx]->ComputeJacobianWithRespectToParameters(point, unused); m_LastJacobian = lidx; - return this->m_Jacobian; + jacobian = this->m_SharedDataBSplineJacobian; } + template inline void MultipleBSplineDeformableTransform @@ -465,8 +463,8 @@ namespace clitk MultipleBSplineDeformableTransform::InitJacobian() { unsigned numberOfParameters = this->GetNumberOfParameters(); - this->m_Jacobian.set_size(OutputDimension, numberOfParameters); - JacobianPixelType * jacobianDataPointer = reinterpret_cast(this->m_Jacobian.data_block()); + this->m_SharedDataBSplineJacobian.set_size(OutputDimension, numberOfParameters); + JacobianPixelType * jacobianDataPointer = reinterpret_cast(this->m_SharedDataBSplineJacobian.data_block()); memset(jacobianDataPointer, 0, numberOfParameters * sizeof (JacobianPixelType)); unsigned tot = 0;