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 | DerivativeValueType = typename DerivativeType::ValueType |
|
using | DistanceArrayType = typename BinaryKNNTreeSearchType::DistanceArrayType |
|
using | FixedImageInterpolatorVectorType = std::vector< FixedImageInterpolatorPointer > |
|
using | FixedImageMaskVectorType = std::vector< FixedImageMaskPointer > |
|
using | FixedImageRegionVectorType = std::vector< FixedImageRegionType > |
|
using | FixedImageVectorType = std::vector< FixedImageConstPointer > |
|
using | IndexArrayType = typename BinaryKNNTreeSearchType::IndexArrayType |
|
using | InterpolatorVectorType = std::vector< InterpolatorPointer > |
|
using | ListSamplePointer = typename ListSampleType::Pointer |
|
using | ListSampleType = typename Statistics::ListSampleCArray< MeasurementVectorType, double > |
|
using | MeasurementVectorType = Array< double > |
|
using | MeasurementVectorValueType = typename MeasurementVectorType::ValueType |
|
using | MovingImageMaskVectorType = std::vector< MovingImageMaskPointer > |
|
using | MovingImageVectorType = std::vector< MovingImageConstPointer > |
|
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 | FixedImageMaskVectorType = std::vector< FixedImageMaskPointer > |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | FixedImageRegionVectorType = std::vector< FixedImageRegionType > |
|
using | FixedImageVectorType = std::vector< FixedImageConstPointer > |
|
using | InterpolatorVectorType = std::vector< InterpolatorPointer > |
|
using | MovingImageMaskVectorType = std::vector< MovingImageMaskPointer > |
|
using | MovingImagePointer = typename MovingImageType::Pointer |
|
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 | FixedImageMaskSpatialObject2Type = ImageMaskSpatialObject< Self::FixedImageDimension > |
|
using | FixedImagePixelType = typename FixedImageType::PixelType |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | HessianType = vnl_sparse_matrix< HessianValueType > |
|
using | HessianValueType = typename DerivativeType::ValueType |
|
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 | MovingImageMaskSpatialObject2Type = 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 | ThreaderType = itk::PlatformMultiThreader |
|
using | ThreadInfoType = typename ThreaderType::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) |
|
virtual const char * | GetClassName () const |
|
const FixedImageType * | GetFixedImage () const override |
|
virtual const FixedImageType * | GetFixedImage (unsigned int pos) const |
|
virtual FixedImageInterpolatorType * | GetFixedImageInterpolator () const |
|
virtual FixedImageInterpolatorType * | GetFixedImageInterpolator (unsigned int pos) const |
|
FixedImageMaskType * | GetFixedImageMask () const override |
|
virtual FixedImageMaskType * | GetFixedImageMask (unsigned int pos) const |
|
const FixedImageRegionType & | GetFixedImageRegion () const override |
|
virtual const FixedImageRegionType & | GetFixedImageRegion (unsigned int pos) const |
|
InterpolatorType * | GetInterpolator () const 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 |
|
MovingImageMaskType * | GetMovingImageMask () const override |
|
virtual 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 (FixedImageMaskType *_arg) override |
|
virtual void | SetFixedImageMask (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 (MovingImageMaskType *_arg) override |
|
virtual void | SetMovingImageMask (MovingImageMaskType *_arg, unsigned int pos) |
|
virtual void | BeforeThreadedGetValueAndDerivative (const TransformParametersType ¶meters) const |
|
virtual const char * | GetClassName () const |
|
virtual const FixedImageLimiterType * | GetFixedImageLimiter () |
|
virtual double | GetFixedLimitRangeRatio () const |
|
virtual ImageSamplerType * | GetImageSampler () const |
|
virtual const MovingImageDerivativeScalesType & | GetMovingImageDerivativeScales () |
|
virtual const MovingImageLimiterType * | GetMovingImageLimiter () |
|
virtual double | GetMovingLimitRangeRatio () const |
|
virtual double | GetRequiredRatioOfValidSamples () const |
|
virtual bool | GetScaleGradientWithRespectToMovingImageOrientation () const |
|
virtual void | GetSelfHessian (const TransformParametersType ¶meters, HessianType &H) const |
|
const AdvancedTransformType * | GetTransform () const 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 | SetNumberOfWorkUnits (ThreadIdType numberOfThreads) |
|
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 &value) const |
|
virtual void | AfterThreadedGetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const |
|
virtual void | CheckForAdvancedTransform () |
|
virtual void | CheckForBSplineInterpolator () |
|
virtual void | CheckForBSplineTransform () const |
|
virtual void | CheckNumberOfSamples (unsigned long wanted, unsigned long found) const |
|
virtual bool | EvaluateMovingImageValueAndDerivative (const MovingImagePointType &mappedPoint, RealType &movingImageValue, MovingImageDerivativeType *gradient) const |
|
virtual 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 |
|
virtual void | InitializeImageSampler () |
|
virtual void | InitializeLimiters () |
|
virtual void | InitializeThreadingParameters () const |
|
virtual bool | IsInsideMovingMask (const MovingImagePointType &point) const |
|
| itkAlignedTypedef (ITK_CACHE_LINE_ALIGNMENT, PaddedGetValueAndDerivativePerThreadStruct, AlignedGetValueAndDerivativePerThreadStruct) |
|
| itkAlignedTypedef (ITK_CACHE_LINE_ALIGNMENT, PaddedGetValuePerThreadStruct, AlignedGetValuePerThreadStruct) |
|
| itkPadStruct (ITK_CACHE_LINE_ALIGNMENT, GetValueAndDerivativePerThreadStruct, PaddedGetValueAndDerivativePerThreadStruct) |
|
| itkPadStruct (ITK_CACHE_LINE_ALIGNMENT, GetValuePerThreadStruct, PaddedGetValuePerThreadStruct) |
|
void | LaunchGetValueAndDerivativeThreaderCallback () const |
|
void | LaunchGetValueThreaderCallback () const |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | SetUseFixedImageLimiter (bool _arg) |
|
virtual void | SetUseImageSampler (bool _arg) |
|
virtual void | SetUseMovingImageLimiter (bool _arg) |
|
virtual void | ThreadedGetValue (ThreadIdType threadID) |
|
virtual void | ThreadedGetValueAndDerivative (ThreadIdType threadID) |
|
MovingImagePointType | TransformPoint (const FixedImagePointType &fixedImagePoint) const |
|
| ~AdvancedImageToImageMetric () override=default |
|
|
using | BSplineInterpolatorPointer = typename BSplineInterpolatorType::Pointer |
|
using | BSplineInterpolatorType = BSplineInterpolateImageFunction< MovingImageType, CoordinateRepresentationType, double > |
|
using | BSplineInterpolatorVectorType = std::vector< BSplineInterpolatorPointer > |
|
using | MovingImageContinuousIndexType = typename InterpolatorType::ContinuousIndexType |
|
using | MovingImageDerivativeType = typename BSplineInterpolatorType::CovariantVectorType |
|
using | MovingImageIndexType = typename MovingImageType::IndexType |
|
using | MovingImagePointType = typename TransformType::OutputPointType |
|
using | BSplineInterpolatorFloatPointer = typename BSplineInterpolatorFloatType::Pointer |
|
using | BSplineInterpolatorFloatType = BSplineInterpolateImageFunction< MovingImageType, CoordinateRepresentationType, float > |
|
using | BSplineInterpolatorPointer = typename BSplineInterpolatorType::Pointer |
|
using | BSplineInterpolatorType = BSplineInterpolateImageFunction< MovingImageType, CoordinateRepresentationType, double > |
|
using | CentralDifferenceGradientFilterPointer = typename CentralDifferenceGradientFilterType::Pointer |
|
using | CentralDifferenceGradientFilterType = GradientImageFilter< MovingImageType, RealType, RealType > |
|
using | FixedImageIndexType = typename FixedImageType::IndexType |
|
using | FixedImageIndexValueType = typename FixedImageIndexType::IndexValueType |
|
using | FixedImagePointType = typename TransformType::InputPointType |
|
using | LinearInterpolatorPointer = typename LinearInterpolatorType::Pointer |
|
using | LinearInterpolatorType = AdvancedLinearInterpolateImageFunction< MovingImageType, CoordinateRepresentationType > |
|
using | MovingImageContinuousIndexType = typename InterpolatorType::ContinuousIndexType |
|
using | MovingImageDerivativeType = typename BSplineInterpolatorType::CovariantVectorType |
|
using | MovingImageIndexType = typename MovingImageType::IndexType |
|
using | MovingImagePointType = typename TransformType::OutputPointType |
|
using | NonZeroJacobianIndicesType = typename AdvancedTransformType::NonZeroJacobianIndicesType |
|
using | ReducedBSplineInterpolatorPointer = typename ReducedBSplineInterpolatorType::Pointer |
|
using | ReducedBSplineInterpolatorType = ReducedDimensionBSplineInterpolateImageFunction< MovingImageType, CoordinateRepresentationType, double > |
|
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION | AccumulateDerivativesThreaderCallback (void *arg) |
|
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION | GetValueAndDerivativeThreaderCallback (void *arg) |
|
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION | GetValueThreaderCallback (void *arg) |
|