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

#include <rtkBackProjectionImageFilter.h>

+ Inheritance diagram for rtk::BackProjectionImageFilter< TInputImage, TOutputImage >:
+ Collaboration diagram for rtk::BackProjectionImageFilter< TInputImage, TOutputImage >:

Public Types

using ConstPointer = itk::SmartPointer< const Self >
 
using GeometryConstPointer = typename GeometryType::ConstPointer
 
using GeometryType = rtk::ThreeDCircularProjectionGeometry
 
using InputPixelType = typename TInputImage::PixelType
 
using InternalInputPixelType = typename TInputImage::InternalPixelType
 
using OutputImageRegionType = typename TOutputImage::RegionType
 
using Pointer = itk::SmartPointer< Self >
 
using ProjectionImagePointer = typename ProjectionImageType::Pointer
 
using ProjectionImageType = itk::Image< InputPixelType, TInputImage::ImageDimension - 1 >
 
using ProjectionMatrixType = typename GeometryType::MatrixType
 
using Self = BackProjectionImageFilter
 
using Superclass = itk::ImageToImageFilter< TInputImage, TOutputImage >
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual const char * GetNameOfClass () const
 
virtual const GeometryTypeGetGeometry () const
 
virtual void SetGeometry (const GeometryType *_arg)
 
virtual bool GetTranspose ()
 
virtual void SetTranspose (bool _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 BackProjectionImageFilter ()
 
void BeforeThreadedGenerateData () override
 
virtual void CylindricalDetectorCenteredOnSourceBackprojection (const OutputImageRegionType &region, const ProjectionMatrixType &volIndexToProjPP, const itk::Matrix< double, TInputImage::ImageDimension, TInputImage::ImageDimension > &projPPToProjIndex, const ProjectionImagePointer projection)
 
void DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) override
 
void GenerateInputRequestedRegion () override
 
ProjectionMatrixType GetIndexToIndexProjectionMatrix (const unsigned int iProj)
 
template<class TProjectionImage >
TProjectionImage::Pointer GetProjection (const unsigned int iProj)
 
itk::Matrix< double, TInputImage::ImageDimension, TInputImage::ImageDimension > GetProjectionPhysicalPointToProjectionIndexMatrix (const unsigned int iProj)
 
ProjectionMatrixType GetVolumeIndexToProjectionPhysicalPointMatrix (const unsigned int iProj)
 
virtual void OptimizedBackprojectionX (const OutputImageRegionType &region, const ProjectionMatrixType &matrix, const ProjectionImagePointer projection)
 
virtual void OptimizedBackprojectionY (const OutputImageRegionType &region, const ProjectionMatrixType &matrix, const ProjectionImagePointer projection)
 
void VerifyInputInformation () const override
 
void VerifyPreconditions () ITKv5_CONST override
 
 ~BackProjectionImageFilter () override=default
 

Protected Attributes

GeometryConstPointer m_Geometry
 

Private Attributes

bool m_Transpose { false }
 

Detailed Description

template<class TInputImage, class TOutputImage>
class rtk::BackProjectionImageFilter< TInputImage, TOutputImage >

3D backprojection

Backprojects a stack of projection images (input 1) in a 3D volume (input 0) using linear interpolation according to a specified geometry. The operation is voxel-based, meaning that the center of each voxel is projected in the projection images to determine the interpolation location.

Test:
rtkfovtest.cxx
Author
Simon Rit

Definition at line 50 of file rtkBackProjectionImageFilter.h.

Member Typedef Documentation

◆ ConstPointer

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 59 of file rtkBackProjectionImageFilter.h.

◆ GeometryConstPointer

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GeometryConstPointer = typename GeometryType::ConstPointer

Definition at line 65 of file rtkBackProjectionImageFilter.h.

◆ GeometryType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GeometryType = rtk::ThreeDCircularProjectionGeometry

Definition at line 64 of file rtkBackProjectionImageFilter.h.

◆ InputPixelType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::InputPixelType = typename TInputImage::PixelType

Definition at line 60 of file rtkBackProjectionImageFilter.h.

◆ InternalInputPixelType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::InternalInputPixelType = typename TInputImage::InternalPixelType

Definition at line 61 of file rtkBackProjectionImageFilter.h.

◆ OutputImageRegionType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::OutputImageRegionType = typename TOutputImage::RegionType

Definition at line 62 of file rtkBackProjectionImageFilter.h.

◆ Pointer

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::Pointer = itk::SmartPointer<Self>

Definition at line 58 of file rtkBackProjectionImageFilter.h.

◆ ProjectionImagePointer

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ProjectionImagePointer = typename ProjectionImageType::Pointer

Definition at line 68 of file rtkBackProjectionImageFilter.h.

◆ ProjectionImageType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ProjectionImageType = itk::Image<InputPixelType, TInputImage::ImageDimension - 1>

Definition at line 67 of file rtkBackProjectionImageFilter.h.

◆ ProjectionMatrixType

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ProjectionMatrixType = typename GeometryType::MatrixType

Definition at line 66 of file rtkBackProjectionImageFilter.h.

◆ Self

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::Self = BackProjectionImageFilter

Standard class type alias.

Definition at line 56 of file rtkBackProjectionImageFilter.h.

◆ Superclass

template<class TInputImage, class TOutputImage>
using rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::Superclass = itk::ImageToImageFilter<TInputImage, TOutputImage>

Definition at line 57 of file rtkBackProjectionImageFilter.h.

Constructor & Destructor Documentation

◆ BackProjectionImageFilter()

template<class TInputImage, class TOutputImage>
rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::BackProjectionImageFilter ( )
inlineprotected

