RTK  2.0.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage > Class Template Reference

#include <rtkADMMWaveletsConeBeamReconstructionFilter.h>

+ Inheritance diagram for rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >:
+ Collaboration diagram for rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >:

Public Types

typedef itk::AddImageFilter< TOutputImage > AddFilterType
 
typedef rtk::BackProjectionImageFilter< TOutputImage, TOutputImage > BackProjectionFilterType
 
typedef Superclass::BackProjectionType BackProjectionType
 
typedef rtk::ADMMWaveletsConjugateGradientOperator< TOutputImage > CGOperatorFilterType
 
typedef rtk::ConjugateGradientImageFilter< TOutputImage > ConjugateGradientFilterType
 
typedef rtk::DisplacedDetectorImageFilter< TOutputImage > DisplacedDetectorFilterType
 
typedef rtk::ForwardProjectionImageFilter< TOutputImage, TOutputImage > ForwardProjectionFilterType
 
typedef Superclass::ForwardProjectionType ForwardProjectionType
 
typedef itk::MultiplyImageFilter< TOutputImage > MultiplyFilterType
 
typedef itk::SmartPointer< SelfPointer
 
typedef ADMMWaveletsConeBeamReconstructionFilter Self
 
typedef rtk::DeconstructSoftThresholdReconstructImageFilter< TOutputImage > SoftThresholdFilterType
 
typedef itk::SubtractImageFilter< TOutputImage > SubtractFilterType
 
typedef IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage > Superclass
 
- Public Types inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
typedef rtk::BackProjectionImageFilter< TOutputImage, VolumeTypeBackProjectionFilterType
 
typedef BackProjectionFilterType::Pointer BackProjectionPointerType
 
enum  BackProjectionType
 
typedef itk::SmartPointer< const SelfConstPointer
 
typedef rtk::ForwardProjectionImageFilter< VolumeType, TOutputImage > ForwardProjectionFilterType
 
typedef ForwardProjectionFilterType::Pointer ForwardProjectionPointerType
 
enum  ForwardProjectionType
 
typedef itk::SmartPointer< SelfPointer
 
typedef IterativeConeBeamReconstructionFilter Self
 
typedef itk::ImageToImageFilter< TOutputImage, TOutputImage > Superclass
 
typedef TOutputImage VolumeType
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual float GetAL_iterations ()
 
virtual float GetAlpha ()
 
virtual float GetBeta ()
 
virtual float GetCG_iterations ()
 
virtual bool GetDisableDisplacedDetectorFilter ()
 
virtual const char * GetNameOfClass () const
 
virtual unsigned int GetNumberOfLevels ()
 
virtual unsigned int GetOrder ()
 
virtual void SetAL_iterations (float _arg)
 
virtual void SetAlpha (float _arg)
 
void SetBackProjectionFilter (BackProjectionType _arg) override
 
virtual void SetBeta (float _arg)
 
virtual void SetCG_iterations (float _arg)
 
virtual void SetDisableDisplacedDetectorFilter (bool _arg)
 
void SetForwardProjectionFilter (ForwardProjectionType _arg) override
 
virtual void SetGeometry (ThreeDCircularProjectionGeometry *_arg)
 
virtual void SetNumberOfLevels (unsigned int _arg)
 
virtual void SetOrder (unsigned int _arg)
 
- Public Member Functions inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
virtual ::itk::LightObject::Pointer CreateAnother () const
 
ForwardProjectionType GetForwardProjectionFilter ()
 
BackProjectionType GetBackProjectionFilter ()
 

Static Public Member Functions

static Pointer New ()
 
- Static Public Member Functions inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
static Pointer New ()
 

Protected Member Functions

 ADMMWaveletsConeBeamReconstructionFilter ()
 
void GenerateData () override
 
virtual ~ADMMWaveletsConeBeamReconstructionFilter () override
 
void VerifyInputInformation () override
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
- Protected Member Functions inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
virtual BackProjectionPointerType InstantiateBackProjectionFilter (int bptype)
 
BackProjectionPointerType InstantiateCudaBackProjection ()
 
BackProjectionPointerType InstantiateCudaBackProjection ()
 
ForwardProjectionPointerType InstantiateCudaForwardProjection ()
 
