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