X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkOptNormalizedCorrelationImageToImageMetricFor3DBLUTFFD.txx;h=494c61a57934d5b89be8a05f3d22ca16ed1160e0;hb=8d51bd1cb7e9ca416b46677dcd73ba76d107a587;hp=d7c777742981f51e1b2234cf3004bcc49ecfbffe;hpb=0793c4dd3d451bb9bdc00e3172fa792d1ddaa8dc;p=clitk.git diff --git a/registration/clitkOptNormalizedCorrelationImageToImageMetricFor3DBLUTFFD.txx b/registration/clitkOptNormalizedCorrelationImageToImageMetricFor3DBLUTFFD.txx index d7c7777..494c61a 100644 --- a/registration/clitkOptNormalizedCorrelationImageToImageMetricFor3DBLUTFFD.txx +++ b/registration/clitkOptNormalizedCorrelationImageToImageMetricFor3DBLUTFFD.txx @@ -117,7 +117,11 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD template void NormalizedCorrelationImageToImageMetricFor3DBLUTFFD +#if ( ( ITK_VERSION_MAJOR == 4 ) && ( ITK_VERSION_MINOR > 12 ) || ( ITK_VERSION_MAJOR > 4 )) +::Initialize(void) +#else ::Initialize(void) throw ( itk::ExceptionObject ) +#endif { this->Superclass::Initialize(); @@ -130,44 +134,74 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD if(m_ThreaderSFF != NULL) { delete [] m_ThreaderSFF; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderSFF = new double[this->m_NumberOfThreads]; +#else + m_ThreaderSFF = new double[this->m_NumberOfWorkUnits]; +#endif if(m_ThreaderSMM != NULL) { delete [] m_ThreaderSMM; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderSMM = new double[this->m_NumberOfThreads]; +#else + m_ThreaderSMM = new double[this->m_NumberOfWorkUnits]; +#endif if(m_ThreaderSFM != NULL) { delete [] m_ThreaderSFM; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderSFM = new double[this->m_NumberOfThreads]; +#else + m_ThreaderSFM = new double[this->m_NumberOfWorkUnits]; +#endif if(this->m_SubtractMean) { if(m_ThreaderSF != NULL) { delete [] m_ThreaderSF; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderSF = new double[this->m_NumberOfThreads]; +#else + m_ThreaderSF = new double[this->m_NumberOfWorkUnits]; +#endif if(m_ThreaderSM != NULL) { delete [] m_ThreaderSM; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderSM = new double[this->m_NumberOfThreads]; +#else + m_ThreaderSM = new double[this->m_NumberOfWorkUnits]; +#endif } if(m_ThreaderDerivativeF != NULL) { delete [] m_ThreaderDerivativeF; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderDerivativeF = new DerivativeType[this->m_NumberOfThreads]; for(unsigned int threadID=0; threadIDm_NumberOfThreads; threadID++) { +#else + m_ThreaderDerivativeF = new DerivativeType[this->m_NumberOfWorkUnits]; + for(unsigned int threadID=0; threadIDm_NumberOfWorkUnits; threadID++) { +#endif m_ThreaderDerivativeF[threadID].SetSize( this->m_NumberOfParameters ); } if(m_ThreaderDerivativeM != NULL) { delete [] m_ThreaderDerivativeM; } +#if ITK_VERSION_MAJOR <= 4 m_ThreaderDerivativeM = new DerivativeType[this->m_NumberOfThreads]; for(unsigned int threadID=0; threadIDm_NumberOfThreads; threadID++) { +#else + m_ThreaderDerivativeM = new DerivativeType[this->m_NumberOfWorkUnits]; + for(unsigned int threadID=0; threadIDm_NumberOfWorkUnits; threadID++) { +#endif m_ThreaderDerivativeM[threadID].SetSize( this->m_NumberOfParameters ); } } @@ -208,20 +242,28 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD //Reset the accumulators +#if ITK_VERSION_MAJOR <= 4 memset( m_ThreaderSFF, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSMM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSFM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); +#else + memset( m_ThreaderSFF, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSMM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSFM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); +#endif if(this->m_SubtractMean) { +#if ITK_VERSION_MAJOR <= 4 memset( m_ThreaderSF, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); +#else + memset( m_ThreaderSF, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); +#endif } // Set up the parameters in the transform this->m_Transform->SetParameters( parameters ); -#if ITK_VERSION_MAJOR < 4 - this->m_Parameters = parameters; -#endif // MUST BE CALLED TO INITIATE PROCESSING this->GetValueMultiThreadedInitiate(); @@ -247,7 +289,11 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD sf = m_ThreaderSF[0]; sm = m_ThreaderSM[0]; +#if ITK_VERSION_MAJOR <= 4 for(unsigned int t=1; tm_NumberOfThreads; t++) { +#else + for(unsigned int t=1; tm_NumberOfWorkUnits; t++) { +#endif sff += m_ThreaderSFF[t]; smm += m_ThreaderSMM[t]; sfm += m_ThreaderSFM[t]; @@ -264,7 +310,7 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD } - const RealType denom = -1.0 * vcl_sqrt(sff * smm ); + const RealType denom = -1.0 * std::sqrt(sff * smm ); MeasureType measure; if( this->m_NumberOfPixelsCounted > 0 && denom != 0.0) { measure = sfm / denom; @@ -285,20 +331,28 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD { //No checking for the fixed image, done in the caller //Reset the accumulators +#if ITK_VERSION_MAJOR <= 4 memset( m_ThreaderSFF, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSMM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSFM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); +#else + memset( m_ThreaderSFF, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSMM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSFM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); +#endif if(this->m_SubtractMean) { +#if ITK_VERSION_MAJOR <= 4 memset( m_ThreaderSF, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); memset( m_ThreaderSM, 0, this->m_NumberOfThreads * sizeof(AccumulateType) ); +#else + memset( m_ThreaderSF, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); + memset( m_ThreaderSM, 0, this->m_NumberOfWorkUnits * sizeof(AccumulateType) ); +#endif } // Set up the parameters in the transform this->m_Transform->SetParameters( parameters ); -#if ITK_VERSION_MAJOR < 4 - this->m_Parameters = parameters; -#endif // MUST BE CALLED TO INITIATE PROCESSING this->GetValueMultiThreadedInitiate(); @@ -323,7 +377,11 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD m_SF = m_ThreaderSF[0]; m_SM = m_ThreaderSM[0]; +#if ITK_VERSION_MAJOR <= 4 for(unsigned int t=1; tm_NumberOfThreads; t++) { +#else + for(unsigned int t=1; tm_NumberOfWorkUnits; t++) { +#endif m_SFF += m_ThreaderSFF[t]; m_SMM += m_ThreaderSMM[t]; m_SFM += m_ThreaderSFM[t]; @@ -342,7 +400,7 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD } - m_Denom = -1.0 * vcl_sqrt(m_SFF * m_SMM ); + m_Denom = -1.0 * std::sqrt(m_SFF * m_SMM ); MeasureType measure; if( this->m_NumberOfPixelsCounted > 0 && m_Denom != 0.0) { measure = m_SFM / m_Denom; @@ -385,12 +443,8 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD } // Jacobian should be evaluated at the unmapped (fixed image) point. -#if ITK_VERSION_MAJOR >= 4 TransformJacobianType jacobian; transform->ComputeJacobianWithRespectToParameters( fixedImagePoint, jacobian ); -#else - const TransformJacobianType & jacobian = transform->GetJacobian( fixedImagePoint ); -#endif // for(unsigned int par=0; parm_NumberOfParameters; par++) // { @@ -455,9 +509,6 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD // Set up the parameters in the transform this->m_Transform->SetParameters( parameters ); -#if ITK_VERSION_MAJOR < 4 - this->m_Parameters = parameters; -#endif //We need the sums and the value to be calculated first value=this->ComputeSums(parameters); @@ -470,7 +521,11 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD 0, this->m_NumberOfParameters * sizeof(typename DerivativeType::ValueType) ); +#if ITK_VERSION_MAJOR <= 4 for( unsigned int threadID = 0; threadIDm_NumberOfThreads; threadID++ ) { +#else + for( unsigned int threadID = 0; threadIDm_NumberOfWorkUnits; threadID++ ) { +#endif memset( m_ThreaderDerivativeF[threadID].data_block(), 0, this->m_NumberOfParameters * sizeof(typename DerivativeType::ValueType) ); @@ -485,7 +540,11 @@ NormalizedCorrelationImageToImageMetricFor3DBLUTFFD // Accumulate over the threads DerivativeType derivativeF(this->m_NumberOfParameters), derivativeM(this->m_NumberOfParameters); +#if ITK_VERSION_MAJOR <= 4 for(unsigned int t=0; tm_NumberOfThreads; t++) { +#else + for(unsigned int t=0; tm_NumberOfWorkUnits; t++) { +#endif for(unsigned int parameter = 0; parameter < this->m_NumberOfParameters; parameter++) { derivativeF[parameter] += m_ThreaderDerivativeF[t][parameter]; derivativeM[parameter] += m_ThreaderDerivativeM[t][parameter];