RTK  2.7.0
Reconstruction Toolkit
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage > Class Template Reference

#include <rtkBoellaardScatterCorrectionImageFilter.h>

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

Public Types

using ConstPointer = itk::SmartPointer< const Self >
 
using InputImageType = TInputImage
 
using OutputImageRegionType = typename OutputImageType::RegionType
 
using OutputImageType = TOutputImage
 
using Pointer = itk::SmartPointer< Self >
 
using Self = BoellaardScatterCorrectionImageFilter
 
using Superclass = itk::ImageToImageFilter< TInputImage, TOutputImage >
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
const char * GetNameOfClass () const override
 
virtual double GetAirThreshold ()
 
virtual void SetAirThreshold (double _arg)
 
virtual double GetScatterToPrimaryRatio ()
 
virtual void SetScatterToPrimaryRatio (double _arg)
 
virtual double GetNonNegativityConstraintThreshold ()
 
virtual void SetNonNegativityConstraintThreshold (double _arg)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

 BoellaardScatterCorrectionImageFilter ()
 
 ~BoellaardScatterCorrectionImageFilter () override=default
 
void EnlargeOutputRequestedRegion (itk::DataObject *) override
 
void ThreadedGenerateData (const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
 
unsigned int SplitRequestedRegion (unsigned int i, unsigned int num, OutputImageRegionType &splitRegion) override
 
virtual int SplitRequestedRegion (int i, int num, OutputImageRegionType &splitRegion)
 

Private Attributes

double m_AirThreshold { 32000 }
 
double m_NonNegativityConstraintThreshold { 20 }
 
double m_ScatterToPrimaryRatio { 0. }
 

Detailed Description

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

Scatter correction for cone-beam CT reconstruction.

The scatter correction algorithm is based on the work of [Boellaard, Med Phys, 1997] which has been used to implement the first scatter correction algorithm of Elekta's cone-beam CT reconstruction software developed at the Netherlands cancer institute by Marcel van Herk's group. The algorithm is applied to raw projections, before computing the log. The algorithm assumes that scatter adds a constant to all pixels of each projection. It does the following steps for each projection:

  1. Mask out pixels above m_AirThreshold and record the smallest value sv.
  2. Compute the average value over all pixels of the resulting projection avg.
  3. Subtract min(m_ScatterToPrimaryRatio*avg, sv-m_NonNegativityConstraintThreshold).
Author
Simon Rit

Definition at line 47 of file rtkBoellaardScatterCorrectionImageFilter.h.

Member Typedef Documentation

◆ ConstPointer

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

Definition at line 57 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ InputImageType

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

Some convenient type alias.

Definition at line 60 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ OutputImageRegionType

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

Definition at line 62 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ OutputImageType

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

Definition at line 61 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ Pointer

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

Definition at line 56 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ Self

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

Standard class type alias.

Definition at line 54 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ Superclass

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

Definition at line 55 of file rtkBoellaardScatterCorrectionImageFilter.h.

Constructor & Destructor Documentation

◆ BoellaardScatterCorrectionImageFilter()

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

◆ ~BoellaardScatterCorrectionImageFilter()

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

Member Function Documentation

◆ CreateAnother()

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

Reimplemented from itk::Object.

◆ EnlargeOutputRequestedRegion()

template<class TInputImage , class TOutputImage = TInputImage>
void rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::EnlargeOutputRequestedRegion ( itk::DataObject )
overrideprotectedvirtual

Requires full projection images to estimate scatter

Reimplemented from itk::ProcessObject.

◆ GetAirThreshold()

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::GetAirThreshold ( )
virtual

Get / Set the air threshold on projection images. The threshold is used to evaluate which part of the x-rays have traversed the patient.

◆ GetNameOfClass()

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

Runtime information support.

Reimplemented from itk::ProcessObject.

◆ GetNonNegativityConstraintThreshold()

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::GetNonNegativityConstraintThreshold ( )
virtual

Get / Set the non-negativity constraint threshold. The pixels values will no be alowed below this signal to avoid nan when computing the log.

◆ GetScatterToPrimaryRatio()

template<class TInputImage , class TOutputImage = TInputImage>
virtual double rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::GetScatterToPrimaryRatio ( )
virtual

Get / Set the scatter-to-primary ratio on projection images. This is used to measure the scatter level on the projection image from the total measure signal.

◆ New()

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

Standard New method.

◆ SetAirThreshold()

template<class TInputImage , class TOutputImage = TInputImage>
virtual void rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::SetAirThreshold ( double  _arg)
virtual

Get / Set the air threshold on projection images. The threshold is used to evaluate which part of the x-rays have traversed the patient.

◆ SetNonNegativityConstraintThreshold()

template<class TInputImage , class TOutputImage = TInputImage>
virtual void rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::SetNonNegativityConstraintThreshold ( double  _arg)
virtual

Get / Set the non-negativity constraint threshold. The pixels values will no be alowed below this signal to avoid nan when computing the log.

◆ SetScatterToPrimaryRatio()

template<class TInputImage , class TOutputImage = TInputImage>
virtual void rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::SetScatterToPrimaryRatio ( double  _arg)
virtual

Get / Set the scatter-to-primary ratio on projection images. This is used to measure the scatter level on the projection image from the total measure signal.

◆ SplitRequestedRegion() [1/2]

template<class TInputImage , class TOutputImage = TInputImage>
unsigned int rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::SplitRequestedRegion ( unsigned int  i,
unsigned int  num,
OutputImageRegionType splitRegion 
)
overrideprotected

Split the output's RequestedRegion into "num" pieces, returning region "i" as "splitRegion". Reimplemented from ImageSource to ensure that each thread covers entire projections.

◆ SplitRequestedRegion() [2/2]

template<class TInputImage , class TOutputImage = TInputImage>
virtual int rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::SplitRequestedRegion ( int  i,
int  num,
OutputImageRegionType splitRegion 
)
protectedvirtual

Split the output's RequestedRegion into "num" pieces, returning region "i" as "splitRegion". Reimplemented from ImageSource to ensure that each thread covers entire projections.

◆ ThreadedGenerateData()

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

Requires full projection images to estimate scatter

Member Data Documentation

◆ m_AirThreshold

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::m_AirThreshold { 32000 }
private

Air threshold on projection images.

Definition at line 111 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ m_NonNegativityConstraintThreshold

template<class TInputImage , class TOutputImage = TInputImage>
double rtk::BoellaardScatterCorrectionImageFilter< TInputImage, TOutputImage >::m_NonNegativityConstraintThreshold { 20 }
private

Non-negativity constraint threshold

Definition at line 117 of file rtkBoellaardScatterCorrectionImageFilter.h.

◆ m_ScatterToPrimaryRatio

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

Scatter to primary ratio

Definition at line 114 of file rtkBoellaardScatterCorrectionImageFilter.h.


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