18#ifndef itkPatternIntensityImageToImageMetric_h
19#define itkPatternIntensityImageToImageMetric_h
24#include "itkCastImageFilter.h"
25#include "itkResampleImageFilter.h"
26#include "itkMultiplyImageFilter.h"
27#include "itkSubtractImageFilter.h"
28#include "itkOptimizer.h"
29#include "itkRescaleIntensityImageFilter.h"
44template <
class TFixedImage,
class TMovingImage>
64 using typename Superclass::CoordinateRepresentationType;
65 using typename Superclass::MovingImageType;
66 using typename Superclass::MovingImagePixelType;
68 using typename Superclass::MovingImageConstPointer;
69 using typename Superclass::FixedImageType;
70 using typename Superclass::FixedImageConstPointer;
71 using typename Superclass::FixedImageRegionType;
72 using typename Superclass::TransformType;
74 using typename Superclass::TransformPointer;
75 using typename Superclass::InputPointType;
76 using typename Superclass::OutputPointType;
77 using typename Superclass::TransformParametersType;
78 using typename Superclass::TransformJacobianType;
79 using typename Superclass::InterpolatorType;
80 using typename Superclass::InterpolatorPointer;
81 using typename Superclass::RealType;
82 using typename Superclass::GradientPixelType;
83 using typename Superclass::GradientImageType;
84 using typename Superclass::GradientImagePointer;
85 using typename Superclass::GradientImageFilterType;
86 using typename Superclass::GradientImageFilterPointer;
87 using typename Superclass::FixedImageMaskType;
88 using typename Superclass::FixedImageMaskPointer;
89 using typename Superclass::MovingImageMaskType;
90 using typename Superclass::MovingImageMaskPointer;
91 using typename Superclass::MeasureType;
92 using typename Superclass::DerivativeType;
93 using typename Superclass::ParametersType;
118 itk::RescaleIntensityImageFilter<TransformedMovingImageType, TransformedMovingImageType>;
122 itk::SubtractImageFilter<FixedImageType, TransformedMovingImageType, TransformedMovingImageType>;
125 itk::MultiplyImageFilter<TransformedMovingImageType, TransformedMovingImageType, TransformedMovingImageType>;
133 GetValue(
const TransformParametersType & parameters)
const override;
137 GetDerivative(
const TransformParametersType & parameters, DerivativeType & derivative)
const override;
143 DerivativeType & Derivative)
const override;
158 itkSetMacro(NoiseConstant,
double);
159 itkGetConstReferenceMacro(NoiseConstant,
double);
162 itkSetMacro(OptimizeNormalizationFactor,
bool);
163 itkGetConstReferenceMacro(OptimizeNormalizationFactor,
bool);
169 PrintSelf(std::ostream & os, Indent indent)
const override;
177 ComputePIDiff(
const TransformParametersType & parameters,
float scalingfactor)
const;
197#ifndef ITK_MANUAL_INSTANTIATION
198# include "itkPatternIntensityImageToImageMetric.hxx"
An extension of the ITK ImageToImageMetric. It is the intended base class for all elastix metrics.
typename ImageSamplerType::OutputVectorContainerPointer ImageSampleContainerPointer
typename MovingImageType::RegionType MovingImageRegionType
typename FixedImageType::PixelType FixedImagePixelType
typename ImageSamplerType::OutputVectorContainerType ImageSampleContainerType
typename MovingImageType::Pointer MovingImagePointer
typename MovingImageLimiterType::OutputType MovingImageLimiterOutputType
typename FixedImageLimiterType::OutputType FixedImageLimiterOutputType
typename ImageSamplerType::Pointer ImageSamplerPointer
Projective interpolation of an image at specified positions.
This class is a base class for any image sampler.
Base class for all ITK limiter function objects.
Computes similarity between two objects to be registered.
itkStaticConstMacro(MovingImageDimension, unsigned int, MovingImageType::ImageDimension)
PatternIntensityImageToImageMetric()
typename MultiplyImageFilterType::Pointer MultiplyImageFilterPointer
MeasureType m_FixedMeasure
MeasureType ComputePIDiff(const TransformParametersType ¶meters, float scalingfactor) const
~PatternIntensityImageToImageMetric() override=default
typename RescaleIntensityImageFilterType::Pointer RescaleIntensityImageFilterPointer
MultiplyImageFilterPointer m_MultiplyImageFilter
bool m_OptimizeNormalizationFactor
void GetValueAndDerivative(const TransformParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const override
typename CombinationTransformType::Pointer CombinationTransformPointer
CombinationTransformPointer m_CombinationTransform
typename DifferenceImageFilterType::Pointer DifferenceImageFilterPointer
typename itk::AdvancedRayCastInterpolateImageFunction< MovingImageType, ScalarType > RayCastInterpolatorType
itk::SubtractImageFilter< FixedImageType, TransformedMovingImageType, TransformedMovingImageType > DifferenceImageFilterType
unsigned int m_NeighborhoodRadius
void Initialize() override
TransformMovingImageFilterPointer m_TransformMovingImageFilter
itk::ResampleImageFilter< MovingImageType, TransformedMovingImageType > TransformMovingImageFilterType
itk::RescaleIntensityImageFilter< TransformedMovingImageType, TransformedMovingImageType > RescaleIntensityImageFilterType
itk::MultiplyImageFilter< TransformedMovingImageType, TransformedMovingImageType, TransformedMovingImageType > MultiplyImageFilterType
RescaleIntensityImageFilterPointer m_RescaleImageFilter
typename TransformType::ScalarType ScalarType
typename TransformMovingImageFilterType::Pointer TransformMovingImageFilterPointer
MeasureType GetValue(const TransformParametersType ¶meters) const override
MeasureType ComputePIFixed() const
ITK_DISALLOW_COPY_AND_MOVE(PatternIntensityImageToImageMetric)
DifferenceImageFilterPointer m_DifferenceImageFilter
typename Optimizer::ScalesType ScalesType
void GetDerivative(const TransformParametersType ¶meters, DerivativeType &derivative) const override
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
void PrintSelf(std::ostream &os, Indent indent) const override
itk::Image< FixedImagePixelType, Self::FixedImageDimension > TransformedMovingImageType
SmartPointer< const Self > ConstPointer
typename itk::AdvancedCombinationTransform< ScalarType, FixedImageDimension > CombinationTransformType
typename RayCastInterpolatorType::Pointer RayCastInterpolatorPointer
double m_NormalizationFactor