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"
31 #include "vnl/vnl_sample.h"
60 template<
typename TParametersValueType,
61 unsigned int NDimensions>
63 public Transform<TParametersValueType, NDimensions, NDimensions>
79 itkStaticConstMacro(SpaceDimension,
unsigned int, NDimensions);
129 itkGetModifiableObjectMacro(SourceLandmarks,
PointSetType);
134 itkGetModifiableObjectMacro(TargetLandmarks,
PointSetType);
143 void ComputeWMatrix();
149 using Superclass::TransformVector;
152 itkExceptionMacro( <<
"TransformVector(const InputVectorType &) is not implemented for KernelTransform");
158 itkExceptionMacro( <<
"TransformVector(const InputVnlVectorType &) is not implemented for KernelTransform");
162 using Superclass::TransformCovariantVector;
165 itkExceptionMacro( <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented for KernelTransform");
170 typedef vnl_matrix_fixed<TParametersValueType, NDimensions, NDimensions>
IMatrixType;
178 itkExceptionMacro(
"ComputeJacobianWithRespectToPosition not yet implemented "
179 "for " << this->GetNameOfClass() );
186 virtual void SetParameters(
const ParametersType &) ITK_OVERRIDE;
193 virtual
void SetFixedParameters(const FixedParametersType &) ITK_OVERRIDE;
196 virtual
void UpdateParameters() const;
199 virtual const ParametersType & GetParameters() const ITK_OVERRIDE;
202 virtual const FixedParametersType & GetFixedParameters() const ITK_OVERRIDE;
223 itkGetConstMacro(Stiffness,
double);
229 void PrintSelf(std::ostream & os,
Indent indent) const ITK_OVERRIDE;
233 typedef vnl_matrix_fixed<TParametersValueType, NDimensions, NDimensions>
GMatrixType;
254 typedef vnl_matrix_fixed<TParametersValueType, NDimensions, NDimensions>
AMatrixType;
257 typedef vnl_vector_fixed<TParametersValueType, NDimensions>
BMatrixType;
260 typedef vnl_matrix_fixed<TParametersValueType, 1, NDimensions>
RowMatrixType;
272 virtual
void ComputeG(const
InputVectorType & landmarkVector, GMatrixType & gmatrix) const;
283 virtual const GMatrixType & ComputeReflexiveG(
PointsIterator) const;
318 LMatrixType m_LMatrix;
321 KMatrixType m_KMatrix;
324 PMatrixType m_PMatrix;
327 YMatrixType m_YMatrix;
330 WMatrixType m_WMatrix;
337 DMatrixType m_DMatrix;
340 AMatrixType m_AMatrix;
343 BMatrixType m_BVector;
348 mutable GMatrixType m_GMatrix;
351 bool m_WMatrixComputed;
369 #ifndef ITK_MANUAL_INSTANTIATION
370 #include "itkKernelTransform.hxx"
373 #endif // itkKernelTransform_h
Light weight base class for most itk classes.
MeshTraits::PointIdentifier PointIdentifier
PointsContainer::ConstIterator PointsContainerConstIterator
A superclass of the N-dimensional mesh structure; supports point (geometric coordinate and attribute)...
MeshTraits::PointsContainer PointsContainer
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
Control indentation during Print() invocation.
Define additional traits for native types such as int or float.
PointsContainer::Iterator PointsContainerIterator