Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkMultiModalTransDefaultRegistrationAlgorithm.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkMultiModalTransDefaultRegistrationAlgorithm_h
14 #define mitkMultiModalTransDefaultRegistrationAlgorithm_h
15 
16 #include <mapDiscreteElements.h>
17 #include <mapITKTransMattesMIMultiResRegistrationAlgorithm.h>
18 #include <mapConfigure.h>
19 
21 
22 namespace mitk
23 {
44  template<class TImageType>
46  public map::algorithm::boxed::ITKTransMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalTransDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, map::core::continuous::ScalarType> >, map::algorithm::itk::NoComponentInitializationPolicy>
47  {
48  public:
50 
51  typedef map::algorithm::boxed::ITKTransMattesMIMultiResRegistrationAlgorithm<TImageType, TImageType, ::map::algorithm::mitkMultiModalTransDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction<TImageType, map::core::continuous::ScalarType> >, map::algorithm::itk::NoComponentInitializationPolicy>
53 
54  typedef ::itk::SmartPointer<Self> Pointer;
55  typedef ::itk::SmartPointer<const Self> ConstPointer;
56 
58  ITKEuler3DMattesMIMultiResRegistrationAlgorithm);
60 
61  protected:
63  {
64  };
65 
67  {
68  };
69 
78  void configureAlgorithm() override
79  {
80  Superclass::configureAlgorithm();
81 
82  this->setResolutionLevels(3);
83  this->_preInitialize = true;
84  this->_useCenterOfGravity = false;
85 
86  //optimizer
87  typename Superclass::ConcreteOptimizerType::ScalesType scales(3);
88  scales[0] = 1.0;
89  scales[1] = 1.0;
90  scales[2] = 1.0;
91 
92  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetScales(scales);
93  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMaximumStepLength(3.00);
94  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetMinimumStepLength(0.5);
95  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetNumberOfIterations(200);
96  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetRelaxationFactor(0.8);
97  this->getConcreteOptimizerControl()->getConcreteOptimizer()->SetGradientMagnitudeTolerance(1e-4);
98 
99  //metric
100  this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfHistogramBins(30);
101  this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(true);
102  this->getConcreteMetricControl()->getConcreteMetric()->ReinitializeSeed();
103  this->getConcreteMetricControl()->getConcreteMetric()->UseExplicitPDFDerivativesOn();
104  }
105 
112  void
113  doInterLevelSetup() override
114  {
115  Superclass::doInterLevelSetup();
116 
117  if (this->getCurrentLevel() != 0)
118  {
119  this->getConcreteMetricControl()->getConcreteMetric()->SetUseAllPixels(false);
120 
121  unsigned int nrOfSmpl = ::itk::Math::Round<unsigned int, double>
122  (this->getMovingImage()->GetLargestPossibleRegion().GetNumberOfPixels() * 0.15);
123 
124  this->getConcreteMetricControl()->getConcreteMetric()->SetNumberOfSpatialSamples(nrOfSmpl);
125  }
126  };
127 
128  private:
129 
130  MultiModalTranslationDefaultRegistrationAlgorithm(const Self& source); //purposely not implemented
131  void operator=(const Self&); //purposely not implemented
132  };
133 
134 }
135 
136 #endif
Default multimodal translation-only registration algorithm for MITK.
void doInterLevelSetup() override
Adjust spatial sampling between resolution levels.
map::algorithm::boxed::ITKTransMattesMIMultiResRegistrationAlgorithm< TImageType, TImageType, ::map::algorithm::mitkMultiModalTransDefaultRegistrationAlgorithmUIDPolicy, SealedFixedInterpolatorPolicyMacro< ::itk::LinearInterpolateImageFunction< TImageType, map::core::continuous::ScalarType > >, map::algorithm::itk::NoComponentInitializationPolicy > Superclass
void configureAlgorithm() override
Configure the algorithm with default parameters.
Find image slices visible on a given plane.