18#ifndef itkKernelTransform_h
19#define itkKernelTransform_h
26#include "vnl/vnl_matrix_fixed.h"
27#include "vnl/vnl_matrix.h"
28#include "vnl/vnl_vector.h"
29#include "vnl/vnl_vector_fixed.h"
30#include "vnl/algo/vnl_svd.h"
60template <
typename TParametersValueType,
unsigned int VDimension>
79 static constexpr unsigned int SpaceDimension = VDimension;
82 using typename Superclass::ScalarType;
85 using typename Superclass::FixedParametersType;
86 using typename Superclass::ParametersType;
89 using typename Superclass::JacobianType;
90 using typename Superclass::JacobianPositionType;
91 using typename Superclass::InverseJacobianPositionType;
94 using typename Superclass::TransformCategoryEnum;
97 using typename Superclass::InputPointType;
98 using typename Superclass::OutputPointType;
101 using typename Superclass::InputVectorType;
102 using typename Superclass::OutputVectorType;
105 using typename Superclass::InputCovariantVectorType;
106 using typename Superclass::OutputCovariantVectorType;
109 using typename Superclass::InputVnlVectorType;
110 using typename Superclass::OutputVnlVectorType;
113 using typename Superclass::NumberOfParametersType;
156 using Superclass::TransformVector;
160 itkExceptionMacro(
"TransformVector(const InputVectorType &) is not implemented for KernelTransform");
167 itkExceptionMacro(
"TransformVector(const InputVnlVectorType &) is not implemented for KernelTransform");
171 using Superclass::TransformCovariantVector;
172 OutputCovariantVectorType
176 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented for KernelTransform");
181 using IMatrixType = vnl_matrix_fixed<TParametersValueType, VDimension, VDimension>;
190 itkExceptionMacro(
"ComputeJacobianWithRespectToPosition not yet implemented "
194 using Superclass::ComputeJacobianWithRespectToPosition;
229 return Self::TransformCategoryEnum::Spline;
243 itkGetConstMacro(Stiffness,
double);
254 using GMatrixType = vnl_matrix_fixed<TParametersValueType, VDimension, VDimension>;
275 using AMatrixType = vnl_matrix_fixed<TParametersValueType, VDimension, VDimension>;
278 using BMatrixType = vnl_vector_fixed<TParametersValueType, VDimension>;
281 using RowMatrixType = vnl_matrix_fixed<TParametersValueType, 1, VDimension>;
340 double m_Stiffness{};
380 bool m_WMatrixComputed{};
395#ifndef ITK_MANUAL_INSTANTIATION
396# include "itkKernelTransform.hxx"
Array2D class representing a 2D array.
A templated class holding a n-Dimensional covariant vector.
Control indentation during Print() invocation.
Light weight base class for most itk classes.
Define additional traits for native types such as int or float.
Class to hold and manage different parameter types used during optimization.
A superclass of the N-dimensional mesh structure; supports point (geometric coordinate and attribute)...
typename PointsContainer::Iterator PointsContainerIterator
typename PointsContainer::ConstIterator PointsContainerConstIterator
typename MeshTraits::PointsContainer PointsContainer
typename MeshTraits::PointIdentifier PointIdentifier
A templated class holding a geometric point in n-Dimensional space.
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
A templated class holding a n-Dimensional vector.
const char * GetNameOfClass() const override
SmartPointer< Self > Pointer
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....