CASToR  3.0
Tomographic Reconstruction (PET/SPECT/CT)
Public Member Functions | Protected Attributes | List of all members
iLinearModel Class Reference

This class implements a general linear dynamic model applied between the images of a dynamic acquisition
The model is applied on a voxel-by-voxel basis between the images of the frames and/or respiratory/cardiac gates. More...

#include <iLinearModel.hh>

Inheritance diagram for iLinearModel:
Inheritance graph
Collaboration diagram for iLinearModel:
Collaboration graph

Public Member Functions

 iLinearModel ()
 Constructor of iLinearModel. Simply set all data members to default values. More...
 
 ~iLinearModel ()
 Destructor of iLinearModel. More...
 
int CheckSpecificParameters ()
 This function is used to check whether all member variables have been correctly initialized or not. More...
 
int CheckSpecificParametersForAllLinearModels ()
 This function is used to check parameters for all Linear Models.
. More...
 
virtual int ReadAndCheckConfigurationFileSpecific ()
 This function is used to read options from a configuration file. More...
 
int ReadAndCheckOptionsList (string a_listOptions)
 This function is used to read parameters from a string. More...
 
int ReadAndCheckConfigurationFileSpecificToAllLinearModels ()
 This function is used to read parameters that are generic for all Linear Models.
. More...
 
int InitializeSpecific ()
 This function is used to initialize the parametric images and basis functions for all Linear Models. More...
 
int InitializeSpecificToAllLinearModels ()
 This function is used to initialize the parametric images and basis functions for all Linear Models. More...
 
void ShowBasisFunctions ()
 This function is used to print the basis functions. More...
 
void ShowHelp ()
 Print out specific help about the implementation of this model and its initialization. More...
 
int EstimateModelParameters (oImageSpace *ap_Image, int a_ite, int a_sset)
 Estimate model parameters (parametric images and basis functions) More...
 
int EstimateImageWithModel (oImageSpace *ap_Image, int a_ite, int a_sset)
 Re-estimate image using the linear parametric images and basis functions. More...
 
int NestedEM (oImageSpace *ap_ImageS, int a_ite)
 Estimate parametric images and basis functions (if enabled) using the nested EM method. More...
 
int EstimateParametersWithNNLS (oImageSpace *ap_ImageS, int a_ite)
 Estimate parametric images using the NNLS method. More...
 
int Patlak_LS (oImageSpace *ap_ImageS, int a_ite)
 Estimate parametric images using linear regression. More...
 
- Public Member Functions inherited from vDynamicModel
 vDynamicModel ()
 Constructor of vDynamicModel. Simply set all data members to default values. More...
 
virtual ~vDynamicModel ()
 Destructor of vDynamicModel. More...
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 Set the image dimensions in use. More...
 
void SetVerbose (int a_verbose)
 Set the verbose level. More...
 
virtual int CheckParameters ()
 This function is used to check parameters after the latter have been all set using Set functions. More...
 
int ReadAndCheckConfigurationFile (string a_fileOptions)
 This function is used to read options from a configuration file.
It looks for the parameters implemented by the mother class, such as 'No image update', 'No parameters update', or 'Save parametric images'. More...
 
int Initialize ()
 A public function used to initialize the dynamic model. More...
 
virtual int EstimateModel (oImageSpace *ap_Image, int a_ite, int a_sset)
 This function checks if the EstimateModelParameters() function (specific to each model) must be called at this stage of the reconstruction depending on the m_xxxUpdateflags. More...
 
virtual int EstimateImage (oImageSpace *ap_Image, int a_ite, int a_sset)
 
int SaveParametricImages (int a_iteration, int a_subset=-1)
 This function is virtual it can be overloaded by children if required. More...
 
virtual int ApplyOutputFOVMaskingOnParametricImages ()
 Mask the outside of the transaxial FOV based on the m_fovOutPercent. More...
 
bool GetAICflag ()
 
