17 #ifndef __itkKernelTransform2_h
18 #define __itkKernelTransform2_h
22 #include "itkVector.h"
23 #include "itkMatrix.h"
24 #include "itkPointSet.h"
27 #include "vnl/vnl_matrix_fixed.h"
28 #include "vnl/vnl_matrix.h"
29 #include "vnl/vnl_vector.h"
30 #include "vnl/vnl_vector_fixed.h"
31 #include "vnl/vnl_sample.h"
32 #include "vnl/algo/vnl_svd.h"
33 #include "vnl/algo/vnl_qr.h"
77 template<
class TScalarType,
78 unsigned int NDimensions >
129 typedef DefaultStaticMeshTraits< TScalarType,
143 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
IMatrixType;
153 itkGetObjectMacro( SourceLandmarks, PointSetType );
159 itkGetObjectMacro( TargetLandmarks, PointSetType );
167 itkGetObjectMacro( Displacements, VectorSetType );
176 virtual OutputPointType
TransformPoint(
const InputPointType & thisPoint )
const;
182 <<
"TransformVector(const InputVectorType &) is not implemented "
183 <<
"for KernelTransform" );
190 <<
"TransformVector(const InputVnlVectorType &) is not implemented "
191 <<
"for KernelTransform" );
198 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
199 <<
"for KernelTransform" );
205 const InputPointType &,
207 NonZeroJacobianIndicesType & )
const;
247 this->
m_Stiffness = stiffness > 0 ? stiffness : 0.0;
254 itkGetMacro( Stiffness,
double );
262 virtual void SetAlpha( TScalarType itkNotUsed( Alpha ) ) {}
263 virtual TScalarType
GetAlpha(
void )
const {
return -1.0; }
271 itkSetMacro( PoissonRatio, TScalarType );
279 itkSetMacro( MatrixInversionMethod, std::string );
280 itkGetConstReferenceMacro( MatrixInversionMethod, std::string );
284 const InputPointType & ipp, SpatialJacobianType & sj )
const
286 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
291 const InputPointType & ipp, SpatialHessianType & sh )
const
293 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
298 const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj,
299 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
301 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
306 const InputPointType & ipp, SpatialJacobianType & sj,
307 JacobianOfSpatialJacobianType & jsj,
308 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
310 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
315 const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
316 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
318 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
323 const InputPointType & ipp, SpatialHessianType & sh,
324 JacobianOfSpatialHessianType & jsh,
325 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
327 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
335 void PrintSelf( std::ostream & os, Indent indent )
const;
340 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
GMatrixType;
361 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
AMatrixType;
387 virtual void ComputeG(
const InputVectorType & landmarkVector,
388 GMatrixType & GMatrix )
const;
403 const InputPointType & inputPoint,
404 OutputPointType & result )
const;
522 #ifndef ITK_MANUAL_INSTANTIATION
523 #include "itkKernelTransform2.hxx"
526 #endif // __itkKernelTransform2_h