33#ifndef itkGradientDifferenceImageToImageMetric2_h
34#define itkGradientDifferenceImageToImageMetric2_h
38#include "itkSobelOperator.h"
39#include "itkNeighborhoodOperatorImageFilter.h"
41#include "itkCastImageFilter.h"
42#include "itkResampleImageFilter.h"
43#include "itkOptimizer.h"
73template <
class TFixedImage,
class TMovingImage>
95#if defined(_MSC_VER) && (_MSC_VER == 1300)
98 using typename Superclass::RealType;
101 using typename Superclass::TransformType;
103 using typename Superclass::TransformPointer;
104 using typename Superclass::TransformParametersType;
105 using typename Superclass::TransformJacobianType;
106 using typename Superclass::InterpolatorType;
108 using typename Superclass::MeasureType;
109 using typename Superclass::DerivativeType;
110 using typename Superclass::FixedImageType;
111 using typename Superclass::MovingImageType;
112 using typename Superclass::FixedImageConstPointer;
113 using typename Superclass::MovingImageConstPointer;
139 GetDerivative(
const TransformParametersType & parameters, DerivativeType & derivative)
const override;
143 GetValue(
const TransformParametersType & parameters)
const override;
149 DerivativeType & derivative)
const override;
164 itkSetMacro(DerivativeDelta,
double);
165 itkGetConstReferenceMacro(DerivativeDelta,
double);
171 PrintSelf(std::ostream & os, Indent indent)
const override;
183 ComputeMeasure(
const TransformParametersType & parameters,
const double * subtractionFactor)
const;
185 using FixedSobelFilter = NeighborhoodOperatorImageFilter<FixedGradientImageType, FixedGradientImageType>;
187 using MovedSobelFilter = NeighborhoodOperatorImageFilter<MovedGradientImageType, MovedGradientImageType>;
207 SobelOperator<FixedGradientPixelType, Self::FixedImageDimension> m_FixedSobelOperators[FixedImageDimension];
209 typename FixedSobelFilter::Pointer m_FixedSobelFilters[Self::FixedImageDimension];
217 SobelOperator<MovedGradientPixelType, Self::MovedImageDimension> m_MovedSobelOperators[MovedImageDimension];
219 typename MovedSobelFilter::Pointer m_MovedSobelFilters[Self::MovedImageDimension];
229#ifndef ITK_MANUAL_INSTANTIATION
230# include "itkGradientDifferenceImageToImageMetric2.hxx"
An extension of the ITK ImageToImageMetric. It is the intended base class for all elastix metrics.
Projective interpolation of an image at specified positions.
Computes similarity between two objects to be registered.
void GetValueAndDerivative(const TransformParametersType ¶meters, MeasureType &Value, DerivativeType &derivative) const override
CastMovedImageFilterPointer m_CastMovedImageFilter
itkStaticConstMacro(FixedImageDimension, unsigned int, FixedImageType::ImageDimension)
CastFixedImageFilterPointer m_CastFixedImageFilter
void Initialize() override
typename TransformType::ScalarType ScalarType
typename TFixedImage::PixelType FixedImagePixelType
TransformMovingImageFilterType::Pointer m_TransformMovingImageFilter
GradientDifferenceImageToImageMetric()
~GradientDifferenceImageToImageMetric() override=default
CombinationTransformPointer m_CombinationTransform
typename TMovingImage::PixelType MovedImagePixelType
typename CastFixedImageFilterType::Pointer CastFixedImageFilterPointer
typename CombinationTransformType::Pointer CombinationTransformPointer
itkStaticConstMacro(MovedImageDimension, unsigned int, MovingImageType::ImageDimension)
itk::CastImageFilter< TransformedMovingImageType, MovedGradientImageType > CastMovedImageFilterType
NeighborhoodOperatorImageFilter< FixedGradientImageType, FixedGradientImageType > FixedSobelFilter
void PrintSelf(std::ostream &os, Indent indent) const override
typename itk::AdvancedCombinationTransform< ScalarType, FixedImageDimension > CombinationTransformType
typename Optimizer::ScalesType ScalesType
void WriteGradientImagesToFiles() const
ZeroFluxNeumannBoundaryCondition< FixedGradientImageType > m_FixedBoundCond
SmartPointer< const Self > ConstPointer
void ComputeMovedGradientRange() const
typename RayCastInterpolatorType::Pointer RayCastInterpolatorPointer
typename MovedGradientImageType::PixelType MovedGradientPixelType
void GetDerivative(const TransformParametersType ¶meters, DerivativeType &derivative) const override
itk::Image< RealType, Self::MovedImageDimension > MovedGradientImageType
typename InterpolatorType::Pointer InterpolatorPointer
typename MovingImageType::RegionType MovingImageRegionType
MeasureType GetValue(const TransformParametersType ¶meters) const override
NeighborhoodOperatorImageFilter< MovedGradientImageType, MovedGradientImageType > MovedSobelFilter
MeasureType ComputeMeasure(const TransformParametersType ¶meters, const double *subtractionFactor) const
ZeroFluxNeumannBoundaryCondition< MovedGradientImageType > m_MovedBoundCond
typename CastMovedImageFilterType::Pointer CastMovedImageFilterPointer
typename FixedGradientImageType::PixelType FixedGradientPixelType
void ComputeVariance() const
typename itk::AdvancedRayCastInterpolateImageFunction< MovingImageType, ScalarType > RayCastInterpolatorType
itk::CastImageFilter< FixedImageType, FixedGradientImageType > CastFixedImageFilterType
itk::Image< RealType, Self::FixedImageDimension > FixedGradientImageType
itk::ResampleImageFilter< MovingImageType, TransformedMovingImageType > TransformMovingImageFilterType
ITK_DISALLOW_COPY_AND_MOVE(GradientDifferenceImageToImageMetric)
itk::Image< FixedImagePixelType, Self::FixedImageDimension > TransformedMovingImageType