bool GetModelBasisFunctionsRequiredFlag ()
 
int GetNbTimeBasisFunctions ()
 
FLTNB ** GetTimeBasisFunctions ()
 
virtual void ComputeOutputParImage ()
 Compute output image using the m2p_parametricImages matrix Store the result in the m2p_outputParImages matrix. More...
 
int NNLS (FLTNB **A, int m, int n, FLTNB *B, FLTNB *X, FLTNB *rnorm, FLTNB *wp, FLTNB *zzp, int *indexp)
 Implementation of NNLS (non-negative least squares) algorithm Derived from Turku PET center libraries (authors: Vesa Oikonen and Kaisa Sederholm) This routine is based on the text and fortran code in C.L. Lawson and R.J. Hanson, Solving Least Squares Problems, Prentice-Hall, Englewood Cliffs, New Jersey, 1974. More...
 

Protected Attributes

int m_OptimisationMethod
 
int m_nbRgateBF
 
int m_nbCgateBF
 
FLTNB ** m2p_respBasisFunctions
 
FLTNB ** m2p_cardBasisFunctions
 
FLTNBmp_corrBasisCoeffs
 
FLTNBmp_corrBasisFunctions
 
uint32_t m_nbLinearModelCycles
 
int m_basisFunctionsUpdStartIte
 
int m_basisFunctionsUpdRatio
 
int m_basisFunctionsUpdIdx
 
- Protected Attributes inherited from vDynamicModel
oImageDimensionsAndQuantificationmp_ID
 
int m_verbose
 
int m_nbTimeBF
 
int m_nbWeightFactors
 
int m_nbModelParam
 
int m_nbRGModelParam
 
int m_nbCGModelParam
 
string m_AICfile
 
oArterialInputCurvemp_ArterialInputCurve
 
FLTNB ** m2p_parametricImages
 
FLTNBmp_blackListedvoxelsImage
 
FLTNB ** m2p_nestedModelTimeBasisFunctions
 
FLTNB ** m2p_outputParImages
 
FLTNB ** m2p_RGParametricImages
 
FLTNB ** m2p_CGParametricImages
 
string m_fileOptions
 
string m_listOptions
 
bool m_checked
 
bool m_initialized
 
bool m_saveParImageFlag
 
bool m_saveBlacklistedImageMaskFlag
 
bool m_AICfileProvided
 
bool m_ModelSpecificBasisFunctionsRequired
 
bool m_noImageUpdateFlag
 
bool m_noParametersUpdateFlag
 
int m_startIteUpdateFlag
 
FLTNBmp_maskModel
 
INTNB m_nbVoxelsMask
 
FLTNBmp_w
 
FLTNB *** m3p_nnlsA
 
FLTNB ** m2p_nnlsB
 
FLTNB ** m2p_nnlsMat
 
FLTNB ** m2p_nnlsX
 
FLTNB ** m2p_nnlsWp
 
int ** m2p_nnlsIdx
 
uint16_t m_nnlsN =0
 

Detailed Description

This class implements a general linear dynamic model applied between the images of a dynamic acquisition
The model is applied on a voxel-by-voxel basis between the images of the frames and/or respiratory/cardiac gates.

Definition at line 62 of file iLinearModel.hh.

Constructor & Destructor Documentation

◆ iLinearModel()

iLinearModel::iLinearModel ( )

Constructor of iLinearModel. Simply set all data members to default values.

Definition at line 41 of file iLinearModel.cc.

◆ ~iLinearModel()

iLinearModel::~iLinearModel ( )

Destructor of iLinearModel.

Definition at line 76 of file iLinearModel.cc.

Here is the call graph for this function:

Member Function Documentation

◆ CheckSpecificParameters()

int iLinearModel::CheckSpecificParameters ( )
virtual

This function is used to check whether all member variables have been correctly initialized or not.

Returns
0 if success, positive value otherwise.

Implements vDynamicModel.

