template<typename TFixedImage, typename TMovingImage, typename TDisplacementField, typename TRealType = float>
class itk::VariationalRegistrationMultiResolutionFilter< TFixedImage, TMovingImage, TDisplacementField, TRealType >
Framework for performing multi-resolution variational registration.
VariationalRegistrationMultiResolutionFilter provides a generic framework to perform multi-resolution variational registration.
At each resolution level a VariationalRegistrationFilter is used to register two images by computing the deformation field which will map a moving image onto a fixed image.
A displacement field is represented as an image whose pixel type is some vector type with at least N elements, where N is the dimension of the fixed image. The vector type must support element access via operator []. It is assumed that the vector elements behave like floating point scalars.
The internal VariationalRegistrationFilter can be set using SetRegistrationFilter. By default the standard VariationalRegistrationFilter is used.
The input fixed and moving images are set via methods SetFixedImage and SetMovingImage respectively.
The input and output of the filter can be set via SetInput() or SetInitialField() and is interpreted either as a displacement field (standard registration) or velocity field (diffeomorphic registration). The same is true for the outpur field returned by GetOutput() or GetOutputField(). However, GetDisplacementField() always returns the corresponding displacement field.
MultiResolutionPyramidImageFilter are used to downsample the fixed and moving images. A VectorExpandImageFilter is used to upsample the deformation as we move from a coarse to fine solution.
This class is templated over the fixed image type, the moving image type, and the Deformation Field type.
- Warning
- This class assumes that the fixed, moving and deformation field image types all have the same number of dimensions.
- See Also
- MultiResolutionPyramidImageFilter
-
VectorExpandImageFilter
- 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
Definition at line 81 of file itkVariationalRegistrationMultiResolutionFilter.h.
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DefaultRegistrationType = VariationalRegistrationFilter< FixedImageType, MovingImageType, DisplacementFieldType > |
|
using | DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
|
using | DisplacementFieldType = TDisplacementField |
|
using | FieldExpanderPointer = typename FieldExpanderType::Pointer |
|
using | FieldExpanderType = VectorResampleImageFilter< DisplacementFieldType, DisplacementFieldType > |
|
using | FixedImageConstPointer = typename FixedImageType::ConstPointer |
|
using | FixedImagePointer = typename FixedImageType::Pointer |
|
using | FixedImagePyramidPointer = typename FixedImagePyramidType::Pointer |
|
using | FixedImagePyramidType = MultiResolutionPyramidImageFilter< FixedImageType, FixedImageType > |
|
using | FixedImageType = TFixedImage |
|
using | FloatImageType = Image< TRealType, itkGetStaticConstMacro(ImageDimension) > |
|
using | MaskImageConstPointer = typename MaskImageType::ConstPointer |
|
using | MaskImagePixelType = unsigned char |
|
using | MaskImagePointer = typename MaskImageType::Pointer |
|
using | MaskImagePyramidPointer = typename MaskImagePyramidType::Pointer |
|
using | MaskImagePyramidType = MultiResolutionPyramidImageFilter< FloatImageType, FloatImageType > |
|
using | MaskImageType = Image< MaskImagePixelType, ImageDimension > |
|
using | MovingImageConstPointer = typename MovingImageType::ConstPointer |
|
using | MovingImagePointer = typename MovingImageType::Pointer |
|
using | MovingImagePyramidPointer = typename MovingImagePyramidType::Pointer |
|
using | MovingImagePyramidType = MultiResolutionPyramidImageFilter< MovingImageType, MovingImageType > |
|
using | MovingImageType = TMovingImage |
|
using | NumberOfIterationsType = Array< unsigned int > |
|
using | Pointer = SmartPointer< Self > |
|
using | RegistrationPointer = typename RegistrationType::Pointer |
|
using | RegistrationType = VariationalRegistrationFilter< FixedImageType, MovingImageType, DisplacementFieldType > |
|
using | Self = VariationalRegistrationMultiResolutionFilter |
|
using | Superclass = ImageToImageFilter< TDisplacementField, TDisplacementField > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | InputImageConstPointer = typename InputImageType::ConstPointer |
|
using | InputImagePixelType = typename InputImageType::PixelType |
|
using | InputImagePointer = typename InputImageType::Pointer |
|
using | InputImageRegionType = typename InputImageType::RegionType |
|
using | InputImageType = TDisplacementField |
|
using | OutputImagePixelType = typename Superclass::OutputImagePixelType |
|
using | OutputImageRegionType = typename Superclass::OutputImageRegionType |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ImageToImageFilter |
|
using | Superclass = ImageSource< TDisplacementField > |
|
using | ConstPointer = SmartPointer< const Self > |
|
using | DataObjectIdentifierType = Superclass::DataObjectIdentifierType |
|
using | DataObjectPointer = DataObject::Pointer |
|
using | DataObjectPointerArraySizeType = Superclass::DataObjectPointerArraySizeType |
|
using | OutputImagePixelType = typename OutputImageType::PixelType |
|
using | OutputImagePointer = typename OutputImageType::Pointer |
|
using | OutputImageRegionType = typename OutputImageType::RegionType |
|
using | OutputImageType = TDisplacementField |
|
using | Pointer = SmartPointer< Self > |
|
using | Self = ImageSource |
|
using | Superclass = ProcessObject |
|
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 |
|
|
void | EnlargeOutputRequestedRegion (DataObject *ptr) override |
|
void | GenerateData () override |
|
void | GenerateInputRequestedRegion () override |
|
void | GenerateOutputInformation () override |
|
virtual bool | Halt () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
| VariationalRegistrationMultiResolutionFilter () |
|
| ~VariationalRegistrationMultiResolutionFilter () override |
|
virtual void | CallCopyInputRegionToOutputRegion (OutputImageRegionType &destRegion, const InputImageRegionType &srcRegion) |
|
virtual void | CallCopyOutputRegionToInputRegion (InputImageRegionType &destRegion, const OutputImageRegionType &srcRegion) |
|
void | GenerateInputRequestedRegion () override |
|
| ImageToImageFilter () |
|
void | PrintSelf (std::ostream &os, Indent indent) const override |
|
void | VerifyInputInformation () ITKv5_CONST override |
|
| ~ImageToImageFilter () override |
|
void | PushBackInput (const DataObject *input) override |
|
void | PushFrontInput (const DataObject *input) override |
|
virtual void | AfterThreadedGenerateData () |
|
virtual void | AllocateOutputs () |
|
virtual void | BeforeThreadedGenerateData () |
|
void | ClassicMultiThread (ThreadFunctionType callbackFunction) |
|
void | GenerateData () override |
|
virtual const
ImageRegionSplitterBase * | GetImageRegionSplitter () const |
|
| ImageSource () |
|
virtual unsigned int | SplitRequestedRegion (unsigned int i, unsigned int pieces, OutputImageRegionType &splitRegion) |
|
| ~ImageSource () override=default |
|
virtual void | ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) |
|
virtual void | DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) |
|
virtual bool | GetDynamicMultiThreading () const |
|
virtual void | SetDynamicMultiThreading (bool _arg) |
|
virtual void | DynamicMultiThreadingOn () |
|
virtual void | DynamicMultiThreadingOff () |
|
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 |
|
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 | 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 | VerifyPreconditions () ITKv5_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 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) |
|
| ~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 () |
|
template<typename TFixedImage , typename TMovingImage , typename TDisplacementField , typename TRealType = float>
By default, the output deformation field has the same spacing, origin and LargestPossibleRegion as the input/initial deformation field.
If the initial deformation field is not set, the output information is copied from the fixed image.
Reimplemented from itk::ProcessObject.