ForwardProjectionPointerType InstantiateCudaForwardProjection ()
 
BackProjectionPointerType InstantiateCudaRayCastBackProjection ()
 
BackProjectionPointerType InstantiateCudaRayCastBackProjection ()
 
virtual ForwardProjectionPointerType InstantiateForwardProjectionFilter (int fwtype)
 
BackProjectionPointerType InstantiateJosephBackAttenuatedProjection ()
 
BackProjectionPointerType InstantiateJosephBackAttenuatedProjection ()
 
ForwardProjectionPointerType InstantiateJosephForwardAttenuatedProjection ()
 
ForwardProjectionPointerType InstantiateJosephForwardAttenuatedProjection ()
 
 IterativeConeBeamReconstructionFilter ()
 
virtual ~IterativeConeBeamReconstructionFilter () override
 

Protected Attributes

AddFilterType::Pointer m_AddFilter1
 
AddFilterType::Pointer m_AddFilter2
 
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilter
 
BackProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_BackProjectionFilterForConjugateGradient
 
CGOperatorFilterType::Pointer m_CGOperator
 
ConjugateGradientFilterType::Pointer m_ConjugateGradientFilter
 
DisplacedDetectorFilterType::Pointer m_DisplacedDetectorFilter
 
ForwardProjectionImageFilter< TOutputImage, TOutputImage >::Pointer m_ForwardProjectionFilterForConjugateGradient
 
MultiplyFilterType::Pointer m_MultiplyFilter
 
SoftThresholdFilterType::Pointer m_SoftThresholdFilter
 
SubtractFilterType::Pointer m_SubtractFilter1
 
SubtractFilterType::Pointer m_SubtractFilter2
 
MultiplyFilterType::Pointer m_ZeroMultiplyFilter
 
- Protected Attributes inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
BackProjectionType m_CurrentBackProjectionConfiguration
 
ForwardProjectionType m_CurrentForwardProjectionConfiguration
 

Private Member Functions

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

Private Attributes

unsigned int m_AL_iterations
 
float m_Alpha
 
float m_Beta
 
unsigned int m_CG_iterations
 
bool m_DisableDisplacedDetectorFilter
 
ThreeDCircularProjectionGeometry::Pointer m_Geometry
 
unsigned int m_NumberOfLevels
 
unsigned int m_Order
 

Additional Inherited Members

- Protected Types inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >
typedef itk::Image< typename TOutputImage::PixelType, TOutputImage::ImageDimension > CPUImageType
 
using EnableCudaScalarAndVectorType = typename std::enable_if< !std::is_same< CPUImageType, ImageType >::value &&std::is_same< typename itk::PixelTraits< typename ImageType::PixelType >::ValueType, float >::value &&(itk::PixelTraits< typename ImageType::PixelType >::Dimension==1||itk::PixelTraits< typename ImageType::PixelType >::Dimension==3) >::type
 
using DisableCudaScalarAndVectorType = typename std::enable_if< std::is_same< CPUImageType, ImageType >::value||!std::is_same< typename itk::PixelTraits< typename ImageType::PixelType >::ValueType, float >::value||(itk::PixelTraits< typename ImageType::PixelType >::Dimension!=1 &&itk::PixelTraits< typename ImageType::PixelType >::Dimension!=3) >::type
 
using EnableCudaScalarType = typename std::enable_if< !std::is_same< CPUImageType, ImageType >::value &&std::is_same< typename itk::PixelTraits< typename ImageType::PixelType >::ValueType, float >::value &&itk::PixelTraits< typename ImageType::PixelType >::Dimension==1 >::type
 
using DisableCudaScalarType = typename std::enable_if< std::is_same< CPUImageType, ImageType >::value||!std::is_same< typename itk::PixelTraits< typename ImageType::PixelType >::ValueType, float >::value||itk::PixelTraits< typename ImageType::PixelType >::Dimension!=1 >::type
 
using EnableVectorType = typename std::enable_if< itk::PixelTraits< typename ImageType::PixelType >::Dimension!=1 >::type
 
using DisableVectorType = typename std::enable_if< itk::PixelTraits< typename ImageType::PixelType >::Dimension==1 >::type
 

Detailed Description

template<typename TOutputImage>
class rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >

