14 #ifndef __itkDeformationFieldInterpolatingTransform_h
15 #define __itkDeformationFieldInterpolatingTransform_h
19 #include "itkExceptionObject.h"
21 #include "itkVectorInterpolateImageFunction.h"
22 #include "itkVectorNearestNeighborInterpolateImageFunction.h"
39 class TScalarType =
double,
40 unsigned int NDimensions = 3,
41 class TComponentType =
double >
62 itkStaticConstMacro( OutputSpaceDimension,
unsigned int, Superclass::OutputSpaceDimension );
92 typedef VectorInterpolateImageFunction<
95 typedef VectorNearestNeighborInterpolateImageFunction<
103 itkExceptionMacro( <<
"ERROR: SetParameters() is not implemented "
104 <<
"for DeformationFieldInterpolatingTransform.\n"
105 <<
"Use SetDeformationField() instead.\n"
106 <<
"Note that this transform is NOT suited for image registration.\n"
107 <<
"Just use it as an (initial) fixed transform that is not optimized." );
122 return this->m_FixedParameters;
129 OutputPointType
TransformPoint(
const InputPointType & point )
const;
135 <<
"TransformVector(const InputVectorType &) is not implemented "
136 <<
"for DeformationFieldInterpolatingTransform" );
143 <<
"TransformVector(const InputVnlVectorType &) is not implemented "
144 <<
"for DeformationFieldInterpolatingTransform" );
151 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
152 <<
"for DeformationFieldInterpolatingTransform" );
168 itkGetObjectMacro( DeformationFieldInterpolator, DeformationFieldInterpolatorType );
170 virtual bool IsLinear(
void )
const {
return false; }
174 const InputPointType & ipp, JacobianType & j,
175 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
177 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
182 const InputPointType & ipp, SpatialJacobianType & sj )
const
184 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
189 const InputPointType & ipp, SpatialHessianType & sh )
const
191 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
196 const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj,
197 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
199 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
204 const InputPointType & ipp, SpatialJacobianType & sj,
205 JacobianOfSpatialJacobianType & jsj,
206 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
208 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
213 const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
214 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
216 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
221 const InputPointType & ipp, SpatialHessianType & sh,
222 JacobianOfSpatialHessianType & jsh,
223 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
225 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
235 typedef typename DeformationFieldInterpolatorType::ContinuousIndexType
240 void PrintSelf( std::ostream & os, Indent indent )
const;
255 #ifndef ITK_MANUAL_INSTANTIATION
256 #include "itkDeformationFieldInterpolatingTransform.hxx"