X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkBLUTDIRGenericFilter.cxx;h=511c598a176d96407b3957cece42eef7da9223bc;hb=de0c500755f798a2ff44bbda3269b9c6c5e065e8;hp=598870e77fea34b101f8254029cfc14c4efae4a9;hpb=9dbaeae2f504d962a8465c6fd2984955c61d96e1;p=clitk.git diff --git a/registration/clitkBLUTDIRGenericFilter.cxx b/registration/clitkBLUTDIRGenericFilter.cxx index 598870e..511c598 100755 --- a/registration/clitkBLUTDIRGenericFilter.cxx +++ b/registration/clitkBLUTDIRGenericFilter.cxx @@ -113,7 +113,7 @@ void BLUTDIRGenericFilter::InitializeImageType() typedef itk::SmartPointer Pointer; itkNewMacro( Self ); protected: - RegistrationInterfaceCommand() {}; + RegistrationInterfaceCommand() { }; public: // Registration @@ -204,11 +204,22 @@ void BLUTDIRGenericFilter::InitializeImageType() m_Initializer->InitializeTransform(); ParametersType* newParameters= new typename TransformType::ParametersType(m_Initializer->GetTransform()->GetNumberOfParameters()); + // DS : if we want to skip the last pyramid level, force to only 1 iteration + DD(m_ArgsInfo.skipLastPyramidLevel_flag); + if ((currentLevel == numberOfLevels) && (m_ArgsInfo.skipLastPyramidLevel_flag)) { + DD(m_ArgsInfo.maxIt_arg); + std::cout << "I skip the last pyramid level : set max iteration to 0" << std::endl; + m_ArgsInfo.maxIt_arg = 0; + DD(m_ArgsInfo.maxIt_arg); + } + // Reinitialize an Optimizer (!= number of parameters) m_GenericOptimizer = GenericOptimizerType::New(); m_GenericOptimizer->SetArgsInfo(m_ArgsInfo); m_GenericOptimizer->SetMaximize(m_Maximize); m_GenericOptimizer->SetNumberOfParameters(m_Initializer->GetTransform()->GetNumberOfParameters()); + + typedef itk::SingleValuedNonLinearOptimizer OptimizerType; OptimizerType::Pointer optimizer = m_GenericOptimizer->GetOptimizerPointer(); optimizer->AddObserver( itk::IterationEvent(), m_CommandIterationUpdate); @@ -575,7 +586,10 @@ void BLUTDIRGenericFilter::UpdateWithInputImageType() if (movingMask) metric->SetMovingImageMask(movingMask); #ifdef ITK_USE_OPTIMIZED_REGISTRATION_METHODS - if (threadsGiven) metric->SetNumberOfThreads( threads ); + if (threadsGiven) { + metric->SetNumberOfThreads( threads ); + if (m_Verbose) std::cout<< "Using " << threads << " threads." << std::endl; + } #else if (m_Verbose) std::cout<<"Not setting the number of threads (not compiled with USE_OPTIMIZED_REGISTRATION_METHODS)..."<SetOptimizer( optimizer ); registration->SetInterpolator( interpolator ); registration->SetTransform (transform); - if(threadsGiven) registration->SetNumberOfThreads(threads); + if(threadsGiven) { + registration->SetNumberOfThreads(threads); + if (m_Verbose) std::cout<< "Using " << threads << " threads." << std::endl; + } registration->SetFixedImage( croppedFixedImage ); registration->SetMovingImage( movingImage ); registration->SetFixedImageRegion( metricRegion ); @@ -836,4 +853,4 @@ void BLUTDIRGenericFilter::UpdateWithInputImageType() } }//end clitk -#endif // #define clitkBLUTDIRGenericFilter_txx \ No newline at end of file +#endif // #define clitkBLUTDIRGenericFilter_txx