18 #ifndef __itkDisplacementFieldTransform_h
19 #define __itkDisplacementFieldTransform_h
86 <
class TScalar,
unsigned int NDimensions>
88 public Transform<TScalar, NDimensions, NDimensions>
131 typedef typename Superclass::InputCovariantVectorType
133 typedef typename Superclass::OutputCovariantVectorType
141 typedef typename Superclass::InputDiffusionTensor3DType
143 typedef typename Superclass::OutputDiffusionTensor3DType
156 itkStaticConstMacro( Dimension,
unsigned int, NDimensions );
177 OutputVectorType::Dimension,
201 itkGetConstReferenceMacro( DisplacementFieldSetTime,
unsigned long );
209 using Superclass::TransformVector;
212 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
213 "TransformVector(Vector,Point)" );
220 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
221 "TransformVector(Vector,Point)" );
226 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
227 "TransformVector(Vector,Point)" );
231 using Superclass::TransformDiffusionTensor3D;
235 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
236 "TransformDiffusionTensor(Tensor,Point)" );
243 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
244 "TransformDiffusionTensor(Tensor,Point)" );
248 using Superclass::TransformCovariantVector;
252 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
253 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
260 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
261 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
268 if( &(this->m_Parameters) != ¶ms )
270 if( params.
Size() != this->m_Parameters.Size() )
272 itkExceptionMacro(
"Input parameters size (" << params.
Size()
273 <<
") does not match internal size ("
274 << this->m_Parameters.Size() <<
").");
277 this->m_Parameters = params;
292 virtual void SetFixedParameters(
const ParametersType & );
318 j = this->m_IdentityJacobian;
328 virtual void ComputeJacobianWithRespectToParameters(
const IndexType &,
331 j = this->m_IdentityJacobian;
338 virtual void ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
344 virtual void ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
350 virtual void ComputeJacobianWithRespectToPosition(
const IndexType & x, JacobianType & j )
const;
363 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType & point,
364 JacobianType & jacobian,
365 bool useSVD =
false )
379 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index, JacobianType & jacobian,
380 bool useSVD =
false )
383 virtual void UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0 );
386 bool GetInverse( Self *inverse )
const;
389 virtual InverseTransformBasePointer GetInverseTransform()
const;
392 virtual bool IsLinear()
const
402 virtual bool HasLocalSupport()
const
411 void PrintSelf( std::ostream& os,
Indent indent )
const;
429 void operator=(
const Self & );
440 virtual void ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
JacobianType & jacobian,
441 bool doInverseJacobian)
const;
447 virtual void VerifyFixedParametersInformation();
453 virtual void SetFixedParametersFromDisplacementField()
const;
459 #if ITK_TEMPLATE_EXPLICIT
460 #include "Templates/itkDisplacementFieldTransform+-.h"
464 #include "itkDisplacementFieldTransform.hxx"
467 #endif // __itkDisplacementFieldTransform_h