13 #ifndef mitkMultiModalTransDefaultRegistrationAlgorithm_h
14 #define mitkMultiModalTransDefaultRegistrationAlgorithm_h
16 #include "mapDiscreteElements.h"
17 #include "mapITKTransMattesMIMultiResRegistrationAlgorithm.h"
18 #include "mapConfigure.h"
28 template<
class TImageType>
30 public map::algorithm::boxed::ITKTransMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalTransDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, map::core::continuous::ScalarType> >, map::algorithm::itk::NoComponentInitializationPolicy>
35 typedef map::algorithm::boxed::ITKTransMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalTransDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, map::core::continuous::ScalarType> >, map::algorithm::itk::NoComponentInitializationPolicy>
38 typedef ::itk::SmartPointer<Self>
Pointer;
42 ITKEuler3DMattesMIMultiResRegistrationAlgorithm);
56 Superclass::configureAlgorithm();
58 this->setResolutionLevels(3);
59 this->_preInitialize =
true;
60 this->_useCenterOfGravity =
false;
63 typename Superclass::ConcreteOptimizerType::ScalesType scales(3);
68 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetScales(scales);
69 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMaximumStepLength(3.00);
70 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMinimumStepLength(0.5);
71 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetNumberOfIterations(200);
72 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetRelaxationFactor(0.8);
73 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetGradientMagnitudeTolerance(1e-4);
76 this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfHistogramBins(30);
77 this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(
true);
78 this->getConcreteMetricControl()->getConcreteMetric()->ReinitializeSeed();
79 this->getConcreteMetricControl()->getConcreteMetric()->UseExplicitPDFDerivativesOn();
85 Superclass::doInterLevelSetup();
87 if (this->getCurrentLevel() != 0)
89 this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(
false);
91 unsigned int nrOfSmpl = ::itk::Math::Round<unsigned int, double>
92 (this->getMovingImage()->GetLargestPossibleRegion().GetNumberOfPixels() * 0.15);
94 this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfSpatialSamples(nrOfSmpl);
101 void operator=(
const Self&);