18 #ifndef itkDisplacementFieldTransform_h
19 #define itkDisplacementFieldTransform_h
85 template <
typename TParametersValueType,
unsigned int NDimensions>
218 using Superclass::TransformVector;
222 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
223 "TransformVector(Vector,Point)");
227 OutputVectorPixelType
230 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
231 "TransformVector(Vector,Point)");
237 itkExceptionMacro(
"TransformVector(Vector) unimplemented, use "
238 "TransformVector(Vector,Point)");
242 using Superclass::TransformDiffusionTensor3D;
243 OutputDiffusionTensor3DType
246 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
247 "TransformDiffusionTensor(Tensor,Point)");
251 OutputVectorPixelType
254 itkExceptionMacro(
"TransformDiffusionTensor(Tensor) unimplemented, use "
255 "TransformDiffusionTensor(Tensor,Point)");
259 using Superclass::TransformCovariantVector;
260 OutputCovariantVectorType
263 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
264 "unimplemented, use TransformCovariantVector(CovariantVector,Point)");
268 OutputVectorPixelType
271 itkExceptionMacro(
"TransformCovariantVector(CovariantVector) "
272 "unimplemented, use TransformCovariantVector(CovariantVector,Point)");
280 if (&(this->m_Parameters) != ¶ms)
282 if (params.
Size() != this->m_Parameters.Size())
284 itkExceptionMacro(
"Input parameters size (" << params.
Size() <<
") does not match internal size ("
285 << this->m_Parameters.Size() <<
").");
288 this->m_Parameters = params;
304 SetFixedParameters(
const FixedParametersType &)
override;
330 j = this->m_IdentityJacobian;
343 j = this->m_IdentityJacobian;
351 ComputeJacobianWithRespectToPosition(
const InputPointType & x, JacobianPositionType & j)
const override;
352 using Superclass::ComputeJacobianWithRespectToPosition;
359 ComputeInverseJacobianWithRespectToPosition(
const InputPointType & x, InverseJacobianPositionType & j)
const override;
360 using Superclass::ComputeInverseJacobianWithRespectToPosition;
367 ComputeJacobianWithRespectToPosition(
const IndexType & x, JacobianPositionType & j)
const;
381 GetInverseJacobianOfForwardFieldWithRespectToPosition(
const InputPointType & point,
382 JacobianPositionType & jacobian,
383 bool useSVD =
false)
const;
397 GetInverseJacobianOfForwardFieldWithRespectToPosition(
const IndexType & index,
398 JacobianPositionType & jacobian,
399 bool useSVD =
false)
const;
402 UpdateTransformParameters(
const DerivativeType & update, ScalarType factor = 1.0)
override;
407 GetInverse(Self * inverse)
const;
411 InverseTransformBasePointer
412 GetInverseTransform()
const override;
418 TransformCategoryEnum
421 return Self::TransformCategoryEnum::DisplacementField;
424 NumberOfParametersType
437 itkSetMacro(CoordinateTolerance,
double);
438 itkGetConstMacro(CoordinateTolerance,
double);
448 itkSetMacro(DirectionTolerance,
double);
449 itkGetConstMacro(DirectionTolerance,
double);
456 PrintSelf(std::ostream & os,
Indent indent)
const override;
484 ComputeJacobianWithRespectToPositionInternal(
const IndexType & index,
486 bool doInverseJacobian)
const;
493 VerifyFixedParametersInformation();
500 SetFixedParametersFromDisplacementField()
const;
508 #ifndef ITK_MANUAL_INSTANTIATION
509 # include "itkDisplacementFieldTransform.hxx"
512 #endif // itkDisplacementFieldTransform_h