18 #ifndef itkMattesMutualInformationImageToImageMetricv4_h
19 #define itkMattesMutualInformationImageToImageMetricv4_h
97 template <
typename TFixedImage,
98 typename TMovingImage,
99 typename TVirtualImage = TFixedImage,
100 typename TInternalComputationValueType = double,
101 typename TMetricTraits =
102 DefaultImageToImageMetricTraitsv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType>>
104 :
public ImageToImageMetricv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits>
148 static constexpr
typename TVirtualImage::ImageDimensionType VirtualImageDimension = TVirtualImage::ImageDimension;
149 static constexpr
typename TFixedImage::ImageDimensionType FixedImageDimension = TFixedImage::ImageDimension;
150 static constexpr
typename TMovingImage::ImageDimensionType MovingImageDimension = TMovingImage::ImageDimension;
158 itkGetConstReferenceMacro(NumberOfHistogramBins,
SizeValueType);
162 Initialize()
override;
180 if (this->m_ThreaderJointPDF.empty())
184 return this->m_ThreaderJointPDF[0];
194 const typename JointPDFDerivativesType::Pointer
197 return this->m_JointPDFDerivatives;
212 ThreadedIndexedContainerPartitioner,
217 ThreadedImageRegionPartitioner<Superclass::VirtualImageDimension>,
226 PrintSelf(std::ostream & os, Indent indent) const override;
244 GetValueCommonAfterThreadedExecution();
247 ComputeSingleFixedImageParzenWindowIndex(const FixedImagePixelType & value) const;
301 Initialize(
size_t maxBufferLength,
302 const size_t cachedNumberOfLocalParameters,
303 std::mutex * parentDerivativeLockPtr,
318 return this->m_CachedNumberOfLocalParameters;
326 CheckAndReduceIfNecessary();
338 m_BufferOffsetContainer[m_CurrentFillSize] = offset;
339 PDFValueType * PDFBufferForWriting = m_BufferPDFValuesContainer[m_CurrentFillSize];
341 return PDFBufferForWriting;
353 size_t m_CurrentFillSize{ 0 };
381 ComputeResults()
const;
386 #ifndef ITK_MANUAL_INSTANTIATION
387 # include "itkMattesMutualInformationImageToImageMetricv4.hxx"