RTK  2.0.1
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 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 ()
 
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 ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
 
 ~BackProjectionImageFilter () override=default
 
void VerifyInputInformation () override
 

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

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

Definition at line 60 of file rtkBackProjectionImageFilter.h.

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

Definition at line 66 of file rtkBackProjectionImageFilter.h.

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

Definition at line 65 of file rtkBackProjectionImageFilter.h.

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

Definition at line 61 of file rtkBackProjectionImageFilter.h.

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

Definition at line 62 of file rtkBackProjectionImageFilter.h.

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

Definition at line 63 of file rtkBackProjectionImageFilter.h.

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

Definition at line 59 of file rtkBackProjectionImageFilter.h.

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

Definition at line 69 of file rtkBackProjectionImageFilter.h.

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

Definition at line 68 of file rtkBackProjectionImageFilter.h.

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

Definition at line 67 of file rtkBackProjectionImageFilter.h.

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

Standard class type alias.

Definition at line 57 of file rtkBackProjectionImageFilter.h.

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

Definition at line 58 of file rtkBackProjectionImageFilter.h.

Constructor & Destructor Documentation

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

Definition at line 88 of file rtkBackProjectionImageFilter.h.

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

Member Function Documentation

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::BeforeThreadedGenerateData ( )
overrideprotected
template<class TInputImage, class TOutputImage>
virtual::itk::LightObject::Pointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::CreateAnother ( ) const
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

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::BackProjectionImageFilter().

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

Apply changes to the input image requested region.

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::BackProjectionImageFilter().

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

Get / Set the object pointer to projection geometry

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

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::VerifyInputInformation().

template<class TInputImage, class TOutputImage>
virtual const char* rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const
virtual
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.

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::VerifyInputInformation().

template<class TInputImage, class TOutputImage>
itk::Matrix<double, TInputImage::ImageDimension, TInputImage::ImageDimension> rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetProjectionPhysicalPointToProjectionIndexMatrix ( )
protected
template<class TInputImage, class TOutputImage>
virtual bool rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GetTranspose ( )
virtual

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

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

Method for creation through the object factory.

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 >.

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::BackProjectionImageFilter().

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 >.

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::BackProjectionImageFilter().

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

Get / Set the object pointer to projection geometry

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)

template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ThreadedGenerateData ( const OutputImageRegionType outputRegionForThread,
ThreadIdType  threadId 
)
overrideprotected
template<class TInputImage, class TOutputImage>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::VerifyInputInformation ( )
inlineoverrideprotected

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

Definition at line 123 of file rtkBackProjectionImageFilter.h.

Referenced by rtk::BackProjectionImageFilter< TOutputImage, TOutputImage >::VerifyInputInformation().

Member Data Documentation

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

RTK geometry object

Definition at line 145 of file rtkBackProjectionImageFilter.h.

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 150 of file rtkBackProjectionImageFilter.h.


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