ITK
4.1.0
Insight Segmentation and Registration Toolkit
|
#include <itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h>
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
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 62 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef SmartPointer<const Self> itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::ConstPointer |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 70 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::CoordRepType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::CoordRepType |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 89 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef DensityFunctionType::Pointer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::DensityFunctionPointer |
Definition at line 101 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef ManifoldParzenWindowsPointSetFunction<PointSetType, RealType> itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::DensityFunctionType |
Other typedefs
Definition at line 99 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::DerivativeType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::DerivativeType |
Type of the derivative.
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 86 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef DensityFunctionType::GaussianType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GaussianType |
Definition at line 100 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::LocalDerivativeType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::LocalDerivativeType |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 87 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::MeasureType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::MeasureType |
Types transferred from the base class
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 85 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::NeighborsIdentifierType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::NeighborsIdentifierType |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 91 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef SmartPointer<Self> itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::Pointer |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 69 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::PointIdentifier itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointIdentifier |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 90 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef PointSetType::PointsContainer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointsContainer |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 79 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef PointsContainer::ConstIterator itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointsContainerConstIterator |
Definition at line 80 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef TPointSet itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointSetType |
Definition at line 76 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef Superclass::PointType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointType |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 88 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef MeasureType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::RealType |
Definition at line 93 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::Self |
Standard class typedefs.
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 67 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
typedef PointSetToPointSetMetricv4<TPointSet, TPointSet> itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::Superclass |
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 68 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 | ( | ) | [protected] |
itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::~JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 | ( | ) | [protected] |
itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4 | ( | const Self & | ) | [private] |
virtual::itk::LightObject::Pointer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::CreateAnother | ( | void | ) | const [virtual] |
Create an object from an instance, potentially deferring to a factory. This method allows you to create an instance of an object that is exactly the same type as the referring object. This is useful in cases where an object has been cast back to a base class.
Reimplemented from itk::Object.
virtual RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetAlpha | ( | ) | const [virtual] |
Get the alpha parameter used to tune the point-set metric.
virtual unsigned int itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetCovarianceKNeighborhood | ( | ) | const [virtual] |
Get the size of the covariance neighborhood used to construct the anisotropic covariances. Only relevant if m_UseAnisotropicCovariances = true. Default = 5.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetDerivative | ( | DerivativeType & | ) | const [virtual] |
This method returns the derivative based on the current transformation(s).
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
virtual unsigned int itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetEvaluationKNeighborhood | ( | ) | const [virtual] |
Get the neighborhood size used to evaluate the measurement at each point. Default = 50.
virtual RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetKernelSigma | ( | ) | const [virtual] |
Get the noise kernel sigma for the anistropic covariances.
virtual MeasureType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetLocalNeighborhoodValue | ( | const PointType & | ) | const [inline, virtual] |
Pure virtual function from the parent class not needed in this class
Definition at line 223 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetLocalNeighborhoodValueAndDerivative | ( | const PointType & | , |
MeasureType & | , | ||
LocalDerivativeType & | |||
) | const [inline, virtual] |
Pure virtual function from the parent class not needed in this class
Definition at line 231 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
virtual const char* itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetNameOfClass | ( | ) | const [virtual] |
Run-time type information (and related methods)
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
virtual RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetPointSetSigma | ( | ) | const [virtual] |
Get the point set sigma function
virtual bool itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetUseAnisotropicCovariances | ( | ) | const [virtual] |
Get whether or not anisotropic covariances are determined for each Gaussian. Default = false.
virtual bool itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetUseRegularizationTerm | ( | ) | const [virtual] |
Get boolean usage of regularization term.
virtual MeasureType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetValue | ( | ) | const [virtual] |
This method returns the value of the metric based on the current transformation(s).
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::GetValueAndDerivative | ( | MeasureType & | , |
DerivativeType & | |||
) | const [virtual] |
This method returns the derivative and value based on the current transformation(s).
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::Initialize | ( | void | ) | throw ( ExceptionObject ) [virtual] |
Initialize the Metric by making sure that all the components are present and plugged together correctly
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
static Pointer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::New | ( | ) | [static] |
Method for creation through the object factory.
Reimplemented from itk::Object.
void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::operator= | ( | const Self & | ) | [private] |
Mutex lock to protect modification to the reference count
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PrintSelf | ( | std::ostream & | os, |
Indent | indent | ||
) | const [protected, virtual] |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetAlpha | ( | RealType | _arg | ) | [virtual] |
Set the alpha parameter used to tune the point-set metric from a maximum-likelihood measure (alpha = 1) to the more robust L2 solution (alpha = 2). Typically, "robustness" is associated with performance in the presence of uniform noise but in most applications the noise will be highly correlated with the point sets, therefore an alpha value close to 1, in general, provides better performance. Only values between 1 and 2 are convex.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetCovarianceKNeighborhood | ( | unsigned int | _arg | ) | [virtual] |
Set the size of the covariance neighborhood used to construct the anisotropic covariances. Only relevant if m_UseAnisotropicCovariances = true. Default = 5.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetEvaluationKNeighborhood | ( | unsigned int | _arg | ) | [virtual] |
Set the neighborhood size used to evaluate the measurement at each point. Default = 50.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetKernelSigma | ( | RealType | _arg | ) | [virtual] |
Set the size of the noise kernel used to construct each covariance image. To avoid the case where the local point set structure would result in a degenerate covariance matrix, a small amount of noise is added along the diagonal represented by this variable. Only relevant if m_UseAnisotropicCovariances = true. Default = 10.0.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetPointSetSigma | ( | RealType | _arg | ) | [virtual] |
Each point is associated with a Gaussian characterized by m_PointSetSigma which provides a sense of scale for determining the similarity between two point sets. Default = 1.0.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetUseAnisotropicCovariances | ( | bool | _arg | ) | [virtual] |
Set whether or not anisotropic covariances are determined for each Gaussian. Default = false.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::SetUseRegularizationTerm | ( | bool | _arg | ) | [virtual] |
The Jensen divergence is comprised of two terms---one measures the mutual similarity while the second provides a regularizing effect penalizing tendencies towards a single point. For most registration applications, a separate transform would be used which would provide its own regularization. Default = false.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::UseAnisotropicCovariancesOff | ( | ) | [virtual] |
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::UseAnisotropicCovariancesOn | ( | ) | [virtual] |
Get/set whether or not anisotropic covariances are determined for each Gaussian. Default = false.
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::UseRegularizationTermOff | ( | ) | [virtual] |
virtual void itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::UseRegularizationTermOn | ( | ) | [virtual] |
Get/set boolean usage of regularization term.
RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_Alpha [private] |
Definition at line 259 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
unsigned int itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_CovarianceKNeighborhood [private] |
Definition at line 256 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
unsigned int itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_EvaluationKNeighborhood [private] |
Definition at line 257 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
DensityFunctionPointer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_FixedDensityFunction [private] |
Definition at line 249 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_KernelSigma [private] |
Definition at line 255 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
DensityFunctionPointer itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_MovingDensityFunction [private] |
Definition at line 248 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
RealType itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_PointSetSigma [private] |
Definition at line 254 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
bool itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_UseAnisotropicCovariances [private] |
Definition at line 252 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
bool itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::m_UseRegularizationTerm [private] |
Definition at line 251 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.
const unsigned int itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet >::PointDimension = TPointSet::PointDimension [static] |
typedefs for the data types used in the point set metric calculations. It is assumed that the constants of the fixed point set, such as the point dimension, are the same for the "common space" in which the metric calculation occurs.
Reimplemented from itk::PointSetToPointSetMetricv4< TPointSet, TPointSet >.
Definition at line 82 of file itkJensenHavrdaCharvatTsallisPointSetToPointSetMetricv4.h.