template<typename TParametersValueType, unsigned int VDimension>
class itk::TimeVaryingBSplineVelocityFieldTransform< TParametersValueType, VDimension >
Integrate a time-varying velocity field represented by a B-spline control point lattice.
Diffeomorphisms are topology-preserving mappings that are useful for describing biologically plausible deformations. Mathematically, a diffeomorphism, \( \phi \), is generated from a time-varying velocity field, v, as described by the integral equation:
\[\phi(t_b) = \phi(t_a) + \int_{t_a}^{t_b} v(\phi(t),t) dt
\]
In typical registration applications it is computationally more efficient to sample the B-spline transform to its corresponding displacement field. Therefore, the user needs to specify the domain parameters of that displacement field using the following functions:
SetDisplacementFieldSpacing()
SetDisplacementFieldOrigin()
SetDisplacementFieldSize()
SetDisplacementFieldDirection()
It's important that these parameters match up with the fixed parameters of this transform which are defined as the parameters of the (N+1)-D B-spline grid representing the continuous velocity field. This control point lattice is set using SetTimeVaryingVelocityFieldControlPointLattice()
or it can be created by setting the fixed parameters.
Note: For readability of the code, it is important to note that we store the control point lattice in the m_VelocityField variable since they are of the same type. It's only when we call IntegrateVelocityField() that a sampled velocity field is created from the control point lattice.
- Author
- Nick Tustison
-
Brian Avants
Definition at line 68 of file itkTimeVaryingBSplineVelocityFieldTransform.h.
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DisplacementFieldDirectionType = typename DisplacementFieldType::DirectionType |
|
using | DisplacementFieldPointType = typename DisplacementFieldType::PointType |
|
using | DisplacementFieldSizeType = typename DisplacementFieldType::SizeType |
|
using | DisplacementFieldSpacingType = typename DisplacementFieldType::SpacingType |
|
using | DisplacementVectorType = typename DisplacementFieldType::PixelType |
|
using | FixedParametersValueType = typename FixedParametersType::ValueType |
|
using | ParametersValueType = typename ParametersType::ValueType |
|
using | Pointer = SmartPointer<Self> |
|
using | Self = TimeVaryingBSplineVelocityFieldTransform |
|
using | Superclass = VelocityFieldTransform<TParametersValueType, VDimension> |
|
using | TimeVaryingVelocityFieldControlPointLatticePointer = typename VelocityFieldType::Pointer |
|
using | TimeVaryingVelocityFieldControlPointLatticeType = VelocityFieldType |
|
using | VelocityFieldDirectionType = typename VelocityFieldType::DirectionType |
|
using | VelocityFieldIntegratorType = typename Superclass::VelocityFieldInterpolatorType |
|
using | VelocityFieldPointType = typename VelocityFieldType::PointType |
|
using | VelocityFieldSizeType = typename VelocityFieldType::SizeType |
|
using | VelocityFieldSpacingType = typename VelocityFieldType::SpacingType |
|
using | VelocityFieldType |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DerivativeType |
|
using | DirectionType = typename VelocityFieldType::DirectionType |
|
using | DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
|
using | DisplacementFieldType |
|
typedef OptimizerParameters< FixedParametersValueType > | FixedParametersType |
|
typedef double | FixedParametersValueType |
|
using | IndexType = typename VelocityFieldType::IndexType |
|
using | InputPointType |
|
using | InputVectorPixelType |
|
using | InputVectorType |
|
using | InverseTransformBasePointer |
|
typedef IdentifierType | NumberOfParametersType |
|
using | OptimizerParametersHelperType |
|
using | OutputPointType |
|
using | OutputVectorPixelType |
|
using | OutputVectorType |
|
typedef OptimizerParameters< ParametersValueType > | ParametersType |
|
typedef TParametersValueType | ParametersValueType |
|
using | PixelType = typename VelocityFieldType::PixelType |
|
using | Pointer = SmartPointer<Self> |
|
using | PointType = typename VelocityFieldType::PointType |
|
using | RegionType = typename VelocityFieldType::RegionType |
|
using | ScalarType |
|
using | Self = VelocityFieldTransform |
|
using | SizeType = typename VelocityFieldType::SizeType |
|
using | SpacingType = typename VelocityFieldType::SpacingType |
|
using | Superclass = DisplacementFieldTransform<TParametersValueType, VDimension> |
|
typedef TransformBaseTemplateEnums::TransformCategory | TransformCategoryEnum |
|
using | VectorImageDisplacementFieldType |
|
using | VelocityFieldInterpolatorPointer = typename VelocityFieldInterpolatorType::Pointer |
|
using | VelocityFieldInterpolatorType = VectorInterpolateImageFunction<VelocityFieldType, ScalarType> |
|
using | VelocityFieldPointer = typename VelocityFieldType::Pointer |
|
using | VelocityFieldType = Image<OutputVectorType, VelocityFieldDimension> |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | DerivativeType |
|
using | DirectionType = typename DisplacementFieldType::DirectionType |
|
using | DisplacementFieldConstPointer = typename DisplacementFieldType::ConstPointer |
|
using | DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
|
using | DisplacementFieldType = Image<OutputVectorType, Dimension> |
|
typedef OptimizerParameters< FixedParametersValueType > | FixedParametersType |
|
typedef double | FixedParametersValueType |
|
using | IndexType = typename DisplacementFieldType::IndexType |
|
using | InputCovariantVectorType |
|
using | InputDiffusionTensor3DType |
|
using | InputPointType |
|
using | InputTensorEigenVectorType = CovariantVector<ScalarType, InputDiffusionTensor3DType::Dimension> |
|
using | InputVectorPixelType |
|
using | InputVectorType |
|
using | InputVnlVectorType |
|
using | InterpolatorType = VectorInterpolateImageFunction<DisplacementFieldType, ScalarType> |
|
using | InverseJacobianPositionType |
|
using | InverseTransformBasePointer |
|
using | JacobianPositionType |
|
using | JacobianType |
|
typedef IdentifierType | NumberOfParametersType |
|
using | OptimizerParametersHelperType |
|
using | OutputCovariantVectorType |
|
using | OutputDiffusionTensor3DType |
|
using | OutputPointType |
|
using | OutputTensorEigenVectorType = CovariantVector<ScalarType, OutputDiffusionTensor3DType::Dimension> |
|
using | OutputVectorPixelType |
|
using | OutputVectorType |
|
using | OutputVnlVectorType |
|
typedef OptimizerParameters< ParametersValueType > | ParametersType |
|
typedef TParametersValueType | ParametersValueType |
|
using | PixelType = typename DisplacementFieldType::PixelType |
|
using | Pointer = SmartPointer<Self> |
|
using | PointType = typename DisplacementFieldType::PointType |
|
using | RegionType = typename DisplacementFieldType::RegionType |
|
using | ScalarType |
|
using | Self = DisplacementFieldTransform |
|
using | SizeType = typename DisplacementFieldType::SizeType |
|
using | SpacingType = typename DisplacementFieldType::SpacingType |
|
using | Superclass = Transform<TParametersValueType, VDimension, VDimension> |
|
typedef TransformBaseTemplateEnums::TransformCategory | TransformCategoryEnum |
|
using | VectorImageDisplacementFieldType = VectorImage<TParametersValueType, Dimension> |
|
using | ConstPointer |
|
using | ConstPointer |
|
using | DerivativeType |
|
using | DerivativeType |
|
using | DirectionChangeMatrix |
|
using | DirectionChangeMatrix |
|
typedef OptimizerParameters< FixedParametersValueType > | FixedParametersType |
|
using | FixedParametersType |
|
typedef double | FixedParametersValueType |
|
using | FixedParametersValueType |
|
using | InputCovariantVectorType |
|
using | InputCovariantVectorType |
|
using | InputDiffusionTensor3DType |
|
using | InputDiffusionTensor3DType |
|
using | InputDirectionMatrix |
|
using | InputDirectionMatrix |
|
using | InputPointType |
|
using | InputPointType |
|
using | InputSymmetricSecondRankTensorType |
|
using | InputSymmetricSecondRankTensorType |
|
using | InputVectorPixelType |
|
using | InputVectorPixelType |
|
using | InputVectorType |
|
using | InputVectorType |
|
using | InputVnlVectorType |
|
using | InputVnlVectorType |
|
using | InverseJacobianPositionType |
|
using | InverseJacobianPositionType |
|
using | InverseTransformBasePointer |
|
using | InverseTransformBasePointer |
|
using | InverseTransformBaseType |
|
using | InverseTransformBaseType |
|
using | JacobianPositionType |
|
using | JacobianPositionType |
|
using | JacobianType |
|
using | JacobianType |
|
using | MatrixType |
|
using | MatrixType |
|
typedef IdentifierType | NumberOfParametersType |
|
using | NumberOfParametersType |
|
using | OutputCovariantVectorType |
|
using | OutputCovariantVectorType |
|
using | OutputDiffusionTensor3DType |
|
using | OutputDiffusionTensor3DType |
|
using | OutputDirectionMatrix |
|
using | OutputDirectionMatrix |
|
using | OutputPointType |
|
using | OutputPointType |
|
using | OutputSymmetricSecondRankTensorType |
|
using | OutputSymmetricSecondRankTensorType |
|
using | OutputVectorPixelType |
|
using | OutputVectorPixelType |
|
using | OutputVectorType |
|
using | OutputVectorType |
|
using | OutputVnlVectorType |
|
using | OutputVnlVectorType |
|
typedef OptimizerParameters< ParametersValueType > | ParametersType |
|
using | ParametersType |
|
typedef TParametersValueType | ParametersValueType |
|
using | ParametersValueType |
|
using | Pointer |
|
using | Pointer |
|
using | ScalarType |
|
using | ScalarType |
|
using | Self |
|
using | Self |
|
using | Superclass |
|
using | Superclass |
|
typedef TransformBaseTemplateEnums::TransformCategory | TransformCategoryEnum |
|
using | TransformCategoryEnum |
|
using | ConstPointer = SmartPointer<const Self> |
|
using | FixedParametersType = OptimizerParameters<FixedParametersValueType> |
|
using | FixedParametersValueType = double |
|
using | NumberOfParametersType = IdentifierType |
|
using | ParametersType = OptimizerParameters<ParametersValueType> |
|
using | ParametersValueType = TParametersValueType |
|
using | Pointer = SmartPointer<Self> |
|
using | Self = TransformBaseTemplate |
|
using | Superclass = Object |
|
using | TransformCategoryEnum = TransformBaseTemplateEnums::TransformCategory |
|
using | TransformCategoryType = TransformCategoryEnum |
|
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
const char * | GetNameOfClass () const override |
|
VelocityFieldType * | GetTimeVaryingVelocityFieldControlPointLattice () |
|
void | IntegrateVelocityField () override |
|
virtual void | SetTimeVaryingVelocityFieldControlPointLattice (VelocityFieldType *fieldLattice) |
|
void | UpdateTransformParameters (const DerivativeType &update, ScalarType factor=1.0) override |
|
|
virtual void | SetVelocityFieldOrigin (VelocityFieldPointType _arg) |
|
virtual VelocityFieldPointType | GetVelocityFieldOrigin () const |
|
|
virtual void | SetVelocityFieldSpacing (VelocityFieldSpacingType _arg) |
|
virtual VelocityFieldSpacingType | GetVelocityFieldSpacing () const |
|
|
virtual void | SetVelocityFieldSize (VelocityFieldSizeType _arg) |
|
virtual VelocityFieldSizeType | GetVelocityFieldSize () const |
|
|
virtual void | SetVelocityFieldDirection (VelocityFieldDirectionType _arg) |
|
virtual VelocityFieldDirectionType | GetVelocityFieldDirection () const |
|
|
virtual void | SetSplineOrder (unsigned int _arg) |
|
virtual unsigned int | GetSplineOrder () const |
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
bool | GetInverse (Self *inverse) const |
|
InverseTransformBasePointer | GetInverseTransform () const override |
|
virtual ScalarType | GetLowerTimeBound () const |
|
const char * | GetNameOfClass () const override |
|
virtual unsigned int | GetNumberOfIntegrationSteps () const |
|
virtual ScalarType | GetUpperTimeBound () const |
|
virtual const unsigned long & | GetVelocityFieldSetTime () const |
|
void | SetDisplacementField (std::nullptr_t)=delete |
|
virtual void | SetDisplacementField (VectorImageDisplacementFieldType *field) |
|
void | SetFixedParameters (const FixedParametersType &) override |
|
virtual void | SetLowerTimeBound (ScalarType _arg) |
|
virtual void | SetNumberOfIntegrationSteps (unsigned int _arg) |
|
virtual void | SetUpperTimeBound (ScalarType _arg) |
|
void | UpdateTransformParameters (const DerivativeType &update, ScalarType factor=1.0) override |
|
virtual void | SetVelocityField (VelocityFieldType *) |
|
virtual VelocityFieldType * | GetModifiableVelocityField () |
|
virtual const VelocityFieldType * | GetVelocityField () const |
|
virtual void | SetVelocityFieldInterpolator (VelocityFieldInterpolatorType *) |
|
virtual VelocityFieldInterpolatorType * | GetModifiableVelocityFieldInterpolator () |
|
virtual const VelocityFieldInterpolatorType * | GetVelocityFieldInterpolator () const |
|
void | SetDisplacementField (DisplacementFieldType *displacementField) override |
|
void | ComputeInverseJacobianWithRespectToPosition (const InputPointType &point, InverseJacobianPositionType &jacobian) const override |
|
virtual void | ComputeJacobianWithRespectToParameters (const IndexType &, JacobianType &j) const |
|
virtual void | ComputeJacobianWithRespectToPosition (const IndexType &index, JacobianPositionType &jacobian) const |
|
void | ComputeJacobianWithRespectToPosition (const InputPointType &point, JacobianPositionType &jacobian) const override |
|
virtual::itk::LightObject::Pointer | CreateAnother () const |
|
virtual const ModifiedTimeType & | GetDisplacementFieldSetTime () const |
|
bool | GetInverse (Self *inverse) const |
|
virtual void | GetInverseJacobianOfForwardFieldWithRespectToPosition (const IndexType &index, JacobianPositionType &jacobian, bool useSVD=false) const |
|
virtual void | GetInverseJacobianOfForwardFieldWithRespectToPosition (const InputPointType &point, JacobianPositionType &jacobian, bool useSVD=false) const |
|
const char * | GetNameOfClass () const override |
|
NumberOfParametersType | GetNumberOfLocalParameters () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
virtual void | SetIdentity () |
|
OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &) const override |
|
OutputVectorPixelType | TransformDiffusionTensor (const InputVectorPixelType &) const |
|
OutputPointType | TransformPoint (const InputPointType &inputPoint) const override |
|
OutputVectorPixelType | TransformVector (const InputVectorPixelType &) const override |
|
OutputVnlVectorType | TransformVector (const InputVnlVectorType &) const override |
|
void | SetDisplacementField (std::nullptr_t)=delete |
|
virtual DisplacementFieldType * | GetModifiableDisplacementField () |
|
virtual const DisplacementFieldType * | GetDisplacementField () const |
|
virtual void | SetInverseDisplacementField (DisplacementFieldType *inverseField) |
|
virtual DisplacementFieldType * | GetModifiableInverseDisplacementField () |
|
virtual const DisplacementFieldType * | GetInverseDisplacementField () const |
|
virtual void | SetInterpolator (InterpolatorType *interpolator) |
|
virtual InterpolatorType * | GetModifiableInterpolator () |
|
virtual const InterpolatorType * | GetInterpolator () const |
|
virtual void | SetInverseInterpolator (InterpolatorType *interpolator) |
|
virtual InterpolatorType * | GetModifiableInverseInterpolator () |
|
virtual const InterpolatorType * | GetInverseInterpolator () const |
|
OutputVectorType | TransformVector (const InputVectorType &) const override |
|
virtual OutputVectorType | TransformVector (const InputVectorType &vector, const InputPointType &point) const |
|
virtual OutputVnlVectorType | TransformVector (const InputVnlVectorType &vector, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
OutputDiffusionTensor3DType | TransformDiffusionTensor (const InputDiffusionTensor3DType &) const |
|
virtual OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &tensor) const |
|
virtual OutputDiffusionTensor3DType | TransformDiffusionTensor3D (const InputDiffusionTensor3DType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &tensor) const |
|
virtual OutputVectorPixelType | TransformDiffusionTensor3D (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &) const override |
|
virtual OutputCovariantVectorType | TransformCovariantVector (const InputCovariantVectorType &vector, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformCovariantVector (const InputVectorPixelType &vector, const InputPointType &point) const |
|
void | SetParameters (const ParametersType ¶ms) override |
|
void | ComputeJacobianWithRespectToParameters (const InputPointType &, JacobianType &j) const override |
|
virtual void | SetCoordinateTolerance (double _arg) |
|
virtual double | GetCoordinateTolerance () const |
|
virtual void | SetDirectionTolerance (double _arg) |
|
virtual double | GetDirectionTolerance () const |
|
virtual void | ComputeJacobianWithRespectToParametersCachedTemporaries (const InputPointType &p, JacobianType &jacobian, JacobianType &cachedJacobian) const |
|
virtual void | ComputeJacobianWithRespectToParametersCachedTemporaries (const InputPointType &p, JacobianType &jacobian, JacobianType &cachedJacobian) const |
|
void | CopyInFixedParameters (const FixedParametersValueType *const begin, const FixedParametersValueType *const end) override |
|
void | CopyInFixedParameters (const FixedParametersValueType *const begin, const FixedParametersValueType *const end) override |
|
void | CopyInParameters (const ParametersValueType *const begin, const ParametersValueType *const end) override |
|
void | CopyInParameters (const ParametersValueType *const begin, const ParametersValueType *const end) override |
|
const FixedParametersType & | GetFixedParameters () const override |
|
const FixedParametersType & | GetFixedParameters () const override |
|
unsigned int | GetInputSpaceDimension () const override |
|
unsigned int | GetInputSpaceDimension () const override |
|
bool | GetInverse (Self *inverseTransform) const |
|
bool | GetInverse (Self *inverseTransform) const |
|
const char * | GetNameOfClass () const override |
|
const char * | GetNameOfClass () const override |
|
virtual NumberOfParametersType | GetNumberOfFixedParameters () const |
|
virtual NumberOfParametersType | GetNumberOfFixedParameters () const |
|
NumberOfParametersType | GetNumberOfParameters () const override |
|
NumberOfParametersType | GetNumberOfParameters () const override |
|
unsigned int | GetOutputSpaceDimension () const override |
|
unsigned int | GetOutputSpaceDimension () const override |
|
const ParametersType & | GetParameters () const override |
|
const ParametersType & | GetParameters () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
TransformCategoryEnum | GetTransformCategory () const override |
|
std::string | GetTransformTypeAsString () const override |
|
std::string | GetTransformTypeAsString () const override |
|
virtual bool | IsLinear () const |
|
virtual bool | IsLinear () const |
|
| itkCloneMacro (Self) |
|
| itkCloneMacro (Self) |
|
void | SetParametersByValue (const ParametersType &p) override |
|
void | SetParametersByValue (const ParametersType &p) override |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &inputTensor, const InputPointType &point) const |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &tensor) const |
|
virtual OutputSymmetricSecondRankTensorType | TransformSymmetricSecondRankTensor (const InputSymmetricSecondRankTensorType &tensor) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &inputTensor, const InputPointType &point) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &tensor) const |
|
virtual OutputVectorPixelType | TransformSymmetricSecondRankTensor (const InputVectorPixelType &tensor) const |
|
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (TImage *image) const |
|
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (SmartPointer< TImage > image) const |
|
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (TImage *image) const |
|
std::enable_if_t< TImage::ImageDimension==VInputDimension &&TImage::ImageDimension==VOutputDimension, void > | ApplyToImageMetadata (SmartPointer< TImage > image) const |
|
| ITK_DISALLOW_COPY_AND_MOVE (TransformBaseTemplate) |
|
| itkGetConstReferenceMacro (InputSpaceName, std::string) |
|
| itkGetConstReferenceMacro (OutputSpaceName, std::string) |
|
| itkOverrideGetNameOfClassMacro (TransformBaseTemplate) |
|
| itkSetMacro (InputSpaceName, std::string) |
|
| itkSetMacro (OutputSpaceName, std::string) |
|
virtual void | SetFixedParameters (const FixedParametersType &)=0 |
|
virtual void | SetParameters (const ParametersType &)=0 |
|
virtual void | SetParametersByValue (const ParametersType &p)=0 |
|