Reimplemented in iLinearModelTemplate, iLinearPatlakModel, and iLinearSpectralModel.

Definition at line 460 of file iLinearModel.cc.

Here is the call graph for this function:

◆ CheckSpecificParametersForAllLinearModels()

int iLinearModel::CheckSpecificParametersForAllLinearModels ( )

This function is used to check parameters for all Linear Models.
.

Returns
0 if success, other value otherwise.

Definition at line 487 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ EstimateImageWithModel()

int iLinearModel::EstimateImageWithModel ( oImageSpace ap_Image,
int  a_ite,
int  a_sset 
)
virtual

Re-estimate image using the linear parametric images and basis functions.

Parameters
ap_ImageS: pointer to the ImageSpace
a_ite: index of the actual iteration (not used)
a_sset: index of the actual subset (not used)
Returns
0 if success, other value otherwise.

Implements vDynamicModel.

Definition at line 1913 of file iLinearModel.cc.

Here is the call graph for this function:

◆ EstimateModelParameters()

int iLinearModel::EstimateModelParameters ( oImageSpace ap_Image,
int  a_ite,
int  a_sset 
)
virtual

Estimate model parameters (parametric images and basis functions)

Parameters
ap_ImageS: pointer to the ImageSpace
a_ite: index of the actual iteration (not used)
a_sset: index of the actual subset (not used)
Returns
0 if success, other value otherwise.

Implements vDynamicModel.

Definition at line 1022 of file iLinearModel.cc.

Here is the call graph for this function:

◆ EstimateParametersWithNNLS()

int iLinearModel::EstimateParametersWithNNLS ( oImageSpace ap_ImageS,
int  a_ite 
)

Estimate parametric images using the NNLS method.

Parameters
ap_ImageS: pointer to the ImageSpace
a_ite: index of the actual iteration (not used)
Returns
0 if success, other value otherwise.

Definition at line 1601 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InitializeSpecific()

int iLinearModel::InitializeSpecific ( )
virtual

This function is used to initialize the parametric images and basis functions for all Linear Models.

Returns
0 if success, other value otherwise.

Implements vDynamicModel.

Reimplemented in iLinearModelTemplate, iLinearPatlakModel, and iLinearSpectralModel.

Definition at line 983 of file iLinearModel.cc.

Here is the call graph for this function:

◆ InitializeSpecificToAllLinearModels()

int iLinearModel::InitializeSpecificToAllLinearModels ( )

This function is used to initialize the parametric images and basis functions for all Linear Models.

Returns
0 if success, other value otherwise.

Definition at line 552 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NestedEM()

int iLinearModel::NestedEM ( oImageSpace ap_ImageS,
int  a_ite 
)

Estimate parametric images and basis functions (if enabled) using the nested EM method.

Parameters
ap_ImageS: pointer to the ImageSpace
a_ite: index of the actual iteration (not used)
Returns
0 if success, other value otherwise.

Definition at line 1104 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Patlak_LS()

int iLinearModel::Patlak_LS ( oImageSpace ap_ImageS,
int  a_ite 
)

Estimate parametric images using linear regression.

Parameters
ap_ImageS: pointer to the ImageSpace
a_ite: index of the actual iteration (not used)
Returns
0 if success, other value otherwise.

Definition at line 1840 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadAndCheckConfigurationFileSpecific()

int iLinearModel::ReadAndCheckConfigurationFileSpecific ( )
virtual

This function is used to read options from a configuration file.

Returns
0 if success, other value otherwise.

Implements vDynamicModel.

Reimplemented in iLinearModelTemplate, iLinearPatlakModel, and iLinearSpectralModel.

Definition at line 252 of file iLinearModel.cc.

Here is the call graph for this function:

◆ ReadAndCheckConfigurationFileSpecificToAllLinearModels()

int iLinearModel::ReadAndCheckConfigurationFileSpecificToAllLinearModels ( )

