18 #ifndef itkDisplacementFieldTransform_h
19 #define itkDisplacementFieldTransform_h
86 <
typename TParametersValueType,
unsigned int NDimensions>
88 public Transform<TParametersValueType, NDimensions, NDimensions>
220 using Superclass::TransformVector;
223 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
224 "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 void SetFixedParameters(
const FixedParametersType & )
override;
328 j = this->m_IdentityJacobian;
341 j = this->m_IdentityJacobian;
348 void ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianPositionType & j )
const override;
349 using Superclass::ComputeJacobianWithRespectToPosition;
355 void ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x,
356 InverseJacobianPositionType & j )
const override;
357 using Superclass::ComputeInverseJacobianWithRespectToPosition;
363 virtual void ComputeJacobianWithRespectToPosition(
const IndexType & x, JacobianPositionType & j )
const;
376 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType & point,
377 JacobianPositionType & jacobian,
378 bool useSVD =
false )
const;
391 virtual void GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index,
392 JacobianPositionType & jacobian,
393 bool useSVD =
false )
const;
395 void UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0 )
override;
399 bool GetInverse( Self *inverse )
const;
403 InverseTransformBasePointer GetInverseTransform()
const override;
405 virtual void SetIdentity();
410 return Self::DisplacementField;
425 itkSetMacro(CoordinateTolerance,
double);
426 itkGetConstMacro(CoordinateTolerance,
double);
436 itkSetMacro(DirectionTolerance,
double);
437 itkGetConstMacro(DirectionTolerance,
double);
444 void PrintSelf( std::ostream& os,
Indent indent )
const override;
471 virtual void ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
473 bool doInverseJacobian)
const;
479 virtual void VerifyFixedParametersInformation();
485 virtual void SetFixedParametersFromDisplacementField()
const;
494 #ifndef ITK_MANUAL_INSTANTIATION
495 #include "itkDisplacementFieldTransform.hxx"
498 #endif // itkDisplacementFieldTransform_h
Light weight base class for most itk classes.
constexpr unsigned int Dimension
ImageBaseType::SizeType SizeType
Class to hold and manage parameters of type Image<Vector<...>,...>, used in Transforms, etc.
ImageBaseType::DirectionType DirectionType
Class to hold and manage different parameter types used during optimization.
SizeValueType Size() const
ImageBaseType::IndexType IndexType
typename Superclass::SpacingType SpacingType
unsigned long ModifiedTimeType
Control indentation during Print() invocation.
ImageBaseType::PointType PointType
Base class for all vector image interpolaters.
ImageBaseType::RegionType RegionType
A templated class holding a n-Dimensional covariant vector.
Templated n-dimensional image class.