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 );
180 OutputVectorType::Dimension,
219 using Superclass::TransformVector;
222 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
223 "TransformVector(Vector,Point)" );
230 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
231 "TransformVector(Vector,Point)" );
236 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
237 "TransformVector(Vector,Point)" );
241 using Superclass::TransformDiffusionTensor3D;
245 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
246 "TransformDiffusionTensor(Tensor,Point)" );
253 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
254 "TransformDiffusionTensor(Tensor,Point)" );
258 using Superclass::TransformCovariantVector;
262 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
263 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
270 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
271 "unimplemented, use TransformCovariantVector(CovariantVector,Point)" );
278 if( &(this->m_Parameters) != ¶ms )
280 if( params.
Size() != this->m_Parameters.Size() )
282 itkExceptionMacro(
"Input parameters size (" << params.
Size()
283 <<
") does not match internal size ("
284 << this->m_Parameters.Size() <<
").");
287 this->m_Parameters = params;
302 virtual void SetFixedParameters(
const ParametersType & );
328 j = this->m_IdentityJacobian;
338 virtual void ComputeJacobianWithRespectToParameters(
const IndexType &,
341 j = this->m_IdentityJacobian;
348 virtual void ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
354 virtual void ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x, JacobianType & j )
const;
360 virtual void ComputeJacobianWithRespectToPosition(
const IndexType & x, JacobianType & j )
const;
373 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType & point,
374 JacobianType & jacobian,
375 bool useSVD =
false )
389 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index, JacobianType & jacobian,
390 bool useSVD =
false )
393 virtual void UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0 );
397 bool GetInverse( Self *inverse )
const;
401 virtual InverseTransformBasePointer GetInverseTransform()
const;
406 return Self::DisplacementField;
418 void PrintSelf( std::ostream& os,
Indent indent )
const;
438 void operator=(
const Self & );
448 virtual void ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
JacobianType & jacobian,
449 bool doInverseJacobian)
const;
455 virtual void VerifyFixedParametersInformation();
461 virtual void SetFixedParametersFromDisplacementField()
const;
467 #ifndef ITK_MANUAL_INSTANTIATION
468 #include "itkDisplacementFieldTransform.hxx"
471 #endif // __itkDisplacementFieldTransform_h