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

#include <rtkFourDReconstructionConjugateGradientOperator.h>

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

Public Types

typedef rtk::BackProjectionImageFilter< ProjectionStackType, ProjectionStackType > BackProjectionFilterType
 
typedef rtk::ConstantImageSource< ProjectionStackType > ConstantProjectionStackSourceType
 
typedef rtk::ConstantImageSource< VolumeSeriesType > ConstantVolumeSeriesSourceType
 
typedef rtk::ConstantImageSource< VolumeTypeConstantVolumeSourceType
 
typedef rtk::DisplacedDetectorImageFilter< ProjectionStackType > DisplacedDetectorFilterType
 
typedef rtk::ForwardProjectionImageFilter< ProjectionStackType, ProjectionStackType > ForwardProjectionFilterType
 
typedef rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType > InterpolationFilterType
 
typedef itk::SmartPointer< SelfPointer
 
typedef FourDReconstructionConjugateGradientOperator Self
 
typedef rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeTypeSplatFilterType
 
typedef ConjugateGradientOperator< VolumeSeriesType > Superclass
 
typedef ProjectionStackType VolumeType
 
- Public Types inherited from rtk::ConjugateGradientOperator< VolumeSeriesType >
typedef itk::SmartPointer< SelfPointer
 
typedef ConjugateGradientOperator Self
 
typedef itk::ImageToImageFilter< VolumeSeriesType, VolumeSeriesType > Superclass
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual bool GetDisableDisplacedDetectorFilter ()
 
virtual const char * GetNameOfClass () const
 
virtual bool GetUseCudaInterpolation ()
 
virtual bool GetUseCudaSources ()
 
virtual bool GetUseCudaSplat ()
 
virtual itk::Array2D< float > GetWeights ()
 
void SetBackProjectionFilter (const typename BackProjectionFilterType::Pointer _arg)
 
virtual void SetDisableDisplacedDetectorFilter (bool _arg)
 
void SetForwardProjectionFilter (const typename ForwardProjectionFilterType::Pointer _arg)
 
virtual void SetGeometry (const ThreeDCircularProjectionGeometry *_arg)
 
virtual void SetSignal (const std::vector< double > signal)
 
virtual void SetUseCudaInterpolation (bool _arg)
 
virtual void SetUseCudaSources (bool _arg)
 
virtual void SetUseCudaSplat (bool _arg)
 
virtual void SetWeights (itk::Array2D< float > _arg)
 
void SetInputVolumeSeries (const VolumeSeriesType *VolumeSeries)
 
VolumeSeriesType::ConstPointer GetInputVolumeSeries ()
 
void SetInputProjectionStack (const ProjectionStackType *Projections)
 
ProjectionStackType::ConstPointer GetInputProjectionStack ()
 
- Public Member Functions inherited from rtk::ConjugateGradientOperator< VolumeSeriesType >
virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual void SetX (const VolumeSeriesType *OutputImage)
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from rtk::ConjugateGradientOperator< VolumeSeriesType >
static Pointer New ()
 

Protected Member Functions

 FourDReconstructionConjugateGradientOperator ()
 
void GenerateData () override
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
void InitializeConstantSources ()
 
virtual ~FourDReconstructionConjugateGradientOperator () override
 
- Protected Member Functions inherited from rtk::ConjugateGradientOperator< VolumeSeriesType >
 ConjugateGradientOperator ()
 
virtual ~ConjugateGradientOperator () override
 

Protected Attributes

BackProjectionFilterType::Pointer m_BackProjectionFilter
 
ConstantProjectionStackSourceType::Pointer m_ConstantProjectionStackSource
 
ConstantVolumeSeriesSourceType::Pointer m_ConstantVolumeSeriesSource
 
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource1
 
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource2
 
bool m_DisableDisplacedDetectorFilter
 
DisplacedDetectorFilterType::Pointer m_DisplacedDetectorFilter
 
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
 
ThreeDCircularProjectionGeometry::ConstPointer m_Geometry
 
InterpolationFilterType::Pointer m_InterpolationFilter
 
std::vector< double > m_Signal
 
SplatFilterType::Pointer m_SplatFilter
 
bool m_UseCudaInterpolation
 
bool m_UseCudaSources
 
bool m_UseCudaSplat
 
itk::Array2D< float > m_Weights
 

Private Member Functions

 FourDReconstructionConjugateGradientOperator (const Self &)
 
void operator= (const Self &)
 

Detailed Description

template<typename VolumeSeriesType, typename ProjectionStackType>
class rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >

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 || sqrt(D) (R_theta S_theta f - p_theta) ||_2^2

with

Computing the gradient of this cost function yields:

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

where A^T means the adjoint of operator A.

FourDReconstructionConjugateGradientOperator implements S_theta^T R_theta^T D R_theta S_theta. It can be achieved by a FourDToProjectionStackImageFilter followed by a DisplacedDetectorFilter and ProjectionStackToFourDImageFilter (simple implementation), or by assembling the internal pipelines of these filters, and removing the unnecessary filters in the middle (a PasteImageFilter and an ExtractImageFilter), which results in performance gain and easier GPU memory management. The current implementation is the optimized one.

dot_inline_dotgraph_11.png
Test:
rtkfourdconjugategradienttest.cxx
Author
Cyril Mory

Definition at line 129 of file rtkFourDReconstructionConjugateGradientOperator.h.

Member Typedef Documentation

