RTK  2.6.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision > Class Template Reference

#include <rtkProjectionStackToFourDImageFilter.h>

+ Inheritance diagram for rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >:
+ Collaboration diagram for rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >:

Public Types

using BackProjectionFilterType = rtk::BackProjectionImageFilter< VolumeType, VolumeType >
 
using ConstantVolumeSeriesSourceType = rtk::ConstantImageSource< VolumeSeriesType >
 
using ConstantVolumeSourceType = rtk::ConstantImageSource< VolumeType >
 
using CPUVolumeSeriesType = typename itk::Image< typename VolumeSeriesType::PixelType, VolumeSeriesType::ImageDimension >
 
using CudaConstantVolumeSeriesSourceType = ConstantVolumeSeriesSourceType
 
using CudaConstantVolumeSourceType = ConstantVolumeSourceType
 
using CudaSplatImageFilterType = SplatFilterType
 
using ExtractFilterType = itk::ExtractImageFilter< ProjectionStackType, ProjectionStackType >
 
using GeometryType = rtk::ThreeDCircularProjectionGeometry
 
using Pointer = itk::SmartPointer< Self >
 
using Self = ProjectionStackToFourDImageFilter
 
using SplatFilterType = rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >
 
using Superclass = itk::ImageToImageFilter< VolumeSeriesType, VolumeSeriesType >
 
using VolumeType = ProjectionStackType
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
void SetBackProjectionFilter (const typename BackProjectionFilterType::Pointer _arg)
 
virtual void SetGeometry (const GeometryType *_arg)
 
virtual void SetSignal (const std::vector< double > signal)
 
virtual const char * GetNameOfClass () const
 
void SetInputVolumeSeries (const VolumeSeriesType *VolumeSeries)
 
VolumeSeriesType::ConstPointer GetInputVolumeSeries ()
 
void SetInputProjectionStack (const ProjectionStackType *Projection)
 
ProjectionStackType::ConstPointer GetInputProjectionStack ()
 
virtual void SetUseCudaSplat (bool _arg)
 
virtual bool GetUseCudaSplat ()
 
virtual void SetUseCudaSources (bool _arg)
 
virtual bool GetUseCudaSources ()
 
virtual itk::Array2D< float > GetWeights ()
 
