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::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType > Class Template Reference

#include <rtkInterpolatorWithKnownWeightsImageFilter.h>

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

Public Types

using Pointer = itk::SmartPointer< Self >
 
using Self = InterpolatorWithKnownWeightsImageFilter
 
using Superclass = itk::ImageToImageFilter< VolumeType, VolumeType >
 

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

void DynamicThreadedGenerateData (const typename VolumeType::RegionType &outputRegionForThread) override
 
void GenerateInputRequestedRegion () override
 
VolumeType::ConstPointer GetInputVolume ()
 
VolumeSeriesType::Pointer GetInputVolumeSeries ()
 
 InterpolatorWithKnownWeightsImageFilter ()
 
 ~InterpolatorWithKnownWeightsImageFilter () override=default
 

Protected Attributes

int m_ProjectionNumber
 
itk::Array2D< float > m_Weights
 

Detailed Description

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

Interpolates (linearly) in a 3D+t sequence of volumes to get a 3D volume.

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.

InterpolatorWithKnownWeightsImageFilter implements S_theta.

Test:
rtkfourdconjugategradienttest.cxx
Author
Cyril Mory

Definition at line 64 of file rtkInterpolatorWithKnownWeightsImageFilter.h.

Member Typedef Documentation

◆ Pointer

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

Definition at line 73 of file rtkInterpolatorWithKnownWeightsImageFilter.h.

◆ Self

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

Standard class type alias.

Definition at line 71 of file rtkInterpolatorWithKnownWeightsImageFilter.h.

◆ Superclass

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

Definition at line 72 of file rtkInterpolatorWithKnownWeightsImageFilter.h.

Constructor & Destructor Documentation

◆ InterpolatorWithKnownWeightsImageFilter()

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

◆ ~InterpolatorWithKnownWeightsImageFilter()

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

Member Function Documentation

◆ CreateAnother()

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

Reimplemented from itk::Object.

◆ DynamicThreadedGenerateData()

template<typename VolumeType , typename VolumeSeriesType >
void rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType >::DynamicThreadedGenerateData ( const typename VolumeType::RegionType outputRegionForThread)
overrideprotected

Does the real work.

◆ GenerateInputRequestedRegion()

template<typename VolumeType , typename VolumeSeriesType >
void rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType >::GenerateInputRequestedRegion ( )
overrideprotectedvirtual

◆ GetInputVolume()

template<typename VolumeType , typename VolumeSeriesType >
VolumeType::ConstPointer rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType >::GetInputVolume ( )
protected

◆ GetInputVolumeSeries()

template<typename VolumeType , typename VolumeSeriesType >
VolumeSeriesType::Pointer rtk::InterpolatorWithKnownWeightsImageFilter< VolumeType, VolumeSeriesType >::GetInputVolumeSeries ( )
protected

◆ GetNameOfClass()

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

Run-time type information (and related methods).

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

◆ GetProjectionNumber()

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

◆ GetWeights()

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

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

◆ New()

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

Method for creation through the object factory.

◆ SetInputVolume()

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

The 3D image to be updated.

◆ SetInputVolumeSeries()

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

The 4D image that will be interpolated, with coefficients, generate a 3D volume.

◆ SetProjectionNumber()

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

◆ SetWeights()

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

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

Member Data Documentation

◆ m_ProjectionNumber

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

◆ m_Weights

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

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