template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::BackProjectionImageFilter< ProjectionStackType, ProjectionStackType > rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::BackProjectionFilterType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::ConstantImageSource<ProjectionStackType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::ConstantProjectionStackSourceType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::ConstantImageSource<VolumeSeriesType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::ConstantVolumeSeriesSourceType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::ConstantImageSource<VolumeType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::ConstantVolumeSourceType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::DisplacedDetectorImageFilter<ProjectionStackType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::DisplacedDetectorFilterType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::ForwardProjectionImageFilter< ProjectionStackType, ProjectionStackType > rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::ForwardProjectionFilterType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::InterpolatorWithKnownWeightsImageFilter<VolumeType, VolumeSeriesType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::InterpolationFilterType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef itk::SmartPointer< Self > rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::Pointer
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef FourDReconstructionConjugateGradientOperator rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::Self

Standard class typedefs.

Definition at line 133 of file rtkFourDReconstructionConjugateGradientOperator.h.

template<typename VolumeSeriesType , typename ProjectionStackType >
typedef rtk::SplatWithKnownWeightsImageFilter<VolumeSeriesType, VolumeType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SplatFilterType
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef ConjugateGradientOperator< VolumeSeriesType> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::Superclass
template<typename VolumeSeriesType , typename ProjectionStackType >
typedef ProjectionStackType rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::VolumeType

Convenient typedef

Definition at line 138 of file rtkFourDReconstructionConjugateGradientOperator.h.

Constructor & Destructor Documentation

template<typename VolumeSeriesType , typename ProjectionStackType >
rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::FourDReconstructionConjugateGradientOperator ( )
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::~FourDReconstructionConjugateGradientOperator ( )
inlineoverrideprotectedvirtual
template<typename VolumeSeriesType , typename ProjectionStackType >
rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::FourDReconstructionConjugateGradientOperator ( const Self )
private

Member Function Documentation

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual::itk::LightObject::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::CreateAnother ( ) const
template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GenerateData ( )
overrideprotected
template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GenerateInputRequestedRegion ( )
overrideprotected
template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GenerateOutputInformation ( )
overrideprotected
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetDisableDisplacedDetectorFilter ( )
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
ProjectionStackType::ConstPointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetInputProjectionStack ( )

Set/Get the stack of projections

template<typename VolumeSeriesType , typename ProjectionStackType >
VolumeSeriesType::ConstPointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetInputVolumeSeries ( )

Set/Get the 4D image to be updated.

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual const char* rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetNameOfClass ( ) const
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetUseCudaInterpolation ( )
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetUseCudaSources ( )
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetUseCudaSplat ( )
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual itk::Array2D<float> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::GetWeights ( )
virtual

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

template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::InitializeConstantSources ( )
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
static Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::New ( )
static

Method for creation through the object factory.

template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::operator= ( const Self )
private
template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetBackProjectionFilter ( const typename BackProjectionFilterType::Pointer  _arg)

Pass the backprojection filter to ProjectionStackToFourD

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetDisableDisplacedDetectorFilter ( bool  _arg)
virtual

Set / Get whether the displaced detector filter should be disabled

template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetForwardProjectionFilter ( const typename ForwardProjectionFilterType::Pointer  _arg)

Pass the forward projection filter to FourDToProjectionStack

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetGeometry ( const ThreeDCircularProjectionGeometry _arg)
virtual

Pass the geometry to all filters needing it

template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetInputProjectionStack ( const ProjectionStackType *  Projections)

Set/Get the stack of projections

template<typename VolumeSeriesType , typename ProjectionStackType >
void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetInputVolumeSeries ( const VolumeSeriesType *  VolumeSeries)

Set/Get the 4D image to be updated.

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetSignal ( const std::vector< double >  signal)
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetUseCudaInterpolation ( bool  _arg)
virtual

Use CUDA interpolation/splat filters

template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetUseCudaSources ( bool  _arg)
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetUseCudaSplat ( bool  _arg)
virtual
template<typename VolumeSeriesType , typename ProjectionStackType >
virtual void rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::SetWeights ( itk::Array2D< float >  _arg)
virtual

Member Data Documentation

template<typename VolumeSeriesType , typename ProjectionStackType >
BackProjectionFilterType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_BackProjectionFilter
protected

Member pointers to the filters used internally (for convenience)

Definition at line 210 of file rtkFourDReconstructionConjugateGradientOperator.h.

template<typename VolumeSeriesType , typename ProjectionStackType >
ConstantProjectionStackSourceType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_ConstantProjectionStackSource
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
ConstantVolumeSeriesSourceType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_ConstantVolumeSeriesSource
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
ConstantVolumeSourceType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_ConstantVolumeSource1
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
ConstantVolumeSourceType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_ConstantVolumeSource2
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_DisableDisplacedDetectorFilter
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
DisplacedDetectorFilterType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_DisplacedDetectorFilter
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
ForwardProjectionFilterType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_ForwardProjectionFilter
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
ThreeDCircularProjectionGeometry::ConstPointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_Geometry
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
InterpolationFilterType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_InterpolationFilter
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
std::vector<double> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_Signal
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
SplatFilterType::Pointer rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_SplatFilter
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_UseCudaInterpolation
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_UseCudaSources
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
bool rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_UseCudaSplat
protected
template<typename VolumeSeriesType , typename ProjectionStackType >
itk::Array2D<float> rtk::FourDReconstructionConjugateGradientOperator< VolumeSeriesType, ProjectionStackType >::m_Weights
protected

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