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>
94template <
typename TScalarType,
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
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;
274 itkGetConstMacro(Stiffness,
double);
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>;
537 using Superclass::TransformCovariantVector;
538 using Superclass::TransformVector;
548#ifndef ITK_MANUAL_INSTANTIATION
549# include "itkKernelTransform2.hxx"