template<typename TPointSet>
class itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >
Implementation of the Jensen Havrda Charvat Tsallis Point Set metric.
Given a specified transform and direction, this class calculates the value and derivative between a "fixed" and "moving" point set pair using the Havrda-Charvat-Tsallis entropy family, a generalization of the well-known Shannon entropy, and the Jensen divergence. Another way to look at the family of information-theoretic measures is that the points are used to construct the corresponding probably density functions.
In addition, we allow the user to invoke a manifold parzen windowing of the data. Instead of an isotropic Gaussian being associated with each point, we can actually calculate the covariance matrix for each point such that it reflects the locate point set structure.
To speed up the metric calculation, we use ITK's K-d tree to query the metric value only for a given neighborhood. Considering that probably only a small subset of points is needed to get a good approximation of the metric value for a single point, this is probably warranted. So what we do is transform each point (with the specified transform) and construct the k-d tree from the transformed points.
Contributed by Nicholas J. Tustison, James C. Gee in the Insight Journal paper: http://hdl.handle.net/1926/1524
- Note
- The original work reported in Tustison et al. 2011 optionally employed a regularization term to prevent the moving point set(s) from coalescing to a single point location. However, within the registration framework, this term is of limited utility as such regularization is dictated by the transform and any explicit regularization terms. Also note that the published work applies to multiple points sets each of which could be considered "moving" but this is also not applicable for this particular implementation.
- REFERENCE
N.J. Tustison, S. P. Awate, G. Song, T. S. Cook, and J. C. Gee. "Point set registration using Havrda-Charvat-Tsallis entropy measures" IEEE Transactions on Medical Imaging, 30(2):451-60, 2011.
Definition at line 71 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
|
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef Superclass::CoordRepType | CoordRepType |
| |
typedef
DensityFunctionType::Pointer | DensityFunctionPointer |
| |
typedef
ManifoldParzenWindowsPointSetFunction
< PointSetType, RealType > | DensityFunctionType |
| |
| typedef Superclass::DerivativeType | DerivativeType |
| |
typedef
Superclass::DerivativeValueType | DerivativeValueType |
| |
typedef
Superclass::FixedTransformJacobianType | FixedTransformJacobianType |
| |
typedef
DensityFunctionType::GaussianType | GaussianType |
| |
| typedef Superclass::JacobianType | JacobianType |
| |
typedef
Superclass::LocalDerivativeType | LocalDerivativeType |
| |
| typedef Superclass::MeasureType | MeasureType |
| |
typedef
Superclass::MovingTransformJacobianType | MovingTransformJacobianType |
| |
typedef
Superclass::NeighborsIdentifierType | NeighborsIdentifierType |
| |
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
| |
| typedef Superclass::PixelType | PixelType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
| typedef Superclass::PointIdentifier | PointIdentifier |
| |
typedef
PointSetType::PointsContainer | PointsContainer |
| |
typedef
PointsContainer::ConstIterator | PointsContainerConstIterator |
| |
| typedef TPointSet | PointSetType |
| |
| typedef Superclass::PointType | PointType |
| |
| typedef MeasureType | RealType |
| |
typedef
JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 | Self |
| |
typedef
PointSetToPointSetMetricv4
< TPointSet, TPointSet > | Superclass |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef PointType::CoordRepType | CoordRepType |
| |
| typedef Superclass::DerivativeType | DerivativeType |
| |
| typedef DerivativeType::ValueType | DerivativeValueType |
| |
| typedef Superclass::DimensionType | DimensionType |
| |
typedef
Superclass::MovingDisplacementFieldTransformType | DisplacementFieldTransformType |
| |
typedef
Superclass::FixedInputPointType | FixedInputPointType |
| |
typedef
Superclass::FixedOutputPointType | FixedOutputPointType |
| |
| typedef TPointSet::PixelType | FixedPixelType |
| |
| typedef TPointSet::PointsContainer | FixedPointsContainer |
| |
| typedef TPointSet | FixedPointSetType |
| |
| typedef TPointSet::PointType | FixedPointType |
| |
typedef PointSet
< FixedPixelType,
itkGetStaticConstMacro(PointDimension)> | FixedTransformedPointSetType |
| |
typedef
Superclass::FixedTransformJacobianType | FixedTransformJacobianType |
| |
typedef
Superclass::FixedTransformParametersType | FixedTransformParametersType |
| |
typedef
Superclass::FixedTransformPointer | FixedTransformPointer |
| |
typedef
Superclass::FixedTransformType | FixedTransformType |
| |
| typedef Superclass::JacobianType | JacobianType |
| |
typedef FixedArray
< DerivativeValueType,
itkGetStaticConstMacro(PointDimension)> | LocalDerivativeType |
| |
| typedef Superclass::MeasureType | MeasureType |
| |
typedef
Superclass::MovingInputPointType | MovingInputPointType |
| |
typedef
Superclass::MovingOutputPointType | MovingOutputPointType |
| |
| typedef TPointSet::PixelType | MovingPixelType |
| |
| typedef TPointSet::PointsContainer | MovingPointsContainer |
| |
| typedef TPointSet | MovingPointSetType |
| |
| typedef TPointSet::PointType | MovingPointType |
| |
typedef PointSet
< MovingPixelType,
itkGetStaticConstMacro(PointDimension)> | MovingTransformedPointSetType |
| |
typedef
Superclass::MovingTransformJacobianType | MovingTransformJacobianType |
| |
typedef
Superclass::MovingTransformParametersType | MovingTransformParametersType |
| |
typedef
Superclass::MovingTransformPointer | MovingTransformPointer |
| |
typedef
Superclass::MovingTransformType | MovingTransformType |
| |
typedef
PointsLocatorType::NeighborsIdentifierType | NeighborsIdentifierType |
| |
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
| |
| typedef Superclass::ParametersType | ParametersType |
| |
typedef
Superclass::ParametersValueType | ParametersValueType |
| |
| typedef FixedPixelType | PixelType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
typedef
PointsContainer::ElementIdentifier | PointIdentifier |
| |
typedef
PointsContainer::ConstIterator | PointsConstIterator |
| |
| typedef FixedPointsContainer | PointsContainer |
| |
typedef PointsLocator
< PointsContainer > | PointsLocatorType |
| |
| typedef FixedPointType | PointType |
| |
| typedef PointSetToPointSetMetricv4 | Self |
| |
typedef ObjectToObjectMetric
< TPointSet::PointDimension,
TPointSet::PointDimension > | Superclass |
| |
typedef
Superclass::VirtualDirectionType | VirtualDirectionType |
| |
typedef
Superclass::VirtualImagePointer | VirtualImagePointer |
| |
typedef
Superclass::VirtualImageType | VirtualImageType |
| |
typedef
Superclass::VirtualIndexType | VirtualIndexType |
| |
typedef
Superclass::VirtualPointType | VirtualOriginType |
| |
typedef
Superclass::VirtualPixelType | VirtualPixelType |
| |
typedef
Superclass::VirtualPointSetPointer | VirtualPointSetPointer |
| |
typedef
Superclass::VirtualPointSetType | VirtualPointSetType |
| |
typedef
Superclass::VirtualPointType | VirtualPointType |
| |
| typedef Superclass::VirtualSizeType | VirtualRadiusType |
| |
typedef
Superclass::VirtualRegionType | VirtualRegionType |
| |
| typedef Superclass::VirtualSizeType | VirtualSizeType |
| |
typedef
Superclass::VirtualSpacingType | VirtualSpacingType |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef double | CoordinateRepresentationType |
| |
| typedef Superclass::DerivativeType | DerivativeType |
| |
typedef
Superclass::DerivativeValueType | DerivativeValueType |
| |
| typedef SizeValueType | DimensionType |
| |
typedef
FixedTransformType::InputPointType | FixedInputPointType |
| |
typedef
FixedTransformType::OutputPointType | FixedOutputPointType |
| |
typedef
FixedTransformType::JacobianType | FixedTransformJacobianType |
| |
typedef
FixedTransformType::ParametersType | FixedTransformParametersType |
| |
| typedef FixedTransformType::Pointer | FixedTransformPointer |
| |
typedef Transform< double,
Image< double, TFixedDimension >
::ImageDimension,
TFixedDimension > | FixedTransformType |
| |
typedef
Superclass::GradientSourceType | GradientSourceType |
| |
| typedef double | InternalComputationValueType |
| |
typedef
FixedTransformType::JacobianType | JacobianType |
| |
| typedef Superclass::MeasureType | MeasureType |
| |
typedef
DisplacementFieldTransform
< CoordinateRepresentationType,
itkGetStaticConstMacro(MovingDimension) > | MovingDisplacementFieldTransformType |
| |
typedef
MovingTransformType::InputPointType | MovingInputPointType |
| |
typedef
MovingTransformType::OutputPointType | MovingOutputPointType |
| |
typedef
MovingTransformType::JacobianType | MovingTransformJacobianType |
| |
typedef
MovingTransformType::ParametersType | MovingTransformParametersType |
| |
typedef
MovingTransformType::Pointer | MovingTransformPointer |
| |
typedef Transform< double,
Image< double, TFixedDimension >
::ImageDimension,
TMovingDimension > | MovingTransformType |
| |
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
| |
| typedef Superclass::ParametersType | ParametersType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
| typedef ObjectToObjectMetric | Self |
| |
typedef
ObjectToObjectMetricBaseTemplate
< double > | Superclass |
| |
typedef
VirtualImageType::DirectionType | VirtualDirectionType |
| |
typedef
VirtualImageType::ConstPointer | VirtualImageConstPointer |
| |
| typedef VirtualImageType::Pointer | VirtualImagePointer |
| |
typedef Image< double,
TFixedDimension > | VirtualImageType |
| |
| typedef VirtualImageType::IndexType | VirtualIndexType |
| |
| typedef VirtualImageType::PointType | VirtualOriginType |
| |
| typedef VirtualImageType::PixelType | VirtualPixelType |
| |
typedef
VirtualPointSetType::Pointer | VirtualPointSetPointer |
| |
typedef PointSet
< VirtualPixelType,
itkGetStaticConstMacro(VirtualDimension)> | VirtualPointSetType |
| |
| typedef VirtualImageType::PointType | VirtualPointType |
| |
| typedef VirtualImageType::SizeType | VirtualRadiusType |
| |
typedef
VirtualImageType::RegionType | VirtualRegionType |
| |
| typedef VirtualRegionType::SizeType | VirtualSizeType |
| |
typedef
VirtualImageType::SpacingType | VirtualSpacingType |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef double | CoordinateRepresentationType |
| |
| typedef Superclass::DerivativeType | DerivativeType |
| |
| typedef DerivativeType::ValueType | DerivativeValueType |
| |
| enum | GradientSourceType |
| |
| typedef Superclass::MeasureType | MeasureType |
| |
| typedef unsigned int | NumberOfParametersType |
| |
| typedef Superclass::ParametersType | ParametersType |
| |
| typedef double | ParametersValueType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
typedef
ObjectToObjectMetricBaseTemplate | Self |
| |
typedef
SingleValuedCostFunctionv4Template
< double > | Superclass |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef Array< double > | DerivativeType |
| |
| typedef double | MeasureType |
| |
| typedef Superclass::ParametersType | ParametersType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
typedef
SingleValuedCostFunctionv4Template | Self |
| |
typedef CostFunctionTemplate
< double > | Superclass |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
typedef OptimizerParameters
< double > | ParametersType |
| |
| typedef double | ParametersValueType |
| |
| typedef SmartPointer< Self > | Pointer |
| |
| typedef CostFunctionTemplate | Self |
| |
| typedef Object | Superclass |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef SmartPointer< Self > | Pointer |
| |
| typedef Object | Self |
| |
| typedef LightObject | Superclass |
| |
| typedef SmartPointer< const Self > | ConstPointer |
| |
| typedef SmartPointer< Self > | Pointer |
| |
| typedef LightObject | Self |
| |
|
| virtual ::itk::LightObject::Pointer | Clone (void) const |
| |
| virtual RealType | GetAlpha () const |
| |
| virtual unsigned int | GetCovarianceKNeighborhood () const |
| |
| virtual unsigned int | GetEvaluationKNeighborhood () const |
| |
| virtual RealType | GetKernelSigma () const |
| |
| virtual MeasureType | GetLocalNeighborhoodValue (const PointType &point, const PixelType &pixel=0) const |
| |
| virtual void | GetLocalNeighborhoodValueAndDerivative (const PointType &, MeasureType &, LocalDerivativeType &, const PixelType &pixel=0) const |
| |
| virtual const char * | GetNameOfClass () const |
| |
| virtual RealType | GetPointSetSigma () const |
| |
| virtual bool | GetUseAnisotropicCovariances () const |
| |
| virtual void | Initialize (void) throw ( ExceptionObject ) |
| |
| virtual void | SetAlpha (RealType _arg) |
| |
| virtual void | SetCovarianceKNeighborhood (unsigned int _arg) |
| |
| virtual void | SetEvaluationKNeighborhood (unsigned int _arg) |
| |
| virtual void | SetKernelSigma (RealType _arg) |
| |
| virtual void | SetPointSetSigma (RealType _arg) |
| |
| virtual void | SetUseAnisotropicCovariances (bool _arg) |
| |
| virtual void | UseAnisotropicCovariancesOff () |
| |
| virtual void | UseAnisotropicCovariancesOn () |
| |
| virtual void | GetDerivative (DerivativeType &) const |
| |
virtual const
FixedTransformedPointSetType * | GetFixedTransformedPointSet () const |
| |
| virtual LocalDerivativeType | GetLocalNeighborhoodDerivative (const PointType &, const PixelType &pixel=0) const |
| |
| virtual MeasureType | GetLocalNeighborhoodValue (const PointType &, const PixelType &pixel=0) const =0 |
| |
| virtual void | GetLocalNeighborhoodValueAndDerivative (const PointType &, MeasureType &, LocalDerivativeType &, const PixelType &pixel=0) const =0 |
| |
virtual
FixedTransformedPointSetType * | GetModifiableFixedTransformedPointSet () |
| |
virtual
MovingTransformedPointSetType * | GetModifiableMovingTransformedPointSet () |
| |
virtual const
MovingTransformedPointSetType * | GetMovingTransformedPointSet () const |
| |
| SizeValueType | GetNumberOfComponents () const |
| |
| virtual MeasureType | GetValue () const |
| |
| virtual void | GetValueAndDerivative (MeasureType &, DerivativeType &) const |
| |
| const VirtualPointSetType * | GetVirtualTransformedPointSet (void) const |
| |
| virtual void | SetMovingPointSet (const MovingPointSetType *_arg) |
| |
| virtual bool | SupportsArbitraryVirtualDomainSamples (void) const |
| |
| virtual void | SetFixedPointSet (const FixedPointSetType *_arg) |
| |
| virtual const FixedPointSetType * | GetFixedPointSet () const |
| |
| OffsetValueType | ComputeParameterOffsetFromVirtualIndex (const VirtualIndexType &index, const NumberOfParametersType &numberOfLocalParameters) const |
| |
| OffsetValueType | ComputeParameterOffsetFromVirtualPoint (const VirtualPointType &point, const NumberOfParametersType &numberOfLocalParameters) const |
| |
| virtual const FixedTransformType * | GetFixedTransform () const |
| |
| virtual FixedTransformType * | GetModifiableFixedTransform () |
| |
| virtual MovingTransformType * | GetModifiableMovingTransform () |
| |
| virtual VirtualImageType * | GetModifiableVirtualImage () |
| |
| virtual const MovingTransformType * | GetMovingTransform () const |
| |
| virtual NumberOfParametersType | GetNumberOfLocalParameters () const |
| |
| virtual NumberOfParametersType | GetNumberOfParameters () const |
| |
| virtual SizeValueType | GetNumberOfValidPoints () const |
| |
| virtual const ParametersType & | GetParameters () const |
| |
| const MovingTransformType * | GetTransform () |
| |
| VirtualDirectionType | GetVirtualDirection (void) const |
| |
| virtual const TimeStamp & | GetVirtualDomainTimeStamp (void) const |
| |
| virtual const VirtualImageType * | GetVirtualImage () const |
| |
| VirtualOriginType | GetVirtualOrigin (void) const |
| |
| const VirtualRegionType & | GetVirtualRegion (void) const |
| |
| VirtualSpacingType | GetVirtualSpacing (void) const |
| |
| virtual bool | HasLocalSupport () const |
| |
| virtual void | SetFixedTransform (FixedTransformType *_arg) |
| |
| virtual void | SetMovingTransform (MovingTransformType *_arg) |
| |
| virtual void | SetParameters (ParametersType ¶ms) |
| |
| void | SetTransform (MovingTransformType *transform) |
| |
| void | SetVirtualDomain (const VirtualSpacingType &spacing, const VirtualOriginType &origin, const VirtualDirectionType &direction, const VirtualRegionType ®ion) |
| |
| virtual void | UpdateTransformParameters (const DerivativeType &derivative, doublefactor) |
| |
| void | SetVirtualDomainFromImage (VirtualImageType *virtualImage) |
| |
| void | SetVirtualDomainFromImage (const VirtualImageType *virtualImage) |
| |
| bool | IsInsideVirtualDomain (const VirtualPointType &point) const |
| |
| bool | IsInsideVirtualDomain (const VirtualIndexType &index) const |
| |
| MeasureType | GetCurrentValue () const |
| |
| virtual GradientSourceType | GetGradientSource () const |
| |
| bool | GetGradientSourceIncludesFixed () const |
| |
| bool | GetGradientSourceIncludesMoving () const |
| |
| virtual void | SetGradientSource (GradientSourceType _arg) |
| |
| virtual void | GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const =0 |
| |
| unsigned long | AddObserver (const EventObject &event, Command *) |
| |
| unsigned long | AddObserver (const EventObject &event, Command *) const |
| |
| virtual LightObject::Pointer | CreateAnother () const |
| |
| virtual void | DebugOff () const |
| |
| virtual void | DebugOn () const |
| |
| Command * | GetCommand (unsigned long tag) |
| |
| bool | GetDebug () const |
| |
| MetaDataDictionary & | GetMetaDataDictionary (void) |
| |
| const MetaDataDictionary & | GetMetaDataDictionary (void) const |
| |
| virtual ModifiedTimeType | GetMTime () const |
| |
| virtual const TimeStamp & | GetTimeStamp () const |
| |
| bool | HasObserver (const EventObject &event) const |
| |
| void | InvokeEvent (const EventObject &) |
| |
| void | InvokeEvent (const EventObject &) const |
| |
| virtual void | Modified () const |
| |
| virtual void | Register () const |
| |
| void | RemoveAllObservers () |
| |
| void | RemoveObserver (unsigned long tag) |
| |
| void | SetDebug (bool debugFlag) const |
| |
| void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
| |
| virtual void | SetReferenceCount (int) |
| |
| virtual void | UnRegister () const |
| |
| virtual void | SetObjectName (std::string _arg) |
| |
| virtual const std::string & | GetObjectName () |
| |
| virtual void | Delete () |
| |
| virtual int | GetReferenceCount () const |
| |
| | itkCloneMacro (Self) |
| |
| void | Print (std::ostream &os, Indent indent=0) const |
| |
|
| void | ComputeValueAndDerivative (const PointType &samplePoint, MeasureType &value, LocalDerivativeType &derivativeReturn, bool calcValue, bool calcDerivative) const |
| |
| virtual void | InitializeForIteration (void) const |
| |
| | JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 () |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const |
| |
| | ~JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 () |
| |
| virtual SizeValueType | CalculateNumberOfValidFixedPoints (void) const |
| |
| void | CalculateValueAndDerivative (MeasureType &value, DerivativeType &derivative, bool calculateValue) const |
| |
| virtual void | InitializePointSets (void) const |
| |
| void | InitializePointsLocators () const |
| |
| | PointSetToPointSetMetricv4 () |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const |
| |
| void | StorePointDerivative (const VirtualPointType &, const DerivativeType &, DerivativeType &) const |
| |
| void | TransformFixedAndCreateVirtualPointSet () const |
| |
| void | TransformMovingPointSet () const |
| |
| virtual | ~PointSetToPointSetMetricv4 () |
| |
const
MovingDisplacementFieldTransformType * | GetMovingDisplacementFieldTransform () const |
| |
| | ObjectToObjectMetric () |
| |
| bool | TransformPhysicalPointToVirtualIndex (const VirtualPointType &, VirtualIndexType &) const |
| |
| void | TransformVirtualIndexToPhysicalPoint (const VirtualIndexType &, VirtualPointType &) const |
| |
| virtual void | VerifyDisplacementFieldSizeAndPhysicalSpace () |
| |
| bool | VerifyNumberOfValidPoints (MeasureType &value, DerivativeType &derivative) const |
| |
| virtual | ~ObjectToObjectMetric () |
| |
| | ObjectToObjectMetricBaseTemplate () |
| |
| virtual | ~ObjectToObjectMetricBaseTemplate () |
| |
| | SingleValuedCostFunctionv4Template () |
| |
| virtual | ~SingleValuedCostFunctionv4Template () |
| |
| | CostFunctionTemplate () |
| |
| virtual | ~CostFunctionTemplate () |
| |
| | Object () |
| |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| |
| virtual void | SetTimeStamp (const TimeStamp &time) |
| |
| virtual | ~Object () |
| |
| virtual LightObject::Pointer | InternalClone () const |
| |
| | LightObject () |
| |
| virtual void | PrintHeader (std::ostream &os, Indent indent) const |
| |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
| |
| virtual | ~LightObject () |
| |