template<typename TFixedImage, typename TMovingImage, typename TOutputTransform = GaussianSmoothingOnUpdateTimeVaryingVelocityFieldTransform<double, TFixedImage::ImageDimension>, typename TVirtualImage = TFixedImage, typename TPointSet = PointSet<unsigned int, TFixedImage::ImageDimension>>
class itk::TimeVaryingVelocityFieldImageRegistrationMethodv4< TFixedImage, TMovingImage, TOutputTransform, TVirtualImage, TPointSet >
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 ImageRegistrationMethodv4 class is specialized to handle time-varying velocity field transforms of which there are currently 2:
- TimeVaryingDisplacementFieldTransform
- GaussianSmoothingOnUpdateTimeVaryingDisplacementFieldTransform
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 itkTimeVaryingVelocityFieldIntegrationImageFilter.
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
gaussian smoothing on the total field gaussian 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 87 of file itkTimeVaryingVelocityFieldImageRegistrationMethodv4.h.
|
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
DisplacementFieldType::Pointer | DisplacementFieldPointer |
|
typedef
OutputTransformType::DisplacementFieldType | DisplacementFieldType |
|
typedef
TimeVaryingVelocityFieldType::PixelType | DisplacementVectorType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef TFixedImage | FixedImageType |
|
typedef ImageMetricType::Pointer | ImageMetricPointer |
|
typedef Superclass::ImageMetricType | ImageMetricType |
|
typedef
ImageMetricType::MeasureType | MeasureType |
|
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
OutputTransformType::ScalarType | RealType |
|
typedef MovingImageType::RegionType | RegionType |
|
typedef
TimeVaryingVelocityFieldImageRegistrationMethodv4 | Self |
|
typedef
ImageRegistrationMethodv4
< TFixedImage, TMovingImage,
TOutputTransform,
TVirtualImage, TPointSet > | Superclass |
|
typedef
TimeVaryingVelocityFieldType::Pointer | TimeVaryingVelocityFieldPointer |
|
typedef
OutputTransformType::TimeVaryingVelocityFieldType | TimeVaryingVelocityFieldType |
|
typedef
ImageMetricType::VirtualImageType | VirtualImageType |
|
typedef
CompositeTransformType::Pointer | CompositeTransformPointer |
|
typedef CompositeTransform
< RealType, ImageDimension > | CompositeTransformType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
ProcessObject::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
|
typedef
DecoratedInitialTransformType::Pointer | DecoratedInitialTransformPointer |
|
typedef DataObjectDecorator
< InitialTransformType > | DecoratedInitialTransformType |
|
typedef
DecoratedOutputTransformType::Pointer | DecoratedOutputTransformPointer |
|
typedef DataObjectDecorator
< OutputTransformType > | DecoratedOutputTransformType |
|
typedef
OutputTransformType::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef
FixedImageMaskType::ConstPointer | FixedImageMaskConstPointer |
|
typedef std::vector
< FixedImageMaskConstPointer > | FixedImageMasksContainerType |
|
typedef
ImageMetricType::FixedImageMaskType | FixedImageMaskType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef std::vector
< FixedImagePointer > | FixedImagesContainerType |
|
typedef TFixedImage | FixedImageType |
|
typedef ImageToImageMetricv4
< FixedImageType,
MovingImageType,
VirtualImageType, RealType > | 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
ObjectToObjectMetricBaseTemplate
< RealType > | MetricType |
|
typedef
MovingImageMaskType::ConstPointer | MovingImageMaskConstPointer |
|
typedef std::vector
< MovingImageMaskConstPointer > | MovingImageMasksContainerType |
|
typedef
ImageMetricType::MovingImageMaskType | MovingImageMaskType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef std::vector
< MovingImagePointer > | MovingImagesContainerType |
|
typedef TMovingImage | MovingImageType |
|
typedef
ObjectToObjectMultiMetricv4
< ImageDimension,
ImageDimension,
VirtualImageType, RealType > | MultiMetricType |
|
typedef OptimizerType::Pointer | OptimizerPointer |
|
typedef
ObjectToObjectOptimizerBaseTemplate
< RealType > | OptimizerType |
|
typedef OptimizerType::ScalesType | OptimizerWeightsType |
|
typedef
OutputTransformType::Pointer | OutputTransformPointer |
|
typedef TOutputTransform | OutputTransformType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef PointSetType::ConstPointer | PointSetConstPointer |
|
typedef
PointSetToPointSetMetricv4
< PointSetType, PointSetType,
RealType > | PointSetMetricType |
|
typedef std::vector
< PointSetConstPointer > | PointSetsContainerType |
|
typedef TPointSet | PointSetType |
|
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
TransformParametersAdaptorBase
< InitialTransformType > | TransformParametersAdaptorType |
|
typedef Vector< RealType,
ImageDimension > | VectorType |
|
typedef
VirtualImageBaseType::ConstPointer | VirtualImageBaseConstPointer |
|
typedef ImageBase< ImageDimension > | VirtualImageBaseType |
|
typedef VirtualImageType::Pointer | VirtualImagePointer |
|
typedef TVirtualImage | 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 |
|
|
virtual void | GenerateData () override |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | StartOptimization () |
|
void | ThreadedGenerateData (const RegionType &, ThreadIdType) |
|
| TimeVaryingVelocityFieldImageRegistrationMethodv4 () |
|
virtual | ~TimeVaryingVelocityFieldImageRegistrationMethodv4 () |
|
virtual void | AllocateOutputs () |
|
virtual
VirtualImageBaseConstPointer | GetCurrentLevelVirtualDomainImage () |
|
| ImageRegistrationMethodv4 () |
|
virtual void | InitializeRegistrationAtEachLevel (const SizeValueType) |
|
virtual void | SetMetricSamplePoints () |
|
virtual | ~ImageRegistrationMethodv4 () |
|
virtual void | AddInput (DataObject *input) |
|
virtual void | AddOutput (DataObject *output) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &) |
|
bool | AddRequiredInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
|
virtual void | CacheInputReleaseDataFlags () |
|
virtual void | GenerateInputRequestedRegion () |
|
virtual void | GenerateOutputInformation () |
|
virtual void | GenerateOutputRequestedRegion (DataObject *output) |
|
DataObject * | GetInput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetInput (const DataObjectIdentifierType &key) const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredInputs () const |
|
virtual const
DataObjectPointerArraySizeType & | GetNumberOfRequiredOutputs () const |
|
bool | IsIndexedInputName (const DataObjectIdentifierType &) const |
|
bool | IsIndexedOutputName (const DataObjectIdentifierType &) const |
|
bool | IsRequiredInputName (const DataObjectIdentifierType &) const |
|
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
|
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
|
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
|
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
|
DataObjectPointerArraySizeType | MakeIndexFromInputName (const DataObjectIdentifierType &name) const |
|
DataObjectPointerArraySizeType | MakeIndexFromOutputName (const DataObjectIdentifierType &name) const |
|
DataObjectIdentifierType | MakeNameFromInputIndex (DataObjectPointerArraySizeType idx) const |
|
DataObjectIdentifierType | MakeNameFromOutputIndex (DataObjectPointerArraySizeType idx) const |
|
virtual void | PopBackInput () |
|
virtual void | PopFrontInput () |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
virtual void | PushBackInput (const DataObject *input) |
|
virtual void | PushFrontInput (const DataObject *input) |
|
virtual void | ReleaseInputs () |
|
virtual void | RemoveInput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveInput (DataObjectPointerArraySizeType) |
|
virtual void | RemoveOutput (const DataObjectIdentifierType &key) |
|
virtual void | RemoveOutput (DataObjectPointerArraySizeType idx) |
|
bool | RemoveRequiredInputName (const DataObjectIdentifierType &) |
|
virtual void | RestoreInputReleaseDataFlags () |
|
virtual void | SetInput (const DataObjectIdentifierType &key, DataObject *input) |
|
virtual void | SetNthInput (DataObjectPointerArraySizeType num, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
virtual void | SetPrimaryInput (DataObject *input) |
|
virtual void | SetPrimaryOutput (DataObject *output) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyInputInformation () |
|
virtual void | VerifyPreconditions () |
|
| ~ProcessObject () |
|
DataObject * | GetInput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetInput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryInput () |
|
const DataObject * | GetPrimaryInput () const |
|
virtual void | SetPrimaryInputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryInputName (void) const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName (void) const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
virtual | ~Object () |
|
virtual LightObject::Pointer | InternalClone () const |
|
| LightObject () |
|
virtual void | PrintHeader (std::ostream &os, Indent indent) const |
|
virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
|
virtual | ~LightObject () |
|