ITK  6.0.0
Insight Toolkit
itkMeanSquaresImageToImageMetricv4.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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 * https://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 itkMeanSquaresImageToImageMetricv4_h
19#define itkMeanSquaresImageToImageMetricv4_h
20
24
25namespace itk
26{
27
40template <typename TFixedImage,
41 typename TMovingImage,
42 typename TVirtualImage = TFixedImage,
43 typename TInternalComputationValueType = double,
44 typename TMetricTraits =
45 DefaultImageToImageMetricTraitsv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType>>
46class ITK_TEMPLATE_EXPORT MeanSquaresImageToImageMetricv4
47 : public ImageToImageMetricv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits>
48{
49public:
50 ITK_DISALLOW_COPY_AND_MOVE(MeanSquaresImageToImageMetricv4);
51
54 using Superclass =
58
60 itkNewMacro(Self);
61
63 itkOverrideGetNameOfClassMacro(MeanSquaresImageToImageMetricv4);
64
65 using typename Superclass::DerivativeType;
66
67 using typename Superclass::FixedImagePointType;
68 using typename Superclass::FixedImagePixelType;
69 using typename Superclass::FixedImageGradientType;
70
71 using typename Superclass::MovingImagePointType;
72 using typename Superclass::MovingImagePixelType;
73 using typename Superclass::MovingImageGradientType;
74
75 using typename Superclass::MovingTransformType;
76 using typename Superclass::JacobianType;
77 using VirtualImageType = typename Superclass::VirtualImageType;
78 using typename Superclass::VirtualIndexType;
79 using typename Superclass::VirtualPointType;
80 using typename Superclass::VirtualPointSetType;
81
82 /* Image dimension accessors */
83 static constexpr typename TVirtualImage::ImageDimensionType VirtualImageDimension = TVirtualImage::ImageDimension;
84 static constexpr typename TFixedImage::ImageDimensionType FixedImageDimension = TFixedImage::ImageDimension;
85 static constexpr typename TMovingImage::ImageDimensionType MovingImageDimension = TMovingImage::ImageDimension;
86
87protected:
90
92 ThreadedImageRegionPartitioner<Superclass::VirtualImageDimension>,
94 Self>;
95 friend class MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader<ThreadedIndexedContainerPartitioner,
96 Superclass,
97 Self>;
100 ThreadedImageRegionPartitioner<Superclass::VirtualImageDimension>,
101 Superclass,
102 Self>;
104 MeanSquaresImageToImageMetricv4GetValueAndDerivativeThreader<ThreadedIndexedContainerPartitioner, Superclass, Self>;
105
106 void
107 PrintSelf(std::ostream & os, Indent indent) const override;
108};
109
110} // end namespace itk
111
112#ifndef ITK_MANUAL_INSTANTIATION
113# include "itkMeanSquaresImageToImageMetricv4.hxx"
114#endif
115
116#endif
Light weight base class for most itk classes.
Class implementing a mean squares metric.
typename Superclass::VirtualImageType VirtualImageType
Class for partitioning of an ImageRegion.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....