18 #ifndef __itkDeformationFieldInterpolatingTransform_h
19 #define __itkDeformationFieldInterpolatingTransform_h
23 #include "itkExceptionObject.h"
25 #include "itkVectorInterpolateImageFunction.h"
26 #include "itkVectorNearestNeighborInterpolateImageFunction.h"
43 class TScalarType =
double,
44 unsigned int NDimensions = 3,
45 class TComponentType =
double >
66 itkStaticConstMacro( OutputSpaceDimension,
unsigned int, Superclass::OutputSpaceDimension );
96 typedef VectorInterpolateImageFunction<
99 typedef VectorNearestNeighborInterpolateImageFunction<
107 itkExceptionMacro( <<
"ERROR: SetParameters() is not implemented "
108 <<
"for DeformationFieldInterpolatingTransform.\n"
109 <<
"Use SetDeformationField() instead.\n"
110 <<
"Note that this transform is NOT suited for image registration.\n"
111 <<
"Just use it as an (initial) fixed transform that is not optimized." );
126 return this->m_FixedParameters;
133 OutputPointType
TransformPoint(
const InputPointType & point )
const;
139 <<
"TransformVector(const InputVectorType &) is not implemented "
140 <<
"for DeformationFieldInterpolatingTransform" );
147 <<
"TransformVector(const InputVnlVectorType &) is not implemented "
148 <<
"for DeformationFieldInterpolatingTransform" );
155 <<
"TransformCovariantVector(const InputCovariantVectorType &) is not implemented "
156 <<
"for DeformationFieldInterpolatingTransform" );
172 itkGetObjectMacro( DeformationFieldInterpolator, DeformationFieldInterpolatorType );
174 virtual bool IsLinear(
void )
const {
return false; }
178 const InputPointType & ipp, JacobianType & j,
179 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
181 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
186 const InputPointType & ipp, SpatialJacobianType & sj )
const
188 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
193 const InputPointType & ipp, SpatialHessianType & sh )
const
195 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
200 const InputPointType & ipp, JacobianOfSpatialJacobianType & jsj,
201 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
203 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
208 const InputPointType & ipp, SpatialJacobianType & sj,
209 JacobianOfSpatialJacobianType & jsj,
210 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
212 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
217 const InputPointType & ipp, JacobianOfSpatialHessianType & jsh,
218 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
220 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
225 const InputPointType & ipp, SpatialHessianType & sh,
226 JacobianOfSpatialHessianType & jsh,
227 NonZeroJacobianIndicesType & nonZeroJacobianIndices )
const
229 itkExceptionMacro( <<
"Not implemented for DeformationFieldInterpolatingTransform" );
239 typedef typename DeformationFieldInterpolatorType::ContinuousIndexType
244 void PrintSelf( std::ostream & os, Indent indent )
const;
259 #ifndef ITK_MANUAL_INSTANTIATION
260 #include "itkDeformationFieldInterpolatingTransform.hxx"