18 #ifndef itkMattesMutualInformationImageToImageMetric_h
19 #define itkMattesMutualInformationImageToImageMetric_h
115 template <
typename TFixedImage,
typename TMovingImage>
159 static constexpr
unsigned int MovingImageDimension = MovingImageType::ImageDimension;
169 Initialize()
override;
192 itkGetConstReferenceMacro(NumberOfHistogramBins,
SizeValueType);
219 itkSetMacro(UseExplicitPDFDerivatives,
bool);
220 itkGetConstReferenceMacro(UseExplicitPDFDerivatives,
bool);
221 itkBooleanMacro(UseExplicitPDFDerivatives);
239 if (this->m_MMIMetricPerThreadVariables ==
nullptr)
243 return this->m_MMIMetricPerThreadVariables[0].JointPDF;
253 const typename JointPDFDerivativesType::Pointer
256 if (this->m_MMIMetricPerThreadVariables ==
nullptr)
260 return this->m_MMIMetricPerThreadVariables[0].JointPDFDerivatives;
268 PrintSelf(std::ostream & os,
Indent indent)
const override;
291 unsigned int sampleNumber,
297 GetValueThreadPreProcess(
ThreadIdType threadId,
bool withinSampleThread)
const override;
299 GetValueThreadPostProcess(
ThreadIdType threadId,
bool withinSampleThread)
const override;
305 double movingImageValue)
const override;
308 GetValueAndDerivativeThreadPreProcess(
ThreadIdType threadId,
bool withinSampleThread)
const override;
310 GetValueAndDerivativeThreadPostProcess(
ThreadIdType threadId,
bool withinSampleThread)
const override;
313 GetValueAndDerivativeThreadProcessSample(
ThreadIdType threadId,
316 double movingImageValue,
363 #if !defined(ITK_WRAPPING_PARSER)
365 itkAlignedTypedef(ITK_CACHE_LINE_ALIGNMENT, PaddedMMIMetricPerThreadStruct, AlignedMMIMetricPerThreadStruct);
374 bool m_UseExplicitPDFDerivatives{
true };
375 mutable bool m_ImplicitDerivativesSecondPass{
false };
379 #ifndef ITK_MANUAL_INSTANTIATION
380 # include "itkMattesMutualInformationImageToImageMetric.hxx"