go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxAdvancedMattesMutualInformationMetric.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright UMC Utrecht and contributors
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef elxAdvancedMattesMutualInformationMetric_h
19#define elxAdvancedMattesMutualInformationMetric_h
20
21#include "elxIncludes.h" // include first to avoid MSVS warning
23
24namespace elastix
25{
26
99template <class TElastix>
101 : public itk::ParzenWindowMutualInformationImageToImageMetric<typename MetricBase<TElastix>::FixedImageType,
102 typename MetricBase<TElastix>::MovingImageType>
103 , public MetricBase<TElastix>
104{
105public:
107
114 using Pointer = itk::SmartPointer<Self>;
115 using ConstPointer = itk::SmartPointer<const Self>;
116
118 itkNewMacro(Self);
119
122
127 elxClassNameMacro("AdvancedMattesMutualInformation");
128
130 using typename Superclass1::CoordinateRepresentationType;
131 using typename Superclass1::MovingImageType;
132 using typename Superclass1::MovingImagePixelType;
133 using typename Superclass1::MovingImageConstPointer;
134 using typename Superclass1::FixedImageType;
135 using typename Superclass1::FixedImageConstPointer;
136 using typename Superclass1::FixedImageRegionType;
137 using typename Superclass1::TransformType;
138 using typename Superclass1::TransformPointer;
139 using typename Superclass1::InputPointType;
140 using typename Superclass1::OutputPointType;
141 using typename Superclass1::TransformParametersType;
142 using typename Superclass1::TransformJacobianType;
143 using typename Superclass1::InterpolatorType;
144 using typename Superclass1::InterpolatorPointer;
145 using typename Superclass1::RealType;
146 using typename Superclass1::GradientPixelType;
147 using typename Superclass1::GradientImageType;
148 using typename Superclass1::GradientImagePointer;
149 using typename Superclass1::GradientImageFilterType;
150 using typename Superclass1::GradientImageFilterPointer;
151 using typename Superclass1::FixedImageMaskType;
152 using typename Superclass1::FixedImageMaskPointer;
153 using typename Superclass1::MovingImageMaskType;
154 using typename Superclass1::MovingImageMaskPointer;
155 using typename Superclass1::MeasureType;
156 using typename Superclass1::DerivativeType;
157 using typename Superclass1::ParametersType;
160 using typename Superclass1::ImageSamplerType;
169
171 itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension);
172
174 itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension);
175
177 using typename Superclass2::ElastixType;
178 using typename Superclass2::RegistrationType;
180
186 void
188
192 void
194
197 void
198 Initialize() override;
199
201 itkSetMacro(Param_c, double);
202 itkGetConstMacro(Param_c, double);
203
205 itkSetMacro(Param_gamma, double);
206 itkGetConstMacro(Param_gamma, double);
207
209 itkSetMacro(CurrentIteration, unsigned int);
210 itkGetConstMacro(CurrentIteration, unsigned int);
211
212protected:
215
218
219 unsigned long m_CurrentIteration;
220
222 double
223 Compute_c(unsigned long k) const;
224
225private:
227
228 double m_Param_c;
230};
231
232} // end namespace elastix
233
234#ifndef ITK_MANUAL_INSTANTIATION
235# include "elxAdvancedMattesMutualInformationMetric.hxx"
236#endif
237
238#endif // end #ifndef elxAdvancedMattesMutualInformationMetric_h
A metric based on the itk::ParzenWindowMutualInformationImageToImageMetric.
double Compute_c(unsigned long k) const
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
elxClassNameMacro("AdvancedMattesMutualInformation")
ITK_DISALLOW_COPY_AND_MOVE(AdvancedMattesMutualInformationMetric)
This class is the elastix base class for all Metrics.
Definition: elxMetricBase.h:73
itk::SingleValuedCostFunction ITKBaseType
Definition: elxMetricBase.h:97
typename ElastixType::MovingImageType MovingImageType
Definition: elxMetricBase.h:92
typename ElastixType::RegistrationBaseType RegistrationType
This class is a base class for any image sampler.
Base class for all ITK limiter function objects.
Computes the mutual information between two images to be registered using the method of Mattes et al.
typename ImageSamplerType::OutputVectorContainerPointer ImageSampleContainerPointer
typename ImageSamplerType::OutputVectorContainerType ImageSampleContainerType
typename MovingImageLimiterType::OutputType MovingImageLimiterOutputType
typename FixedImageLimiterType::OutputType FixedImageLimiterOutputType


Generated on 2023-01-13 for elastix by doxygen 1.9.6 elastix logo