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

#include <rtkSplatWithKnownWeightsImageFilter.h>

+ Inheritance diagram for rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >:
+ Collaboration diagram for rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >:

Public Types

using OutputImageRegionType = typename VolumeSeriesType::RegionType
 
using Pointer = itk::SmartPointer< Self >
 
using Self = SplatWithKnownWeightsImageFilter
 
using Superclass = itk::ImageToImageFilter< VolumeSeriesType, VolumeSeriesType >
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual int GetProjectionNumber ()
 
void SetInputVolume (const VolumeType *Volume)
 
void SetInputVolumeSeries (const VolumeSeriesType *VolumeSeries)
 
void SetProjectionNumber (int n)
 
virtual const char * GetNameOfClass () const
 
virtual itk::Array2D< float > GetWeights ()
 
virtual void SetWeights (itk::Array2D< float > _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

const itk::ImageRegionSplitterBaseGetImageRegionSplitter () const override
 
VolumeType::Pointer GetInputVolume ()
 
VolumeSeriesType::ConstPointer GetInputVolumeSeries ()
 
 SplatWithKnownWeightsImageFilter ()
 
void ThreadedGenerateData (const typename VolumeSeriesType::RegionType &outputRegionForThread, itk::ThreadIdType) override
 
 ~SplatWithKnownWeightsImageFilter () override=default
 

Protected Attributes

int m_ProjectionNumber
 
itk::ImageRegionSplitterDirection::Pointer m_Splitter
 
itk::Array2D< float > m_Weights
 

Detailed Description

template<typename VolumeSeriesType, typename VolumeType>
class rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >

Splats (linearly) a 3D volume into a 3D+t sequence of volumes.

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.

SplatWithKnownWeightsImageFilter implements S_theta^T.

Test:
rtkfourdconjugategradienttest.cxx
Author
Cyril Mory

Definition at line 67 of file rtkSplatWithKnownWeightsImageFilter.h.

Member Typedef Documentation

◆ OutputImageRegionType

template<typename VolumeSeriesType , typename VolumeType >
using rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::OutputImageRegionType = typename VolumeSeriesType::RegionType

Definition at line 77 of file rtkSplatWithKnownWeightsImageFilter.h.

◆ Pointer

template<typename VolumeSeriesType , typename VolumeType >
using rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::Pointer = itk::SmartPointer<Self>

Definition at line 76 of file rtkSplatWithKnownWeightsImageFilter.h.

◆ Self

template<typename VolumeSeriesType , typename VolumeType >
using rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::Self = SplatWithKnownWeightsImageFilter

Standard class type alias.

Definition at line 74 of file rtkSplatWithKnownWeightsImageFilter.h.

◆ Superclass

template<typename VolumeSeriesType , typename VolumeType >
using rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::Superclass = itk::ImageToImageFilter<VolumeSeriesType, VolumeSeriesType>

Definition at line 75 of file rtkSplatWithKnownWeightsImageFilter.h.

Constructor & Destructor Documentation

◆ SplatWithKnownWeightsImageFilter()

template<typename VolumeSeriesType , typename VolumeType >
rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::SplatWithKnownWeightsImageFilter ( )
protected

◆ ~SplatWithKnownWeightsImageFilter()

template<typename VolumeSeriesType , typename VolumeType >
rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::~SplatWithKnownWeightsImageFilter ( )
overrideprotecteddefault

Member Function Documentation

◆ CreateAnother()

template<typename VolumeSeriesType , typename VolumeType >
virtual::itk::LightObject::Pointer rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::CreateAnother ( ) const
virtual

Reimplemented from itk::Object.

◆ GetImageRegionSplitter()

template<typename VolumeSeriesType , typename VolumeType >
const itk::ImageRegionSplitterBase* rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetImageRegionSplitter ( ) const
overrideprotectedvirtual

Splits the OutputRequestedRegion along the first direction, not the last

Reimplemented from itk::ImageSource< TOutputImage >.

◆ GetInputVolume()

template<typename VolumeSeriesType , typename VolumeType >
VolumeType::Pointer rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetInputVolume ( )
protected

◆ GetInputVolumeSeries()

template<typename VolumeSeriesType , typename VolumeType >
VolumeSeriesType::ConstPointer rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetInputVolumeSeries ( )
protected

◆ GetNameOfClass()

template<typename VolumeSeriesType , typename VolumeType >
virtual const char* rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

◆ GetProjectionNumber()

template<typename VolumeSeriesType , typename VolumeType >
virtual int rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetProjectionNumber ( )
virtual

◆ GetWeights()

template<typename VolumeSeriesType , typename VolumeType >
virtual itk::Array2D<float> rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::GetWeights ( )
virtual

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

◆ New()

template<typename VolumeSeriesType , typename VolumeType >
static Pointer rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::New ( )
static

Method for creation through the object factory.

◆ SetInputVolume()

template<typename VolumeSeriesType , typename VolumeType >
void rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::SetInputVolume ( const VolumeType *  Volume)

The 3D image that will be added, with coefficients, to each 3D volume of the 4D image.

◆ SetInputVolumeSeries()

template<typename VolumeSeriesType , typename VolumeType >
void rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::SetInputVolumeSeries ( const VolumeSeriesType *  VolumeSeries)

The 4D image to be updated.

◆ SetProjectionNumber()

template<typename VolumeSeriesType , typename VolumeType >
void rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::SetProjectionNumber ( int  n)

◆ SetWeights()

template<typename VolumeSeriesType , typename VolumeType >
virtual void rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::SetWeights ( itk::Array2D< float >  _arg)
virtual

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

◆ ThreadedGenerateData()

template<typename VolumeSeriesType , typename VolumeType >
void rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::ThreadedGenerateData ( const typename VolumeSeriesType::RegionType outputRegionForThread,
itk::ThreadIdType   
)
overrideprotected

Does the real work.

Member Data Documentation

◆ m_ProjectionNumber

template<typename VolumeSeriesType , typename VolumeType >
int rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::m_ProjectionNumber
protected

Definition at line 127 of file rtkSplatWithKnownWeightsImageFilter.h.

◆ m_Splitter

template<typename VolumeSeriesType , typename VolumeType >
itk::ImageRegionSplitterDirection::Pointer rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::m_Splitter
protected

Definition at line 124 of file rtkSplatWithKnownWeightsImageFilter.h.

◆ m_Weights

template<typename VolumeSeriesType , typename VolumeType >
itk::Array2D<float> rtk::SplatWithKnownWeightsImageFilter< VolumeSeriesType, VolumeType >::m_Weights
protected

Definition at line 126 of file rtkSplatWithKnownWeightsImageFilter.h.


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