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 70 of file itkSyNImageRegistrationMethod.h.
|
typedef
Superclass::CompositeTransformType | CompositeTransformType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DecoratedOutputTransformType::Pointer | DecoratedOutputTransformPointer |
|
typedef
Superclass::DecoratedOutputTransformType | DecoratedOutputTransformType |
|
typedef
OutputTransformType::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef
DisplacementFieldType::Pointer | DisplacementFieldPointer |
|
typedef
DisplacementFieldTransformType::Pointer | DisplacementFieldTransformPointer |
|
typedef
DisplacementFieldTransform
< RealType, ImageDimension > | DisplacementFieldTransformType |
|
typedef
OutputTransformType::DisplacementFieldType | DisplacementFieldType |
|
typedef
DisplacementFieldType::PixelType | DisplacementVectorType |
|
typedef
Superclass::FixedImageMasksContainerType | FixedImageMasksContainerType |
|
typedef
Superclass::FixedImageMaskType | FixedImageMaskType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef
Superclass::FixedImagesContainerType | FixedImagesContainerType |
|
typedef TFixedImage | FixedImageType |
|
typedef
ImageMaskSpatialObjectType::ImageType | FixedMaskImageType |
|
typedef ImageMaskSpatialObject
< ImageDimension > | ImageMaskSpatialObjectType |
|
typedef ImageMetricType::Pointer | ImageMetricPointer |
|
typedef Superclass::ImageMetricType | ImageMetricType |
|
typedef
Superclass::InitialTransformType | InitialTransformType |
|
typedef
ImageMetricType::MeasureType | MeasureType |
|
typedef MetricType::Pointer | MetricPointer |
|
typedef Superclass::MetricType | MetricType |
|
typedef
Superclass::MovingImageMasksContainerType | MovingImageMasksContainerType |
|
typedef
Superclass::MovingImageMaskType | MovingImageMaskType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef
Superclass::MovingImagesContainerType | MovingImagesContainerType |
|
typedef TMovingImage | MovingImageType |
|
typedef
ImageMaskSpatialObjectType::ImageType | MovingMaskImageType |
|
typedef Superclass::MultiMetricType | MultiMetricType |
|
typedef Array< SizeValueType > | NumberOfIterationsArrayType |
|
typedef
OutputTransformType::Pointer | OutputTransformPointer |
|
typedef TOutputTransform | OutputTransformType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
Superclass::PointSetMetricType | PointSetMetricType |
|
typedef PointSetType::Pointer | PointSetPointer |
|
typedef
Superclass::PointSetsContainerType | PointSetsContainerType |
|
typedef Superclass::PointSetType | PointSetType |
|
typedef
OutputTransformType::ScalarType | RealType |
|
typedef SyNImageRegistrationMethod | Self |
|
typedef
ImageRegistrationMethodv4
< TFixedImage, TMovingImage,
TOutputTransform,
TVirtualImage, TPointSet > | Superclass |
|
typedef
CompositeTransformType::TransformType | TransformBaseType |
|
typedef
Superclass::VirtualImageBaseConstPointer | VirtualImageBaseConstPointer |
|
typedef
Superclass::VirtualImageBaseType | VirtualImageBaseType |
|
typedef
Superclass::VirtualImageType | VirtualImageType |
|
typedef
CompositeTransformType::Pointer | CompositeTransformPointer |
|
typedef CompositeTransform
< RealType, ImageDimension > | CompositeTransformType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
ProcessObject::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
|
typedef
DecoratedInitialTransformType::Pointer | DecoratedInitialTransformPointer |
|
typedef DataObjectDecorator
< InitialTransformType > | DecoratedInitialTransformType |
|
typedef
DecoratedOutputTransformType::Pointer | DecoratedOutputTransformPointer |
|
typedef DataObjectDecorator
< OutputTransformType > | DecoratedOutputTransformType |
|
typedef
OutputTransformType::DerivativeType | DerivativeType |
|
typedef DerivativeType::ValueType | DerivativeValueType |
|
typedef
FixedImageMaskType::ConstPointer | FixedImageMaskConstPointer |
|
typedef std::vector
< FixedImageMaskConstPointer > | FixedImageMasksContainerType |
|
typedef
ImageMetricType::FixedImageMaskType | FixedImageMaskType |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef std::vector
< FixedImagePointer > | FixedImagesContainerType |
|
typedef TFixedImage | FixedImageType |
|
typedef ImageToImageMetricv4
< FixedImageType,
MovingImageType,
VirtualImageType, RealType > | ImageMetricType |
|
typedef
InitialTransformType::Pointer | InitialTransformPointer |
|
typedef Transform< RealType,
ImageDimension, ImageDimension > | InitialTransformType |
|
typedef MetricType::Pointer | MetricPointer |
|
typedef
ImageMetricType::FixedSampledPointSetType | MetricSamplePointSetType |
|
typedef Array< RealType > | MetricSamplingPercentageArrayType |
|
enum | MetricSamplingStrategyType {
NONE,
REGULAR,
RANDOM
} |
|
typedef
ObjectToObjectMetricBaseTemplate
< RealType > | MetricType |
|
typedef
MovingImageMaskType::ConstPointer | MovingImageMaskConstPointer |
|
typedef std::vector
< MovingImageMaskConstPointer > | MovingImageMasksContainerType |
|
typedef
ImageMetricType::MovingImageMaskType | MovingImageMaskType |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef std::vector
< MovingImagePointer > | MovingImagesContainerType |
|
typedef TMovingImage | MovingImageType |
|
typedef
ObjectToObjectMultiMetricv4
< ImageDimension,
ImageDimension,
VirtualImageType, RealType > | MultiMetricType |
|
typedef OptimizerType::Pointer | OptimizerPointer |
|
typedef
ObjectToObjectOptimizerBaseTemplate
< RealType > | OptimizerType |
|
typedef OptimizerType::ScalesType | OptimizerWeightsType |
|
typedef
OutputTransformType::Pointer | OutputTransformPointer |
|
typedef TOutputTransform | OutputTransformType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef PointSetType::ConstPointer | PointSetConstPointer |
|
typedef
PointSetToPointSetMetricv4
< PointSetType, PointSetType,
RealType > | PointSetMetricType |
|
typedef std::vector
< PointSetConstPointer > | PointSetsContainerType |
|
typedef TPointSet | PointSetType |
|
typedef
OutputTransformType::ScalarType | RealType |
|
typedef ImageRegistrationMethodv4 | Self |
|
typedef Array< SizeValueType > | ShrinkFactorsArrayType |
|
typedef
ShrinkFilterType::ShrinkFactorsType | ShrinkFactorsPerDimensionContainerType |
|
typedef ShrinkImageFilter
< FixedImageType,
VirtualImageType > | ShrinkFilterType |
|
typedef Array< RealType > | SmoothingSigmasArrayType |
|
typedef ProcessObject | Superclass |
|
typedef
TransformParametersAdaptorType::Pointer | TransformParametersAdaptorPointer |
|
typedef std::vector
< TransformParametersAdaptorPointer > | TransformParametersAdaptorsContainerType |
|
typedef
TransformParametersAdaptorBase
< InitialTransformType > | TransformParametersAdaptorType |
|
typedef Vector< RealType,
ImageDimension > | VectorType |
|
typedef
VirtualImageBaseType::ConstPointer | VirtualImageBaseConstPointer |
|
typedef ImageBase< ImageDimension > | VirtualImageBaseType |
|
typedef VirtualImageType::Pointer | VirtualImagePointer |
|
typedef TVirtualImage | VirtualImageType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DataObject::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef std::vector
< DataObjectPointer > | DataObjectPointerArray |
|
typedef
DataObjectPointerArray::size_type | DataObjectPointerArraySizeType |
|
typedef std::vector
< DataObjectIdentifierType > | NameArray |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ProcessObject | Self |
|
typedef Object | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef Object | Self |
|
typedef LightObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef SmartPointer< Self > | Pointer |
|
typedef LightObject | Self |
|
|
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) |
|
virtual void | GenerateData () override |
|
virtual void | InitializeRegistrationAtEachLevel (const SizeValueType) override |
|
virtual DisplacementFieldPointer | InvertDisplacementField (const DisplacementFieldType *, const DisplacementFieldType *=nullptr) |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual DisplacementFieldPointer | ScaleUpdateField (const DisplacementFieldType *) |
|
virtual void | StartOptimization () |
|
| SyNImageRegistrationMethod () |
|
virtual | ~SyNImageRegistrationMethod () |
|
virtual void | AllocateOutputs () |
|
virtual
VirtualImageBaseConstPointer | GetCurrentLevelVirtualDomainImage () |
|
| ImageRegistrationMethodv4 () |
|
virtual void | SetMetricSamplePoints () |
|
virtual | ~ImageRegistrationMethodv4 () |
|
virtual void | AddInput (DataObject *input) |
|
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 |
|
| itkLegacyMacro (virtual void RemoveOutput(DataObject *output)) |
|
| itkLegacyMacro (void SetNumberOfOutputs(DataObjectPointerArraySizeType num)) |
|
| itkLegacyMacro (virtual void RemoveInput(DataObject *input)) |
|
| itkLegacyMacro (void SetNumberOfInputs(DataObjectPointerArraySizeType num)) |
|
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 num, DataObject *input) |
|
virtual void | SetNthOutput (DataObjectPointerArraySizeType num, DataObject *output) |
|
void | SetNumberOfIndexedInputs (DataObjectPointerArraySizeType num) |
|
void | SetNumberOfIndexedOutputs (DataObjectPointerArraySizeType num) |
|
virtual void | SetNumberOfRequiredInputs (DataObjectPointerArraySizeType) |
|
virtual void | SetNumberOfRequiredOutputs (DataObjectPointerArraySizeType _arg) |
|
virtual void | SetOutput (const DataObjectIdentifierType &key, DataObject *output) |
|
virtual void | SetPrimaryInput (DataObject *input) |
|
virtual void | SetPrimaryOutput (DataObject *output) |
|
void | SetRequiredInputNames (const NameArray &) |
|
virtual void | VerifyInputInformation () |
|
virtual void | VerifyPreconditions () |
|
| ~ProcessObject () |
|
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 (void) const |
|
DataObject * | GetOutput (const DataObjectIdentifierType &key) |
|
const DataObject * | GetOutput (const DataObjectIdentifierType &key) const |
|
virtual void | SetPrimaryOutputName (const DataObjectIdentifierType &key) |
|
virtual const char * | GetPrimaryOutputName (void) const |
|
DataObject * | GetOutput (DataObjectPointerArraySizeType idx) |
|
const DataObject * | GetOutput (DataObjectPointerArraySizeType idx) const |
|
DataObject * | GetPrimaryOutput () |
|
const DataObject * | GetPrimaryOutput () const |
|
| Object () |
|
bool | PrintObservers (std::ostream &os, Indent indent) const |
|
virtual void | SetTimeStamp (const TimeStamp &time) |
|
virtual | ~Object () |
|
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 () |
|