template<class TFixedImage, class TMovingImage>
class itk::KNNGraphAlphaMutualInformationImageToImageMetric< TFixedImage, TMovingImage >
Computes similarity between two images to be registered.
This metric computes the alpha-Mutual Information (aMI) between two multi-channeled data sets. Said otherwise, given two sets of features, the aMI between them is calculated. Since for higher dimensional aMI it is infeasible to compute high dimensional joint histograms, here we adopt a framework based on the length of certain graphs, see Neemuchwala. Specifically, we use the k-Nearest Neighbour (kNN) graph, using an implementation provided by the Approximate Nearest Neighbour (ANN) software package.
Note that the feature image are given beforehand, and that values are calculated by interpolation on the transformed point. For some features, it would be better (but slower) to first apply the transform on the image and then recalculate the feature.
All the technical details can be found in:
M. Staring, U.A. van der Heide, S. Klein, M.A. Viergever and J.P.W. Pluim, "Registration of Cervical MRI Using Multifeature Mutual Information," IEEE Transactions on Medical Imaging, vol. 28, no. 9, pp. 1412 - 1421, September 2009.
Definition at line 74 of file itkKNNGraphAlphaMutualInformationImageToImageMetric.h.
|
using | ANNbdTreeType = ANNbdTree<ListSampleType> |
|
using | ANNBruteForceTreeType = ANNBruteForceTree<ListSampleType> |
|
using | ANNFixedRadiusTreeSearchType = ANNFixedRadiusTreeSearch<ListSampleType> |
|
using | ANNkDTreeType = ANNkDTree<ListSampleType> |
|
using | ANNPriorityTreeSearchType = ANNPriorityTreeSearch<ListSampleType> |
|
using | ANNStandardTreeSearchType = ANNStandardTreeSearch<ListSampleType> |
|
using | BinaryKNNTreePointer = typename BinaryKNNTreeType::Pointer |
|
using | BinaryKNNTreeSearchPointer = typename BinaryKNNTreeSearchType::Pointer |
|
using | BinaryKNNTreeSearchType = BinaryTreeSearchBase<ListSampleType> |
|
using | BinaryKNNTreeType = BinaryTreeBase<ListSampleType> |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DistanceArrayType = typename BinaryKNNTreeSearchType::DistanceArrayType |
|
using | FixedImageInterpolatorVectorType |
|
using | FixedImageMaskPointer |
|
using | FixedImageMaskType |
|
using | FixedImageMaskVectorType |
|
using | FixedImageRegionVectorType |
|
using | FixedImageVectorType |
|
using | IndexArrayType = typename BinaryKNNTreeSearchType::IndexArrayType |
|
using | InterpolatorVectorType |
|
using | ListSamplePointer = typename ListSampleType::Pointer |
|
using | ListSampleType = typename Statistics::ListSampleCArray<MeasurementVectorType, double> |
|
using | MeasurementVectorType = Array<double> |
|
using | MeasurementVectorValueType = typename MeasurementVectorType::ValueType |
|
using | MovingImageMaskPointer |
|
using | MovingImageMaskType |
|
using | MovingImageMaskVectorType |
|
using | MovingImageVectorType |
|
using | Pointer = SmartPointer<Self> |
|
using | Self = KNNGraphAlphaMutualInformationImageToImageMetric |
|
using | Superclass = MultiInputImageToImageMetricBase<TFixedImage, TMovingImage> |
|
using | TransformJacobianValueType = typename TransformJacobianType::ValueType |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | FixedImageInterpolatorPointer = typename FixedImageInterpolatorType::Pointer |
|
using | FixedImageInterpolatorType = InterpolateImageFunction<FixedImageType, CoordinateRepresentationType> |
|
using | FixedImageInterpolatorVectorType = std::vector<FixedImageInterpolatorPointer> |
|
using | FixedImageMaskConstPointer |
|
using | FixedImageMaskPointer |
|
using | FixedImageMaskType |
|
using | FixedImageMaskVectorType = std::vector<FixedImageMaskConstPointer> |
|
using | FixedImagePointer |
|
using | FixedImageRegionVectorType = std::vector<FixedImageRegionType> |
|
using | FixedImageVectorType = std::vector<FixedImageConstPointer> |
|
using | InterpolatorVectorType = std::vector<InterpolatorPointer> |
|
using | MovingImageMaskConstPointer |
|
using | MovingImageMaskPointer |
|
using | MovingImageMaskType |
|
using | MovingImageMaskVectorType = std::vector<MovingImageMaskConstPointer> |
|
using | MovingImagePointer |
|
using | MovingImageVectorType = std::vector<MovingImageConstPointer> |
|
using | Pointer = SmartPointer<Self> |
|
using | Self = MultiInputImageToImageMetricBase |
|
using | Superclass = AdvancedImageToImageMetric<TFixedImage, TMovingImage> |
|
using | AdvancedTransformType = AdvancedTransform<ScalarType, FixedImageDimension, MovingImageDimension> |
|
using | BSplineOrder1TransformPointer = typename BSplineOrder1TransformType::Pointer |
|
using | BSplineOrder1TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 1> |
|
using | BSplineOrder2TransformPointer = typename BSplineOrder2TransformType::Pointer |
|
using | BSplineOrder2TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 2> |
|
using | BSplineOrder3TransformPointer = typename BSplineOrder3TransformType::Pointer |
|
using | BSplineOrder3TransformType = AdvancedBSplineDeformableTransform<ScalarType, FixedImageDimension, 3> |
|
using | CombinationTransformType = AdvancedCombinationTransform<ScalarType, FixedImageDimension> |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DerivativeValueType = typename DerivativeType::ValueType |
|
using | FixedImageLimiterOutputType = typename FixedImageLimiterType::OutputType |
|
using | FixedImageLimiterPointer = typename FixedImageLimiterType::Pointer |
|
using | FixedImageLimiterType = LimiterFunctionBase<RealType, FixedImageDimension> |
|
using | FixedImageMaskConstPointer = SmartPointer<const FixedImageMaskType> |
|
using | FixedImageMaskPointer = SmartPointer<FixedImageMaskType> |
|
using | FixedImageMaskType = ImageMaskSpatialObject<Self::FixedImageDimension> |
|
using | FixedImagePixelType = typename FixedImageType::PixelType |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | ImageSampleContainerPointer = typename ImageSamplerType::OutputVectorContainerPointer |
|
using | ImageSampleContainerType = typename ImageSamplerType::OutputVectorContainerType |
|
using | ImageSamplerPointer = typename ImageSamplerType::Pointer |
|
using | ImageSamplerType = ImageSamplerBase<FixedImageType> |
|
using | MovingImageDerivativeScalesType = FixedArray<double, Self::MovingImageDimension> |
|
using | MovingImageLimiterOutputType = typename MovingImageLimiterType::OutputType |
|
using | MovingImageLimiterPointer = typename MovingImageLimiterType::Pointer |
|
using | MovingImageLimiterType = LimiterFunctionBase<RealType, MovingImageDimension> |
|
using | MovingImageMaskConstPointer = SmartPointer<const MovingImageMaskType> |
|
using | MovingImageMaskPointer = SmartPointer<MovingImageMaskType> |
|
using | MovingImageMaskType = ImageMaskSpatialObject<Self::MovingImageDimension> |
|
using | MovingImagePointer = typename MovingImageType::Pointer |
|
using | MovingImageRegionType = typename MovingImageType::RegionType |
|
using | NumberOfParametersType = typename AdvancedTransformType::NumberOfParametersType |
|
using | Pointer = SmartPointer<Self> |
|
using | ScalarType = typename TransformType::ScalarType |
|
using | Self = AdvancedImageToImageMetric |
|
using | Superclass = ImageToImageMetric<TFixedImage, TMovingImage> |
|
using | ThreadInfoType = MultiThreaderBase::WorkUnitInfo |
|
|
virtual const double & | GetAlpha () |
|
virtual const double & | GetAvoidDivisionBy () |
|
virtual const char * | GetClassName () const |
|
void | GetDerivative (const TransformParametersType ¶meters, DerivativeType &Derivative) const override |
|
MeasureType | GetValue (const TransformParametersType ¶meters) const override |
|
void | GetValueAndDerivative (const TransformParametersType ¶meters, MeasureType &Value, DerivativeType &Derivative) const override |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (KNNGraphAlphaMutualInformationImageToImageMetric) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, FixedImageType::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, MovingImageType::ImageDimension) |
|
virtual void | SetAlpha (double _arg) |
|
void | SetANNbdTree (unsigned int bucketSize, std::string splittingRule, std::string shrinkingRule) |
|
void | SetANNbdTree (unsigned int bucketSize, std::string splittingRuleFixed, std::string splittingRuleMoving, std::string splittingRuleJoint, std::string shrinkingRuleFixed, std::string shrinkingRuleMoving, std::string shrinkingRuleJoint) |
|
void | SetANNBruteForceTree () |
|
void | SetANNFixedRadiusTreeSearch (unsigned int kNearestNeighbors, double errorBound, double squaredRadius) |
|
void | SetANNkDTree (unsigned int bucketSize, std::string splittingRule) |
|
void | SetANNkDTree (unsigned int bucketSize, std::string splittingRuleFixed, std::string splittingRuleMoving, std::string splittingRuleJoint) |
|
void | SetANNPriorityTreeSearch (unsigned int kNearestNeighbors, double errorBound) |
|
void | SetANNStandardTreeSearch (unsigned int kNearestNeighbors, double errorBound) |
|
virtual void | SetAvoidDivisionBy (double _arg) |
|
const FixedImageType * | GetFixedImage () const override |
|
virtual const FixedImageType * | GetFixedImage (unsigned int pos) const |
|
virtual FixedImageInterpolatorType * | GetFixedImageInterpolator () const |
|
virtual FixedImageInterpolatorType * | GetFixedImageInterpolator (unsigned int pos) const |
|
const FixedImageMaskType * | GetFixedImageMask () const override |
|
virtual const FixedImageMaskType * | GetFixedImageMask (unsigned int pos) const |
|
const FixedImageRegionType & | GetFixedImageRegion () const override |
|
virtual const FixedImageRegionType & | GetFixedImageRegion (unsigned int pos) const |
|
const InterpolatorType * | GetInterpolator () const override |
|
InterpolatorType * | GetInterpolator () override |
|
virtual InterpolatorType * | GetInterpolator (unsigned int pos) const |
|
virtual bool | GetInterpolatorsAreBSpline () const |
|
const MovingImageType * | GetMovingImage () const override |
|
virtual const MovingImageType * | GetMovingImage (unsigned int pos) const |
|
const MovingImageMaskType * | GetMovingImageMask () const override |
|
virtual const MovingImageMaskType * | GetMovingImageMask (unsigned int pos) const |
|
virtual unsigned int | GetNumberOfFixedImageInterpolators () const |
|
virtual unsigned int | GetNumberOfFixedImageMasks () const |
|
virtual unsigned int | GetNumberOfFixedImageRegions () const |
|
virtual unsigned int | GetNumberOfFixedImages () const |
|
virtual unsigned int | GetNumberOfInterpolators () const |
|
virtual unsigned int | GetNumberOfMovingImageMasks () const |
|
virtual unsigned int | GetNumberOfMovingImages () const |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (MultiInputImageToImageMetricBase) |
|
| itkSetNumberOfMacro (FixedImage) |
|
| itkSetNumberOfMacro (FixedImageInterpolator) |
|
| itkSetNumberOfMacro (FixedImageMask) |
|
| itkSetNumberOfMacro (FixedImageRegion) |
|
| itkSetNumberOfMacro (Interpolator) |
|
| itkSetNumberOfMacro (MovingImage) |
|
| itkSetNumberOfMacro (MovingImageMask) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, TFixedImage::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, TMovingImage::ImageDimension) |
|
void | SetFixedImage (const FixedImageType *_arg) override |
|
virtual void | SetFixedImage (const FixedImageType *_arg, unsigned int pos) |
|
virtual void | SetFixedImageInterpolator (FixedImageInterpolatorType *_arg) |
|
virtual void | SetFixedImageInterpolator (FixedImageInterpolatorType *_arg, unsigned int pos) |
|
void | SetFixedImageMask (const FixedImageMaskType *_arg) override |
|
virtual void | SetFixedImageMask (const FixedImageMaskType *_arg, unsigned int pos) |
|
void | SetFixedImageRegion (const FixedImageRegionType _arg) override |
|
virtual void | SetFixedImageRegion (const FixedImageRegionType _arg, unsigned int pos) |
|
void | SetInterpolator (InterpolatorType *_arg) override |
|
virtual void | SetInterpolator (InterpolatorType *_arg, unsigned int pos) |
|
void | SetMovingImage (const MovingImageType *_arg) override |
|
virtual void | SetMovingImage (const MovingImageType *_arg, unsigned int pos) |
|
void | SetMovingImageMask (const MovingImageMaskType *_arg) override |
|
virtual void | SetMovingImageMask (const MovingImageMaskType *_arg, unsigned int pos) |
|
virtual void | BeforeThreadedGetValueAndDerivative (const TransformParametersType ¶meters) const |
|
virtual const FixedImageLimiterType * | GetFixedImageLimiter () |
|
const FixedImageMaskType * | GetFixedImageMask () const override |
|
virtual double | GetFixedLimitRangeRatio () const |
|
ImageSamplerType * | GetImageSampler () const |
|
virtual const MovingImageDerivativeScalesType & | GetMovingImageDerivativeScales () |
|
virtual const MovingImageLimiterType * | GetMovingImageLimiter () |
|
const MovingImageMaskType * | GetMovingImageMask () const override |
|
virtual double | GetMovingLimitRangeRatio () const |
|
virtual double | GetRequiredRatioOfValidSamples () const |
|
virtual bool | GetScaleGradientWithRespectToMovingImageOrientation () const |
|
const AdvancedTransformType * | GetTransform () const override |
|
AdvancedTransformType * | GetTransform () override |
|
virtual bool | GetUseFixedImageLimiter () const |
|
virtual bool | GetUseImageSampler () const |
|
virtual const bool & | GetUseMetricSingleThreaded () |
|
virtual bool | GetUseMovingImageDerivativeScales () const |
|
virtual bool | GetUseMovingImageLimiter () const |
|
virtual const bool & | GetUseMultiThread () |
|
void | Initialize () override |
|
| ITK_DISALLOW_COPY_AND_MOVE (AdvancedImageToImageMetric) |
|
| itkStaticConstMacro (FixedImageDimension, unsigned int, TFixedImage::ImageDimension) |
|
| itkStaticConstMacro (MovingImageDimension, unsigned int, TMovingImage::ImageDimension) |
|
virtual void | SetFixedImageLimiter (FixedImageLimiterType *_arg) |
|
virtual void | SetFixedLimitRangeRatio (double _arg) |
|
virtual void | SetImageSampler (ImageSamplerType *_arg) |
|
virtual void | SetMovingImageDerivativeScales (MovingImageDerivativeScalesType _arg) |
|
virtual void | SetMovingImageLimiter (MovingImageLimiterType *_arg) |
|
virtual void | SetMovingLimitRangeRatio (double _arg) |
|
virtual void | SetRequiredRatioOfValidSamples (double _arg) |
|
virtual void | SetScaleGradientWithRespectToMovingImageOrientation (bool _arg) |
|
virtual void | SetTransform (AdvancedTransformType *arg) |
|
virtual void | SetUseMetricSingleThreaded (bool _arg) |
|
virtual void | SetUseMovingImageDerivativeScales (bool _arg) |
|
virtual void | SetUseMultiThread (bool _arg) |
|
virtual void | UseMetricSingleThreadedOff () |
|
virtual void | UseMetricSingleThreadedOn () |
|
virtual void | UseMultiThreadOff () |
|
virtual void | UseMultiThreadOn () |
|
|
| KNNGraphAlphaMutualInformationImageToImageMetric () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| ~KNNGraphAlphaMutualInformationImageToImageMetric () override=default |
|
virtual void | CheckForBSplineInterpolators () |
|
bool | EvaluateMovingImageValueAndDerivative (const MovingImagePointType &mappedPoint, RealType &movingImageValue, MovingImageDerivativeType *gradient) const override |
|
void | InitializeImageSampler () override |
|
bool | IsInsideMovingMask (const MovingImagePointType &mappedPoint) const override |
|
| MultiInputImageToImageMetricBase ()=default |
|
| ~MultiInputImageToImageMetricBase () override=default |
|
| AdvancedImageToImageMetric () |
|
virtual void | AfterThreadedGetValue (MeasureType &) const |
|
virtual void | AfterThreadedGetValueAndDerivative (MeasureType &, DerivativeType &) const |
|
void | CheckForAdvancedTransform () |
|
void | CheckForBSplineInterpolator () |
|
void | CheckForBSplineTransform () const |
|
void | CheckNumberOfSamples (unsigned long wanted, unsigned long found) const |
|
bool | EvaluateTransformJacobian (const FixedImagePointType &fixedImagePoint, TransformJacobianType &jacobian, NonZeroJacobianIndicesType &nzji) const |
|
virtual void | EvaluateTransformJacobianInnerProduct (const TransformJacobianType &jacobian, const MovingImageDerivativeType &movingImageDerivative, DerivativeType &imageJacobian) const |
|
bool | FastEvaluateMovingImageValueAndDerivative (const MovingImagePointType &mappedPoint, RealType &movingImageValue, MovingImageDerivativeType *gradient, const ThreadIdType threadId) const |
|
void | InitializeLimiters () |
|
virtual void | InitializeThreadingParameters () const |
|
| itkAlignedTypedef (ITK_CACHE_LINE_ALIGNMENT, PaddedGetValueAndDerivativePerThreadStruct, AlignedGetValueAndDerivativePerThreadStruct) |
|
| itkPadStruct (ITK_CACHE_LINE_ALIGNMENT, GetValueAndDerivativePerThreadStruct, PaddedGetValueAndDerivativePerThreadStruct) |
|
void | LaunchGetValueAndDerivativeThreaderCallback () const |
|
void | LaunchGetValueThreaderCallback () const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | SetFixedImageMask (const typename Superclass::FixedImageMaskType *) final |
|
void | SetFixedImageMask (typename Superclass::FixedImageMaskType *) final |
|
void | SetMovingImageMask (const typename Superclass::MovingImageMaskType *) final |
|
void | SetMovingImageMask (typename Superclass::MovingImageMaskType *) final |
|
virtual void | SetUseFixedImageLimiter (bool _arg) |
|
virtual void | SetUseImageSampler (bool _arg) |
|
virtual void | SetUseMovingImageLimiter (bool _arg) |
|
virtual void | ThreadedGetValue (ThreadIdType) const |
|
virtual void | ThreadedGetValueAndDerivative (ThreadIdType) const |
|
MovingImagePointType | TransformPoint (const FixedImagePointType &fixedImagePoint) const |
|
| ~AdvancedImageToImageMetric () override=default |
|