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

#include <rtkFourDToProjectionStackImageFilter.h>

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

Public Types

using ConstantProjectionStackSourceType = rtk::ConstantImageSource< ProjectionStackType >
 
using ConstantVolumeSourceType = rtk::ConstantImageSource< VolumeType >
 
using ForwardProjectionFilterType = rtk::ForwardProjectionImageFilter< ProjectionStackType, ProjectionStackType >
 
using GeometryType = rtk::ThreeDCircularProjectionGeometry
 
using InterpolatorFilterType = rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType >
 
using PasteFilterType = itk::PasteImageFilter< ProjectionStackType, ProjectionStackType >
 
using Pointer = itk::SmartPointer< Self >
 
using Self = FourDToProjectionStackImageFilter
 
using Superclass = itk::ImageToImageFilter< ProjectionStackType, ProjectionStackType >
 
using VolumeType = ProjectionStackType
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual const char * GetNameOfClass () const
 
void InitializeConstantVolumeSource ()
 
void SetForwardProjectionFilter (const typename ForwardProjectionFilterType::Pointer _arg)
 
virtual void SetGeometry (GeometryType::Pointer _arg)
 
void SetInputProjectionStack (const ProjectionStackType *Projection)
 
void SetInputVolumeSeries (const VolumeSeriesType *VolumeSeries)
 
virtual void SetSignal (const std::vector< double > signal)
 
void SetWeights (const itk::Array2D< float > _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 FourDToProjectionStackImageFilter ()
 
void GenerateData () override
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
ProjectionStackType::Pointer GetInputProjectionStack ()
 
VolumeSeriesType::ConstPointer GetInputVolumeSeries ()
 
 ~FourDToProjectionStackImageFilter () override=default
 

Protected Attributes

ConstantProjectionStackSourceType::Pointer m_ConstantProjectionStackSource
 
ConstantVolumeSourceType::Pointer m_ConstantVolumeSource
 
ForwardProjectionFilterType::Pointer m_ForwardProjectionFilter
 
GeometryType::Pointer m_Geometry
 
InterpolatorFilterType::Pointer m_InterpolationFilter
 
PasteFilterType::Pointer m_PasteFilter
 
ConstantProjectionStackSourceType::OutputImageRegionType m_PasteRegion
 
std::vector< double > m_Signal
 
itk::Array2D< float > m_Weights
 

Detailed Description

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

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.

FourDToProjectionStackImageFilter implements R_theta S_theta.

dot_inline_dotgraph_14.png
Test:
rtkfourdconjugategradienttest.cxx
Author
Cyril Mory

Definition at line 99 of file rtkFourDToProjectionStackImageFilter.h.

Member Typedef Documentation

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::ConstantProjectionStackSourceType = rtk::ConstantImageSource<ProjectionStackType>

Definition at line 130 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::ConstantVolumeSourceType = rtk::ConstantImageSource<VolumeType>

Definition at line 129 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::ForwardProjectionFilterType = rtk::ForwardProjectionImageFilter< ProjectionStackType, ProjectionStackType >

Typedefs for the sub filters

Definition at line 126 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GeometryType = rtk::ThreeDCircularProjectionGeometry

Definition at line 131 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::InterpolatorFilterType = rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType>

Definition at line 128 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::PasteFilterType = itk::PasteImageFilter<ProjectionStackType, ProjectionStackType>

Definition at line 127 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::Pointer = itk::SmartPointer< Self >

Definition at line 107 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::Self = FourDToProjectionStackImageFilter

Standard class type alias.

Definition at line 105 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::Superclass = itk::ImageToImageFilter<ProjectionStackType, ProjectionStackType>

Definition at line 106 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
using rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::VolumeType = ProjectionStackType

Convenient type alias

Definition at line 110 of file rtkFourDToProjectionStackImageFilter.h.

Constructor & Destructor Documentation

template<typename ProjectionStackType , typename VolumeSeriesType >
rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::FourDToProjectionStackImageFilter ( )
protected
template<typename ProjectionStackType , typename VolumeSeriesType >
rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::~FourDToProjectionStackImageFilter ( )
overrideprotecteddefault

Member Function Documentation

template<typename ProjectionStackType , typename VolumeSeriesType >
virtual::itk::LightObject::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::CreateAnother ( ) const
template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GenerateData ( )
overrideprotected

Does the real work.

template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GenerateInputRequestedRegion ( )
overrideprotected
template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GenerateOutputInformation ( )
overrideprotected
template<typename ProjectionStackType , typename VolumeSeriesType >
ProjectionStackType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GetInputProjectionStack ( )
protected
template<typename ProjectionStackType , typename VolumeSeriesType >
VolumeSeriesType::ConstPointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GetInputVolumeSeries ( )
protected
template<typename ProjectionStackType , typename VolumeSeriesType >
virtual const char* rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::ImageSource< TOutputImage >.

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

template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::InitializeConstantVolumeSource ( )

Initializes the empty volume source, set it and update it

template<typename ProjectionStackType , typename VolumeSeriesType >
static Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::New ( )
static

Method for creation through the object factory.

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

Set the ForwardProjection filter

template<typename ProjectionStackType , typename VolumeSeriesType >
virtual void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::SetGeometry ( GeometryType::Pointer  _arg)
virtual

Pass the geometry to SingleProjectionToFourDFilter

template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::SetInputProjectionStack ( const ProjectionStackType *  Projection)

The image that will be backprojected, then added, with coefficients, to each 3D volume of the 4D image. It is 3D because the ForwardProjection filters need it, but the third dimension, which is the number of projections, is 1

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

The 4D image to be updated.

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

Store the phase signal in a member variable

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

template<typename ProjectionStackType , typename VolumeSeriesType >
void rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::SetWeights ( const itk::Array2D< float >  _arg)

Pass the interpolation weights to SingleProjectionToFourDFilter

Member Data Documentation

template<typename ProjectionStackType , typename VolumeSeriesType >
ConstantProjectionStackSourceType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_ConstantProjectionStackSource
protected

Definition at line 166 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
ConstantVolumeSourceType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_ConstantVolumeSource
protected

Definition at line 165 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
ForwardProjectionFilterType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_ForwardProjectionFilter
protected

Definition at line 167 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
GeometryType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_Geometry
protected

Definition at line 171 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
InterpolatorFilterType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_InterpolationFilter
protected

Definition at line 164 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
PasteFilterType::Pointer rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_PasteFilter
protected

Member pointers to the filters used internally (for convenience)

Definition at line 163 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
ConstantProjectionStackSourceType::OutputImageRegionType rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_PasteRegion
protected

Definition at line 172 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
std::vector<double> rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_Signal
protected

Definition at line 173 of file rtkFourDToProjectionStackImageFilter.h.

template<typename ProjectionStackType , typename VolumeSeriesType >
itk::Array2D<float> rtk::FourDToProjectionStackImageFilter< ProjectionStackType, VolumeSeriesType >::m_Weights
protected

Other member variables

Definition at line 170 of file rtkFourDToProjectionStackImageFilter.h.


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