template<class 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
< PointIdentifier,
itkGetStaticConstMacro(PointDimension),
CoordRepType, 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
Superclass::ParametersValueType | 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
< ParametersValueType, Image
< typename
ObjectToObjectMetricBase::ParametersValueType,
TFixedDimension >
::ImageDimension,
TFixedDimension > | FixedTransformType |
|
typedef
Superclass::InternalComputationValueType | 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
< ParametersValueType, Image
< typename
ObjectToObjectMetricBase::ParametersValueType,
TFixedDimension >
::ImageDimension,
TMovingDimension > | MovingTransformType |
|
typedef
Superclass::NumberOfParametersType | NumberOfParametersType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ObjectToObjectMetric | Self |
|
typedef ObjectToObjectMetricBase | Superclass |
|
typedef
VirtualImageType::DirectionType | VirtualDirectionType |
|
typedef
VirtualImageType::ConstPointer | VirtualImageConstPointer |
|
typedef VirtualImageType::Pointer | VirtualImagePointer |
|
typedef Image< typename
ObjectToObjectMetricBase::ParametersValueType,
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
Superclass::ParametersValueType | CoordinateRepresentationType |
|
typedef Superclass::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
enum | GradientSourceType {
GRADIENT_SOURCE_FIXED =0,
GRADIENT_SOURCE_MOVING,
GRADIENT_SOURCE_BOTH
} |
|
typedef double | InternalComputationValueType |
|
typedef Superclass::MeasureType | MeasureType |
|
typedef unsigned int | NumberOfParametersType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ObjectToObjectMetricBase | Self |
|
typedef SingleValuedCostFunctionv4 | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef Array
< ParametersValueType > | DerivativeType |
|
typedef double | MeasureType |
|
typedef Superclass::ParametersType | ParametersType |
|
typedef
Superclass::ParametersValueType | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef SingleValuedCostFunctionv4 | Self |
|
typedef CostFunction | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef OptimizerParameters
< ParametersValueType > | ParametersType |
|
typedef double | ParametersValueType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef CostFunction | 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 FixedPointSetType * | GetFixedPointSet () |
|
virtual const
FixedTransformedPointSetType * | GetFixedTransformedPointSet () |
|
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 const MovingPointSetType * | GetMovingPointSet () |
|
virtual const
MovingTransformedPointSetType * | GetMovingTransformedPointSet () |
|
SizeValueType | GetNumberOfComponents () const |
|
virtual MeasureType | GetValue () const |
|
virtual void | GetValueAndDerivative (MeasureType &, DerivativeType &) const |
|
const VirtualPointSetType * | GetVirtualTransformedPointSet () |
|
virtual void | SetFixedPointSet (const FixedPointSetType *_arg) |
|
virtual void | SetMovingPointSet (MovingPointSetType *_arg) |
|
virtual bool | SupportsArbitraryVirtualDomainSamples (void) const |
|
OffsetValueType | ComputeParameterOffsetFromVirtualIndex (const VirtualIndexType &index, const NumberOfParametersType &numberOfLocalParameters) const |
|
OffsetValueType | ComputeParameterOffsetFromVirtualPoint (const VirtualPointType &point, const NumberOfParametersType &numberOfLocalParameters) const |
|
virtual const FixedTransformType * | GetFixedTransform () |
|
virtual const MovingTransformType * | GetMovingTransform () |
|
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 () |
|
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, ParametersValueType factor) |
|
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 | GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const =0 |
|
virtual void | SetGradientSource (GradientSourceType _arg) |
|
virtual void | GetValueAndDerivative (MeasureType &value, DerivativeType &derivative) const =0 |
|