19 #ifndef itkJointHistogramMutualInformationImageToImageMetricv4_h
20 #define itkJointHistogramMutualInformationImageToImageMetricv4_h
43 template <
typename TFixedImage,
44 typename TMovingImage,
45 typename TVirtualImage = TFixedImage,
46 typename TInternalComputationValueType = double,
47 typename TMetricTraits =
48 DefaultImageToImageMetricTraitsv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType>>
50 :
public ImageToImageMetricv4<TFixedImage, TMovingImage, TVirtualImage, TInternalComputationValueType, TMetricTraits>
69 using typename Superclass::CoordinateRepresentationType;
77 using typename Superclass::ParametersType;
78 using typename Superclass::ParametersValueType;
79 using typename Superclass::NumberOfParametersType;
82 using typename Superclass::MeasureType;
83 using typename Superclass::DerivativeType;
84 using typename Superclass::FixedImagePointType;
85 using typename Superclass::FixedImagePixelType;
87 using typename Superclass::MovingImagePointType;
88 using typename Superclass::MovingImagePixelType;
95 using typename Superclass::VirtualIndexType;
96 using typename Superclass::VirtualPointType;
97 using typename Superclass::VirtualPointSetType;
100 static constexpr
typename TVirtualImage::ImageDimensionType VirtualImageDimension = TVirtualImage::ImageDimension;
101 static constexpr
typename TMovingImage::ImageDimensionType MovingImageDimension = TMovingImage::ImageDimension;
142 itkGetConstReferenceMacro(NumberOfHistogramBins,
SizeValueType);
146 itkSetMacro(VarianceForJointPDFSmoothing, TInternalComputationValueType);
147 itkGetMacro(VarianceForJointPDFSmoothing, TInternalComputationValueType);
152 Initialize()
override;
155 GetValue()
const override;
165 InitializeForIteration()
const override;
169 ComputeValue()
const;
183 ThreadedImageRegionPartitioner<Self::VirtualImageDimension>,
194 m_JointHistogramMutualInformationDenseComputeJointPDFThreader;
196 m_JointHistogramMutualInformationSparseComputeJointPDFThreader;
199 ThreadedImageRegionPartitioner<Superclass::VirtualImageDimension>,
208 ThreadedImageRegionPartitioner<Superclass::VirtualImageDimension>,
216 PrintSelf(std::ostream & os, Indent indent) const override;
232 TInternalComputationValueType m_VarianceForJointPDFSmoothing{};
236 TInternalComputationValueType m_FixedImageTrueMin{};
237 TInternalComputationValueType m_FixedImageTrueMax{};
238 TInternalComputationValueType m_MovingImageTrueMin{};
239 TInternalComputationValueType m_MovingImageTrueMax{};
240 TInternalComputationValueType m_FixedImageBinSize{};
241 TInternalComputationValueType m_MovingImageBinSize{};
243 TInternalComputationValueType m_JointPDFSum{};
246 TInternalComputationValueType m_Log2{};
252 #ifndef ITK_MANUAL_INSTANTIATION
253 # include "itkJointHistogramMutualInformationImageToImageMetricv4.hxx"