RTK  1.4.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | 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

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

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
 
virtual ~BackProjectionImageFilter () override
 
void VerifyInputInformation () override
 

Protected Attributes

GeometryConstPointer m_Geometry
 

Private Member Functions

 BackProjectionImageFilter (const Self &)
 
void operator= (const Self &)
 

Private Attributes

bool m_Transpose
 

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>
typedef itk::SmartPointer<const Self> rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ConstPointer

Definition at line 58 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef GeometryType::ConstPointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::GeometryConstPointer

Definition at line 64 of file rtkBackProjectionImageFilter.h.

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

Definition at line 63 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::PixelType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::InputPixelType

Definition at line 59 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TInputImage::InternalPixelType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::InternalInputPixelType

Definition at line 60 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef TOutputImage::RegionType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::OutputImageRegionType

Definition at line 61 of file rtkBackProjectionImageFilter.h.

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

Definition at line 57 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef ProjectionImageType::Pointer rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ProjectionImagePointer

Definition at line 67 of file rtkBackProjectionImageFilter.h.

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

Definition at line 66 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
typedef GeometryType::MatrixType rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::ProjectionMatrixType

Definition at line 65 of file rtkBackProjectionImageFilter.h.

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

Standard class typedefs.

Definition at line 55 of file rtkBackProjectionImageFilter.h.

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

Definition at line 56 of file rtkBackProjectionImageFilter.h.

Constructor & Destructor Documentation

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

Definition at line 86 of file rtkBackProjectionImageFilter.h.

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

Definition at line 89 of file rtkBackProjectionImageFilter.h.

template<class TInputImage, class TOutputImage>
rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::BackProjectionImageFilter ( const Self )
private

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>
void rtk::BackProjectionImageFilter< TInputImage, TOutputImage >::operator= ( const Self )
private
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 121 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 143 of file rtkBackProjectionImageFilter.h.

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

Flip projection flag: infludences GetProjection and GetIndexToIndexProjectionMatrix for optimization

Definition at line 151 of file rtkBackProjectionImageFilter.h.


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