18 #ifndef __itkDisplacementFieldTransform_h
19 #define __itkDisplacementFieldTransform_h
86 <
class TScalar,
unsigned int NDimensions>
88 public Transform<TScalar, NDimensions, NDimensions>
134 typedef typename Superclass::InputCovariantVectorType
136 typedef typename Superclass::OutputCovariantVectorType
144 typedef typename Superclass::InputDiffusionTensor3DType
146 typedef typename Superclass::OutputDiffusionTensor3DType
159 itkStaticConstMacro( Dimension,
unsigned int, NDimensions );
181 OutputVectorType::Dimension,
220 using Superclass::TransformVector;
223 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
224 "TransformVector(Vector,Point)" );
231 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
232 "TransformVector(Vector,Point)" );
237 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
238 "TransformVector(Vector,Point)" );
242 using Superclass::TransformDiffusionTensor3D;
246 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
247 "TransformDiffusionTensor(Tensor,Point)" );
254 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
255 "TransformDiffusionTensor(Tensor,Point)" );
259 using Superclass::TransformCovariantVector;
263 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
264 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
271 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
272 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
279 if( &(this->m_Parameters) != ¶ms )
281 if( params.
Size() != this->m_Parameters.Size() )
283 itkExceptionMacro(
"Input parameters size (" << params.
Size()
284 <<
") does not match internal size ("
285 << this->m_Parameters.Size() <<
").");
288 this->m_Parameters = params;
303 virtual void SetFixedParameters(
const ParametersType & );
329 j = this->m_IdentityJacobian;
339 virtual void ComputeJacobianWithRespectToParameters(
const IndexType &,
342 j = this->m_IdentityJacobian;
349 virtual void ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
355 virtual void ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
361 virtual void ComputeJacobianWithRespectToPosition(
const IndexType & x, JacobianType & j )
const;
374 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType & point,
375 JacobianType & jacobian,
376 bool useSVD =
false )
390 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index, JacobianType & jacobian,
391 bool useSVD =
false )
394 virtual void UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0 );
398 bool GetInverse( Self *inverse )
const;
402 virtual InverseTransformBasePointer GetInverseTransform()
const;
407 return Self::DisplacementField;
419 void PrintSelf( std::ostream& os,
Indent indent )
const;
439 void operator=(
const Self & );
449 virtual void ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
JacobianType & jacobian,
450 bool doInverseJacobian)
const;
456 virtual void VerifyFixedParametersInformation();
462 virtual void SetFixedParametersFromDisplacementField()
const;
468 #ifndef ITK_MANUAL_INSTANTIATION
469 #include "itkDisplacementFieldTransform.hxx"
472 #endif // __itkDisplacementFieldTransform_h