91 using typename Superclass::CoordinateRepresentationType;
92 using typename Superclass::MovingImageType;
93 using typename Superclass::MovingImagePixelType;
94 using typename Superclass::MovingImageConstPointer;
95 using typename Superclass::FixedImageType;
96 using typename Superclass::FixedImageConstPointer;
97 using typename Superclass::FixedImageRegionType;
98 using typename Superclass::TransformType;
99 using typename Superclass::TransformPointer;
100 using typename Superclass::InputPointType;
101 using typename Superclass::OutputPointType;
102 using typename Superclass::TransformParametersType;
103 using typename Superclass::TransformJacobianType;
104 using typename Superclass::InterpolatorType;
105 using typename Superclass::InterpolatorPointer;
106 using typename Superclass::RealType;
107 using typename Superclass::GradientPixelType;
108 using typename Superclass::GradientImageType;
109 using typename Superclass::GradientImagePointer;
114 using typename Superclass::MeasureType;
115 using typename Superclass::DerivativeType;
117 using typename Superclass::ParametersType;
151 GetDerivative(
const ParametersType & parameters, DerivativeType & Derivative)
const override;
161 DerivativeType & derivative)
const override;
169 itkSetClampMacro(NumberOfFixedHistogramBins,
unsigned long, 4, NumericTraits<unsigned long>::max());
170 itkGetConstMacro(NumberOfFixedHistogramBins,
unsigned long);
178 itkSetClampMacro(NumberOfMovingHistogramBins,
unsigned long, 4, NumericTraits<unsigned long>::max());
179 itkGetConstMacro(NumberOfMovingHistogramBins,
unsigned long);
182 itkSetClampMacro(FixedKernelBSplineOrder,
unsigned int, 0, 3);
183 itkGetConstMacro(FixedKernelBSplineOrder,
unsigned int);
186 itkSetClampMacro(MovingKernelBSplineOrder,
unsigned int, 0, 3);
187 itkGetConstMacro(MovingKernelBSplineOrder,
unsigned int);
192 itkSetMacro(UseExplicitPDFDerivatives,
bool);
193 itkGetConstReferenceMacro(UseExplicitPDFDerivatives,
bool);
194 itkBooleanMacro(UseExplicitPDFDerivatives);
199 itkSetMacro(UseDerivative,
bool);
200 itkGetConstMacro(UseDerivative,
bool);
205 itkSetMacro(UseFiniteDifferenceDerivative,
bool);
206 itkGetConstMacro(UseFiniteDifferenceDerivative,
bool);
212 itkSetMacro(FiniteDifferencePerturbation,
double);
213 itkGetConstMacro(FiniteDifferencePerturbation,
double);
224 PrintSelf(std::ostream & os, Indent indent)
const override;
268 mutable double m_Alpha{ 0.0 };
269 mutable DerivativeType m_PerturbedAlphaRight{};
270 mutable DerivativeType m_PerturbedAlphaLeft{};
284 double m_MovingImageNormalizedMin{ 0.0 };
285 double m_FixedImageNormalizedMin{ 0.0 };
286 double m_FixedImageBinSize{ 0.0 };
287 double m_MovingImageBinSize{ 0.0 };
288 double m_FixedParzenTermToIndexOffset{ 0.5 };
289 double m_MovingParzenTermToIndexOffset{ -1.0 };
309 static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION
332 const RealType movingImageValue,
333 const DerivativeType * imageJacobian,
349 RealType movingImageValue,
350 RealType movingMaskValue,
351 const DerivativeType & movingImageValuesRight,
352 const DerivativeType & movingImageValuesLeft,
353 const DerivativeType & movingMaskValuesRight,
354 const DerivativeType & movingMaskValuesLeft,
365 const DerivativeType & imageJacobian,
456 MeasureType & itkNotUsed(value),
457 DerivativeType & itkNotUsed(derivative))
const
466 MeasureType & itkNotUsed(value),
467 DerivativeType & itkNotUsed(derivative))
const
472 mutable std::vector<JointPDFPointer> m_ThreaderJointPDFs{};
490 PaddedParzenWindowHistogramGetValueAndDerivativePerThreadStruct);
492 PaddedParzenWindowHistogramGetValueAndDerivativePerThreadStruct,
493 AlignedParzenWindowHistogramGetValueAndDerivativePerThreadStruct);
494 mutable std::vector<AlignedParzenWindowHistogramGetValueAndDerivativePerThreadStruct>
498 unsigned long m_NumberOfFixedHistogramBins{ 32 };
499 unsigned long m_NumberOfMovingHistogramBins{ 32 };
500 unsigned int m_FixedKernelBSplineOrder{ 0 };
501 unsigned int m_MovingKernelBSplineOrder{ 3 };
502 bool m_UseDerivative{
false };
503 bool m_UseExplicitPDFDerivatives{
true };
504 bool m_UseFiniteDifferenceDerivative{
false };
505 double m_FiniteDifferencePerturbation{ 1.0 };