virtual void SetWeights (itk::Array2D< float > _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

void GenerateData () override
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
void InitializeConstantSource ()
 
 ProjectionStackToFourDImageFilter ()
 
void VerifyPreconditions () const override
 
 ~ProjectionStackToFourDImageFilter () override=default
 

Protected Attributes

BackProjectionFilterType::Pointer m_BackProjectionFilter
 
ConstantVolumeSeriesSourceType::Pointer m_ConstantVolumeSeriesSource
 
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
 
ExtractFilterType::Pointer m_ExtractFilter
 
GeometryType::ConstPointer m_Geometry
 
std::vector< double > m_Signal
 
SplatFilterType::Pointer m_SplatFilter
 
bool m_UseCudaSources
 
bool m_UseCudaSplat
 
itk::Array2D< float > m_Weights
 

Detailed Description

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
class rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >

Implements part of the 4D reconstruction by conjugate gradient.

See the reference paper: "Cardiac C-arm computed tomography using a 3D + time ROI reconstruction method with spatial and temporal regularization" by Mory et al.

4D conjugate gradient reconstruction consists in iteratively minimizing the following cost function:

Sum_over_theta || R_theta S_theta f - p_theta ||_2^2

with

Computing the gradient of this cost function yields:

S_theta^T R_theta^T R_theta S_theta f - S_theta^T R_theta^T p_theta

where A^T means the adjoint of operator A.

ProjectionStackToFourDImageFilter implements S_theta^T R_theta^T.

Test:
rtkfourdconjugategradienttest.cxx
Author
Cyril Mory

Definition at line 105 of file rtkProjectionStackToFourDImageFilter.h.

Member Typedef Documentation

◆ BackProjectionFilterType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::BackProjectionFilterType = rtk::BackProjectionImageFilter<VolumeType, VolumeType>

Definition at line 144 of file rtkProjectionStackToFourDImageFilter.h.

◆ ConstantVolumeSeriesSourceType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::ConstantVolumeSeriesSourceType = rtk::ConstantImageSource<VolumeSeriesType>

Definition at line 147 of file rtkProjectionStackToFourDImageFilter.h.

◆ ConstantVolumeSourceType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::ConstantVolumeSourceType = rtk::ConstantImageSource<VolumeType>

Definition at line 146 of file rtkProjectionStackToFourDImageFilter.h.

◆ CPUVolumeSeriesType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::CPUVolumeSeriesType = typename itk::Image<typename VolumeSeriesType::PixelType, VolumeSeriesType::ImageDimension>

SFINAE type alias, depending on whether a CUDA image is used.

Definition at line 154 of file rtkProjectionStackToFourDImageFilter.h.

◆ CudaConstantVolumeSeriesSourceType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::CudaConstantVolumeSeriesSourceType = ConstantVolumeSeriesSourceType

Definition at line 168 of file rtkProjectionStackToFourDImageFilter.h.

◆ CudaConstantVolumeSourceType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::CudaConstantVolumeSourceType = ConstantVolumeSourceType

Definition at line 167 of file rtkProjectionStackToFourDImageFilter.h.

◆ CudaSplatImageFilterType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::CudaSplatImageFilterType = SplatFilterType

Definition at line 166 of file rtkProjectionStackToFourDImageFilter.h.

◆ ExtractFilterType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::ExtractFilterType = itk::ExtractImageFilter<ProjectionStackType, ProjectionStackType>

Definition at line 145 of file rtkProjectionStackToFourDImageFilter.h.

◆ GeometryType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GeometryType = rtk::ThreeDCircularProjectionGeometry

Definition at line 150 of file rtkProjectionStackToFourDImageFilter.h.

◆ Pointer

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::Pointer = itk::SmartPointer<Self>

Definition at line 114 of file rtkProjectionStackToFourDImageFilter.h.

◆ Self

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::Self = ProjectionStackToFourDImageFilter

Standard class type alias.

Definition at line 112 of file rtkProjectionStackToFourDImageFilter.h.

◆ SplatFilterType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SplatFilterType = rtk::SplatWithKnownWeightsImageFilter<VolumeSeriesType, VolumeType>

Definition at line 148 of file rtkProjectionStackToFourDImageFilter.h.

◆ Superclass

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::Superclass = itk::ImageToImageFilter<VolumeSeriesType, VolumeSeriesType>

Definition at line 113 of file rtkProjectionStackToFourDImageFilter.h.

◆ VolumeType

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
using rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::VolumeType = ProjectionStackType

Convenient type alias

Definition at line 117 of file rtkProjectionStackToFourDImageFilter.h.

Constructor & Destructor Documentation

◆ ProjectionStackToFourDImageFilter()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::ProjectionStackToFourDImageFilter ( )
protected

◆ ~ProjectionStackToFourDImageFilter()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::~ProjectionStackToFourDImageFilter ( )
overrideprotecteddefault

Member Function Documentation

◆ CreateAnother()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual::itk::LightObject::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::CreateAnother ( ) const
virtual

Reimplemented from itk::Object.

◆ GenerateData()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GenerateData ( )
overrideprotectedvirtual

Does the real work.

Reimplemented from itk::ImageSource< TOutputImage >.

◆ GenerateInputRequestedRegion()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GenerateInputRequestedRegion ( )
overrideprotectedvirtual

Reimplemented from itk::ProcessObject.

◆ GenerateOutputInformation()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GenerateOutputInformation ( )
overrideprotectedvirtual

Reimplemented from itk::ProcessObject.

◆ GetInputProjectionStack()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
ProjectionStackType::ConstPointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetInputProjectionStack ( )

Set/Get the stack of projections

◆ GetInputVolumeSeries()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
VolumeSeriesType::ConstPointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetInputVolumeSeries ( )

Set/Get the 4D image to be updated.

◆ GetNameOfClass()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual const char* rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::ImageSource< TOutputImage >.

Reimplemented in rtk::WarpProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType >.

◆ GetUseCudaSources()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual bool rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetUseCudaSources ( )
virtual

Use CUDA splat / sources

◆ GetUseCudaSplat()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual bool rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetUseCudaSplat ( )
virtual

Use CUDA splat / sources

◆ GetWeights()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual itk::Array2D<float> rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::GetWeights ( )
virtual

Macros that take care of implementing the Get and Set methods for Weights

◆ InitializeConstantSource()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::InitializeConstantSource ( )
protected

◆ New()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
static Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::New ( )
static

Method for creation through the object factory.

◆ SetBackProjectionFilter()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetBackProjectionFilter ( const typename BackProjectionFilterType::Pointer  _arg)

Pass the backprojection filter to SingleProjectionToFourDFilter

◆ SetGeometry()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetGeometry ( const GeometryType _arg)
virtual

Pass the geometry to SingleProjectionToFourDFilter

◆ SetInputProjectionStack()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetInputProjectionStack ( const ProjectionStackType *  Projection)

Set/Get the stack of projections

◆ SetInputVolumeSeries()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetInputVolumeSeries ( const VolumeSeriesType *  VolumeSeries)

Set/Get the 4D image to be updated.

◆ SetSignal()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetSignal ( const std::vector< double >  signal)
virtual

Store the phase signal in a member variable

Reimplemented in rtk::WarpProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType >.

◆ SetUseCudaSources()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetUseCudaSources ( bool  _arg)
virtual

Use CUDA splat / sources

◆ SetUseCudaSplat()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetUseCudaSplat ( bool  _arg)
virtual

Use CUDA splat / sources

◆ SetWeights()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
virtual void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::SetWeights ( itk::Array2D< float >  _arg)
virtual

Macros that take care of implementing the Get and Set methods for Weights

◆ VerifyPreconditions()

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
void rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::VerifyPreconditions ( ) const
overrideprotectedvirtual

Checks that inputs are correctly set.

Reimplemented from itk::ProcessObject.

Member Data Documentation

◆ m_BackProjectionFilter

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
BackProjectionFilterType::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_BackProjectionFilter
protected

Definition at line 217 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_ConstantVolumeSeriesSource

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
ConstantVolumeSeriesSourceType::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_ConstantVolumeSeriesSource
protected

Definition at line 220 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_ConstantVolumeSource

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
ConstantVolumeSourceType::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_ConstantVolumeSource
protected

Definition at line 219 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_ExtractFilter

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
ExtractFilterType::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_ExtractFilter
protected

Definition at line 218 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_Geometry

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
GeometryType::ConstPointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_Geometry
protected

Definition at line 224 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_Signal

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
std::vector<double> rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_Signal
protected

Definition at line 227 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_SplatFilter

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
SplatFilterType::Pointer rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_SplatFilter
protected

Member pointers to the filters used internally (for convenience)

Definition at line 216 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_UseCudaSources

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
bool rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_UseCudaSources
protected

Definition at line 226 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_UseCudaSplat

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
bool rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_UseCudaSplat
protected

Definition at line 225 of file rtkProjectionStackToFourDImageFilter.h.

◆ m_Weights

template<typename VolumeSeriesType, typename ProjectionStackType, typename TFFTPrecision = double>
itk::Array2D<float> rtk::ProjectionStackToFourDImageFilter< VolumeSeriesType, ProjectionStackType, TFFTPrecision >::m_Weights
protected

Other member variables

Definition at line 223 of file rtkProjectionStackToFourDImageFilter.h.


The documentation for this class was generated from the following file: