X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkBLUTDIRGenericFilter.cxx;h=511c598a176d96407b3957cece42eef7da9223bc;hb=de0c500755f798a2ff44bbda3269b9c6c5e065e8;hp=02ce0ddf3a0452f17694e54d949cfc68e772fb4a;hpb=5cc64cb817d78d671eb20d219cc19f9ad5b1e5c1;p=clitk.git diff --git a/registration/clitkBLUTDIRGenericFilter.cxx b/registration/clitkBLUTDIRGenericFilter.cxx index 02ce0dd..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);