34#ifndef itkKernelTransform2_h
35#define itkKernelTransform2_h
41#include "itkPointSet.h"
44#include <vnl/vnl_matrix_fixed.h>
45#include <vnl/vnl_matrix.h>
46#include <vnl/vnl_vector.h>
47#include <vnl/vnl_vector_fixed.h>
48#include <vnl/vnl_sample.h>
49#include <vnl/algo/vnl_svd.h>
50#include <vnl/algo/vnl_qr.h>
95 unsigned int NDimensions>
118 using typename Superclass::ScalarType;
119 using typename Superclass::ParametersType;
120 using typename Superclass::NumberOfParametersType;
121 using typename Superclass::JacobianType;
122 using typename Superclass::InputPointType;
123 using typename Superclass::OutputPointType;
124 using typename Superclass::InputVectorType;
125 using typename Superclass::OutputVectorType;
126 using typename Superclass::InputCovariantVectorType;
127 using typename Superclass::OutputCovariantVectorType;
128 using typename Superclass::InputVnlVectorType;
129 using typename Superclass::OutputVnlVectorType;
142 using PointSetTraitsType = DefaultStaticMeshTraits<TScalarType, NDimensions, NDimensions, TScalarType, TScalarType>;
143 using PointSetType = PointSet<InputPointType, NDimensions, PointSetTraitsType>;
154 using IMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>;
157 NumberOfParametersType
160 return (this->m_SourceLandmarks->GetNumberOfPoints() * SpaceDimension);
199 itkExceptionMacro(<<
"TransformVector(const InputVectorType &) is not implemented for KernelTransform");
206 itkExceptionMacro(<<
"TransformVector(const InputVnlVectorType &) is not implemented for KernelTransform");
210 OutputCovariantVectorType
214 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented for KernelTransform");
247 const ParametersType &
251 const ParametersType &
267 this->m_Stiffness = stiffness > 0 ? stiffness : 0.0;
268 this->m_LMatrixComputed =
false;
269 this->m_LInverseComputed =
false;
270 this->m_WMatrixComputed =
false;
274 itkGetConstMacro(Stiffness,
double);
296 return this->m_PoissonRatio;
301 itkSetMacro(MatrixInversionMethod, std::string);
302 itkGetConstReferenceMacro(MatrixInversionMethod, std::string);
308 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
315 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
324 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
334 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
343 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
353 itkExceptionMacro(<<
"Not implemented for KernelTransform2");
361 PrintSelf(std::ostream & os, Indent indent)
const override;
365 using GMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>;
386 using AMatrixType = vnl_matrix_fixed<TScalarType, NDimensions, NDimensions>;
544#ifndef ITK_MANUAL_INSTANTIATION
545# include "itkKernelTransform2.hxx"