X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkBSplineDeformableTransform.h;h=8f5a278c6ad0930115070ddc4ae6463a2a5ffa4d;hb=d9c8c6e6c759655fc24d05d47b962d2ba574b95d;hp=2aeaac654ed81c492ead97ece721e911137096fe;hpb=657652a78c2e2717a6f77e027049173442ca29f0;p=clitk.git diff --git a/registration/clitkBSplineDeformableTransform.h b/registration/clitkBSplineDeformableTransform.h index 2aeaac6..8f5a278 100644 --- a/registration/clitkBSplineDeformableTransform.h +++ b/registration/clitkBSplineDeformableTransform.h @@ -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 __clitkBSplineDeformableTransform_h #define __clitkBSplineDeformableTransform_h #include "clitkVectorBSplineResampleImageFunctionWithLUT.h" @@ -27,6 +27,9 @@ namespace clitk { + // Forward declaration needed for friendship + template + class ITK_EXPORT MultipleBSplineDeformableTransform; template < class TCoordRep = double, // Data type for scalars, coordinate representation,vectors @@ -62,6 +65,7 @@ namespace clitk /** Standard parameters container. */ typedef typename Superclass::ParametersType ParametersType; + typedef typename Superclass::NumberOfParametersType NumberOfParametersType; /** Standard Jacobian container. */ typedef typename Superclass::JacobianType JacobianType; @@ -186,7 +190,7 @@ namespace clitk void SetBulkTransform(BulkTransformPointer b){m_BulkTransform=b;} BulkTransformPointer GetBulkTransform(void) {return m_BulkTransform;} - //Set mask, inside transform applies, outside zero, real pointer + // Set mask, inside transform applies, outside zero, real pointer void SetMask(MaskPointer m){m_Mask=m;} MaskPointer GetMask(void){return m_Mask;} // itkSetConstObjectMacro( Mask, MaskType ); @@ -251,10 +255,14 @@ namespace clitk } /** Compute the Jacobian Matrix of the transformation at one point */ - virtual const JacobianType& GetJacobian(const InputPointType &point ) const; + virtual void ComputeJacobianWithRespectToParameters (const InputPointType &p, JacobianType &jacobian) const; + virtual void ComputeJacobianWithRespectToPosition (const InputPointType &p, JacobianType &jacobian) const + { + itkExceptionMacro( "ComputeJacobianWithRespectToPosition not yet implemented for " << this->GetNameOfClass() ); + } /** Return the number of parameters that completely define the Transfom */ - virtual unsigned int GetNumberOfParameters(void) const; + virtual NumberOfParametersType GetNumberOfParameters(void) const; /** Return the number of parameters per dimension */ unsigned int GetNumberOfParametersPerDimension(void) const; @@ -338,6 +346,7 @@ namespace clitk mutable IteratorType m_Iterator[OutputDimension]; mutable JacobianPixelType m_ZeroVector; mutable ContinuousIndexType m_Index; + mutable bool m_NeedResetJacobian; /** Keep a pointer to the input parameters. */ const ParametersType * m_InputParametersPointer; @@ -351,13 +360,21 @@ namespace clitk /** Check if a continuous index is inside the valid region. */ bool InsideValidRegion( const ContinuousIndexType& index ) const; + // VD Use external data container for JacobianImage + unsigned SetJacobianImageData(JacobianPixelType * jacobianDataPointer, unsigned dim); + + // VD Reset Jacobian + void ResetJacobian() const; + // VD Add MultipleBSplineDeformableTransform as friend to facilitate wrapping + friend class MultipleBSplineDeformableTransform; + mutable JacobianType m_SharedDataBSplineJacobian; }; //class BSplineDeformableTransform } // namespace itk -#if ITK_TEMPLATE_TXX +#ifndef ITK_MANUAL_INSTANTIATION # include "clitkBSplineDeformableTransform.txx" #endif