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::DisplacedDetectorImageFilter< TInputImage, TOutputImage > Class Template Reference

#include <rtkDisplacedDetectorImageFilter.h>

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

Public Types

typedef itk::SmartPointer< const SelfConstPointer
 
typedef GeometryType::ConstPointer GeometryConstPointer
 
typedef ThreeDCircularProjectionGeometry GeometryType
 
typedef TInputImage InputImageType
 
typedef OutputImageType::RegionType OutputImageRegionType
 
typedef TOutputImage OutputImageType
 
typedef itk::SmartPointer< SelfPointer
 
typedef DisplacedDetectorImageFilter Self
 
typedef itk::ImageToImageFilter< TInputImage, TOutputImage > Superclass
 
typedef itk::Image< typename TOutputImage::InternalPixelType, 1 > WeightImageType
 

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 GetPadOnTruncatedSide ()
 
virtual void SetPadOnTruncatedSide (bool _arg)
 
void SetOffsets (double minOffset, double maxOffset)
 
virtual double GetMinimumOffset ()
 
virtual double GetMaximumOffset ()
 
virtual bool GetDisable ()
 
virtual void SetDisable (bool _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 DisplacedDetectorImageFilter ()
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
 
virtual ~DisplacedDetectorImageFilter () override
 
virtual double GetInferiorCorner ()
 
virtual double GetSuperiorCorner ()
 

Protected Attributes

bool m_PadOnTruncatedSide
 

Private Member Functions

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

Private Attributes

bool m_Disable
 
GeometryConstPointer m_Geometry
 
double m_InferiorCorner
 
double m_MaximumOffset
 
double m_MinimumOffset
 
bool m_OffsetsSet
 
double m_SuperiorCorner
 

Detailed Description

template<class TInputImage, class TOutputImage = TInputImage>
class rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >

Weigting for displaced detectors.

Weighting of image projections to handle off-centered panels in tomography reconstruction. Based on [Wang, Med Phys, 2002].

Note that the filter does nothing if the panel shift is less than 10% of its size. Otherwise, it does the weighting described in the publication and zero pads the data on the nearest side to the center. Therefore, the InPlace capability depends on the displacement. It can only be inplace if there is no displacement, it can not otherwise. The GenerateOutputInformation method takes care of properly setting this up.

By default, it computes the minimum and maximum offsets from the complete geometry object. When an independent projection has to be processed, these values have to be set by the user from a priori knowledge of the detector displacements.

The weighting accounts for variations in SourceToDetectorDistances, SourceOffsetsX and ProjectionOffsetsX. It currently assumes constant SourceToIsocenterDistances and 0. InPlaneAngles. The other parameters are not relevant in the computation because the weighting is reproduced at every gantry angle on each line of the projection images.

Test:
rtkdisplaceddetectortest.cxx, rtkdisplaceddetectorcompcudatest.cxx, rtkdisplaceddetectorcompoffsettest.cxx
Author
Simon Rit

Definition at line 60 of file rtkDisplacedDetectorImageFilter.h.

Member Typedef Documentation

template<class TInputImage , class TOutputImage = TInputImage>
typedef itk::SmartPointer<const Self> rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::ConstPointer

Definition at line 70 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 79 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 78 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
typedef TInputImage rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::InputImageType

Some convenient typedefs.

Definition at line 73 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
typedef OutputImageType::RegionType rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::OutputImageRegionType

Definition at line 75 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
typedef TOutputImage rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::OutputImageType

Definition at line 74 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 69 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
typedef DisplacedDetectorImageFilter rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::Self

Standard class typedefs.

Definition at line 65 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 67 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
typedef itk::Image<typename TOutputImage::InternalPixelType, 1> rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::WeightImageType

Definition at line 76 of file rtkDisplacedDetectorImageFilter.h.

Constructor & Destructor Documentation

template<class TInputImage , class TOutputImage = TInputImage>
rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::DisplacedDetectorImageFilter ( )
protected
template<class TInputImage , class TOutputImage = TInputImage>
virtual rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::~DisplacedDetectorImageFilter ( )
inlineoverrideprotectedvirtual

Definition at line 116 of file rtkDisplacedDetectorImageFilter.h.

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

Member Function Documentation

template<class TInputImage , class TOutputImage = TInputImage>
virtual::itk::LightObject::Pointer rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::CreateAnother ( ) const
template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion ( )
overrideprotected
template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GenerateOutputInformation ( )
overrideprotected
template<class TInputImage , class TOutputImage = TInputImage>
virtual bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetDisable ( )
virtual

Get / Set the Disable parameter

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

Get / Set the object pointer to projection geometry

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetInferiorCorner ( )
protectedvirtual

Retrieve computed inferior and superior corners

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetMaximumOffset ( )
virtual

Get / Set the minimum and maximum offsets of the detector along the weighting direction desribed in ToUntiltedCoordinate.

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetMinimumOffset ( )
virtual

Get / Set the minimum and maximum offsets of the detector along the weighting direction desribed in ToUntiltedCoordinate.

template<class TInputImage , class TOutputImage = TInputImage>
virtual const char* rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetNameOfClass ( ) const
virtual
template<class TInputImage , class TOutputImage = TInputImage>
virtual bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetPadOnTruncatedSide ( )
virtual

Get / Set whether the projections should be padded (yes for FDK, no for iterative)

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetSuperiorCorner ( )
protectedvirtual

Retrieve computed inferior and superior corners

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

Standard New method.

template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::operator= ( const Self )
private
template<class TInputImage , class TOutputImage = TInputImage>
virtual void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::SetDisable ( bool  _arg)
virtual

Get / Set the Disable parameter

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

Get / Set the object pointer to projection geometry

template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::SetOffsets ( double  minOffset,
double  maxOffset 
)

Get / Set the minimum and maximum offsets of the detector along the weighting direction desribed in ToUntiltedCoordinate.

template<class TInputImage , class TOutputImage = TInputImage>
virtual void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::SetPadOnTruncatedSide ( bool  _arg)
virtual

Get / Set whether the projections should be padded (yes for FDK, no for iterative)

template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::ThreadedGenerateData ( const OutputImageRegionType outputRegionForThread,
ThreadIdType  threadId 
)
overrideprotected

Member Data Documentation

template<class TInputImage , class TOutputImage = TInputImage>
bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_Disable
private

When using a geometry that the displaced detector cannot manage, it has to be disabled

Definition at line 165 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
GeometryConstPointer rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_Geometry
private

RTK geometry object

Definition at line 141 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_InferiorCorner
private

Superior and inferior position of the detector along the weighting direction, i.e., the virtual detector described in ToUntiltedCoordinate.

Definition at line 159 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_MaximumOffset
private

Definition at line 149 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_MinimumOffset
private

Minimum and maximum offsets of the detector along the weighting direction, i.e. x. If a priori known, these values can be given as input. Otherwise, they are computed from the complete geometry.

Definition at line 148 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_OffsetsSet
private

Flag used to know if the user has entered the min/max values of the detector offset.

Definition at line 154 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_PadOnTruncatedSide
protected

Definition at line 134 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_SuperiorCorner
private

Definition at line 160 of file rtkDisplacedDetectorImageFilter.h.


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