template<class TFixedImage, class TMovingImage, class TDisplacementField>
class itk::VariationalSymmetricDiffeomorphicRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >
Symmetric diffeomorphic deformable registration of two images using static velocity fields.
VariationalSymmetricDiffeomorphicRegistrationFilter is derived from VariationalRegistrationFilter and aims to minimize the functional
with and is a static velocity field. Let denote the force term corresponding to the similarity measure and denote the linear differential operator associated with the regularization term , VariationalSymmetricDiffeomorphicRegistrationFilter implements the following iterative scheme to compute (and ):
- initialize (default ), and
- do
- compute the forward update field using and the warped image
- compute the backward update field using the warped image and
- compute the next velocity field by
- compute the next transformation and the inverse
- until is fulfilled or
The force term is implemented in a subclass of VariationalRegistrationFunction. The computation of the regularization with is implemented in a subclass of VariationalRegistrationRegularizer. The exponentiation of the velocity field is done using the ExponentialDisplacementFieldImageFilter.
You can set SmoothUpdateFieldOn() to smooth the velocity field before exponentiation.
- See Also
- VariationalRegistrationFilter
-
VariationalDiffeomorphicRegistrationFilter
-
VariationalRegistrationFunction
-
VariationalRegistrationRegularizer
-
ExponentialDisplacementFieldImageFilter
-
DenseFiniteDifferenceImageFilter
- Note
- This class was developed with funding from the German Research Foundation (DFG: EH 224/3-1 and HA 235/9-1).
- Author
- Alexander Schmidt-Richberg
-
Rene Werner
-
Jan Ehrhardt
For details see:
- Alexander Schmidt-Richberg, Rene Werner, Heinz Handels and Jan Ehrhardt: A Flexible Variational Registration Framework, Insight Journal, 2014 http://hdl.handle.net/10380/3460
- Rene Werner, Alexander Schmidt-Richberg, Heinz Handels and Jan Ehrhardt: Estimation of lung motion fields in 4D CT data by variational non-linear intensity-based registration: A comparison and evaluation study, Phys. Med. Biol., 2014
- Jan Ehrhardt, Rene Werner, Alexander Schmidt-Richberg and Heinz Handels: Statistical modeling of 4D respiratory lung motion using diffeomorphic image registration. IEEE Trans. Med. Imaging, 30(2), 2011
Definition at line 90 of file itkVariationalSymmetricDiffeomorphicRegistrationFilter.h.
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DisplacementFieldType::Pointer | DisplacementFieldPointer |
|
typedef TDisplacementField | DisplacementFieldType |
|
typedef
FixedImageType::ConstPointer | FixedImageConstPointer |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef TFixedImage | FixedImageType |
|
typedef
MovingImageType::ConstPointer | MovingImageConstPointer |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef TMovingImage | MovingImageType |
|
typedef Superclass::OutputImageType | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
Superclass::RegistrationFunctionType | RegistrationFunctionType |
|
typedef Superclass::RegularizerType | RegularizerType |
|
typedef
VariationalSymmetricDiffeomorphicRegistrationFilter | Self |
|
typedef
VariationalDiffeomorphicRegistrationFilter
< TFixedImage, TMovingImage,
TDisplacementField > | Superclass |
|
typedef Superclass::TimeStepType | TimeStepType |
|
typedef OutputImageType | UpdateBufferType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DisplacementFieldType::Pointer | DisplacementFieldPointer |
|
typedef TDisplacementField | DisplacementFieldType |
|
typedef
FixedImageType::ConstPointer | FixedImageConstPointer |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef TFixedImage | FixedImageType |
|
typedef
MovingImageType::ConstPointer | MovingImageConstPointer |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef TMovingImage | MovingImageType |
|
typedef Superclass::OutputImageType | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
Superclass::RegistrationFunctionType | RegistrationFunctionType |
|
typedef Superclass::RegularizerType | RegularizerType |
|
typedef
VariationalDiffeomorphicRegistrationFilter | Self |
|
typedef
VariationalRegistrationFilter
< TFixedImage, TMovingImage,
TDisplacementField > | Superclass |
|
typedef Superclass::TimeStepType | TimeStepType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
VariationalRegistrationDemonsFunction
< FixedImageType,
MovingImageType,
DisplacementFieldType > | DefaultRegistrationFunctionType |
|
typedef
VariationalRegistrationDiffusionRegularizer
< DisplacementFieldType > | DefaultRegularizerType |
|
typedef
DisplacementFieldType::Pointer | DisplacementFieldPointer |
|
typedef TDisplacementField | DisplacementFieldType |
|
typedef
FixedImageType::ConstPointer | FixedImageConstPointer |
|
typedef FixedImageType::Pointer | FixedImagePointer |
|
typedef TFixedImage | FixedImageType |
|
typedef MaskImageType::ConstPointer | MaskImageConstPointer |
|
typedef unsigned char | MaskImagePixelType |
|
typedef MaskImageType::Pointer | MaskImagePointer |
|
typedef Image
< MaskImagePixelType,
ImageDimension > | MaskImageType |
|
typedef
MovingImageType::ConstPointer | MovingImageConstPointer |
|
typedef MovingImageType::Pointer | MovingImagePointer |
|
typedef TMovingImage | MovingImageType |
|
typedef Superclass::OutputImageType | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
VariationalRegistrationFunction
< FixedImageType,
MovingImageType,
DisplacementFieldType > | RegistrationFunctionType |
|
typedef RegularizerType::Pointer | RegularizerPointer |
|
typedef
VariationalRegistrationRegularizer
< DisplacementFieldType > | RegularizerType |
|
typedef
VariationalRegistrationFilter | Self |
|
typedef
DenseFiniteDifferenceImageFilter
< TDisplacementField,
TDisplacementField > | Superclass |
|
typedef Superclass::TimeStepType | TimeStepType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
Superclass::FiniteDifferenceFunctionType | FiniteDifferenceFunctionType |
|
typedef Superclass::InputImageType | InputImageType |
|
typedef Superclass::OutputImageType | OutputImageType |
|
typedef Superclass::PixelType | PixelType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
DenseFiniteDifferenceImageFilter | Self |
|
typedef
FiniteDifferenceImageFilter
< TDisplacementField,
TDisplacementField > | Superclass |
|
typedef Superclass::TimeStepType | TimeStepType |
|
typedef OutputImageType | UpdateBufferType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
FiniteDifferenceFunction
< TDisplacementField > | FiniteDifferenceFunctionType |
|
typedef TDisplacementField | InputImageType |
|
typedef
TDisplacementField::PixelType | InputPixelType |
|
typedef NumericTraits
< InputPixelType >::ValueType | InputPixelValueType |
|
typedef
FiniteDifferenceFunctionType::NeighborhoodScalesType | NeighborhoodScalesType |
|
typedef TDisplacementField | OutputImageType |
|
typedef
TDisplacementField::PixelType | OutputPixelType |
|
typedef NumericTraits
< OutputPixelType >::ValueType | OutputPixelValueType |
|
typedef OutputPixelType | PixelType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef
FiniteDifferenceFunctionType::RadiusType | RadiusType |
|
typedef FiniteDifferenceImageFilter | Self |
|
typedef InPlaceImageFilter
< TDisplacementField,
TDisplacementField > | Superclass |
|
typedef
FiniteDifferenceFunctionType::TimeStepType | TimeStepType |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
InputImageType::ConstPointer | InputImageConstPointer |
|
typedef InputImageType::PixelType | InputImagePixelType |
|
typedef InputImageType::Pointer | InputImagePointer |
|
typedef InputImageType::RegionType | InputImageRegionType |
|
typedef TDisplacementField | InputImageType |
|
typedef
Superclass::OutputImagePixelType | OutputImagePixelType |
|
typedef
Superclass::OutputImagePointer | OutputImagePointer |
|
typedef
Superclass::OutputImageRegionType | OutputImageRegionType |
|
typedef Superclass::OutputImageType | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef InPlaceImageFilter | Self |
|
typedef ImageToImageFilter
< TDisplacementField,
TDisplacementField > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
InputImageType::ConstPointer | InputImageConstPointer |
|
typedef InputImageType::PixelType | InputImagePixelType |
|
typedef InputImageType::Pointer | InputImagePointer |
|
typedef InputImageType::RegionType | InputImageRegionType |
|
typedef TDisplacementField | InputImageType |
|
typedef
Superclass::OutputImagePixelType | OutputImagePixelType |
|
typedef
Superclass::OutputImageRegionType | OutputImageRegionType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ImageToImageFilter | Self |
|
typedef ImageSource
< TDisplacementField > | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
Superclass::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef
Superclass::DataObjectPointerArraySizeType | DataObjectPointerArraySizeType |
|
typedef OutputImageType::PixelType | OutputImagePixelType |
|
typedef OutputImageType::Pointer | OutputImagePointer |
|
typedef OutputImageType::RegionType | OutputImageRegionType |
|
typedef TDisplacementField | OutputImageType |
|
typedef SmartPointer< Self > | Pointer |
|
typedef ImageSource | Self |
|
typedef ProcessObject | Superclass |
|
typedef SmartPointer< const Self > | ConstPointer |
|
typedef
DataObject::DataObjectIdentifierType | DataObjectIdentifierType |
|
typedef DataObject::Pointer | DataObjectPointer |
|
typedef std::vector
< DataObjectPointer > | DataObjectPointerArray |
|
typedef
DataObjectPointerArray::size_type | DataObjectPointerArraySizeType |
|
typedef MultiThreader | MultiThreaderType |
|
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 void | ApplyUpdate (const TimeStepType &dt) override |
|
virtual void | CalcInverseDeformationFromVelocityField (const DisplacementFieldType *velocityField) |
|
virtual TimeStepType | CalculateChange () override |
|
virtual const UpdateBufferType * | GetBackwardUpdateBuffer () const |
|
virtual UpdateBufferType * | GetModifiableBackwardUpdateBuffer () |
|
virtual void | Initialize () override |
|
virtual void | InitializeBackwardIteration () |
|
virtual void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual void | ThreadedApplyUpdate (const TimeStepType &dt, const ThreadRegionType ®ionToProcess, unsigned int threadId) override |
|
| VariationalSymmetricDiffeomorphicRegistrationFilter () |
|
| ~VariationalSymmetricDiffeomorphicRegistrationFilter () |
|
virtual void | CalcDeformationFromVelocityField (const DisplacementFieldType *velocityField) |
|
virtual FieldExponentiatorPointer | GetExponentiator () |
|
| VariationalDiffeomorphicRegistrationFilter () |
|
| ~VariationalDiffeomorphicRegistrationFilter () |
|
virtual void | CopyInputToOutput () override |
|
virtual void | GenerateInputRequestedRegion () override |
|
virtual void | GenerateOutputInformation () override |
|
virtual bool | Halt () override |
|
virtual void | InitializeIteration () override |
|
| VariationalRegistrationFilter () |
|
virtual void | VerifyInputInformation () override |
|
| ~VariationalRegistrationFilter () |
|
RegistrationFunctionType * | DownCastDifferenceFunctionType () |
|
const RegistrationFunctionType * | DownCastDifferenceFunctionType () const |
|
virtual void | AllocateUpdateBuffer () override |
|
| DenseFiniteDifferenceImageFilter () |
|
virtual UpdateBufferType * | GetUpdateBuffer () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual TimeStepType | ThreadedCalculateChange (const ThreadRegionType ®ionToProcess, ThreadIdType threadId) |
|
| ~DenseFiniteDifferenceImageFilter () override |
|
virtual void | ApplyUpdate (const TimeStepType &dt)=0 |
|
| FiniteDifferenceImageFilter () |
|
virtual void | GenerateData () override |
|
virtual void | PostProcessOutput () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
virtual TimeStepType | ResolveTimeStep (const std::vector< TimeStepType > &timeStepList, const std::vector< bool > &valid) const |
|
virtual void | SetElapsedIterations (IdentifierType _arg) |
|
virtual bool | ThreadedHalt (void *) |
|
virtual | ~FiniteDifferenceImageFilter () override |
|
virtual void | AllocateOutputs () override |
|
virtual bool | GetRunningInPlace () const |
|
| InPlaceImageFilter () |
|
virtual void | ReleaseInputs () override |
|
| ~InPlaceImageFilter () override |
|
virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
|
virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
|
| ImageToImageFilter () |
|
| ~ImageToImageFilter () override |
|
void | PushBackInput (const DataObject *input) override |
|
void | PushFrontInput (const DataObject *input) override |
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | BeforeThreadedGenerateData () |
|
virtual const
ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
| ImageSource () |
|
virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
|
virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
|
virtual | ~ImageSource () override |
|
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 | 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 |
|
| ProcessObject () |
|
virtual void | PropagateResetPipeline () |
|
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 | VerifyPreconditions () |
|
| ~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 (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 () 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 () |
|