13 #ifndef mitkMultiModalRigidDefaultRegistrationAlgorithm_h
14 #define mitkMultiModalRigidDefaultRegistrationAlgorithm_h
16 #include <mapDiscreteElements.h>
17 #include <mapITKEuler3DMattesMIMultiResRegistrationAlgorithmTemplate.h>
18 #include <mapConfigure.h>
45 template<
class TImageType>
47 public ::map::algorithm::boxed::ITKEuler3DMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalRigidDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, ::map::core::continuous::ScalarType> >, ::map::algorithm::itk::NoComponentInitializationPolicy>
52 typedef ::map::algorithm::boxed::ITKEuler3DMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalRigidDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, ::map::core::continuous::ScalarType> >, ::map::algorithm::itk::NoComponentInitializationPolicy>
55 typedef ::itk::SmartPointer<Self>
Pointer;
59 ITKEuler3DMattesMIMultiResRegistrationAlgorithm);
81 Superclass::configureAlgorithm();
83 this->setResolutionLevels(3);
84 this->_preInitialize =
true;
85 this->_useCenterOfGravity =
false;
88 typename Superclass::ConcreteOptimizerType::ScalesType scales(6);
92 scales[3] = 1.0 / 1000;
93 scales[4] = 1.0 / 1000;
94 scales[5] = 1.0 / 1000;
96 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetScales(scales);
97 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMaximumStepLength(3.00);
98 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMinimumStepLength(0.5);
99 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetNumberOfIterations(200);
100 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetRelaxationFactor(0.8);
101 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetGradientMagnitudeTolerance(1e-4);
104 this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfHistogramBins(30);
105 this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(
true);
106 this->getConcreteMetricControl()->getConcreteMetric()->ReinitializeSeed();
107 this->getConcreteMetricControl()->getConcreteMetric()->UseExplicitPDFDerivativesOn();
120 Superclass::doInterLevelSetup();
122 if (this->getCurrentLevel() == 0)
124 typename Superclass::OptimizerBaseType::SVNLOptimizerBaseType::ScalesType scales(6);
128 scales[3] = 1.0 / 10000;
129 scales[4] = 1.0 / 10000;
130 scales[5] = 1.0 / 10000;
131 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetScales(scales);
135 this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(
false);
137 typename Superclass::OptimizerBaseType::SVNLOptimizerBaseType::ScalesType scales(6);
141 scales[3] = 1.0 / 1000;
142 scales[4] = 1.0 / 1000;
143 scales[5] = 1.0 / 1000;
145 this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetScales(scales);
147 unsigned int nrOfSmpl = ::itk::Math::Round<unsigned int, double>
148 (this->getMovingImage()->GetLargestPossibleRegion().GetNumberOfPixels() * 0.15);
150 this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfSpatialSamples(nrOfSmpl);
157 void operator=(
const Self&);
Default multimodal rigid registration algorithm for MITK.
~MultiModalRigidDefaultRegistrationAlgorithm() override
::itk::SmartPointer< Self > Pointer
MultiModalRigidDefaultRegistrationAlgorithm()
::itk::SmartPointer< const Self > ConstPointer
void configureAlgorithm() override
Configure the algorithm with default parameters.
MultiModalRigidDefaultRegistrationAlgorithm Self
mapNewAlgorithmMacro(Self)
void doInterLevelSetup() override
Adjust optimizer scales and spatial sampling between resolution levels.
::map::algorithm::boxed::ITKEuler3DMattesMIMultiResRegistrationAlgorithm< TImageType, TImageType, ::map::algorithm::mitkMultiModalRigidDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction< TImageType, ::map::core::continuous::ScalarType > >, ::map::algorithm::itk::NoComponentInitializationPolicy > Superclass
Find image slices visible on a given plane.