X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkMultipleBSplineDeformableTransform.txx;h=ebcfae976bd89ac3a5e28bbb37e5807f8bfede47;hb=refs%2Fheads%2FGammaIndex3D;hp=0ec20aa2bdf29398a97a267b81cf21d6dd800f46;hpb=765020625fbc092d283e221e36c83e60a1844cb7;p=clitk.git diff --git a/registration/clitkMultipleBSplineDeformableTransform.txx b/registration/clitkMultipleBSplineDeformableTransform.txx index 0ec20aa..ebcfae9 100644 --- a/registration/clitkMultipleBSplineDeformableTransform.txx +++ b/registration/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;