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

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

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
 
 ~DisplacedDetectorImageFilter () override=default
 
virtual double GetInferiorCorner ()
 
virtual double GetSuperiorCorner ()
 

Protected Attributes

bool m_PadOnTruncatedSide {true}
 

Private Attributes

bool m_Disable {false}
 
GeometryConstPointer m_Geometry
 
double m_InferiorCorner {0.}
 
double m_MaximumOffset {0.}
 
double m_MinimumOffset {0.}
 
bool m_OffsetsSet {false}
 
double m_SuperiorCorner {0.}
 

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>
using rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::ConstPointer = itk::SmartPointer<const Self>

Definition at line 72 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 81 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 80 of file rtkDisplacedDetectorImageFilter.h.

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

Some convenient type alias.

Definition at line 75 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 77 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 76 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 71 of file rtkDisplacedDetectorImageFilter.h.

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

Standard class type alias.

Definition at line 67 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 69 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 78 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>
rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::~DisplacedDetectorImageFilter ( )
overrideprotecteddefault

Member Function Documentation

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

Reimplemented from itk::Object.

template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GenerateInputRequestedRegion ( )
overrideprotectedvirtual
template<class TInputImage , class TOutputImage = TInputImage>
void rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GenerateOutputInformation ( )
overrideprotectedvirtual

Reimplemented from itk::ProcessObject.

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>
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 
)
overrideprotectedvirtual

Reimplemented from itk::ImageSource< TOutputImage >.

Member Data Documentation

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

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

Definition at line 164 of file rtkDisplacedDetectorImageFilter.h.

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

RTK geometry object

Definition at line 140 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_InferiorCorner {0.}
private

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

Definition at line 158 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_MaximumOffset {0.}
private

Definition at line 148 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_MinimumOffset {0.}
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 147 of file rtkDisplacedDetectorImageFilter.h.

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

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

Definition at line 153 of file rtkDisplacedDetectorImageFilter.h.

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

Definition at line 136 of file rtkDisplacedDetectorImageFilter.h.

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::m_SuperiorCorner {0.}
private

Definition at line 159 of file rtkDisplacedDetectorImageFilter.h.


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