ITK
5.0.0
Insight Segmentation and Registration Toolkit
|
#include <itkGPUPDEDeformableRegistrationFilter.h>
Deformably register two images using a PDE algorithm.
GPUPDEDeformableRegistrationFilter is a base case for filter implementing a PDE deformable algorithm that register two images by computing the deformation field which will map a moving image onto a fixed image.
A deformation 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 deformation Field type.
The input fixed and moving images are set via methods SetFixedImage and SetMovingImage respectively. An initial deformation field maybe set via SetInitialDisplacementField or SetInput. If no initial field is set, a zero field is used as the initial condition.
The output deformation 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 Gaussin smoothing of the deformation 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 deformation field. Both buffers are the same type and size as the output deformation field.
This class make use of the finite difference solver hierarchy. Update for each iteration is computed using a PDEDeformableRegistrationFunction.
Definition at line 81 of file itkGPUPDEDeformableRegistrationFilter.h.
Public Types | |
using | ConstPointer = SmartPointer< const Self > |
using | CPUSuperclass = TParentImageFilter |
using | DeformationScalarType = typename TDisplacementField::PixelType::ValueType |
using | DeformationVectorType = typename TDisplacementField::PixelType |
using | DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
using | DisplacementFieldType = TDisplacementField |
using | FiniteDifferenceFunctionType = typename GPUSuperclass::FiniteDifferenceFunctionType |
using | FixedImageConstPointer = typename FixedImageType::ConstPointer |
using | FixedImagePointer = typename FixedImageType::Pointer |
using | FixedImageType = TFixedImage |
using | GPUPDEDeformableRegistrationFunctionType = GPUPDEDeformableRegistrationFunction< FixedImageType, MovingImageType, DisplacementFieldType > |
using | GPUSuperclass = GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > |
using | MovingImageConstPointer = typename MovingImageType::ConstPointer |
using | MovingImagePointer = typename MovingImageType::Pointer |
using | MovingImageType = TMovingImage |
using | OutputImageType = typename GPUSuperclass::OutputImageType |
using | Pointer = SmartPointer< Self > |
using | Self = GPUPDEDeformableRegistrationFilter |
using | StandardDeviationsType = FixedArray< double, ImageDimension > |
Public Types inherited from itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
using | ConstPointer = SmartPointer< const Self > |
using | CPUSuperclass = TParentImageFilter |
using | FiniteDifferenceFunctionType = typename GPUSuperclass::FiniteDifferenceFunctionType |
using | GPUSuperclass = GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > |
using | InputImageType = typename GPUSuperclass::InputImageType |
using | OutputImageType = typename GPUSuperclass::OutputImageType |
using | PixelType = typename GPUSuperclass::PixelType |
using | Pointer = SmartPointer< Self > |
using | Self = GPUDenseFiniteDifferenceImageFilter |
using | TimeStepType = typename GPUSuperclass::TimeStepType |
using | UpdateBufferType = OutputImageType |
Public Types inherited from itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
using | ConstPointer = SmartPointer< const Self > |
using | CPUSuperclass = TParentImageFilter |
enum | FilterStateType |
using | FiniteDifferenceFunctionType = typename GPUFiniteDifferenceFunction< TDisplacementField >::DifferenceFunctionType |
using | GPUSuperclass = GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > |
using | InputImageType = TDisplacementField |
using | InputPixelType = typename TDisplacementField::PixelType |
using | InputPixelValueType = typename NumericTraits< InputPixelType >::ValueType |
using | NeighborhoodScalesType = typename FiniteDifferenceFunctionType::NeighborhoodScalesType |
using | OutputImageType = TDisplacementField |
using | OutputPixelType = typename TDisplacementField::PixelType |
using | OutputPixelValueType = typename NumericTraits< OutputPixelType >::ValueType |
using | PixelType = OutputPixelType |
using | Pointer = SmartPointer< Self > |
using | RadiusType = typename FiniteDifferenceFunctionType::RadiusType |
using | Self = GPUFiniteDifferenceImageFilter |
using | TimeStepType = typename FiniteDifferenceFunctionType::TimeStepType |
Public Types inherited from itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
using | ConstPointer = SmartPointer< const Self > |
using | CPUSuperclass = TParentImageFilter |
using | GPUSuperclass = GPUImageToImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > |
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 GPUSuperclass::OutputImagePixelType |
using | OutputImagePointer = typename GPUSuperclass::OutputImagePointer |
using | OutputImageRegionType = typename GPUSuperclass::OutputImageRegionType |
using | OutputImageType = typename GPUSuperclass::OutputImageType |
using | Pointer = SmartPointer< Self > |
using | Self = GPUInPlaceImageFilter |
Public Types inherited from itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
using | ConstPointer = SmartPointer< const Self > |
using | DataObjectIdentifierType = typename Superclass::DataObjectIdentifierType |
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 = GPUImageToImageFilter |
using | Superclass = TParentImageFilter |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
static Pointer | New () |
Static Public Attributes | |
static constexpr unsigned int | ImageDimension = GPUSuperclass::ImageDimension |
Static Public Attributes inherited from itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
static constexpr unsigned int | ImageDimension |
Static Public Attributes inherited from itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
static constexpr unsigned int | ImageDimension |
Static Public Attributes inherited from itk::GPUInPlaceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | OutputImageDimension |
Static Public Attributes inherited from itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
static constexpr unsigned int | InputImageDimension |
static constexpr unsigned int | OutputImageDimension |
Additional Inherited Members | |
Protected Attributes inherited from itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
int | m_ApplyUpdateGPUKernelHandle |
Protected Attributes inherited from itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
TimeProbe | m_ApplyUpdateTime |
TimeProbe | m_ComputeUpdateTime |
TimeProbe | m_InitTime |
bool | m_ManualReinitialization |
double | m_MaximumRMSError |
double | m_RMSChange |
TimeProbe | m_SmoothFieldTime |
Protected Attributes inherited from itk::GPUImageToImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > | |
GPUKernelManager::Pointer | m_GPUKernelManager |
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::ConstPointer = SmartPointer< const Self > |
Definition at line 92 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::CPUSuperclass = TParentImageFilter |
Definition at line 90 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::DeformationScalarType = typename TDisplacementField::PixelType::ValueType |
Definition at line 115 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::DeformationVectorType = typename TDisplacementField::PixelType |
Definition at line 114 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::DisplacementFieldPointer = typename DisplacementFieldType::Pointer |
Definition at line 113 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::DisplacementFieldType = TDisplacementField |
Deformation field type.
Definition at line 112 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::FiniteDifferenceFunctionType = typename GPUSuperclass::FiniteDifferenceFunctionType |
FiniteDifferenceFunction type.
Definition at line 121 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::FixedImageConstPointer = typename FixedImageType::ConstPointer |
Definition at line 104 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::FixedImagePointer = typename FixedImageType::Pointer |
Definition at line 103 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::FixedImageType = TFixedImage |
FixedImage image type.
Definition at line 102 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::GPUPDEDeformableRegistrationFunctionType = GPUPDEDeformableRegistrationFunction< FixedImageType, MovingImageType, DisplacementFieldType > |
PDEDeformableRegistrationFilterFunction type. GPUPDEDeformableRegistrationFilterFunction type.
Definition at line 127 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::GPUSuperclass = GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter > |
Definition at line 89 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::MovingImageConstPointer = typename MovingImageType::ConstPointer |
Definition at line 109 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::MovingImagePointer = typename MovingImageType::Pointer |
Definition at line 108 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::MovingImageType = TMovingImage |
MovingImage image type.
Definition at line 107 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::OutputImageType = typename GPUSuperclass::OutputImageType |
Types inherithed from the GPUSuperclass
Definition at line 118 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::Pointer = SmartPointer< Self > |
Definition at line 91 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::Self = GPUPDEDeformableRegistrationFilter |
Standard class type aliases.
Definition at line 88 of file itkGPUPDEDeformableRegistrationFilter.h.
using itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::StandardDeviationsType = FixedArray< double, ImageDimension > |
Definition at line 141 of file itkGPUPDEDeformableRegistrationFilter.h.
|
protected |
|
inlineoverrideprotected |
Definition at line 145 of file itkGPUPDEDeformableRegistrationFilter.h.
|
protectedvirtual |
|
overrideprotectedvirtual |
A simple method to copy the data from the input to the output. If the input does not exist, a zero field is written to the output.
Implements itk::GPUFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter >.
virtual::itk::LightObject::Pointer itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::CreateAnother | ( | ) | const |
|
overrideprotected |
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 deformation field, the input requested region set to be the same as that of the output requested region.
|
overrideprotected |
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.
|
inline |
Get output deformation field.
Definition at line 136 of file itkGPUPDEDeformableRegistrationFilter.h.
|
virtual |
Run-time type information (and related methods)
Reimplemented from itk::GPUDenseFiniteDifferenceImageFilter< TDisplacementField, TDisplacementField, TParentImageFilter >.
Reimplemented in itk::GPUDemonsRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >.
|
protectedvirtual |
Smooth a vector field, which may be m_DisplacementField or m_UpdateBuffer.
|
overrideprotected |
This method is called before iterating the solution.
|
overrideprotected |
Initialize the state of filter and equation before each iteration. Progress feeback is implemented as part of this method.
itk::GPUPDEDeformableRegistrationFilter< TFixedImage, TMovingImage, TDisplacementField, TParentImageFilter >::itkGetOpenCLSourceFromKernelMacro | ( | GPUPDEDeformableRegistrationFilterKernel | ) |
Get OpenCL Kernel source as a string, creates a GetOpenCLSource method
|
static |
Method for creation through the object factory.
|
overrideprotected |
This method is called after the solution has been generated. In this case, the filter release the memory of the internal buffers.
|
overrideprotected |
|
overrideprotected |
Utility to smooth the deformation field (represented in the Output) using a Gaussian operator. The amount of smoothing can be specified by setting the StandardDeviations.
|
overrideprotected |
Utility to smooth the UpdateBuffer using a Gaussian operator. The amount of smoothing can be specified by setting the UpdateFieldStandardDeviations.
|
static |
Inherit some enums and type alias from the GPUSuperclass.
Definition at line 130 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 213 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 205 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 212 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 216 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 204 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Memory buffer for smoothing kernels of the displacement field.
Definition at line 203 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Temporary deformation field use for smoothing the the deformation field.
Definition at line 199 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 210 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Definition at line 209 of file itkGPUPDEDeformableRegistrationFilter.h.
|
private |
Memory buffer for smoothing kernels of the update field.
Definition at line 208 of file itkGPUPDEDeformableRegistrationFilter.h.