18 #ifndef itkDisplacementFieldTransform_h
19 #define itkDisplacementFieldTransform_h
86 template <
typename TParametersValueType,
unsigned int VDimension>
111 using typename Superclass::FixedParametersType;
112 using typename Superclass::FixedParametersValueType;
113 using typename Superclass::ParametersType;
114 using typename Superclass::ParametersValueType;
122 using typename Superclass::TransformCategoryEnum;
125 using typename Superclass::NumberOfParametersType;
189 void SetDisplacementField(std::nullptr_t) =
delete;
223 using Superclass::TransformVector;
227 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
228 "TransformVector(Vector,Point)");
232 OutputVectorPixelType
235 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
236 "TransformVector(Vector,Point)");
242 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
243 "TransformVector(Vector,Point)");
247 using Superclass::TransformDiffusionTensor3D;
248 OutputDiffusionTensor3DType
251 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
252 "TransformDiffusionTensor(Tensor,Point)");
256 OutputVectorPixelType
259 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
260 "TransformDiffusionTensor(Tensor,Point)");
264 using Superclass::TransformCovariantVector;
265 OutputCovariantVectorType
268 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
269 "unimplemented, use TransformCovariantVector(CovariantVector,Point)");
273 OutputVectorPixelType
276 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
277 "unimplemented, use TransformCovariantVector(CovariantVector,Point)");
285 if (&(this->m_Parameters) != ¶ms)
287 if (params.Size() != this->m_Parameters.Size())
289 itkExceptionMacro(
"Input parameters size (" << params.Size() <<
") does not match internal size ("
290 << this->m_Parameters.Size() <<
").");
293 this->m_Parameters = params;
309 SetFixedParameters(
const FixedParametersType &)
override;
335 j = this->m_IdentityJacobian;
348 j = this->m_IdentityJacobian;
356 ComputeJacobianWithRespectToPosition(
const InputPointType &
point, JacobianPositionType & jacobian)
const override;
357 using Superclass::ComputeJacobianWithRespectToPosition;
364 ComputeInverseJacobianWithRespectToPosition(
const InputPointType &
point,
365 InverseJacobianPositionType & jacobian)
const override;
366 using Superclass::ComputeInverseJacobianWithRespectToPosition;
373 ComputeJacobianWithRespectToPosition(
const IndexType & index, JacobianPositionType & jacobian)
const;
387 GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType &
point,
388 JacobianPositionType & jacobian,
389 bool useSVD =
false)
const;
403 GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index,
404 JacobianPositionType & jacobian,
405 bool useSVD =
false)
const;
408 UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0)
override;
413 GetInverse(
Self * inverse)
const;
417 InverseTransformBasePointer
418 GetInverseTransform()
const override;
424 TransformCategoryEnum
427 return Self::TransformCategoryEnum::DisplacementField;
430 NumberOfParametersType
443 itkSetMacro(CoordinateTolerance,
double);
444 itkGetConstMacro(CoordinateTolerance,
double);
454 itkSetMacro(DirectionTolerance,
double);
455 itkGetConstMacro(DirectionTolerance,
double);
462 PrintSelf(std::ostream & os,
Indent indent)
const override;
490 ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
491 JacobianPositionType & jacobian,
492 bool doInverseJacobian)
const;
499 VerifyFixedParametersInformation();
506 SetFixedParametersFromDisplacementField()
const;
508 double m_CoordinateTolerance{};
509 double m_DirectionTolerance{};
514 #ifndef ITK_MANUAL_INSTANTIATION
515 # include "itkDisplacementFieldTransform.hxx"
518 #endif // itkDisplacementFieldTransform_h