Implements the ADMM reconstruction with wavelets regularization.

This filter implements the operator A used in the conjugate gradient step of a reconstruction method based on compressed sensing. The method attempts to find the f that minimizes || Rf -p ||_2^2 + alpha * || W(f) ||_1, with R the forward projection operator, p the measured projections, and W the Daubechies wavelets transform. Note that since Daubechies wavelets are orthogonal, \( W^{T} = W^{-1} \) Details on the method and the calculations can be found on page 53 of

Mory, C. "Cardiac C-Arm Computed Tomography", PhD thesis, 2014. https://hal.inria.fr/tel-00985728/document

\( f_{k+1} \) is obtained by linear conjugate solving the following:

\[ ( R^T R + \beta I ) f = R^T p + \beta W^{-1} ( g_k + d_k ) \]

\( g_{k+1} \) is obtained by soft thresholding:

\[ g_{k+1} = ST_{ \frac{\alpha}{2 \beta} } ( W f_{k+1} - d_k ) \]

\( d_{k+1} \) is a simple subtraction:

\[ d_{k+1} = g_{k+1} - ( W f_{k+1} - d_k) \]

In ITK, it is much easier to store a volume than its wavelets decomposition. Therefore, we store \( g'_k = W^{-1} g_k \) and \( d'_k = W^{-1} d_k \) instead of \( g_k \) and \( d_k \). The above algorithm can therefore be re-written as follows:

\( f_{k+1} \) is obtained by linear conjugate solving the following:

\[ ( R^T R + \beta I ) f = R^T p + \beta ( g'_k + d'_k ) \]

\( g'_{k+1} \) is obtained by soft thresholding:

\[ g'_{k+1} = W^{-1} ( ST_{ \frac{\alpha}{2 \beta} } W( f_{k+1} - d'_k )) \]

