RTK  2.5.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | 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< double, 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 ()
 

Static Public Attributes

static constexpr unsigned int NDimension = TInputImage::ImageDimension
 

Protected Member Functions

 DisplacedDetectorImageFilter ()
 
void DynamicThreadedGenerateData (const OutputImageRegionType &outputRegionForThread) override
 
void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
void VerifyPreconditions () ITKv5_CONST 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

◆ ConstPointer

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

Definition at line 69 of file rtkDisplacedDetectorImageFilter.h.

◆ GeometryConstPointer

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

Definition at line 79 of file rtkDisplacedDetectorImageFilter.h.

◆ GeometryType

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

Definition at line 78 of file rtkDisplacedDetectorImageFilter.h.

◆ InputImageType

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

Some convenient type alias.

Definition at line 72 of file rtkDisplacedDetectorImageFilter.h.

◆ OutputImageRegionType

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

Definition at line 75 of file rtkDisplacedDetectorImageFilter.h.

◆ OutputImageType

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

Definition at line 73 of file rtkDisplacedDetectorImageFilter.h.

◆ Pointer

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

Definition at line 68 of file rtkDisplacedDetectorImageFilter.h.

◆ Self

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

Standard class type alias.

Definition at line 66 of file rtkDisplacedDetectorImageFilter.h.

◆ Superclass

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

Definition at line 67 of file rtkDisplacedDetectorImageFilter.h.

◆ WeightImageType

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

Definition at line 76 of file rtkDisplacedDetectorImageFilter.h.

Constructor & Destructor Documentation

◆ DisplacedDetectorImageFilter()

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

◆ ~DisplacedDetectorImageFilter()

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

Member Function Documentation

◆ CreateAnother()

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

Reimplemented from itk::Object.

◆ DynamicThreadedGenerateData()

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

Reimplemented from itk::ImageSource< TOutputImage >.

◆ GenerateInputRequestedRegion()

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

◆ GenerateOutputInformation()

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

Reimplemented from itk::ProcessObject.

◆ GetDisable()

template<class TInputImage , class TOutputImage = TInputImage>
virtual bool rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::GetDisable ( )
virtual

Get / Set the Disable parameter

◆ GetGeometry()

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

Get / Set the object pointer to projection geometry

◆ GetInferiorCorner()

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

Retrieve computed inferior and superior corners

◆ GetMaximumOffset()

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.

◆ GetMinimumOffset()

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.

◆ GetNameOfClass()

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

◆ GetPadOnTruncatedSide()

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)

◆ GetSuperiorCorner()

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

Retrieve computed inferior and superior corners

◆ New()

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

Standard New method.

◆ SetDisable()

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

Get / Set the Disable parameter

◆ SetGeometry()

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

◆ SetOffsets()

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.

◆ SetPadOnTruncatedSide()

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)

◆ VerifyPreconditions()

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

Checks that inputs are correctly set.

Reimplemented from itk::ProcessObject.

Member Data Documentation

◆ m_Disable

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 171 of file rtkDisplacedDetectorImageFilter.h.

◆ m_Geometry

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

RTK geometry object

Definition at line 147 of file rtkDisplacedDetectorImageFilter.h.

◆ m_InferiorCorner

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 165 of file rtkDisplacedDetectorImageFilter.h.

◆ m_MaximumOffset

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

Definition at line 155 of file rtkDisplacedDetectorImageFilter.h.

◆ m_MinimumOffset

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 154 of file rtkDisplacedDetectorImageFilter.h.

◆ m_OffsetsSet

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 160 of file rtkDisplacedDetectorImageFilter.h.

◆ m_PadOnTruncatedSide

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

Definition at line 143 of file rtkDisplacedDetectorImageFilter.h.

◆ m_SuperiorCorner

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

Definition at line 166 of file rtkDisplacedDetectorImageFilter.h.

◆ NDimension

template<class TInputImage , class TOutputImage = TInputImage>
constexpr unsigned int rtk::DisplacedDetectorImageFilter< TInputImage, TOutputImage >::NDimension = TInputImage::ImageDimension
static

Definition at line 74 of file rtkDisplacedDetectorImageFilter.h.


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