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)
Avants, B. B.; Tustison, N. J.; Song, G.; Cook, P. A.; Klein, A. & Gee, J. C. A reproducible evaluation of ANTs similarity metric performance in brain image registration. Neuroimage, Penn Image Computing and Science Laboratory, University of Pennsylvania, 2011, 54, 2033-2044
The original paper discussing the method is here:
Avants, B. B.; Epstein, C. L.; Grossman, M. & Gee, J. C. Symmetric diffeomorphic image registration with cross-correlation: evaluating automated labeling of elderly and neurodegenerative brain. Med Image Anal, Department of Radiology, University of Pennsylvania, 2008, 12, 26-41
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 71 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 = DisplacementFieldTransform< double, TFixedImage::ImageDimension > |
| |
| using | Pointer = SmartPointer< Self > |
| |
| using | PointSetConstPointer = typename PointSetType::ConstPointer |
| |
| using | PointSetMetricType = PointSetToPointSetMetricWithIndexv4< PointSetType, PointSetType, RealType > |
| |
| using | PointSetsContainerType = std::vector< PointSetConstPointer > |
| |
| using | PointSetType = PointSet< unsigned int, TFixedImage::ImageDimension > |
| |
| 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 = TFixedImage |
| |
| 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 () |
| |
| void | GenerateData () override |
| |
| virtual VirtualImageBaseConstPointer | GetCurrentLevelVirtualDomainImage () |
| |
| | ImageRegistrationMethodv4 () |
| |
| virtual void | InitializeRegistrationAtEachLevel (const SizeValueType) |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| 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 | GenerateData () |
| |
| 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 () |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| | 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 () ITKv5_CONST |
| |
| virtual void | VerifyPreconditions () ITKv5_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 | SetThreaderUpdateProgress (bool arg) |
| |
| | Object () |
| |
| bool | PrintObservers (std::ostream &os, Indent indent) const |
| |
| void | PrintSelf (std::ostream &os, Indent indent) const override |
| |
| 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 | PrintSelf (std::ostream &os, Indent indent) const |
| |
| virtual void | PrintTrailer (std::ostream &os, Indent indent) const |
| |
| virtual | ~LightObject () |
| |