Definition at line 92 of file rtkBackProjectionImageFilter.h.

◆ ~BackProjectionImageFilter()

template<class TInputImage, class TOutputImage>
rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::~BackProjectionImageFilter ( )
overrideprotecteddefault

Member Function Documentation

◆ BeforeThreadedGenerateData()

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::BeforeThreadedGenerateData ( )
overrideprotectedvirtual

Reimplemented from itk::ImageSource< TOutputImage >.

◆ CreateAnother()

template<class TInputImage, class TOutputImage>
virtual::itk::LightObject::Pointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::CreateAnother ( ) const
virtual

◆ CylindricalDetectorCenteredOnSourceBackprojection()

template<class TInputImage, class TOutputImage>
virtual void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::CylindricalDetectorCenteredOnSourceBackprojection ( const OutputImageRegionType region,
const ProjectionMatrixType volIndexToProjPP,
const itk::Matrix< double, TInputImage::ImageDimension, TInputImage::ImageDimension > &  projPPToProjIndex,
const ProjectionImagePointer  projection 
)
protectedvirtual

Special case when the detector is cylindrical and centered on source

◆ DynamicThreadedGenerateData()

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::DynamicThreadedGenerateData ( const OutputImageRegionType outputRegionForThread)
overrideprotectedvirtual

◆ GenerateInputRequestedRegion()

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion ( )
overrideprotectedvirtual

◆ GetGeometry()

template<class TInputImage, class TOutputImage>
virtual const GeometryType* rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetGeometry ( ) const
virtual

Get / Set the object pointer to projection geometry

◆ GetIndexToIndexProjectionMatrix()

template<class TInputImage, class TOutputImage>
ProjectionMatrixType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetIndexToIndexProjectionMatrix ( const unsigned int  iProj)
protected

Creates iProj index to index projection matrices with current inputs instead of the physical point to physical point projection matrix provided by Geometry

◆ GetNameOfClass()

template<class TInputImage, class TOutputImage>
virtual const char* rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const
virtual

◆ GetProjection()

template<class TInputImage, class TOutputImage>
template<class TProjectionImage >
TProjectionImage::Pointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetProjection ( const unsigned int  iProj)
protected

The input is a stack of projections, we need to interpolate in one projection for efficiency during interpolation. Use of itk::ExtractImageFilter is not threadsafe in ThreadedGenerateData, this one is. The output can be multiplied by a constant. The function is templated to allow getting an itk::CudaImage.

◆ GetProjectionPhysicalPointToProjectionIndexMatrix()

template<class TInputImage, class TOutputImage>
itk::Matrix<double, TInputImage::ImageDimension, TInputImage::ImageDimension> rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetProjectionPhysicalPointToProjectionIndexMatrix ( const unsigned int  iProj)
protected

◆ GetTranspose()

template<class TInputImage, class TOutputImage>
virtual bool rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetTranspose ( )
virtual

Get / Set the transpose flag for 2D projections (optimization trick)

◆ GetVolumeIndexToProjectionPhysicalPointMatrix()

template<class TInputImage, class TOutputImage>
ProjectionMatrixType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetVolumeIndexToProjectionPhysicalPointMatrix ( const unsigned int  iProj)
protected

◆ New()

template<class TInputImage, class TOutputImage>
static Pointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::New ( )
static

Method for creation through the object factory.

◆ OptimizedBackprojectionX()

template<class TInputImage, class TOutputImage>
virtual void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::OptimizedBackprojectionX ( const OutputImageRegionType region,
const ProjectionMatrixType matrix,
const ProjectionImagePointer  projection 
)
protectedvirtual

Optimized version when the rotation is parallel to X, i.e. matrix[1][0] and matrix[2][0] are zeros.

Reimplemented in rtk::FDKBackProjectionImageFilter< TInputImage, TOutputImage >.

◆ OptimizedBackprojectionY()

template<class TInputImage, class TOutputImage>
virtual void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::OptimizedBackprojectionY ( const OutputImageRegionType region,
const ProjectionMatrixType matrix,
const ProjectionImagePointer  projection 
)
protectedvirtual

Optimized version when the rotation is parallel to Y, i.e. matrix[1][1] and matrix[2][1] are zeros.

Reimplemented in rtk::FDKBackProjectionImageFilter< TInputImage, TOutputImage >.

◆ SetGeometry()

template<class TInputImage, class TOutputImage>
virtual void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::SetGeometry ( const GeometryType _arg)
virtual

Get / Set the object pointer to projection geometry

◆ SetTranspose()

template<class TInputImage, class TOutputImage>
virtual void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::SetTranspose ( bool  _arg)
virtual

Get / Set the transpose flag for 2D projections (optimization trick)

◆ VerifyInputInformation()

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::VerifyInputInformation ( ) const
inlineoverrideprotected

The two inputs should not be in the same space so there is nothing to verify.

Definition at line 139 of file rtkBackProjectionImageFilter.h.

◆ VerifyPreconditions()

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::VerifyPreconditions ( )
overrideprotectedvirtual

Checks that inputs are correctly set.

Reimplemented from itk::ProcessObject.

Member Data Documentation

◆ m_Geometry

template<class TInputImage, class TOutputImage>
GeometryConstPointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::m_Geometry
protected

RTK geometry object

Definition at line 162 of file rtkBackProjectionImageFilter.h.

◆ m_Transpose

template<class TInputImage, class TOutputImage>
bool rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::m_Transpose { false }
private

Flip projection flag: infludences GetProjection and GetIndexToIndexProjectionMatrix for optimization

Definition at line 167 of file rtkBackProjectionImageFilter.h.


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