ITK
6.0.0
Insight Toolkit
|
#include <itkPDEDeformableRegistrationFilter.h>
Deformably register two images using a PDE algorithm.
PDEDeformableRegistrationFilter is a base case for filter implementing a PDE deformable algorithm that register two images by computing the displacement field which will map a moving image onto a fixed image.
A displacement field is represented as a 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.
This class is templated over the fixed image type, moving image type and the displacement Field type.
The input fixed and moving images are set via methods SetFixedImage and SetMovingImage respectively. An initial displacement field maybe set via SetInitialDisplacementField or SetInput. If no initial field is set, a zero field is used as the initial condition.
The output displacement field can be obtained via methods GetOutput or GetDisplacementField.
The PDE algorithm is run for a user defined number of iterations. Typically the PDE algorithm requires period Gaussian smoothing of the displacement field to enforce an elastic-like condition. The amount of smoothing is governed by a set of user defined standard deviations (one for each dimension).
In terms of memory, this filter keeps two internal buffers: one for storing the intermediate updates to the field and one for double-buffering when smoothing the displacement field. Both buffers are the same type and size as the output displacement field.
This class make use of the finite difference solver hierarchy. Update for each iteration is computed using a PDEDeformableRegistrationFunction.
Definition at line 73 of file itkPDEDeformableRegistrationFilter.h.
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::ImageToImageFilter< TDisplacementField, TDisplacementField > | |
static double | GetGlobalDefaultCoordinateTolerance () |
static double | GetGlobalDefaultDirectionTolerance () |
static void | SetGlobalDefaultCoordinateTolerance (double) |
static void | SetGlobalDefaultDirectionTolerance (double) |
Static Public Member Functions inherited from itk::Object | |
static bool | GetGlobalWarningDisplay () |
static void | GlobalWarningDisplayOff () |
static void | GlobalWarningDisplayOn () |
static Pointer | New () |
static void | SetGlobalWarningDisplay (bool val) |
Static Public Member Functions inherited from itk::LightObject | |
static void | BreakOnError () |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = Superclass::ImageDimension |
Static Public Attributes inherited from itk::DenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField > | |
static constexpr unsigned int | ImageDimension |
Static Public Attributes inherited from itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField > | |
static constexpr unsigned int | ImageDimension |
Static Public Attributes inherited from itk::InPlaceImageFilter< TDisplacementField, TDisplacementField > | |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | OutputImageDimension |
Static Public Attributes inherited from itk::ImageToImageFilter< TDisplacementField, TDisplacementField > | |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | OutputImageDimension |
Static Public Attributes inherited from itk::ImageSource< TDisplacementField > | |
static constexpr unsigned int | OutputImageDimension |
Private Attributes | |
double | m_MaximumError {} |
unsigned int | m_MaximumKernelWidth {} |
bool | m_SmoothDisplacementField {} |
bool | m_SmoothUpdateField {} |
StandardDeviationsType | m_StandardDeviations {} |
bool | m_StopRegistrationFlag {} |
DisplacementFieldPointer | m_TempField {} |
StandardDeviationsType | m_UpdateFieldStandardDeviations {} |
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::ConstPointer = SmartPointer<const Self> |
Definition at line 83 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
Definition at line 103 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::DisplacementFieldType = TDisplacementField |
Deformation field type.
Definition at line 102 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::FixedImageConstPointer = typename FixedImageType::ConstPointer |
Definition at line 94 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::FixedImagePointer = typename FixedImageType::Pointer |
Definition at line 93 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::FixedImageType = TFixedImage |
FixedImage image type.
Definition at line 92 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::MovingImageConstPointer = typename MovingImageType::ConstPointer |
Definition at line 99 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::MovingImagePointer = typename MovingImageType::Pointer |
Definition at line 98 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::MovingImageType = TMovingImage |
MovingImage image type.
Definition at line 97 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::PDEDeformableRegistrationFunctionType = PDEDeformableRegistrationFunction<FixedImageType, MovingImageType, DisplacementFieldType> |
PDEDeformableRegistrationFilterFunction type.
Definition at line 112 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::Pointer = SmartPointer<Self> |
Definition at line 82 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::Self = PDEDeformableRegistrationFilter |
Standard class type aliases.
Definition at line 80 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::StandardDeviationsType = FixedArray<double, ImageDimension> |
Definition at line 161 of file itkPDEDeformableRegistrationFilter.h.
using itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::Superclass = DenseFiniteDifferenceImageFilter<TDisplacementField, TDisplacementField> |
Definition at line 81 of file itkPDEDeformableRegistrationFilter.h.
|
protected |
|
overrideprotecteddefault |
|
overrideprotectedvirtual |
Copy the data from the input to the output.
When the input is not set, the output is filled with zero values.
Implements itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField >.
Reimplemented in itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, and itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
overrideprotectedvirtual |
It is difficult to compute in advance the input moving image region required to compute the requested output region. Thus the safest thing to do is to request for the whole moving image.
For the fixed image and displacement field, the input requested region set to be the same as that of the output requested region.
Reimplemented from itk::ProcessObject.
Reimplemented in itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
overrideprotectedvirtual |
By default the output displacement field has the same Spacing, Origin and LargestPossibleRegion as the input/initial displacement field. If the initial displacement field is not set, the output information is copied from the fixed image.
Reimplemented from itk::ProcessObject.
Reimplemented in itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
inline |
Get output displacement field.
Definition at line 138 of file itkPDEDeformableRegistrationFilter.h.
|
virtual |
Set/Get the desired maximum error of the Gaussian kernel approximate.
|
virtual |
Set/Get the desired limits of the Gaussian kernel width.
|
overridevirtual |
Reimplemented from itk::ProcessObject.
Reimplemented in itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, and itk::SymmetricForcesDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >.
|
overridevirtual |
Get the number of valid inputs. For PDEDeformableRegistration, this checks whether the fixed and moving images have been set. While PDEDeformableRegistration can take a third input as an initial displacement field, this input is not a required input.
Reimplemented from itk::ProcessObject.
|
virtual |
Set/Get whether the displacement field is smoothed (regularized). Smoothing the displacement yields a solution elastic in nature. If SmoothDisplacementField is on, then the displacement field is smoothed with a Gaussian whose standard deviations are specified with SetStandardDeviations()
|
virtual |
Set/Get whether the update field is smoothed (regularized). Smoothing the update field yields a solution viscous in nature. If SmoothUpdateField is on, then the update field is smoothed with a Gaussian whose standard deviations are specified with SetUpdateFieldStandardDeviations()
|
virtual |
Get the Gaussian smoothing standard deviations use for smoothing the displacement field.
|
virtual |
Get the Gaussian smoothing standard deviations used for smoothing the update field.
|
inlineoverrideprotectedvirtual |
Supplies the halting criteria for this class of filters. The algorithm will stop after a user-specified number of iterations.
Reimplemented from itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField >.
Reimplemented in itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, and itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
Definition at line 224 of file itkPDEDeformableRegistrationFilter.h.
|
overrideprotectedvirtual |
Initialize flags.
Called before iterating the solution.
Reimplemented from itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField >.
Reimplemented in itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
overrideprotectedvirtual |
Initialize the state of filter and equation before each iteration. Progress feedback is implemented as part of this method.
Reimplemented from itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField >.
Reimplemented in itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, and itk::SymmetricForcesDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkGetInputMacro | ( | FixedImage | , |
FixedImageType | |||
) |
Get the fixed image.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkGetInputMacro | ( | InitialDisplacementField | , |
DisplacementFieldType | |||
) |
Get initial displacement field.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkGetInputMacro | ( | MovingImage | , |
MovingImageType | |||
) |
Get the moving image.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkSetInputMacro | ( | FixedImage | , |
FixedImageType | |||
) |
Set the fixed image.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkSetInputMacro | ( | InitialDisplacementField | , |
DisplacementFieldType | |||
) |
Set initial displacement field.
itk::PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >::itkSetInputMacro | ( | MovingImage | , |
MovingImageType | |||
) |
Set the moving image.
|
static |
Method for creation through the object factory.
|
overrideprotectedvirtual |
Release the memory of the internal buffers.
Called after the solution has been generated.
Reimplemented from itk::FiniteDifferenceImageFilter< TDisplacementField, TDisplacementField >.
Reimplemented in itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
overrideprotectedvirtual |
Methods invoked by Print() to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from itk::ProcessObject.
Reimplemented in itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, PDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, itk::GPUDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >, and itk::SymmetricForcesDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField >.
|
virtual |
Set/Get the desired maximum error of the Gaussian kernel approximate.
|
virtual |
Set/Get the desired limits of the Gaussian kernel width.
|
virtual |
Set/Get whether the displacement field is smoothed (regularized). Smoothing the displacement yields a solution elastic in nature. If SmoothDisplacementField is on, then the displacement field is smoothed with a Gaussian whose standard deviations are specified with SetStandardDeviations()
|
virtual |
Set/Get whether the update field is smoothed (regularized). Smoothing the update field yields a solution viscous in nature. If SmoothUpdateField is on, then the update field is smoothed with a Gaussian whose standard deviations are specified with SetUpdateFieldStandardDeviations()
|
virtual |
Set the Gaussian smoothing standard deviations for the displacement field. The values are set with respect to pixel coordinates.
|
virtual |
Set the Gaussian smoothing standard deviations for the displacement field. The values are set with respect to pixel coordinates.
|
virtual |
Set the Gaussian smoothing standard deviations for the update field. The values are set with respect to pixel coordinates.
|
virtual |
Set the Gaussian smoothing standard deviations for the update field. The values are set with respect to pixel coordinates.
|
protectedvirtual |
Utility to smooth the displacement field (represented in the Output) using a separable Gaussian kernel. The amount of smoothing can be specified by setting the StandardDeviations.
Reimplemented in itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
virtual |
Set/Get whether the displacement field is smoothed (regularized). Smoothing the displacement yields a solution elastic in nature. If SmoothDisplacementField is on, then the displacement field is smoothed with a Gaussian whose standard deviations are specified with SetStandardDeviations()
|
protectedvirtual |
Utility to smooth the UpdateBuffer using a separable Gaussian kernel. The amount of smoothing can be specified by setting the UpdateFieldStandardDeviations.
Reimplemented in itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >, and itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, itk::DemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField > >.
|
virtual |
Set/Get whether the update field is smoothed (regularized). Smoothing the update field yields a solution viscous in nature. If SmoothUpdateField is on, then the update field is smoothed with a Gaussian whose standard deviations are specified with SetUpdateFieldStandardDeviations()
|
inlinevirtual |
Stop the registration after the current iteration.
Definition at line 198 of file itkPDEDeformableRegistrationFilter.h.
|
staticconstexpr |
Inherit some enums and type alias from the superclass.
Definition at line 116 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Maximum error for Gaussian operator approximation.
Definition at line 302 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Limits of Gaussian kernel width.
Definition at line 305 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Modes to control smoothing of the update and displacement fields
Definition at line 293 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 294 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Standard deviation for Gaussian smoothing
Definition at line 289 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Flag to indicate user stop registration request.
Definition at line 308 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Temporary displacement field use for smoothing the the displacement field.
Definition at line 298 of file itkPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 290 of file itkPDEDeformableRegistrationFilter.h.