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.
Within an iteration, the two ComputeUpdateField() calls resample each image and mask once to the virtual domain and share the result. The cache is keyed only on the image, transform and reference objects, not on their modification times, so a subclass that runs its own iteration loop must call ClearResampleCache() after the update-field calls of each iteration and whenever it changes an image, mask or transform between them.
- Todo
- Need to allow the fixed image to have a composite transform.
- Author
- Nick Tustison
-
Brian Avants
Definition at line 68 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 | 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 | 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 |
| |
|
| void | ClearResampleCache () |
| |
| 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 |
| |
| template<typename TImage> |
| TImage::ConstPointer | ResampleImageToVirtualDomain (const TImage *, const TransformBaseType *, const VirtualImageBaseType *) |
| |
| template<typename TImage> |
| TImage::ConstPointer | ResampleMaskToVirtualDomain (const TImage *, const TransformBaseType *, const VirtualImageBaseType *) |
| |
| 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 () |
| |