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::LagCorrectionImageFilter< TImage, ModelOrder > Class Template Reference

#include <rtkLagCorrectionImageFilter.h>

+ Inheritance diagram for rtk::LagCorrectionImageFilter< TImage, ModelOrder >:
+ Collaboration diagram for rtk::LagCorrectionImageFilter< TImage, ModelOrder >:

Public Types

using ConstPointer = itk::SmartPointer< const Self >
 
using FloatVectorType = typename std::vector< float >
 
using ImageRegionType = typename TImage::RegionType
 
using ImageSizeType = typename TImage::SizeType
 
using IndexType = typename TImage::IndexType
 
using OutputImageRegionType = typename TImage::RegionType
 
using PixelType = typename TImage::PixelType
 
using Pointer = itk::SmartPointer< Self >
 
using Self = LagCorrectionImageFilter
 
using Superclass = itk::InPlaceImageFilter< TImage, TImage >
 
using VectorType = typename itk::Vector< float, ModelOrder >
 

Public Member Functions

virtual ::itk::LightObject::Pointer CreateAnother () const
 
virtual const char * GetNameOfClass () const
 
virtual VectorType GetA ()
 
virtual VectorType GetB ()
 
virtual void SetCoefficients (const VectorType A, const VectorType B)
 

Static Public Member Functions

static Pointer New ()
 

Protected Member Functions

void GenerateInputRequestedRegion () override
 
void GenerateOutputInformation () override
 
 LagCorrectionImageFilter ()
 
void ThreadedGenerateData (const ImageRegionType &outputRegionForThread, itk::ThreadIdType threadId) override
 
 ~LagCorrectionImageFilter () override=default
 
unsigned int SplitRequestedRegion (unsigned int i, unsigned int num, OutputImageRegionType &splitRegion) override
 
virtual int SplitRequestedRegion (int i, int num, OutputImageRegionType &splitRegion)
 

Protected Attributes

VectorType m_A
 
VectorType m_B
 
VectorType m_ExpmA
 
FloatVectorType m_S
 
float m_SumB
 

Private Attributes

bool m_NewParamJustReceived
 
IndexType m_StartIdx
 

Detailed Description

template<typename TImage, unsigned ModelOrder>
class rtk::LagCorrectionImageFilter< TImage, ModelOrder >

Classical Linear Time Invariant Lag correction.

Recursive correction algorithm for detector decay characteristics. Based on [Hsieh, Proceedings of SPIE, 2000]

The IRF (Impulse Response Function) is given by: \(h(k)=b_0 \delta(k) + \sum_{n=1}^N b_n e^{-a_n k}\) where \(k\) is the discrete time, \(N\) is the model order (number of exponentials), \(\delta(k)\) is the impulse function and the \({a_n, b_n}_{n=1:N}\) parameters are respectively the exponential rates and lag coefficients to be provided. The sum of all $b_n$ must be normalized such that h(0) equals 1.

The parameters are typically estimated from either RSRF (Rising Step RF) or FSRF (Falling Step RF) response functions.

Test:
rtklagcorrectiontest.cxx
Author
Sebastien Brousmiche

Definition at line 54 of file rtkLagCorrectionImageFilter.h.

Member Typedef Documentation

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::ConstPointer = itk::SmartPointer< const Self >

Definition at line 64 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::FloatVectorType = typename std::vector<float>

Definition at line 77 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::ImageRegionType = typename TImage::RegionType

Definition at line 72 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::ImageSizeType = typename TImage::SizeType

Definition at line 73 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::IndexType = typename TImage::IndexType

Definition at line 75 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::OutputImageRegionType = typename TImage::RegionType

Definition at line 78 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::PixelType = typename TImage::PixelType

Definition at line 74 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::Pointer = itk::SmartPointer< Self >

Definition at line 63 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::Self = LagCorrectionImageFilter

Standard class type alias.

Definition at line 61 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::Superclass = itk::InPlaceImageFilter< TImage, TImage >