\( d'_{k+1} \) is a simple subtraction:

\[ d'_{k+1} = g'_{k+1} - ( f_{k+1} - d'_k) \]

The wavelet decomposition and reconstruction steps are therefore performed only for soft thresholding.

dot_inline_dotgraph_3.png
Test:
rtkadmmwaveletstest.cxx
Author
Cyril Mory

Definition at line 142 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.

Member Typedef Documentation

template<typename TOutputImage >
typedef itk::AddImageFilter<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::AddFilterType
template<typename TOutputImage >
typedef rtk::BackProjectionImageFilter< TOutputImage, TOutputImage > rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::BackProjectionFilterType
template<typename TOutputImage >
typedef Superclass::BackProjectionType rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::BackProjectionType
template<typename TOutputImage >
typedef rtk::ADMMWaveletsConjugateGradientOperator<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::CGOperatorFilterType
template<typename TOutputImage >
typedef rtk::ConjugateGradientImageFilter<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ConjugateGradientFilterType
template<typename TOutputImage >
typedef rtk::DisplacedDetectorImageFilter<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::DisplacedDetectorFilterType
template<typename TOutputImage >
typedef rtk::ForwardProjectionImageFilter< TOutputImage, TOutputImage > rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ForwardProjectionFilterType

The 3D image to be updated The gated measured projections

Definition at line 162 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.

template<typename TOutputImage >
typedef itk::MultiplyImageFilter<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::MultiplyFilterType
template<typename TOutputImage >
typedef itk::SmartPointer< Self > rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Pointer
template<typename TOutputImage >
typedef ADMMWaveletsConeBeamReconstructionFilter rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Self

Standard class typedefs.

Definition at line 146 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.

template<typename TOutputImage >
typedef itk::SubtractImageFilter<TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SubtractFilterType
template<typename TOutputImage >
typedef IterativeConeBeamReconstructionFilter<TOutputImage, TOutputImage> rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Superclass

Constructor & Destructor Documentation

template<typename TOutputImage >
rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ADMMWaveletsConeBeamReconstructionFilter ( )
protected
template<typename TOutputImage >
virtual rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::~ADMMWaveletsConeBeamReconstructionFilter ( )
inlineoverrideprotectedvirtual
template<typename TOutputImage >
rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ADMMWaveletsConeBeamReconstructionFilter ( const Self )
private

Member Function Documentation

template<typename TOutputImage >
virtual::itk::LightObject::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::CreateAnother ( ) const
template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GenerateData ( )
overrideprotected
template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GenerateInputRequestedRegion ( )
overrideprotected

The volume and the projections must have different requested regions

Referenced by rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::VerifyInputInformation().

template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GenerateOutputInformation ( )
overrideprotected

The volume and the projections must have different requested regions

Referenced by rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::VerifyInputInformation().

template<typename TOutputImage >
virtual float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetAL_iterations ( )
virtual
template<typename TOutputImage >
virtual float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetAlpha ( )
virtual
template<typename TOutputImage >
virtual float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetBeta ( )
virtual
template<typename TOutputImage >
virtual float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetCG_iterations ( )
virtual
template<typename TOutputImage >
virtual bool rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetDisableDisplacedDetectorFilter ( )
virtual
template<typename TOutputImage >
virtual const char* rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >.

template<typename TOutputImage >
virtual unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetNumberOfLevels ( )
virtual
template<typename TOutputImage >
virtual unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::GetOrder ( )
virtual
template<typename TOutputImage >
static Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::New ( )
static

Method for creation through the object factory.

template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::operator= ( const Self )
private
template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetAL_iterations ( float  _arg)
virtual
template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetAlpha ( float  _arg)
virtual
template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetBackProjectionFilter ( BackProjectionType  _arg)
overridevirtual

Pass the backprojection filter to the conjugate gradient operator and to the back projection filter generating the B of AX=B

Reimplemented from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >.

template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetBeta ( float  _arg)
virtual
template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetCG_iterations ( float  _arg)
virtual
template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetDisableDisplacedDetectorFilter ( bool  _arg)
virtual

Set / Get whether the displaced detector filter should be disabled

template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetForwardProjectionFilter ( ForwardProjectionType  _arg)
overridevirtual

Pass the ForwardProjection filter to the conjugate gradient operator

Reimplemented from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >.

template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetGeometry ( ThreeDCircularProjectionGeometry _arg)
virtual

Pass the geometry to all filters needing it

template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetNumberOfLevels ( unsigned int  _arg)
virtual
template<typename TOutputImage >
virtual void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SetOrder ( unsigned int  _arg)
virtual
template<typename TOutputImage >
void rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::VerifyInputInformation ( )
inlineoverrideprotected

Member Data Documentation

template<typename TOutputImage >
AddFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_AddFilter1
protected
template<typename TOutputImage >
AddFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_AddFilter2
protected
template<typename TOutputImage >
unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_AL_iterations
private
template<typename TOutputImage >
float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_Alpha
private
template<typename TOutputImage >
BackProjectionImageFilter<TOutputImage, TOutputImage>::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_BackProjectionFilter
protected
template<typename TOutputImage >
BackProjectionImageFilter<TOutputImage, TOutputImage>::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_BackProjectionFilterForConjugateGradient
protected
template<typename TOutputImage >
float rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_Beta
private
template<typename TOutputImage >
unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_CG_iterations
private
template<typename TOutputImage >
CGOperatorFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_CGOperator
protected
template<typename TOutputImage >
ConjugateGradientFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_ConjugateGradientFilter
protected
template<typename TOutputImage >
bool rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_DisableDisplacedDetectorFilter
private
template<typename TOutputImage >
DisplacedDetectorFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_DisplacedDetectorFilter
protected
template<typename TOutputImage >
ForwardProjectionImageFilter<TOutputImage, TOutputImage>::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_ForwardProjectionFilterForConjugateGradient
protected
template<typename TOutputImage >
ThreeDCircularProjectionGeometry::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_Geometry
private
template<typename TOutputImage >
MultiplyFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_MultiplyFilter
protected
template<typename TOutputImage >
unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_NumberOfLevels
private
template<typename TOutputImage >
unsigned int rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_Order
private
template<typename TOutputImage >
SoftThresholdFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_SoftThresholdFilter
protected
template<typename TOutputImage >
SubtractFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_SubtractFilter1
protected

Member pointers to the filters used internally (for convenience)

Definition at line 214 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.

template<typename TOutputImage >
SubtractFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_SubtractFilter2
protected
template<typename TOutputImage >
MultiplyFilterType::Pointer rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::m_ZeroMultiplyFilter
protected

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