34 #ifndef __itkKernelTransform2_h
35 #define __itkKernelTransform2_h
39 #include "itkVector.h"
40 #include "itkMatrix.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"
94 template<
class TScalarType,
95 unsigned int NDimensions >
146 typedef DefaultStaticMeshTraits< TScalarType,
160 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
IMatrixType;
170 itkGetObjectMacro( SourceLandmarks, PointSetType );
176 itkGetObjectMacro( TargetLandmarks, PointSetType );
184 itkGetObjectMacro( Displacements, VectorSetType );
193 virtual OutputPointType
TransformPoint(
const InputPointType & thisPoint )
const;
199 <<
"TransformVector(const InputVectorType &) is not implemented "
200 <<
"for KernelTransform" );
207 <<
"TransformVector(const InputVnlVectorType &) is not implemented "
208 <<
"for KernelTransform" );
215 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
216 <<
"for KernelTransform" );
222 const InputPointType &,
224 NonZeroJacobianIndicesType & )
const;
264 this->
m_Stiffness = stiffness > 0 ? stiffness : 0.0;
271 itkGetMacro( Stiffness,
double );
279 virtual void SetAlpha( TScalarType itkNotUsed( Alpha ) ) {}
280 virtual TScalarType
GetAlpha(
void )
const {
return -1.0; }
288 itkSetMacro( PoissonRatio, TScalarType );
296 itkSetMacro( MatrixInversionMethod, std::string );
297 itkGetConstReferenceMacro( MatrixInversionMethod, std::string );
301 const InputPointType & ipp, SpatialJacobianType & sj )
const
303 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
308 const InputPointType & ipp, SpatialHessianType & sh )
const
310 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
315 const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj,
316 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
318 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
323 const InputPointType & ipp, SpatialJacobianType & sj,
324 JacobianOfSpatialJacobianType & jsj,
325 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
327 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
332 const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
333 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
335 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
340 const InputPointType & ipp, SpatialHessianType & sh,
341 JacobianOfSpatialHessianType & jsh,
342 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
344 itkExceptionMacro( <<
"Not implemented for KernelTransform2" );
352 void PrintSelf( std::ostream & os, Indent indent )
const;
357 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
GMatrixType;
378 typedef vnl_matrix_fixed< TScalarType, NDimensions, NDimensions >
AMatrixType;
404 virtual void ComputeG(
const InputVectorType & landmarkVector,
405 GMatrixType & GMatrix )
const;
420 const InputPointType & inputPoint,
421 OutputPointType & result )
const;
539 #ifndef ITK_MANUAL_INSTANTIATION
540 #include "itkKernelTransform2.hxx"
543 #endif // __itkKernelTransform2_h