#include <itkPointSetToPointSetMetricWithIndexv4.h>
Computes similarity between two point sets.
This class is templated over the type of the two point-sets. It expects a Transform to be plugged in for each of fixed and moving point sets. The transforms default to IdentityTransform types. This particular class is the base class for a hierarchy of point-set to point-set metrics.
This class computes a value that measures the similarity between the fixed point-set and the moving point-set in the moving domain. The fixed point set is transformed into the virtual domain by computing the inverse of the fixed transform, then transformed into the moving domain using the moving transform.
Since the PointSet
class permits each Point
to be associated with a PixelType
, there are potential applications which could make use of this additional information. For example, the derived LabeledPointSetToPointSetMetric
class uses the PixelType
as a LabelEnum
for estimating total metric values and gradients from the individual label-wise point subset metric and derivatives
If a virtual domain is not defined by the user, one of two things happens: 1) If the moving transform is a global type, then the virtual domain is left undefined and every point is considered to be within the virtual domain. 2) If the moving transform is a local-support type, then the virtual domain is taken during initialization from the moving transform displacement field, and all fixed points are verified to be within the virtual domain after transformation by the inverse fixed transform. Points outside the virtual domain are not used. See GetNumberOfValidPoints() to verify how many fixed points were used during evaluation.
See ObjectToObjectMetric documentation for more discussion on the virtual domain.
Definition at line 72 of file itkPointSetToPointSetMetricWithIndexv4.h.
Static Public Attributes | |
static constexpr DimensionType | FixedPointDimension = Superclass::FixedDimension |
static constexpr DimensionType | MovingPointDimension = Superclass::MovingDimension |
static constexpr DimensionType | PointDimension = Superclass::FixedDimension |
![]() | |
static constexpr DimensionType | FixedDimension |
static constexpr DimensionType | MovingDimension |
static constexpr DimensionType | VirtualDimension |
Private Types | |
using | PointIdentifierPair = std::pair<PointIdentifier, PointIdentifier> |
using | PointIdentifierRanges = std::vector<PointIdentifierPair> |
Private Member Functions | |
const PointIdentifierRanges | CreateRanges () const |
Additional Inherited Members | |
![]() | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
![]() | |
static void | BreakOnError () |
static Pointer | New () |
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::ConstPointer = SmartPointer<const Self> |
Definition at line 88 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::CoordinateType = typename PointType::CoordinateType |
Definition at line 154 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::DerivativeValueType = typename DerivativeType::ValueType |
Definition at line 170 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::DisplacementFieldTransformType = typename Superclass::MovingDisplacementFieldTransformType |
Definition at line 121 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::FixedPixelType = typename TFixedPointSet::PixelType |
Definition at line 131 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::FixedPointsContainer = typename TFixedPointSet::PointsContainer |
Definition at line 132 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::FixedPointSetType = TFixedPointSet |
Type of the fixed point set.
Definition at line 129 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::FixedPointType = typename TFixedPointSet::PointType |
Definition at line 130 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::FixedTransformedPointSetType = PointSet<FixedPixelType, Self::PointDimension> |
Definition at line 167 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::LocalDerivativeType = FixedArray<DerivativeValueType, Self::PointDimension> |
Definition at line 171 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::MovingPixelType = typename TMovingPointSet::PixelType |
Definition at line 139 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::MovingPointsContainer = typename TMovingPointSet::PointsContainer |
Definition at line 140 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::MovingPointSetType = TMovingPointSet |
Type of the moving point set.
Definition at line 137 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::MovingPointType = typename TMovingPointSet::PointType |
Definition at line 138 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::MovingTransformedPointSetType = PointSet<MovingPixelType, Self::PointDimension> |
Definition at line 168 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::NeighborsIdentifierType = typename PointsLocatorType::NeighborsIdentifierType |
Definition at line 165 of file itkPointSetToPointSetMetricWithIndexv4.h.
Type to represent the number of parameters that are being optimized at any given iteration of the optimizer.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::ObjectType = typename Superclass::ObjectType |
Definition at line 123 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PixelType = FixedPixelType |
Definition at line 153 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::Pointer = SmartPointer<Self> |
Definition at line 87 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PointIdentifier = typename PointsContainer::ElementIdentifier |
Definition at line 161 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
private |
Definition at line 484 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
private |
Definition at line 485 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PointsConstIterator = typename PointsContainer::ConstIterator |
Definition at line 160 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PointsContainer = FixedPointsContainer |
Definition at line 159 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PointsLocatorType = PointsLocator<PointsContainer> |
Typedef for points locator class to speed up finding neighboring points
Definition at line 164 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::PointType = FixedPointType |
Definition at line 152 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::Self = PointSetToPointSetMetricWithIndexv4 |
Standard class type aliases.
Definition at line 82 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::Superclass |
Definition at line 83 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::VirtualImageType = typename Superclass::VirtualImageType |
Types for the virtual domain
Definition at line 174 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::VirtualOriginType = typename Superclass::VirtualPointType |
Definition at line 180 of file itkPointSetToPointSetMetricWithIndexv4.h.
using itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::VirtualRadiusType = typename Superclass::VirtualSizeType |
Definition at line 183 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
|
overrideprotecteddefault |
|
protectedvirtual |
Determine the number of valid fixed points. A fixed point is valid if, when transformed into the virtual domain using the inverse of the FixedTransform, it is within the defined virtual domain bounds.
|
protected |
Helper method allows for code reuse while skipping the metric value calculation when appropriate
|
virtual |
|
virtual |
|
private |
|
virtual |
|
overridevirtual |
This method returns the derivative based on the current transformation(s). This function can be redefined in derived classes but many point set metrics follow the same structure—one iterates through the points and, for each point a derivative is calculated. The set of all these local derivatives constitutes the total derivative. Note that this might not be applicable to all point set metrics. For those cases, the developer will have to redefine the GetDerivative() function.
Implements itk::ObjectToObjectMetricBaseTemplate< double >.
|
virtual |
Get/Set the fixed pointset.
|
virtual |
|
protectedvirtual |
Function to be defined in the appropriate derived classes. Calculates the local metric value for a single point. The PixelType
may or may not be used. See class description for further explanation. Default implementation calls GetLocalNeighborhoodValueAndDerivative.
Reimplemented in itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TFixedPointSet, double >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, and itk::PointSetToPointSetMetricv4< TPointSet, TPointSet, double >.
|
protectedpure virtual |
Function to be defined in the appropriate derived classes. Calculates the local metric value for a single point. The PixelType
may or may not be used. See class description for further explanation.
Implemented in itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TFixedPointSet, double >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, and itk::PointSetToPointSetMetricv4< TPointSet, TPointSet, double >.
|
protectedpure virtual |
Function to be defined in the appropriate derived classes. Calculates the local metric value for a single point. The PixelType
may or may not be used. See class description for further explanation.
Implemented in itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TFixedPointSet, double >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::PointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, and itk::PointSetToPointSetMetricv4< TPointSet, TPointSet, double >.
|
inlineoverrideprotectedvirtual |
Get metric category
Reimplemented from itk::ObjectToObjectMetric< TFixedPointSet::PointDimension, TFixedPointSet::PointDimension, Image< double, TFixedPointSet::PointDimension >, double >.
Definition at line 422 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
virtual |
Get the fixed transformed point set.
|
virtual |
Get the moving transformed point set.
|
virtual |
Get/Set the moving point set.
|
virtual |
|
overridevirtual |
SizeValueType itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::GetNumberOfComponents | ( | ) | const |
For now return the number of points used in the value/derivative calculations.
|
virtual |
By default, the point set metric derivative for a displacement field transform is stored by saving the gradient for every voxel in the displacement field (see the function StorePointDerivative()). Since the "fixed points" will typically constitute a sparse set, this means that the field will have zero gradient values at every voxel that doesn't have a corresponding point. This might cause additional computation time for certain transforms (e.g. B-spline SyN). To avoid this, this option permits storing the point derivative only at the fixed point locations. If this variable is set to false, then the derivative array will be of length = PointDimension * m_FixedPointSet->GetNumberOfPoints().
|
overridevirtual |
This method returns the value of the metric based on the current transformation(s). This function can be redefined in derived classes but many point set metrics follow the same structure—one iterates through the points and, for each point a metric value is calculated. The summation of these individual point metric values gives the total value of the metric. Note that this might not be applicable to all point set metrics. For those cases, the developer will have to redefine the GetValue() function.
Implements itk::ObjectToObjectMetricBaseTemplate< double >.
|
overridevirtual |
This method returns the derivative and value based on the current transformation(s). This function can be redefined in derived classes but many point set metrics follow the same structure—one iterates through the points and, for each point a derivative and value is calculated. The set of all these local derivatives/values constitutes the total derivative and value. Note that this might not be applicable to all point set metrics. For those cases, the developer will have to redefine the GetValue() and GetDerivative() functions.
Implements itk::ObjectToObjectMetricBaseTemplate< double >.
const VirtualPointSetType * itk::PointSetToPointSetMetricWithIndexv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >::GetVirtualTransformedPointSet | ( | ) | const |
Get the virtual point set, derived from the fixed point set. If the virtual point set has not yet been derived, it will be in this call.
|
overridevirtual |
Initialize the metric by making sure that all the components are present and plugged together correctly.
Reimplemented from itk::ObjectToObjectMetric< TFixedPointSet::PointDimension, TFixedPointSet::PointDimension, Image< double, TFixedPointSet::PointDimension >, double >.
|
protectedvirtual |
Initialize to prepare for a particular iteration, generally an iteration of optimization. Distinct from Initialize() which is a one-time initialization.
|
protectedvirtual |
Prepare point sets for use.
|
protected |
Build point locators for the fixed and moving point sets to speed up derivative and value calculations.
|
overrideprotectedvirtual |
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::ObjectToObjectMetric< TFixedPointSet::PointDimension, TFixedPointSet::PointDimension, Image< double, TFixedPointSet::PointDimension >, double >.
|
inlineprotectedvirtual |
Reimplemented in itk::EuclideanDistancePointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, itk::ExpectationBasedPointSetToPointSetMetricv4< TFixedPointSet, TMovingPointSet, TInternalComputationValueType >, and itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet, TInternalComputationValueType >.
Definition at line 434 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
inlineprotectedvirtual |
Reimplemented in itk::JensenHavrdaCharvatTsallisPointSetToPointSetMetricv4< TPointSet, TInternalComputationValueType >.
Definition at line 428 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
virtual |
|
inlineoverride |
Set fixed point set
Definition at line 190 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
virtual |
Get/Set the fixed pointset.
|
inlineoverride |
Set moving point set
Definition at line 206 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
virtual |
Get/Set the moving point set.
|
virtual |
By default, the point set metric derivative for a displacement field transform is stored by saving the gradient for every voxel in the displacement field (see the function StorePointDerivative()). Since the "fixed points" will typically constitute a sparse set, this means that the field will have zero gradient values at every voxel that doesn't have a corresponding point. This might cause additional computation time for certain transforms (e.g. B-spline SyN). To avoid this, this option permits storing the point derivative only at the fixed point locations. If this variable is set to false, then the derivative array will be of length = PointDimension * m_FixedPointSet->GetNumberOfPoints().
|
virtual |
By default, the point set metric derivative for a displacement field transform is stored by saving the gradient for every voxel in the displacement field (see the function StorePointDerivative()). Since the "fixed points" will typically constitute a sparse set, this means that the field will have zero gradient values at every voxel that doesn't have a corresponding point. This might cause additional computation time for certain transforms (e.g. B-spline SyN). To avoid this, this option permits storing the point derivative only at the fixed point locations. If this variable is set to false, then the derivative array will be of length = PointDimension * m_FixedPointSet->GetNumberOfPoints().
|
virtual |
By default, the point set metric derivative for a displacement field transform is stored by saving the gradient for every voxel in the displacement field (see the function StorePointDerivative()). Since the "fixed points" will typically constitute a sparse set, this means that the field will have zero gradient values at every voxel that doesn't have a corresponding point. This might cause additional computation time for certain transforms (e.g. B-spline SyN). To avoid this, this option permits storing the point derivative only at the fixed point locations. If this variable is set to false, then the derivative array will be of length = PointDimension * m_FixedPointSet->GetNumberOfPoints().
|
protected |
Store a derivative from a single point in a field. Only relevant when active transform has local support.
|
inlineoverridevirtual |
Returns a flag. True if arbitrary virtual domain points will always correspond to data points. False if not. For example, point-set metrics return false because only some virtual domain points will correspond to points within the point sets.
Definition at line 296 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
Warp the fixed point set into the moving domain based on the fixed transform, passing through the virtual domain and storing a virtual domain set. Note that the warped moving point set is of type FixedPointSetType since the transform takes the points from the fixed to the moving domain.
|
protected |
Warp the moving point set based on the moving transform. Note that the warped moving point set is of type FixedPointSetType since the transform takes the points from the moving to the fixed domain. FIXME: needs update.
|
staticconstexpr |
Definition at line 134 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
Flag to calculate value and/or derivative at tangent space. This is needed for the diffeomorphic registration methods. The fixed and moving points are warped to the virtual domain where the metric is calculated. Derived point set metrics might have associated gradient information which will need to be warped if this flag is true. Default = false.
Definition at line 359 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
Definition at line 333 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprotected |
Definition at line 334 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprivate |
Definition at line 481 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprotected |
Definition at line 336 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprivate |
Definition at line 470 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprivate |
Definition at line 474 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
Definition at line 338 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprotected |
Definition at line 339 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprivate |
Definition at line 480 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprotected |
Definition at line 341 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprivate |
Definition at line 469 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
private |
Definition at line 478 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
protected |
Bool set by derived classes on whether the point set data (i.e. PixelType
) should be used. Default = false.
Definition at line 350 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
mutableprotected |
Holds the fixed points after transformation into virtual domain.
Definition at line 344 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
staticconstexpr |
Definition at line 142 of file itkPointSetToPointSetMetricWithIndexv4.h.
|
staticconstexpr |
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.
Definition at line 150 of file itkPointSetToPointSetMetricWithIndexv4.h.