X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkDemonsDeformableRegistrationGenericFilter.txx;h=6132dc5897ae115d57fd9117e93cfd954a024307;hb=2b4ec898fdd6dc8ea5780c0e30c7124272a4202e;hp=55406bb5b38a1933356e7d2750de3b1c0de1762f;hpb=657652a78c2e2717a6f77e027049173442ca29f0;p=clitk.git diff --git a/registration/clitkDemonsDeformableRegistrationGenericFilter.txx b/registration/clitkDemonsDeformableRegistrationGenericFilter.txx old mode 100755 new mode 100644 index 55406bb..6132dc5 --- a/registration/clitkDemonsDeformableRegistrationGenericFilter.txx +++ b/registration/clitkDemonsDeformableRegistrationGenericFilter.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 -======================================================================-====*/ +===========================================================================**/ #ifndef __clitkDemonsDeformableRegistrationGenericFilter_txx #define __clitkDemonsDeformableRegistrationGenericFilter_txx #include "clitkDemonsDeformableRegistrationGenericFilter.h" @@ -151,8 +151,12 @@ namespace clitk //find the multiresolution filter // typedef typename RegistrationFilterType::FixedImageType InternalImageType; // typedef typename RegistrationFilterType::MovingImageType MovingImageType; - typedef typename RegistrationFilterType::DeformationFieldType DeformationFieldType; - typedef clitk::MultiResolutionPDEDeformableRegistration MultiResolutionRegistrationType; +#if ITK_VERSION_MAJOR >= 4 + typedef typename RegistrationFilterType::DisplacementFieldType DisplacementFieldType; +#else + typedef typename RegistrationFilterType::DeformationFieldType DisplacementFieldType; +#endif + typedef clitk::MultiResolutionPDEDeformableRegistration MultiResolutionRegistrationType; typedef CommandResolutionLevelUpdate LevelObserver; protected: @@ -348,7 +352,7 @@ namespace clitk //------------------------------------ //Set the number of iterations //------------------------------------ - unsigned int nIterations[nLevels]; + std::vector nIterations(nLevels); for (unsigned int i=0 ; iSetNumberOfIterations( nIterations ); + multiResolutionFilter->SetNumberOfIterations( &(nIterations[0]) ); if(m_Verbose) { std::cout<<"Setting the number of iterations to: "< maxRMSError(nLevels); for (unsigned int i=0 ; i stop(nLevels); for (unsigned int i=0; i::Pointer levelObserver = CommandResolutionLevelUpdate::New(); multiResolutionFilter->AddObserver( itk::IterationEvent(), levelObserver ); - levelObserver->SetMaxRMSError(maxRMSError); + levelObserver->SetMaxRMSError(&(maxRMSError[0])); levelObserver->SetMaxStep(m_ArgsInfo.maxStep_arg); levelObserver->SetSD(sd); levelObserver->SetScaleStep(m_ArgsInfo.scaleStep_flag); @@ -464,7 +468,7 @@ namespace clitk m->SetIntensityDifferenceThreshold( m_ArgsInfo.intThreshold_arg); m->SetUseMovingImageGradient( m_ArgsInfo.movGrad_flag); typename CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New(); - observer->SetStop(stop); + observer->SetStop(&(stop[0])); observer->SetLevelObserver(levelObserver); m->AddObserver( itk::IterationEvent(), observer ); if (m_Verbose) std::cout<<"Using the demons registration filter..."<SetIntensityDifferenceThreshold( m_ArgsInfo.intThreshold_arg); typename CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New(); - observer->SetStop(stop); + observer->SetStop(&(stop[0])); observer->SetLevelObserver(levelObserver); m->AddObserver( itk::IterationEvent(), observer ); if (m_Verbose) std::cout<<"Using the symmetric forces demons registration filter..."<SetMaximumUpdateStepLength( m_ArgsInfo.maxStep_arg); m->SetUseGradientType(grad); typename CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New(); - observer->SetStop(stop); + observer->SetStop(&(stop[0])); observer->SetLevelObserver(levelObserver); m->AddObserver( itk::IterationEvent(), observer ); if (m_Verbose) std::cout<<"Using the fast symmetric forces demons registration filter..."<SetUseFirstOrderExp(m_ArgsInfo.firstOrder_flag); m->SetUseGradientType(grad); typename CommandIterationUpdate::Pointer observer = CommandIterationUpdate::New(); - observer->SetStop(stop); + observer->SetStop(&(stop[0])); observer->SetLevelObserver(levelObserver); m->AddObserver( itk::IterationEvent(), observer ); if (m_Verbose) std::cout<<"Using the diffeomorphic demons registration filter..."<SetMaximumError(m_ArgsInfo.maxError_arg); // pdeFilter->SetMaximumKernelWidth(m_ArgsInfo.maxError_arg); +#if ITK_VERSION_MAJOR >= 4 + pdeFilter->SetSmoothDisplacementField(!m_ArgsInfo.fluid_flag); +#else pdeFilter->SetSmoothDeformationField(!m_ArgsInfo.fluid_flag); +#endif pdeFilter->SetSmoothUpdateField(m_ArgsInfo.fluid_flag); pdeFilter->SetUseImageSpacing( m_ArgsInfo.spacing_flag ); @@ -599,7 +607,11 @@ namespace clitk typedef itk::WarpImageFilter< MovingImageType, FixedImageType, DeformationFieldType > WarpFilterType; typename WarpFilterType::Pointer warp = WarpFilterType::New(); +#if ITK_VERSION_MAJOR >= 4 + warp->SetDisplacementField( deformationField ); +#else warp->SetDeformationField( deformationField ); +#endif warp->SetInput( movingImageReader->GetOutput() ); warp->SetOutputOrigin( fixedImage->GetOrigin() ); warp->SetOutputSpacing( fixedImage->GetSpacing() );