Definition at line 62 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
using rtk::LagCorrectionImageFilter< TImage, ModelOrder >::VectorType = typename itk::Vector<float, ModelOrder>

Definition at line 76 of file rtkLagCorrectionImageFilter.h.

Constructor & Destructor Documentation

template<typename TImage , unsigned ModelOrder>
rtk::LagCorrectionImageFilter< TImage, ModelOrder >::LagCorrectionImageFilter ( )
protected
template<typename TImage , unsigned ModelOrder>
rtk::LagCorrectionImageFilter< TImage, ModelOrder >::~LagCorrectionImageFilter ( )
overrideprotecteddefault

Member Function Documentation

template<typename TImage , unsigned ModelOrder>
virtual::itk::LightObject::Pointer rtk::LagCorrectionImageFilter< TImage, ModelOrder >::CreateAnother ( ) const
virtual

Reimplemented from itk::Object.

template<typename TImage , unsigned ModelOrder>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GenerateInputRequestedRegion ( )
overrideprotectedvirtual
template<typename TImage , unsigned ModelOrder>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GenerateOutputInformation ( )
overrideprotectedvirtual
template<typename TImage , unsigned ModelOrder>
virtual VectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GetA ( )
virtual

Get / Set the model parameters A and B

template<typename TImage , unsigned ModelOrder>
virtual VectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GetB ( )
virtual

Get / Set the model parameters A and B

template<typename TImage , unsigned ModelOrder>
virtual const char* rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GetNameOfClass ( ) const
virtual

Run-time type information (and related methods).

Reimplemented from itk::ImageToImageFilter< TInputImage, TOutputImage >.

template<typename TImage , unsigned ModelOrder>
static Pointer rtk::LagCorrectionImageFilter< TImage, ModelOrder >::New ( )
static

Method for creation through the object factory.

template<typename TImage , unsigned ModelOrder>
virtual void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::SetCoefficients ( const VectorType  A,
const VectorType  B 
)
inlinevirtual
template<typename TImage , unsigned ModelOrder>
unsigned int rtk::LagCorrectionImageFilter< TImage, ModelOrder >::SplitRequestedRegion ( unsigned int  i,
unsigned int  num,
OutputImageRegionType splitRegion 
)
overrideprotectedvirtual

The correction is applied along the third (stack) dimension. Therefore, we must avoid splitting along the stack. The split is done along the second dimension.

Reimplemented from itk::ImageSource< TOutputImage >.

Referenced by rtk::LagCorrectionImageFilter< TImage, ModelOrder >::SetCoefficients().

template<typename TImage , unsigned ModelOrder>
virtual int rtk::LagCorrectionImageFilter< TImage, ModelOrder >::SplitRequestedRegion ( int  i,
int  num,
OutputImageRegionType splitRegion 
)
protectedvirtual

The correction is applied along the third (stack) dimension. Therefore, we must avoid splitting along the stack. The split is done along the second dimension.

template<typename TImage , unsigned ModelOrder>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::ThreadedGenerateData ( const ImageRegionType outputRegionForThread,
itk::ThreadIdType  threadId 
)
overrideprotected

Member Data Documentation

template<typename TImage , unsigned ModelOrder>
VectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_A
protected
template<typename TImage , unsigned ModelOrder>
VectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_B
protected
template<typename TImage , unsigned ModelOrder>
VectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_ExpmA
protected

Definition at line 115 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
bool rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_NewParamJustReceived
private
template<typename TImage , unsigned ModelOrder>
FloatVectorType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_S
protected

Definition at line 119 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
IndexType rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_StartIdx
private

Definition at line 123 of file rtkLagCorrectionImageFilter.h.

template<typename TImage , unsigned ModelOrder>
float rtk::LagCorrectionImageFilter< TImage, ModelOrder >::m_SumB
protected

Definition at line 116 of file rtkLagCorrectionImageFilter.h.


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