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 () 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 | 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 () |
|