This function is used to read parameters that are generic for all Linear Models.
.

Returns
0 if success, other value otherwise.

Definition at line 276 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReadAndCheckOptionsList()

int iLinearModel::ReadAndCheckOptionsList ( string  a_listOptions)
virtual

This function is used to read parameters from a string.

Parameters
conststring& a_optionsList : a list of parameters separated by commas
Returns
0 if success, other value otherwise.

Implements vDynamicModel.

Reimplemented in iLinearModelTemplate, iLinearPatlakModel, and iLinearSpectralModel.

Definition at line 431 of file iLinearModel.cc.

◆ ShowBasisFunctions()

void iLinearModel::ShowBasisFunctions ( )

This function is used to print the basis functions.

Definition at line 951 of file iLinearModel.cc.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShowHelp()

void iLinearModel::ShowHelp ( )
virtual

Print out specific help about the implementation of this model and its initialization.

Implements vDynamicModel.

Reimplemented in iLinearModelTemplate, iLinearPatlakModel, and iLinearSpectralModel.

Definition at line 139 of file iLinearModel.cc.

Member Data Documentation

◆ m2p_cardBasisFunctions

FLTNB** iLinearModel::m2p_cardBasisFunctions
protected

Vector containing the cardiac gating model temporal basis functions
2 pointers:
1: index of the temporal function
2: coefficient of the functions for each cardiac gate

Definition at line 205 of file iLinearModel.hh.

◆ m2p_respBasisFunctions

FLTNB** iLinearModel::m2p_respBasisFunctions
protected

Vector containing the respiratory gating model temporal basis functions
2 pointers:
1: index of the temporal function
2: coefficient of the functions for each respiratory gate

Definition at line 201 of file iLinearModel.hh.

◆ m_basisFunctionsUpdIdx

int iLinearModel::m_basisFunctionsUpdIdx
protected

Index to compute the ratio for the parametric images/basis functions updates cycle

Definition at line 217 of file iLinearModel.hh.

◆ m_basisFunctionsUpdRatio

int iLinearModel::m_basisFunctionsUpdRatio
protected

Ratio for the parametric images/basis functions updates cycle.
Cycles consist in 'm_basisFunctionsUpdRate' iterations of the parametric images, following by 'm_basisFunctionsUpdRate' iterations of the basis functions

Definition at line 215 of file iLinearModel.hh.

◆ m_basisFunctionsUpdStartIte

int iLinearModel::m_basisFunctionsUpdStartIte
protected

Starting iteration for the update of basis functions.
If negative, no update of the basis functions is performed (only parametric images are updated)

Definition at line 213 of file iLinearModel.hh.

◆ m_nbCgateBF

int iLinearModel::m_nbCgateBF
protected

Number of time basis functions applied to cardiac gates in the model

Definition at line 197 of file iLinearModel.hh.

◆ m_nbLinearModelCycles

uint32_t iLinearModel::m_nbLinearModelCycles
protected

Number of iteration of the model (one cycle consists in several updates of either the parametric images or the basis function)

Definition at line 212 of file iLinearModel.hh.

◆ m_nbRgateBF

int iLinearModel::m_nbRgateBF
protected

Number of time basis functions applied to respiratory gates in the model

Definition at line 196 of file iLinearModel.hh.

◆ m_OptimisationMethod

int iLinearModel::m_OptimisationMethod
protected

Number indicating the method to estimate parameters, from the available options.

Definition at line 195 of file iLinearModel.hh.

◆ mp_corrBasisCoeffs

FLTNB* iLinearModel::mp_corrBasisCoeffs
protected

Image matrix containing correction factors for the parametric images updates

Definition at line 210 of file iLinearModel.hh.

◆ mp_corrBasisFunctions

FLTNB* iLinearModel::mp_corrBasisFunctions
protected

Vector containing correction factors for the temporal basis functions updates

Definition at line 211 of file iLinearModel.hh.


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