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

typedef itk::SmartPointer< const SelfConstPointer
 
typedef std::vector< float > FloatVectorType
 
typedef TImage::RegionType ImageRegionType
 
typedef TImage::SizeType ImageSizeType
 
typedef TImage::IndexType IndexType
 
typedef TImage::RegionType OutputImageRegionType
 
typedef TImage::PixelType PixelType
 
typedef itk::SmartPointer< SelfPointer
 
typedef LagCorrectionImageFilter Self
 
typedef itk::InPlaceImageFilter< TImage, TImage > Superclass
 
typedef itk::Vector< float, ModelOrder > VectorType
 

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
 
virtual ~LagCorrectionImageFilter () override
 
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 Member Functions

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

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>
typedef itk::SmartPointer< const Self > rtk::LagCorrectionImageFilter< TImage, ModelOrder >::ConstPointer

Definition at line 63 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 76 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 71 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 72 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 74 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 77 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 73 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 62 of file rtkLagCorrectionImageFilter.h.

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

Standard class typedefs.

Definition at line 60 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 61 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 75 of file rtkLagCorrectionImageFilter.h.

Constructor & Destructor Documentation

template<typename TImage , unsigned ModelOrder>
rtk::LagCorrectionImageFilter< TImage, ModelOrder >::LagCorrectionImageFilter ( )
protected
template<typename TImage , unsigned ModelOrder>
virtual rtk::LagCorrectionImageFilter< TImage, ModelOrder >::~LagCorrectionImageFilter ( )
inlineoverrideprotectedvirtual
template<typename TImage , unsigned ModelOrder>
rtk::LagCorrectionImageFilter< TImage, ModelOrder >::LagCorrectionImageFilter ( const Self )
private

Member Function Documentation

template<typename TImage , unsigned ModelOrder>
virtual::itk::LightObject::Pointer rtk::LagCorrectionImageFilter< TImage, ModelOrder >::CreateAnother ( ) const
template<typename TImage , unsigned ModelOrder>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GenerateInputRequestedRegion ( )
overrideprotected
template<typename TImage , unsigned ModelOrder>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::GenerateOutputInformation ( )
overrideprotected
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::ImageSource< 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>
void rtk::LagCorrectionImageFilter< TImage, ModelOrder >::operator= ( const Self )
private
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 
)
overrideprotected

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.

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

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 114 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 118 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 125 of file rtkLagCorrectionImageFilter.h.

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

Definition at line 115 of file rtkLagCorrectionImageFilter.h.


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