![]() |
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
#include <itkKernelTransform2.h>
Public Types | |
typedef vnl_matrix_fixed < TScalarType, NDimensions, NDimensions > | AMatrixType |
typedef vnl_vector_fixed < TScalarType, NDimensions > | BMatrixType |
typedef vnl_matrix_fixed < TScalarType, NDimensions, 1 > | ColumnMatrixType |
typedef SmartPointer< const Self > | ConstPointer |
typedef vnl_matrix< TScalarType > | DMatrixType |
typedef vnl_matrix_fixed < TScalarType, NDimensions, NDimensions > | GMatrixType |
typedef vnl_matrix_fixed < TScalarType, NDimensions, NDimensions > | IMatrixType |
typedef Superclass::InputPointType | InputPointType |
typedef Superclass::InputVectorType | InputVectorType |
typedef Superclass::InternalMatrixType | InternalMatrixType |
typedef Superclass::JacobianOfSpatialHessianType | JacobianOfSpatialHessianType |
typedef Superclass::JacobianOfSpatialJacobianType | JacobianOfSpatialJacobianType |
typedef Superclass::JacobianType | JacobianType |
typedef vnl_matrix< TScalarType > | KMatrixType |
typedef vnl_matrix< TScalarType > | LMatrixType |
typedef Superclass::NonZeroJacobianIndicesType | NonZeroJacobianIndicesType |
typedef Superclass::OutputPointType | OutputPointType |
typedef Superclass::OutputVectorType | OutputVectorType |
typedef Superclass::ParametersType | ParametersType |
typedef vnl_matrix< TScalarType > | PMatrixType |
typedef SmartPointer< Self > | Pointer |
typedef PointSetType::PointsContainerConstIterator | PointsConstIterator |
typedef PointSetType::PointsContainer | PointsContainer |
typedef PointSetType::Pointer | PointSetPointer |
typedef DefaultStaticMeshTraits < TScalarType, NDimensions, NDimensions, TScalarType, TScalarType > | PointSetTraitsType |
typedef PointSet < InputPointType, NDimensions, PointSetTraitsType > | PointSetType |
typedef PointSetType::PointsContainerIterator | PointsIterator |
typedef vnl_matrix_fixed < TScalarType, 1, NDimensions > | RowMatrixType |
typedef Superclass::ScalarType | ScalarType |
typedef KernelTransform2 | Self |
typedef Superclass::SpatialHessianType | SpatialHessianType |
typedef Superclass::SpatialJacobianType | SpatialJacobianType |
typedef AdvancedTransform < TScalarType, NDimensions, NDimensions > | Superclass |
typedef VectorSetType::Pointer | VectorSetPointer |
typedef VectorContainer < unsigned long, InputVectorType > | VectorSetType |
typedef vnl_matrix< TScalarType > | WMatrixType |
typedef vnl_matrix< TScalarType > | YMatrixType |
![]() | |
typedef SmartPointer< const Self > | ConstPointer |
typedef Superclass::InputCovariantVectorType | InputCovariantVectorType |
typedef Superclass::InputPointType | InputPointType |
typedef Superclass::InputVectorType | InputVectorType |
typedef Superclass::InputVnlVectorType | InputVnlVectorType |
typedef SpatialJacobianType::InternalMatrixType | InternalMatrixType |
typedef std::vector < SpatialHessianType > | JacobianOfSpatialHessianType |
typedef std::vector < SpatialJacobianType > | JacobianOfSpatialJacobianType |
typedef Superclass::JacobianType | JacobianType |
typedef std::vector< unsigned long > | NonZeroJacobianIndicesType |
typedef Superclass::OutputCovariantVectorType | OutputCovariantVectorType |
typedef Superclass::OutputPointType | OutputPointType |
typedef Superclass::OutputVectorType | OutputVectorType |
typedef Superclass::OutputVnlVectorType | OutputVnlVectorType |
typedef Superclass::ParametersType | ParametersType |
typedef SmartPointer< Self > | Pointer |
typedef Superclass::ScalarType | ScalarType |
typedef AdvancedTransform | Self |
typedef FixedArray< Matrix < ScalarType, InputSpaceDimension, InputSpaceDimension > , OutputSpaceDimension > | SpatialHessianType |
typedef Matrix< ScalarType, OutputSpaceDimension, InputSpaceDimension > | SpatialJacobianType |
typedef Transform< TScalarType, NInputDimensions, NOutputDimensions > | Superclass |
Static Public Member Functions | |
static Pointer | New () |
Data Fields | |
PointSetPointer | m_SourceLandmarks |
PointSetPointer | m_TargetLandmarks |
Protected Types | |
typedef vnl_qr< ScalarType > | QRDecompositionType |
typedef vnl_svd< ScalarType > | SVDDecompositionType |
Protected Member Functions | |
void | ComputeD (void) |
virtual void | ComputeDeformationContribution (const InputPointType &inputPoint, OutputPointType &result) const |
virtual void | ComputeG (const InputVectorType &landmarkVector, GMatrixType &GMatrix) const |
void | ComputeK (void) |
void | ComputeL (void) |
void | ComputeP (void) |
virtual void | ComputeReflexiveG (PointsIterator, GMatrixType &GMatrix) const |
void | ComputeY (void) |
KernelTransform2 () | |
void | PrintSelf (std::ostream &os, Indent indent) const |
void | ReorganizeW (void) |
virtual | ~KernelTransform2 () |
![]() | |
AdvancedTransform () | |
AdvancedTransform (unsigned int Dimension, unsigned int NumberOfParameters) | |
virtual | ~AdvancedTransform () |
Private Member Functions | |
KernelTransform2 (const Self &) | |
void | operator= (const Self &) |
Private Attributes | |
std::string | m_MatrixInversionMethod |
TScalarType | m_PoissonRatio |
Intended to be a base class for elastic body spline and thin plate spline. This is implemented in as straightforward a manner as possible from the IEEE TMI paper by Davis, Khotanzad, Flamig, and Harms, Vol. 16, No. 3 June 1997. Notation closely follows their paper, so if you have it in front of you, this code will make a lot more sense.
KernelTransform2: Provides support for defining source and target landmarks Defines a number of data types used in the computations Defines the mathematical framework used to compute all splines, so that subclasses need only provide a kernel specific to that spline
This formulation allows the stiffness of the spline to be adjusted, allowing the spline to vary from interpolating the landmarks to approximating the landmarks. This part of the formulation is based on the short paper by R. Sprengel, K. Rohr, H. Stiehl. "Thin-Plate Spline Approximation for Image Registration". In 18th International Conference of the IEEE Engineering in Medicine and Biology Society. 1996.
This class was modified to support its use in the ITK registration framework by Rupert Brooks, McGill Centre for Intelligent Machines, Montreal, Canada March 2007. See the Insight Journal Paper by Brooks, R., Arbel, T. "Improvements to the itk::KernelTransform and its subclasses."
Modified to include it in elastix:
Definition at line 80 of file itkKernelTransform2.h.
typedef vnl_matrix_fixed<TScalarType,NDimensions,NDimensions> itk::KernelTransform2< TScalarType, NDimensions >::AMatrixType |
'A' matrix typedef. Rotational part of the Affine component
Definition at line 279 of file itkKernelTransform2.h.
typedef vnl_vector_fixed<TScalarType,NDimensions> itk::KernelTransform2< TScalarType, NDimensions >::BMatrixType |
'B' matrix typedef. Translational part of the Affine component
Definition at line 282 of file itkKernelTransform2.h.
typedef vnl_matrix_fixed<TScalarType, NDimensions, 1> itk::KernelTransform2< TScalarType, NDimensions >::ColumnMatrixType |
Column matrix typedef.
Definition at line 288 of file itkKernelTransform2.h.
typedef SmartPointer<const Self> itk::KernelTransform2< TScalarType, NDimensions >::ConstPointer |
Definition at line 90 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::DMatrixType |
'D' matrix typedef. Deformation component
Definition at line 276 of file itkKernelTransform2.h.
typedef vnl_matrix_fixed<TScalarType, NDimensions, NDimensions> itk::KernelTransform2< TScalarType, NDimensions >::GMatrixType |
'G' matrix typedef.
Definition at line 258 of file itkKernelTransform2.h.
typedef vnl_matrix_fixed<TScalarType, NDimensions, NDimensions> itk::KernelTransform2< TScalarType, NDimensions >::IMatrixType |
'I' (identity) matrix typedef.
Definition at line 138 of file itkKernelTransform2.h.
typedef Superclass::InputPointType itk::KernelTransform2< TScalarType, NDimensions >::InputPointType |
Definition at line 105 of file itkKernelTransform2.h.
typedef Superclass::InputVectorType itk::KernelTransform2< TScalarType, NDimensions >::InputVectorType |
Definition at line 107 of file itkKernelTransform2.h.
typedef Superclass::InternalMatrixType itk::KernelTransform2< TScalarType, NDimensions >::InternalMatrixType |
Definition at line 119 of file itkKernelTransform2.h.
typedef Superclass ::JacobianOfSpatialHessianType itk::KernelTransform2< TScalarType, NDimensions >::JacobianOfSpatialHessianType |
Definition at line 118 of file itkKernelTransform2.h.
typedef Superclass ::JacobianOfSpatialJacobianType itk::KernelTransform2< TScalarType, NDimensions >::JacobianOfSpatialJacobianType |
Definition at line 115 of file itkKernelTransform2.h.
typedef Superclass::JacobianType itk::KernelTransform2< TScalarType, NDimensions >::JacobianType |
Definition at line 104 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::KMatrixType |
'K' matrix typedef.
Definition at line 264 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::LMatrixType |
'L' matrix typedef.
Definition at line 261 of file itkKernelTransform2.h.
typedef Superclass ::NonZeroJacobianIndicesType itk::KernelTransform2< TScalarType, NDimensions >::NonZeroJacobianIndicesType |
AdvancedTransform typedefs.
Definition at line 112 of file itkKernelTransform2.h.
typedef Superclass::OutputPointType itk::KernelTransform2< TScalarType, NDimensions >::OutputPointType |
Definition at line 106 of file itkKernelTransform2.h.
typedef Superclass::OutputVectorType itk::KernelTransform2< TScalarType, NDimensions >::OutputVectorType |
Definition at line 108 of file itkKernelTransform2.h.
typedef Superclass::ParametersType itk::KernelTransform2< TScalarType, NDimensions >::ParametersType |
Definition at line 103 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::PMatrixType |
'P' matrix typedef.
Definition at line 267 of file itkKernelTransform2.h.
typedef SmartPointer<Self> itk::KernelTransform2< TScalarType, NDimensions >::Pointer |
Definition at line 89 of file itkKernelTransform2.h.
typedef PointSetType::PointsContainerConstIterator itk::KernelTransform2< TScalarType, NDimensions >::PointsConstIterator |
Definition at line 131 of file itkKernelTransform2.h.
typedef PointSetType::PointsContainer itk::KernelTransform2< TScalarType, NDimensions >::PointsContainer |
Definition at line 129 of file itkKernelTransform2.h.
typedef PointSetType::Pointer itk::KernelTransform2< TScalarType, NDimensions >::PointSetPointer |
Definition at line 128 of file itkKernelTransform2.h.
typedef DefaultStaticMeshTraits< TScalarType, NDimensions, NDimensions, TScalarType, TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::PointSetTraitsType |
PointList typedef. This type is used for maintaining lists of points, specifically, the source and target landmark lists.
Definition at line 125 of file itkKernelTransform2.h.
typedef PointSet<InputPointType, NDimensions, PointSetTraitsType> itk::KernelTransform2< TScalarType, NDimensions >::PointSetType |
Definition at line 127 of file itkKernelTransform2.h.
typedef PointSetType::PointsContainerIterator itk::KernelTransform2< TScalarType, NDimensions >::PointsIterator |
Definition at line 130 of file itkKernelTransform2.h.
|
protected |
Definition at line 407 of file itkKernelTransform2.h.
typedef vnl_matrix_fixed<TScalarType, 1, NDimensions> itk::KernelTransform2< TScalarType, NDimensions >::RowMatrixType |
Row matrix typedef.
Definition at line 285 of file itkKernelTransform2.h.
typedef Superclass::ScalarType itk::KernelTransform2< TScalarType, NDimensions >::ScalarType |
Typedefs.
Definition at line 102 of file itkKernelTransform2.h.
typedef KernelTransform2 itk::KernelTransform2< TScalarType, NDimensions >::Self |
Standard class typedefs.
Definition at line 86 of file itkKernelTransform2.h.
typedef Superclass::SpatialHessianType itk::KernelTransform2< TScalarType, NDimensions >::SpatialHessianType |
Definition at line 116 of file itkKernelTransform2.h.
typedef Superclass::SpatialJacobianType itk::KernelTransform2< TScalarType, NDimensions >::SpatialJacobianType |
Definition at line 113 of file itkKernelTransform2.h.
typedef AdvancedTransform< TScalarType, NDimensions, NDimensions > itk::KernelTransform2< TScalarType, NDimensions >::Superclass |
Definition at line 88 of file itkKernelTransform2.h.
|
protected |
Decompositions, needed for the L matrix. These decompositions are cached for performance reasons during registration. During registration, in every iteration SetParameters() is called, which in turn calls ComputeWMatrix(). The L matrix is not changed however, and therefore it is not needed to redo the decomposition.
Definition at line 406 of file itkKernelTransform2.h.
typedef VectorSetType::Pointer itk::KernelTransform2< TScalarType, NDimensions >::VectorSetPointer |
Definition at line 135 of file itkKernelTransform2.h.
typedef VectorContainer<unsigned long,InputVectorType> itk::KernelTransform2< TScalarType, NDimensions >::VectorSetType |
VectorSet typedef.
Definition at line 134 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::WMatrixType |
'W' matrix typedef.
Definition at line 273 of file itkKernelTransform2.h.
typedef vnl_matrix<TScalarType> itk::KernelTransform2< TScalarType, NDimensions >::YMatrixType |
'Y' matrix typedef.
Definition at line 270 of file itkKernelTransform2.h.
|
protected |
|
protectedvirtual |
|
private |
|
protected |
Compute displacements .
|
protectedvirtual |
Compute the contribution of the landmarks weighted by the kernel function to the global deformation of the space.
Reimplemented in itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >.
|
protectedvirtual |
Compute G(x) This is essentially the kernel of the transform. By overriding this method, we can obtain (among others): Elastic body spline Thin plate spline Volume spline.
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >.
|
protected |
Compute K matrix.
|
protected |
Compute L matrix.
void itk::KernelTransform2< TScalarType, NDimensions >::ComputeLInverse | ( | void | ) |
Compute L matrix inverse.
|
protected |
Compute P matrix.
|
protectedvirtual |
Compute a G(x) for a point to itself (i.e. for the block diagonal elements of the matrix K. Parameter indicates for which landmark the reflexive G is to be computed. The default implementation for the reflexive contribution is a diagonal matrix where the diagonal elements are the stiffness of the spline.
void itk::KernelTransform2< TScalarType, NDimensions >::ComputeWMatrix | ( | void | ) |
Compute W matrix.
|
protected |
Compute Y matrix.
|
inlinevirtual |
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, and itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >.
Definition at line 233 of file itkKernelTransform2.h.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >.
|
virtual |
Get the displacements list, which we will denote , where
.
|
virtual |
Get Transform Fixed Parameters - Gets the target landmarks.
|
virtual |
Compute the Jacobian of the transformation at one point.
Reimplemented from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.
|
virtual |
Compute the Jacobian of the transformation.
Reimplemented from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.
|
virtual |
|
inlinevirtual |
Return the number of parameters that completely define the Transform.
Definition at line 141 of file itkKernelTransform2.h.
|
virtual |
Get the Transformation Parameters - Gets the source landmarks.
|
inlinevirtual |
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, and itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >.
Definition at line 242 of file itkKernelTransform2.h.
|
virtual |
Get the source landmarks list, which we will denote .
|
virtual |
|
virtual |
Get the target landmarks list, which we will denote .
itk::KernelTransform2< TScalarType, NDimensions >::itkStaticConstMacro | ( | SpaceDimension | , |
unsigned | int, | ||
NDimensions | |||
) |
Dimension of the domain space.
|
static |
New macro for creation of through a Smart Pointer.
Reimplemented from itk::AdvancedTransform< TScalarType, NDimensions, NDimensions >.
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateR2LogRSplineKernelTransform2< TScalarType, NDimensions >, itk::ThinPlateSplineKernelTransform2< TScalarType, NDimensions >, and itk::VolumeSplineKernelTransform2< TScalarType, NDimensions >.
|
private |
|
protected |
|
protected |
Reorganize the components of W into D (deformable), A (rotation part of affine) and B (translational part of affine ) components.
|
inlinevirtual |
This method makes only sense for the ElasticBody splines. Declare here, so that you can always call it if you don't know the type of kernel beforehand. It will be overridden in the ElasticBodySplineKernelTransform and in the ElasticBodyReciprocalSplineKernelTransform.
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, and itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >.
Definition at line 232 of file itkKernelTransform2.h.
|
virtual |
Set Transform Fixed Parameters: To support the transform file writer this function was added to set the target landmarks similar to the SetParameters function setting the source landmarks
|
virtual |
Set the Transformation Parameters to be an identity transform.
|
virtual |
Matrix inversion by SVD or QR decomposition.
|
virtual |
Set the Transformation Parameters and update the internal transformation. The parameters represent the source landmarks. Each landmark point is represented by NDimensions doubles. All the landmarks are concatenated to form one flat Array<double>.
|
virtual |
This method makes only sense for the ElasticBody splines. Declare here, so that you can always call it if you don't know the type of kernel beforehand. It will be overridden in the ElasticBodySplineKernelTransform and in the ElasticBodyReciprocalSplineKernelTransform.
Reimplemented in itk::ElasticBodyReciprocalSplineKernelTransform2< TScalarType, NDimensions >, and itk::ElasticBodySplineKernelTransform2< TScalarType, NDimensions >.
|
virtual |
Set the source landmarks list.
|
inlinevirtual |
Stiffness of the spline. A stiffness of zero results in the standard interpolating spline. A non-zero stiffness allows the spline to approximate rather than interpolate the landmarks. Stiffness values are usually rather small, typically in the range of 0.001 to 0.1. The approximating spline formulation is based on the short paper by R. Sprengel, K. Rohr, H. Stiehl. "Thin-Plate Spline Approximation for Image Registration". In 18th International Conference of the IEEE Engineering in Medicine and Biology Society. 1996.
Definition at line 217 of file itkKernelTransform2.h.
|
virtual |
Set the target landmarks list.
|
virtual |
Compute the position of point in the new space
|
virtual |
Update the Parameters array from the landmarks coordinates.
|
protected |
Rotational/Shearing part of the Affine component of the Transformation.
Definition at line 379 of file itkKernelTransform2.h.
|
protected |
Translational part of the Affine component of the Transformation.
Definition at line 382 of file itkKernelTransform2.h.
|
protected |
The list of displacements. d[i] = q[i] - p[i];
Definition at line 351 of file itkKernelTransform2.h.
|
protected |
The Deformation matrix. This is an auxiliary matrix that will hold the Deformation (non-affine) part of the transform. Those are the coefficients that will multiply the Kernel function.
Definition at line 376 of file itkKernelTransform2.h.
|
protected |
The Jacobian can be computed much faster for some of the derived kerbel transforms, most notably the TPS.
Definition at line 424 of file itkKernelTransform2.h.
|
protected |
Identity matrix.
Definition at line 413 of file itkKernelTransform2.h.
|
protected |
The K matrix.
Definition at line 360 of file itkKernelTransform2.h.
|
protected |
Has the L inverse matrix been computed?
Definition at line 396 of file itkKernelTransform2.h.
|
protected |
The L matrix.
Definition at line 354 of file itkKernelTransform2.h.
|
protected |
Has the L matrix been computed?
Definition at line 394 of file itkKernelTransform2.h.
|
protected |
Has the L matrix decomposition been computed?
Definition at line 398 of file itkKernelTransform2.h.
|
protected |
Definition at line 410 of file itkKernelTransform2.h.
|
protected |
Definition at line 409 of file itkKernelTransform2.h.
|
protected |
The inverse of L, which we also cache.
Definition at line 357 of file itkKernelTransform2.h.
|
private |
Using SVD or QR decomposition.
Definition at line 433 of file itkKernelTransform2.h.
|
protected |
Precomputed nonzero Jacobian indices (simply all params)
Definition at line 416 of file itkKernelTransform2.h.
|
mutableprotected |
for old GetJacobian() method:
Definition at line 419 of file itkKernelTransform2.h.
|
protected |
The P matrix.
Definition at line 363 of file itkKernelTransform2.h.
|
private |
Definition at line 430 of file itkKernelTransform2.h.
PointSetPointer itk::KernelTransform2< TScalarType, NDimensions >::m_SourceLandmarks |
The list of source landmarks, denoted 'p'.
Definition at line 291 of file itkKernelTransform2.h.
|
protected |
Stiffness parameter.
Definition at line 346 of file itkKernelTransform2.h.
PointSetPointer itk::KernelTransform2< TScalarType, NDimensions >::m_TargetLandmarks |
The list of target landmarks, denoted 'q'.
Definition at line 294 of file itkKernelTransform2.h.
|
protected |
The W matrix.
Definition at line 369 of file itkKernelTransform2.h.
|
protected |
The G matrix. It used to be mutable because m_GMatrix was made an ivar only to avoid copying the matrix at return time but this is not necessary. SK: we don't need this matrix anymore as a member.Has the W matrix been computed?
Definition at line 392 of file itkKernelTransform2.h.
|
protected |
The Y matrix.
Definition at line 366 of file itkKernelTransform2.h.
Generated on 21-03-2014 for elastix by ![]() |
![]() |