template<typename TPointSet, class TInternalComputationValueType = double>
class itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet, TInternalComputationValueType >
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: https://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,
TInternalComputationValueType > | 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::ObjectType | ObjectType |
|
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,
Image
< TInternalComputationValueType,
TPointSet::PointDimension >
, TInternalComputationValueType > | 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
TInternalComputationValueType | 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
< TInternalComputationValueType,
Image
< TInternalComputationValueType,
TPointSet::PointDimension >
::ImageDimension,
TFixedDimension > | FixedTransformType |
|
typedef
Superclass::GradientSourceType | GradientSourceType |
|
typedef
TInternalComputationValueType | InternalComputationValueType |
|
typedef
FixedTransformType::JacobianType | JacobianType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef
Superclass::MetricCategoryType | MetricCategoryType |
|
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
< TInternalComputationValueType,
Image
< TInternalComputationValueType,
TPointSet::PointDimension >
::ImageDimension,
TMovingDimension > | MovingTransformType |
|
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::Object | ObjectType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ObjectToObjectMetric | Self |
|
typedef
ObjectToObjectMetricBaseTemplate
< TInternalComputationValueType > | Superclass |
|
typedef
VirtualImageType::DirectionType | VirtualDirectionType |
|
typedef
VirtualImageType::ConstPointer | VirtualImageConstPointer |
|
typedef VirtualImageType::Pointer | VirtualImagePointer |
|
typedef Image
< TInternalComputationValueType,
TPointSet::PointDimension > | 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
TInternalComputationValueType | CoordinateRepresentationType |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
enum | GradientSourceType {
GRADIENT_SOURCE_FIXED =0,
GRADIENT_SOURCE_MOVING,
GRADIENT_SOURCE_BOTH
} |
|
typedef Superclass::MeasureType | MeasureType |
|
enum | MetricCategoryType {
UNKNOWN_METRIC = 0,
OBJECT_METRIC = 1,
IMAGE_METRIC = 2,
POINT_SET_METRIC = 3,
MULTI_METRIC = 4
} |
|
typedef unsigned int | NumberOfParametersType |
|
typedef ObjectType::ConstPointer | ObjectConstPointer |
|
typedef Object | ObjectType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
TInternalComputationValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
ObjectToObjectMetricBaseTemplate | Self |
|
typedef
SingleValuedCostFunctionv4Template
< TInternalComputationValueType > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Array
< TInternalComputationValueType > | DerivativeType |
|
typedef
TInternalComputationValueType | MeasureType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
SingleValuedCostFunctionv4Template | Self |
|
typedef CostFunctionTemplate
< TInternalComputationValueType > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef OptimizerParameters
< TInternalComputationValueType > | ParametersType |
|
typedef
TInternalComputationValueType | 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 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 override |
|
virtual void | GetLocalNeighborhoodValueAndDerivative (const PointType &, MeasureType &, LocalDerivativeType &, const PixelType &pixel=0) const override |
|
virtual const char * | GetNameOfClass () const |
|
virtual RealType | GetPointSetSigma () const |
|
virtual bool | GetUseAnisotropicCovariances () const |
|
virtual void | Initialize (void) override |
|
virtual LightObject::Pointer | InternalClone () const override |
|
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 override |
|
virtual const
FixedTransformedPointSetType * | GetFixedTransformedPointSet () const |
|
virtual LocalDerivativeType | GetLocalNeighborhoodDerivative (const PointType &, const PixelType &pixel) const |
|
virtual MeasureType | GetLocalNeighborhoodValue (const PointType &, const PixelType &pixel) const =0 |
|
virtual void | GetLocalNeighborhoodValueAndDerivative (const PointType &, MeasureType &, LocalDerivativeType &, const PixelType &pixel) const =0 |
|
virtual
FixedTransformedPointSetType * | GetModifiableFixedTransformedPointSet () |
|
virtual
MovingTransformedPointSetType * | GetModifiableMovingTransformedPointSet () |
|
virtual const
MovingTransformedPointSetType * | GetMovingTransformedPointSet () const |
|
SizeValueType | GetNumberOfComponents () const |
|
virtual MeasureType | GetValue () const override |
|
virtual void | GetValueAndDerivative (MeasureType &, DerivativeType &) const override |
|
const VirtualPointSetType * | GetVirtualTransformedPointSet () const |
|
virtual bool | SupportsArbitraryVirtualDomainSamples (void) const override |
|
virtual void | SetFixedObject (const ObjectType *object) override |
|
virtual void | SetMovingObject (const ObjectType *object) override |
|
virtual void | SetFixedPointSet (const FixedPointSetType *_arg) |
|
virtual const FixedPointSetType * | GetFixedPointSet () const |
|
virtual void | SetMovingPointSet (const MovingPointSetType *_arg) |
|
virtual const MovingPointSetType * | GetMovingPointSet () const |
|
virtual void | SetStoreDerivativeAsSparseFieldForLocalSupportTransforms (bool _arg) |
|
virtual bool | GetStoreDerivativeAsSparseFieldForLocalSupportTransforms () const |
|
virtual void | StoreDerivativeAsSparseFieldForLocalSupportTransformsOn () |
|
virtual void | StoreDerivativeAsSparseFieldForLocalSupportTransformsOff () |
|
virtual void | SetCalculateValueAndDerivativeInTangentSpace (bool _arg) |
|
virtual bool | GetCalculateValueAndDerivativeInTangentSpace () const |
|
virtual void | CalculateValueAndDerivativeInTangentSpaceOn () |
|
virtual void | CalculateValueAndDerivativeInTangentSpaceOff () |
|
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 override |
|
virtual NumberOfParametersType | GetNumberOfParameters () const override |
|
virtual SizeValueType | GetNumberOfValidPoints () const |
|
virtual const ParametersType & | GetParameters () const override |
|
const MovingTransformType * | GetTransform () |
|
VirtualDirectionType | GetVirtualDirection () const |
|
virtual const TimeStamp & | GetVirtualDomainTimeStamp () const |
|
virtual const VirtualImageType * | GetVirtualImage () const |
|
VirtualOriginType | GetVirtualOrigin () const |
|
const VirtualRegionType & | GetVirtualRegion () const |
|
VirtualSpacingType | GetVirtualSpacing () const |
|
virtual bool | HasLocalSupport () const override |
|
virtual void | SetFixedTransform (FixedTransformType *_arg) |
|
virtual void | SetMovingTransform (MovingTransformType *_arg) |
|
virtual void | SetParameters (ParametersType ¶ms) override |
|
void | SetTransform (MovingTransformType *transform) |
|
void | SetVirtualDomain (const VirtualSpacingType &spacing, const VirtualOriginType &origin, const VirtualDirectionType &direction, const VirtualRegionType ®ion) |
|
void | SetVirtualDomainFromImage (const VirtualImageType *virtualImage) |
|
virtual void | UpdateTransformParameters (const DerivativeType &derivative, TInternalComputationValueTypefactor) override |
|
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 | GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const override=0 |
|
virtual void | SetGradientSource (GradientSourceType _arg) |
|
virtual const ObjectType * | GetFixedObject () const |
|
virtual const ObjectType * | GetMovingObject () const |
|
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 override |
|
virtual void | DebugOff () const |
|
virtual void | DebugOn () const |
|
Command * | GetCommand (unsigned long tag) |
|
bool | GetDebug () const |
|
MetaDataDictionary & | GetMetaDataDictionary () |
|
const MetaDataDictionary & | GetMetaDataDictionary () 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 override |
|
void | RemoveAllObservers () |
|
void | RemoveObserver (unsigned long tag) |
|
void | SetDebug (bool debugFlag) const |
|
void | SetMetaDataDictionary (const MetaDataDictionary &rhs) |
|
virtual void | SetReferenceCount (int) override |
|
virtual void | UnRegister () const noexceptoverride |
|
virtual void | SetObjectName (std::string _arg) |
|
virtual const std::string & | GetObjectName () const |
|
virtual void | Delete () |
|
virtual int | GetReferenceCount () const |
|
| itkCloneMacro (Self) |
|
void | Print (std::ostream &os, Indent indent=0) const |
|