template<typename TFixedImage, typename TMovingImage, typename TOutputTransform = TimeVaryingBSplineVelocityFieldTransform<double, TFixedImage::ImageDimension>>
class itk::TimeVaryingBSplineVelocityFieldImageRegistrationMethod< TFixedImage, TMovingImage, TOutputTransform >
Interface method for the current registration framework using the time varying velocity field transform.
Output: The output is the updated transform which has been added to the composite transform.
This derived class from the SimpleImageRegistrationMethod class is specialized to handle time-varying velocity field transforms of which there are currently 3:
- TimeVaryingDisplacementFieldTransform
- GaussianSmoothingOnUpdateTimeVaryingDisplacementFieldTransform
- BSplineSmoothingOnUpdateTimeVaryingDisplacementFieldTransform
The latter is derived from the former and performs an optional spatial and temporal smoothing on the update and total velocity fields. Integration of the velocity field is performed using 4th order Runge Kutta and is performed using the class itkTimeVaryingBSplineVelocityFieldIntegrationImageFilter.
Optimization occurs in an iterative fashion where for each sample time point, t, in the velocity field, we integrate the velocity field in the range [0, t] to yield the displacement field which warps fixed image to time point t. Simultaneously, we integrate the velocity field in the range [t, 1] to yield the displacement field transform which warps the moving image to time point t. The metric derivative for each time point of the velocity field calculated in this way produces the normalized update field (or gradient) of the velocity field to be added to the total field at each iteration after being multiplied by the learning rate and optionally smoothed. Mathematically, this can be described as
where
bspline smoothing on the total field bspline smoothing on the update field learning rate the normalized velocity field where we normalize the velocity field at each time point separately by the max norm of the field at that time point. This is done due to a weakly necessary (but not sufficient) condition being that the velocity field have a constant norm for all time points.
- Author
- Nick Tustison
-
Brian Avants
Definition at line 95 of file itkTimeVaryingBSplineVelocityFieldImageRegistrationMethod.h.
|
typedef
BSplineScatteredDataPointSetToImageFilter
< PointSetType,
TimeVaryingVelocityFieldType > | BSplineFilterType |
|
typedef
Superclass::CompositeTransformType | CompositeTransformType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DecoratedOutputTransformType::Pointer | DecoratedOutputTransformPointer |
|
typedef
Superclass::DecoratedOutputTransformType | DecoratedOutputTransformType |
|
typedef
OutputTransformType::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef
OutputTransformType::DisplacementFieldType | DisplacementFieldType |
|
typedef
TimeVaryingVelocityFieldControlPointLatticeType::PixelType | DisplacementVectorType |
|
typedef
ImageMetricType::FixedImageMaskType | FixedImageMaskType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef TFixedImage | FixedImageType |
|
typedef ImageMaskSpatialObject
< ImageDimension > | ImageMaskSpatialObjectType |
|
typedef ImageMetricType::Pointer | ImageMetricPointer |
|
typedef Superclass::ImageMetricType | ImageMetricType |
|
typedef
ImageMaskSpatialObjectType::ImageType | MaskImageType |
|
typedef
ImageMetricType::MeasureType | MeasureType |
|
typedef
ImageMetricType::MovingImageMaskType | MovingImageMaskType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef TMovingImage | MovingImageType |
|
typedef Superclass::MultiMetricType | MultiMetricType |
|
typedef Array< SizeValueType > | NumberOfIterationsArrayType |
|
typedef
OutputTransformType::Pointer | OutputTransformPointer |
|
typedef TOutputTransform | OutputTransformType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef PointSet
< DisplacementVectorType,
ImageDimension+1 > | PointSetType |
|
typedef
OutputTransformType::ScalarType | RealType |
|
typedef
TimeVaryingBSplineVelocityFieldImageRegistrationMethod | Self |
|
typedef
ImageRegistrationMethodv4
< TFixedImage, TMovingImage,
TOutputTransform > | Superclass |
|
typedef
OutputTransformType::TimeVaryingVelocityFieldControlPointLatticePointer | TimeVaryingVelocityFieldControlPointLatticePointer |
|
typedef
OutputTransformType::TimeVaryingVelocityFieldControlPointLatticeType | TimeVaryingVelocityFieldControlPointLatticeType |
|
typedef
OutputTransformType::TimeVaryingVelocityFieldControlPointLatticePointer | TimeVaryingVelocityFieldPointer |
|
typedef
OutputTransformType::TimeVaryingVelocityFieldControlPointLatticeType | TimeVaryingVelocityFieldType |
|
typedef Image
< WeightsElementType,
ImageDimension+1 > | TimeVaryingWeightedMaskImageType |
|
typedef
ImageMetricType::VirtualImageType | VirtualImageType |
|
typedef Image
< WeightsElementType,
ImageDimension > | WeightedMaskImageType |
|
typedef
BSplineFilterType::WeightsContainerType | WeightsContainerType |
|
typedef
WeightsContainerType::Element | WeightsElementType |
|
typedef
CompositeTransformType::Pointer | CompositeTransformPointer |
|
typedef CompositeTransform
< RealType, ImageDimension > | CompositeTransformType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
ProcessObject::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
|
typedef
DecoratedOutputTransformType::Pointer | DecoratedOutputTransformPointer |
|
typedef DataObjectDecorator
< OutputTransformType > | DecoratedOutputTransformType |
|
typedef
OutputTransformType::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef std::vector
< FixedImagePointer > | FixedImagesContainerType |
|
typedef TFixedImage | FixedImageType |
|
typedef ImageToImageMetricv4
< FixedImageType,
MovingImageType > | ImageMetricType |
|
typedef
InitialTransformType::Pointer | InitialTransformPointer |
|
typedef Transform< RealType,
ImageDimension, ImageDimension > | InitialTransformType |
|
typedef MetricType::Pointer | MetricPointer |
|
typedef
ImageMetricType::FixedSampledPointSetType | MetricSamplePointSetType |
|
typedef Array< RealType > | MetricSamplingPercentageArrayType |
|
enum | MetricSamplingStrategyType {
NONE,
REGULAR,
RANDOM
} |
|
typedef ObjectToObjectMetricBase | MetricType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef std::vector
< MovingImagePointer > | MovingImagesContainerType |
|
typedef TMovingImage | MovingImageType |
|
typedef
ObjectToObjectMultiMetricv4
< ImageDimension,
ImageDimension > | MultiMetricType |
|
typedef OptimizerType::Pointer | OptimizerPointer |
|
typedef ObjectToObjectOptimizerBase | OptimizerType |
|
typedef
OutputTransformType::Pointer | OutputTransformPointer |
|
typedef TOutputTransform | OutputTransformType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
OutputTransformType::ScalarType | RealType |
|
typedef ImageRegistrationMethodv4 | Self |
|
typedef Array< SizeValueType > | ShrinkFactorsArrayType |
|
typedef
ShrinkFilterType::ShrinkFactorsType | ShrinkFactorsPerDimensionContainerType |
|
typedef ShrinkImageFilter
< FixedImageType,
VirtualImageType > | ShrinkFilterType |
|
typedef Array< RealType > | SmoothingSigmasArrayType |
|
typedef ProcessObject | Superclass |
|
typedef
TransformParametersAdaptorType::Pointer | TransformParametersAdaptorPointer |
|
typedef std::vector
< TransformParametersAdaptorPointer > | TransformParametersAdaptorsContainerType |
|
typedef
TransformParametersAdaptor
< OutputTransformType > | TransformParametersAdaptorType |
|
typedef
ImageMetricType::VirtualImageType | VirtualImageType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DataObject::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef std::vector
< DataObjectPointer > | DataObjectPointerArray |
|
typedef
DataObjectPointerArray::size_type | DataObjectPointerArraySizeType |
|
typedef std::vector
< DataObjectIdentifierType > | NameArray |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ProcessObject | Self |
|
typedef Object | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Object | Self |
|
typedef LightObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef LightObject | Self |
|