template<typename TFixedImage, typename TMovingImage, typename TOutputTransform = DisplacementFieldTransform<double, TFixedImage::ImageDimension>, typename TVirtualImage = TFixedImage, typename TPointSet = PointSet<unsigned int, TFixedImage::ImageDimension>>
class itk::SyNImageRegistrationMethod< TFixedImage, TMovingImage, TOutputTransform, TVirtualImage, TPointSet >
Interface method for the performing greedy SyN image registration.
For greedy SyN we use m_Transform to map the time-parameterized middle image to the fixed image (and vice versa using m_Transform->GetInverseDisplacementField() ). We employ another ivar, m_InverseTransform, to map the time-parameterized middle image to the moving image.
Output: The output is the updated transform which has been added to the composite transform.
This implementation is based on the source code in Advanced Normalization Tools (ANTs) [6].
The original paper discussing the method is [5].
The method evolved since that time with crucial contributions from Gang Song and Nick Tustison. Though similar in spirit, this implementation is not identical.
- Todo
- Need to allow the fixed image to have a composite transform.
- Author
- Nick Tustison
-
Brian Avants
Definition at line 61 of file itkSyNImageRegistrationMethod.h.
|
| using | ConstPointer = SmartPointer<const Self> |
| |
| using | DecoratedOutputTransformPointer = typename DecoratedOutputTransformType::Pointer |
| |
| using | DerivativeType = typename OutputTransformType::DerivativeType |
| |
| using | DerivativeValueType = typename DerivativeType::ValueType |
| |
| using | DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
| |
| using | DisplacementFieldTransformPointer = typename DisplacementFieldTransformType::Pointer |
| |
| using | DisplacementFieldTransformType = DisplacementFieldTransform<RealType, ImageDimension> |
| |
| using | DisplacementFieldType = typename OutputTransformType::DisplacementFieldType |
| |
| using | DisplacementVectorType = typename DisplacementFieldType::PixelType |
| |
| using | FixedImagePointer = typename FixedImageType::Pointer |
| |
| using | FixedImageType = TFixedImage |
| |
| using | FixedMaskImageType = typename ImageMaskSpatialObjectType::ImageType |
| |
| using | ImageMaskSpatialObjectType = ImageMaskSpatialObject<ImageDimension> |
| |
| using | ImageMetricPointer = typename ImageMetricType::Pointer |
| |
| using | MeasureType = typename ImageMetricType::MeasureType |
| |
| using | MetricPointer = typename MetricType::Pointer |
| |
| using | MovingImagePointer = typename MovingImageType::Pointer |
| |
| using | MovingImageType = TMovingImage |
| |
| using | MovingMaskImageType = typename ImageMaskSpatialObjectType::ImageType |
| |
| using | NumberOfIterationsArrayType = Array<SizeValueType> |
| |
| using | OutputTransformPointer = typename OutputTransformType::Pointer |
| |
| using | OutputTransformType = TOutputTransform |
| |
| using | Pointer = SmartPointer<Self> |
| |
| using | PointSetPointer = typename PointSetType::Pointer |
| |
| using | RealType = typename OutputTransformType::ScalarType |
| |
| using | Self = SyNImageRegistrationMethod |
| |
| using | Superclass = ImageRegistrationMethodv4<TFixedImage, TMovingImage, TOutputTransform, TVirtualImage, TPointSet> |
| |
| using | TransformBaseType = typename CompositeTransformType::TransformType |
| |
| using | VirtualImageType = typename Superclass::VirtualImageType |
| |
| using | CompositeTransformPointer = typename CompositeTransformType::Pointer |
| |
| using | CompositeTransformType = CompositeTransform<RealType, ImageDimension> |
| |
| using | ConstPointer = SmartPointer<const Self> |
| |
| using | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
| |
| using | DecoratedInitialTransformPointer = typename DecoratedInitialTransformType::Pointer |
| |
| using | DecoratedInitialTransformType = DataObjectDecorator<InitialTransformType> |
| |
| using | DecoratedOutputTransformPointer = typename DecoratedOutputTransformType::Pointer |
| |
| using | DecoratedOutputTransformType = DataObjectDecorator<OutputTransformType> |
| |
| using | DerivativeType = typename OutputTransformType::DerivativeType |
| |
| using | DerivativeValueType = typename DerivativeType::ValueType |
| |
| using | FixedImageConstPointer = typename FixedImageType::ConstPointer |
| |
| using | FixedImageMaskConstPointer = typename FixedImageMaskType::ConstPointer |
| |
| using | FixedImageMasksContainerType = std::vector<FixedImageMaskConstPointer> |
| |
| using | FixedImageMaskType = typename ImageMetricType::FixedImageMaskType |
| |
| using | FixedImagePointer = typename FixedImageType::Pointer |
| |
| using | FixedImagesContainerType = std::vector<FixedImageConstPointer> |
| |
| using | FixedImageType = TFixedImage |
| |
| using | ImageMetricType = ImageToImageMetricv4<FixedImageType, MovingImageType, VirtualImageType, RealType> |
| |
| using | InitialTransformPointer = typename InitialTransformType::Pointer |
| |
| using | InitialTransformType = Transform<RealType, ImageDimension, ImageDimension> |
| |
| using | MetricPointer = typename MetricType::Pointer |
| |
| using | MetricSamplePointSetType = typename ImageMetricType::FixedSampledPointSetType |
| |
| using | MetricSamplingPercentageArrayType = Array<RealType> |
| |
| using | MetricSamplingStrategyEnum = ImageRegistrationMethodv4Enums::MetricSamplingStrategy |
| |
| using | MetricType = ObjectToObjectMetricBaseTemplate<RealType> |
| |
| using | MovingImageConstPointer = typename MovingImageType::ConstPointer |
| |
| using | MovingImageMaskConstPointer = typename MovingImageMaskType::ConstPointer |
| |
| using | MovingImageMasksContainerType = std::vector<MovingImageMaskConstPointer> |
| |
| using | MovingImageMaskType = typename ImageMetricType::MovingImageMaskType |
| |
| using | MovingImagePointer = typename MovingImageType::Pointer |
| |
| using | MovingImagesContainerType = std::vector<MovingImageConstPointer> |
| |
| using | MovingImageType = TMovingImage |
| |
| using | MultiMetricType = ObjectToObjectMultiMetricv4<ImageDimension, ImageDimension, VirtualImageType, RealType> |
| |
| using | OptimizerPointer = typename OptimizerType::Pointer |
| |
| using | OptimizerType = ObjectToObjectOptimizerBaseTemplate<RealType> |
| |
| using | OptimizerWeightsType = typename OptimizerType::ScalesType |
| |
| using | OutputTransformPointer = typename OutputTransformType::Pointer |
| |
| using | OutputTransformType = TOutputTransform |
| |
| using | Pointer = SmartPointer<Self> |
| |
| using | PointSetConstPointer = typename PointSetType::ConstPointer |
| |
| using | PointSetMetricType = PointSetToPointSetMetricWithIndexv4<PointSetType, PointSetType, RealType> |
| |
| using | PointSetsContainerType = std::vector<PointSetConstPointer> |
| |
| using | PointSetType = TPointSet |
| |
| using | RealType = typename OutputTransformType::ScalarType |
| |
| using | Self = ImageRegistrationMethodv4 |
| |
| using | ShrinkFactorsArrayType = Array<SizeValueType> |
| |
| using | ShrinkFactorsPerDimensionContainerType = typename ShrinkFilterType::ShrinkFactorsType |
| |
| using | ShrinkFilterType = ShrinkImageFilter<FixedImageType, VirtualImageType> |
| |
| using | SmoothingSigmasArrayType = Array<RealType> |
| |
| using | Superclass = ProcessObject |
| |
| using | TransformParametersAdaptorPointer = typename TransformParametersAdaptorType::Pointer |
| |
| using | TransformParametersAdaptorsContainerType = std::vector<TransformParametersAdaptorPointer> |
| |
| using | TransformParametersAdaptorType = TransformParametersAdaptorBase<InitialTransformType> |
| |
| using | VectorType = Vector<RealType, ImageDimension> |
| |
| using | VirtualImageBaseConstPointer = typename VirtualImageBaseType::ConstPointer |
| |
| using | VirtualImageBaseType = ImageBase<ImageDimension> |
| |
| using | VirtualImagePointer = typename VirtualImageType::Pointer |
| |
| using | VirtualImageType = TVirtualImage |
| |
| using | ConstPointer = SmartPointer<const Self> |
| |
| using | DataObjectIdentifierType = DataObject::DataObjectIdentifierType |
| |
| using | DataObjectPointer = DataObject::Pointer |
| |
| using | DataObjectPointerArray = std::vector<DataObjectPointer> |
| |
| using | DataObjectPointerArraySizeType = DataObjectPointerArray::size_type |
| |
| using | MultiThreaderType = MultiThreaderBase |
| |
| using | NameArray = std::vector<DataObjectIdentifierType> |
| |
| using | Pointer = SmartPointer<Self> |
| |
| using | Self = ProcessObject |
| |
| using | Superclass = Object |
| |
| using | ConstPointer = SmartPointer<const Self> |
| |
| using | Pointer = SmartPointer<Self> |
| |
| using | Self = Object |
| |
| using | Superclass = LightObject |
| |
| using | ConstPointer = SmartPointer<const Self> |
| |
| using | Pointer = SmartPointer<Self> |
| |
| using | Self = LightObject |
| |
|
| virtual DisplacementFieldPointer | ComputeMetricGradientField (const FixedImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const MovingImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const FixedImageMasksContainerType, const MovingImageMasksContainerType, MeasureType &) |
| |
| virtual DisplacementFieldPointer | ComputeUpdateField (const FixedImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const MovingImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const FixedImageMasksContainerType, const MovingImageMasksContainerType, MeasureType &) |
| |
| virtual DisplacementFieldPointer | GaussianSmoothDisplacementField (const DisplacementFieldType *, const RealType) |
| |
| void | GenerateData () override |
| |
| void | InitializeRegistrationAtEachLevel (const SizeValueType) override |
| |
| virtual DisplacementFieldPointer | InvertDisplacementField (const DisplacementFieldType *, const DisplacementFieldType *=nullptr) |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| virtual DisplacementFieldPointer | ScaleUpdateField (const DisplacementFieldType *) |
| |
| virtual void | StartOptimization () |
| |
| | SyNImageRegistrationMethod () |
| |
| | ~SyNImageRegistrationMethod () override=default |
| |
| virtual void | AllocateOutputs () |
| |
| virtual VirtualImageBaseConstPointer | GetCurrentLevelVirtualDomainImage () |
| |
| | ImageRegistrationMethodv4 () |
| |
| virtual void | SetMetricSamplePoints () |
| |
| | ~ImageRegistrationMethodv4 () override=default |
| |
| virtual void | AddInput (DataObject *input) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &) |
| |
| void | AddOptionalInputName (const DataObjectIdentifierType &, DataObjectPointerArraySizeType idx) |
| |
| 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 |
| |
| 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 idx, DataObject *input) |
| |
| virtual void | SetNthOutput (DataObjectPointerArraySizeType idx, DataObject *output) |
| |
| void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
| |
| void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
| |
| virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
| |
| virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
| |
| virtual void | SetOutput (const DataObjectIdentifierType &name, DataObject *output) |
| |
| virtual void | SetPrimaryInput (DataObject *object) |
| |
| virtual void | SetPrimaryOutput (DataObject *object) |
| |
| void | SetRequiredInputNames (const NameArray &) |
| |
| virtual void | VerifyInputInformation () const |
| |
| virtual void | VerifyPreconditions () const |
| |
| | ~ProcessObject () override |
| |
| 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 () const |
| |
| DataObject * | GetOutput (const DataObjectIdentifierType &key) |
| |
| const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
| |
| virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
| |
| virtual const char * | GetPrimaryOutputName () const |
| |
| DataObject * | GetOutput (DataObjectPointerArraySizeType i) |
| |
| const DataObject * | GetOutput (DataObjectPointerArraySizeType i) const |
| |
| DataObject * | GetPrimaryOutput () |
| |
| const DataObject * | GetPrimaryOutput () const |
| |
| virtual bool | GetThreaderUpdateProgress () const |
| |
| virtual void | ThreaderUpdateProgressOn () |
| |
| virtual void | ThreaderUpdateProgressOff () |
| |
| virtual void | SetThreaderUpdateProgress (bool arg) |
| |
| | Object () |
| |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| |
| virtual void | SetTimeStamp (const TimeStamp &timeStamp) |
| |
| | ~Object () override |
| |
| 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 () |
| |