RTK
2.6.0
Reconstruction Toolkit
|
#include <rtkADMMWaveletsConeBeamReconstructionFilter.h>
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage > | |
static Pointer | New () |
Private Attributes | |
unsigned int | m_AL_iterations { 10 } |
float | m_Alpha { 1 } |
float | m_Beta { 1 } |
unsigned int | m_CG_iterations { 3 } |
bool | m_DisableDisplacedDetectorFilter |
ThreeDCircularProjectionGeometry::Pointer | m_Geometry |
unsigned int | m_NumberOfLevels { 5 } |
unsigned int | m_Order { 3 } |
Additional Inherited Members | |
Protected Types inherited from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage > | |
using | CPUImageType = typename itk::Image< typename TOutputImage ::PixelType, TOutputImage ::ImageDimension > |
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==2||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 !=2 &&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 |
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.
Definition at line 143 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::AddFilterType = itk::AddImageFilter<TOutputImage> |
Definition at line 175 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::BackProjectionFilterType = rtk::BackProjectionImageFilter<TOutputImage, TOutputImage> |
Definition at line 172 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::BackProjectionType = typename Superclass::BackProjectionType |
Definition at line 182 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::CGOperatorFilterType = rtk::ADMMWaveletsConjugateGradientOperator<TOutputImage> |
Definition at line 177 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ConjugateGradientFilterType = rtk::ConjugateGradientImageFilter<TOutputImage> |
Definition at line 173 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::DisplacedDetectorFilterType = rtk::DisplacedDetectorImageFilter<TOutputImage> |
Definition at line 179 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ForwardProjectionFilterType = rtk::ForwardProjectionImageFilter<TOutputImage, TOutputImage> |
The 3D image to be updated The gated measured projections
Definition at line 171 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::ForwardProjectionType = typename Superclass::ForwardProjectionType |
Definition at line 181 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::MultiplyFilterType = itk::MultiplyImageFilter<TOutputImage> |
Definition at line 176 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Pointer = itk::SmartPointer<Self> |
Definition at line 152 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Self = ADMMWaveletsConeBeamReconstructionFilter |
Standard class type alias.
Definition at line 150 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SoftThresholdFilterType = rtk::DeconstructSoftThresholdReconstructImageFilter<TOutputImage> |
Definition at line 178 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::SubtractFilterType = itk::SubtractImageFilter<TOutputImage> |
Definition at line 174 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
using rtk::ADMMWaveletsConeBeamReconstructionFilter< TOutputImage >::Superclass = IterativeConeBeamReconstructionFilter<TOutputImage, TOutputImage> |
Definition at line 151 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
|
overrideprotecteddefault |
|
virtual |
Reimplemented from itk::Object.
|
overrideprotectedvirtual |
Does the real work.
Reimplemented from itk::ImageSource< TOutputImage >.
|
overrideprotectedvirtual |
The volume and the projections must have different requested regions
Reimplemented from itk::ProcessObject.
|
overrideprotectedvirtual |
The volume and the projections must have different requested regions
Reimplemented from itk::ProcessObject.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Set / Get whether the displaced detector filter should be disabled
|
virtual |
Run-time type information (and related methods).
Reimplemented from rtk::IterativeConeBeamReconstructionFilter< TOutputImage, TOutputImage >.
|
virtual |
|
virtual |
|
static |
Method for creation through the object factory.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
Set / Get whether the displaced detector filter should be disabled
|
virtual |
Pass the geometry to all filters needing it
|
virtual |
|
virtual |
|
inlineoverrideprotectedvirtual |
The inputs of this filter have the same type (float, 3) but not the same meaning It is normal that they do not occupy the same physical space. Therefore this check must be removed
Reimplemented from itk::ProcessObject.
Definition at line 242 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
overrideprotectedvirtual |
Checks that inputs are correctly set.
Reimplemented from itk::ProcessObject.
|
protected |
Definition at line 227 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 228 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 256 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 254 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 235 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 234 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 255 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 257 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 231 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 229 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 260 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 236 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 233 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 262 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 225 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 259 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
private |
Definition at line 258 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 230 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Member pointers to the filters used internally (for convenience)
Definition at line 223 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 224 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.
|
protected |
Definition at line 226 of file rtkADMMWaveletsConeBeamReconstructionFilter.h.