X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FitkOptMattesMutualInformationImageToImageMetricFor3DBLUTFFD.txx;h=efe9cba383476068a521e6f0edaa8e8c4bc81064;hb=6ab0361c289035b4ba8487fe074ea9b268341da9;hp=6d890e3e209de8817760a962f038ecabca5a7766;hpb=c18059db4f507fd31b5898667f57eced7d48c5f7;p=clitk.git diff --git a/registration/itkOptMattesMutualInformationImageToImageMetricFor3DBLUTFFD.txx b/registration/itkOptMattesMutualInformationImageToImageMetricFor3DBLUTFFD.txx index 6d890e3..efe9cba 100644 --- a/registration/itkOptMattesMutualInformationImageToImageMetricFor3DBLUTFFD.txx +++ b/registration/itkOptMattesMutualInformationImageToImageMetricFor3DBLUTFFD.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 -======================================================================-====*/ +===========================================================================**/ /*========================================================================= @@ -386,7 +386,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD } m_ThreaderJointPDFSum = new double[this->m_NumberOfThreads]; - unsigned int threadID; + ThreadIdType threadID; int binRange = m_NumberOfHistogramBins / this->m_NumberOfThreads; @@ -473,7 +473,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline void MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueThreadPreProcess( unsigned int threadID, +::GetValueThreadPreProcess( ThreadIdType threadID, bool withinSampleThread ) const { @@ -501,7 +501,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline bool MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueThreadProcessSample( unsigned int threadID, +::GetValueThreadProcessSample( ThreadIdType threadID, unsigned long fixedImageSample, const MovingImagePointType & itkNotUsed(mappedPoint), double movingImageValue) const @@ -576,7 +576,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline void MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueThreadPostProcess( unsigned int threadID, +::GetValueThreadPostProcess( ThreadIdType threadID, bool itkNotUsed(withinSampleThread) ) const { unsigned int t; @@ -638,7 +638,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD // MUST BE CALLED TO INITIATE PROCESSING this->GetValueMultiThreadedPostProcessInitiate(); - for(unsigned int threadID = 0; threadIDm_NumberOfThreads-1; threadID++) { + for(ThreadIdType threadID = 0; threadIDm_NumberOfThreads-1; threadID++) { m_JointPDFSum += m_ThreaderJointPDFSum[threadID]; } if ( m_JointPDFSum == 0.0 ) { @@ -720,7 +720,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline void MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueAndDerivativeThreadPreProcess( unsigned int threadID, +::GetValueAndDerivativeThreadPreProcess( ThreadIdType threadID, bool itkNotUsed(withinSampleThread) ) const { if(threadID > 0) { @@ -757,7 +757,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline bool MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueAndDerivativeThreadProcessSample( unsigned int threadID, +::GetValueAndDerivativeThreadProcessSample( ThreadIdType threadID, unsigned long fixedImageSample, const MovingImagePointType & itkNotUsed(mappedPoint), double movingImageValue, @@ -864,7 +864,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > inline void MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::GetValueAndDerivativeThreadPostProcess( unsigned int threadID, +::GetValueAndDerivativeThreadPostProcess( ThreadIdType threadID, bool withinSampleThread ) const { this->GetValueThreadPostProcess( threadID, withinSampleThread ); @@ -931,7 +931,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD } else { this->m_PRatioArray.Fill( 0.0 ); this->m_MetricDerivative.Fill( NumericTraits< MeasureType >::Zero ); - for(unsigned int threadID = 0; threadID < this->m_NumberOfThreads-1; threadID++ ) { + for(ThreadIdType threadID = 0; threadID < this->m_NumberOfThreads-1; threadID++ ) { this->m_ThreaderMetricDerivative[threadID].Fill( NumericTraits< MeasureType >::Zero ); } this->m_ImplicitDerivativesSecondPass = false; @@ -947,7 +947,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD // CALL IF DOING THREADED POST PROCESSING this->GetValueAndDerivativeMultiThreadedPostProcessInitiate(); - for(unsigned int threadID = 0; threadIDm_NumberOfThreads-1; threadID++) { + for(ThreadIdType threadID = 0; threadIDm_NumberOfThreads-1; threadID++) { m_JointPDFSum += m_ThreaderJointPDFSum[threadID]; } if ( m_JointPDFSum == 0.0 ) { @@ -1091,7 +1091,7 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD template < class TFixedImage, class TMovingImage > void MattesMutualInformationImageToImageMetricFor3DBLUTFFD -::ComputePDFDerivatives( unsigned int threadID, +::ComputePDFDerivatives( ThreadIdType threadID, unsigned int sampleNumber, int pdfMovingIndex, const ImageDerivativesType & movingImageGradientValue, @@ -1152,8 +1152,13 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD transform = this->m_Transform; } +#if ITK_VERSION_MAJOR >= 4 + JacobianType jacobian; + transform->ComputeJacobianWithRespectToParameters(this->m_FixedImageSamples[sampleNumber].point, jacobian); +#else const JacobianType& jacobian = transform->GetJacobian( this->m_FixedImageSamples[sampleNumber].point ); +#endif // for ( unsigned int mu = 0; mu < this->m_NumberOfParameters; mu++ ) // { @@ -1221,9 +1226,15 @@ MattesMutualInformationImageToImageMetricFor3DBLUTFFD indicesHelper = &(this->m_BSplineTransformIndices); } +#if ITK_VERSION_MAJOR >= 4 + this->m_BSplineTransform->ComputeJacobianFromBSplineWeightsWithRespectToPosition( + this->m_FixedImageSamples[sampleNumber].point, + *weightsHelper, *indicesHelper ); +#else this->m_BSplineTransform->GetJacobian( this->m_FixedImageSamples[sampleNumber].point, *weightsHelper, *indicesHelper ); +#endif } for( unsigned int dim = 0; dim < Superclass::FixedImageDimension; dim++ ) {