|
using | CompositeTransformType = typename Superclass::CompositeTransformType |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DecoratedOutputTransformPointer = typename DecoratedOutputTransformType::Pointer |
|
using | DecoratedOutputTransformType = typename Superclass::DecoratedOutputTransformType |
|
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 | FixedImageMasksContainerType = typename Superclass::FixedImageMasksContainerType |
|
using | FixedImageMaskType = typename Superclass::FixedImageMaskType |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | FixedImagesContainerType = typename Superclass::FixedImagesContainerType |
|
using | FixedImageType = TFixedImage |
|
using | FixedMaskImageType = typename ImageMaskSpatialObjectType::ImageType |
|
using | ImageMaskSpatialObjectType = ImageMaskSpatialObject< ImageDimension > |
|
using | ImageMetricPointer = typename ImageMetricType::Pointer |
|
using | ImageMetricType = typename Superclass::ImageMetricType |
|
using | InitialTransformType = typename Superclass::InitialTransformType |
|
using | MeasureType = typename ImageMetricType::MeasureType |
|
using | MetricPointer = typename MetricType::Pointer |
|
using | MetricType = typename Superclass::MetricType |
|
using | MovingImageMasksContainerType = typename Superclass::MovingImageMasksContainerType |
|
using | MovingImageMaskType = typename Superclass::MovingImageMaskType |
|
using | MovingImagePointer = typename MovingImageType::Pointer |
|
using | MovingImagesContainerType = typename Superclass::MovingImagesContainerType |
|
using | MovingImageType = TMovingImage |
|
using | MovingMaskImageType = typename ImageMaskSpatialObjectType::ImageType |
|
using | MultiMetricType = typename Superclass::MultiMetricType |
|
using | NumberOfIterationsArrayType = Array< SizeValueType > |
|
using | OutputTransformPointer = typename OutputTransformType::Pointer |
|
using | OutputTransformType = TOutputTransform |
|
using | Pointer = SmartPointer< Self > |
|
using | PointSetMetricType = typename Superclass::PointSetMetricType |
|
using | PointSetPointer = typename PointSetType::Pointer |
|
using | PointSetsContainerType = typename Superclass::PointSetsContainerType |
|
using | PointSetType = typename Superclass::PointSetType |
|
using | RealType = typename OutputTransformType::ScalarType |
|
using | Self = SyNImageRegistrationMethod |
|
using | Superclass = ImageRegistrationMethodv4< TFixedImage, TMovingImage, TOutputTransform, TVirtualImage, TPointSet > |
|
using | TransformBaseType = typename CompositeTransformType::TransformType |
|
using | VirtualImageBaseConstPointer = typename Superclass::VirtualImageBaseConstPointer |
|
using | VirtualImageBaseType = typename Superclass::VirtualImageBaseType |
|
using | VirtualImageType = typename Superclass::VirtualImageType |
|
using | CompositeTransformPointer = typename CompositeTransformType::Pointer |
|
using | CompositeTransformType = CompositeTransform< RealType, ImageDimension > |
|
using | ConstPointer = SmartPointer< const Self > |
|
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 | DataObjectPointerArraySizeType = ProcessObject::DataObjectPointerArraySizeType |
|
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 |
|
|
static constexpr unsigned int | ImageDimension = TFixedImage::ImageDimension |
|
static constexpr unsigned int | ImageDimension = TFixedImage::ImageDimension |
|
RealType | m_LearningRate { 0.25 } |
|
OutputTransformPointer | m_MovingToMiddleTransform { nullptr } |
|
OutputTransformPointer | m_FixedToMiddleTransform { nullptr } |
|
RealType | m_ConvergenceThreshold { static_cast<RealType>(1.0e-6) } |
|
unsigned int | m_ConvergenceWindowSize { 10 } |
|
NumberOfIterationsArrayType | m_NumberOfIterationsPerLevel |
|
bool | m_DownsampleImagesForMetricDerivatives { true } |
|
bool | m_AverageMidPointGradients { false } |
|
RealType | m_GaussianSmoothingVarianceForTheUpdateField { 3.0 } |
|
RealType | m_GaussianSmoothingVarianceForTheTotalField { 0.5 } |
|
virtual void | SetLearningRate (RealType _arg) |
|
virtual RealType | GetLearningRate () const |
|
virtual void | SetNumberOfIterationsPerLevel (NumberOfIterationsArrayType _arg) |
|
virtual NumberOfIterationsArrayType | GetNumberOfIterationsPerLevel () const |
|
virtual void | SetConvergenceThreshold (RealType _arg) |
|
virtual RealType | GetConvergenceThreshold () const |
|
virtual void | SetConvergenceWindowSize (unsigned int _arg) |
|
virtual unsigned int | GetConvergenceWindowSize () const |
|
virtual void | SetDownsampleImagesForMetricDerivatives (bool _arg) |
|
virtual bool | GetDownsampleImagesForMetricDerivatives () const |
|
virtual void | SetAverageMidPointGradients (bool _arg) |
|
virtual bool | GetAverageMidPointGradients () const |
|
virtual void | SetGaussianSmoothingVarianceForTheUpdateField (RealType _arg) |
|
virtual const RealType & | GetGaussianSmoothingVarianceForTheUpdateField () const |
|
virtual void | SetGaussianSmoothingVarianceForTheTotalField (RealType _arg) |
|
virtual const RealType & | GetGaussianSmoothingVarianceForTheTotalField () const |
|
virtual OutputTransformType * | GetModifiableFixedToMiddleTransform () |
|
virtual const OutputTransformType * | GetFixedToMiddleTransform () const |
|
virtual OutputTransformType * | GetModifiableMovingToMiddleTransform () |
|
virtual const OutputTransformType * | GetMovingToMiddleTransform () const |
|
virtual void | SetFixedToMiddleTransform (OutputTransformType *_arg) |
|
virtual void | SetMovingToMiddleTransform (OutputTransformType *_arg) |
|
| SyNImageRegistrationMethod () |
|
| ~SyNImageRegistrationMethod () override=default |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | GenerateData () override |
|
virtual void | StartOptimization () |
|
void | InitializeRegistrationAtEachLevel (const SizeValueType) override |
|
virtual DisplacementFieldPointer | ComputeUpdateField (const FixedImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const MovingImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const FixedImageMasksContainerType, const MovingImageMasksContainerType, MeasureType &) |
|
virtual DisplacementFieldPointer | ComputeMetricGradientField (const FixedImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const MovingImagesContainerType, const PointSetsContainerType, const TransformBaseType *, const FixedImageMasksContainerType, const MovingImageMasksContainerType, MeasureType &) |
|
virtual DisplacementFieldPointer | ScaleUpdateField (const DisplacementFieldType *) |
|
virtual DisplacementFieldPointer | GaussianSmoothDisplacementField (const DisplacementFieldType *, const RealType) |
|
virtual DisplacementFieldPointer | InvertDisplacementField (const DisplacementFieldType *, const DisplacementFieldType *=nullptr) |
|
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.