18 #ifndef itkMattesMutualInformationImageToImageMetricv4GetValueAndDerivativeThreader_h
19 #define itkMattesMutualInformationImageToImageMetricv4GetValueAndDerivativeThreader_h
34 template <
typename TDomainPartitioner,
typename TImageToImageMetric,
typename TMattesMutualInformationMetric>
51 using typename Superclass::DomainType;
52 using typename Superclass::AssociateType;
55 using typename Superclass::VirtualPointType;
56 using typename Superclass::VirtualIndexType;
57 using typename Superclass::FixedImagePointType;
58 using typename Superclass::FixedImageIndexType;
59 using typename Superclass::FixedImagePixelType;
60 using typename Superclass::FixedImageGradientType;
61 using typename Superclass::MovingImagePointType;
62 using typename Superclass::MovingImagePixelType;
63 using typename Superclass::MovingImageGradientType;
64 using typename Superclass::MeasureType;
65 using typename Superclass::DerivativeType;
66 using typename Superclass::DerivativeValueType;
67 using typename Superclass::NumberOfParametersType;
71 using PDFValueType =
typename TMattesMutualInformationMetric::PDFValueType;
72 using JointPDFType =
typename TMattesMutualInformationMetric::JointPDFType;
85 typename TMattesMutualInformationMetric::CubicBSplineDerivativeFunctionType;
87 using JacobianType =
typename TMattesMutualInformationMetric::JacobianType;
91 : m_MattesAssociate(nullptr)
95 BeforeThreadedExecution()
override;
98 AfterThreadedExecution()
override;
104 ProcessPoint(
const VirtualIndexType & virtualIndex,
105 const VirtualPointType & virtualPoint,
106 const FixedImagePointType & mappedFixedPoint,
107 const FixedImagePixelType & fixedImageValue,
108 const FixedImageGradientType & mappedFixedImageGradient,
109 const MovingImagePointType & mappedMovingPoint,
110 const MovingImagePixelType & movingImageValue,
111 const MovingImageGradientType & movingImageGradient,
112 MeasureType & metricValueReturn,
113 DerivativeType & localDerivativeReturn,
118 ComputePDFDerivativesLocalSupportTransform(
const JacobianType & jacobian,
119 const MovingImageGradientType & movingImageGradient,
120 const PDFValueType & cubicBSplineDerivativeValue,
121 DerivativeValueType * localSupportDerivativeResultPtr)
const;
126 TMattesMutualInformationMetric * m_MattesAssociate{};
131 #ifndef ITK_MANUAL_INSTANTIATION
132 # include "itkMattesMutualInformationImageToImageMetricv4GetValueAndDerivativeThreader.hxx"