CASToR  3.2
Tomographic Reconstruction (PET/SPECT/CT)
Public Member Functions | Private Member Functions | Private Attributes | List of all members
iOptimizerADMMLim Class Reference

This class implements the ADMM with non-negativity on projection space. More...

#include <iOptimizerADMMLim.hh>

Inheritance diagram for iOptimizerADMMLim:
Inheritance graph
Collaboration diagram for iOptimizerADMMLim:
Collaboration graph

Public Member Functions

 iOptimizerADMMLim ()
 The constructor of iOptimizerADMMLim. More...
 
 ~iOptimizerADMMLim ()
 The destructor of iOptimizerADMMLim. More...
 
int ReadConfigurationFile (const string &a_configurationFile)
 A function used to read options from a configuration file. More...
 
int ReadOptionsList (const string &a_optionsList)
 A function used to read options from a list of options. More...
 
virtual int DataStep4Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep5ComputeCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 A public function used to compute the correction terms in the data space, for the provided event. More...
 
virtual int DataStep6Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 A public function to compute the analytical solution of ADMM equation on v and update u. More...
 
- Public Member Functions inherited from vOptimizer
 vOptimizer ()
 The constructor of vOptimizer. More...
 
virtual ~vOptimizer ()
 The destructor of vOptimizer. More...
 
void ShowHelp ()
 A function used to show help about the optimizer. More...
 
int CheckParameters ()
 A public function used to check the parameters settings. More...
 
int Initialize ()
 A public function used to initialize the optimizer. More...
 
int UpdateVisitedVoxels ()
 A public function used to update the 'visited' voxels after each subset. More...
 
int PreDataUpdateStep ()
 A public function used to do stuff that need to be done at the beginning of a subset (before the data update step; i.e. the loop over all events) More...
 
int PreImageUpdateStep ()
 A public function used to do stuff that need to be done between the loop over events and the image update step. More...
 
virtual int DataStep1ForwardProjectModel (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep2Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep3BackwardProjectSensitivity (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep7BackwardProjectCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep8ComputeFOM (oProjectionLine *ap_Line, vEvent *ap_Event, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
void SetVerbose (int a_verbose)
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 
void SetImageSpace (oImageSpace *ap_ImageSpace)
 
void SetNbTOFBins (int a_nbTOFBins)
 
void SetDataMode (int a_dataMode)
 
void SetDataType (int a_dataType)
 
void SetDataSpec (int a_dataSpec)
 
void SetAttenuationImage (FLTNB *ap_attenuationImage, int a_thread)
 
void SetFOMFlag (bool a_optimizerFOMFlag)
 
void SetImageStatFlag (bool a_optimizerImageStatFlag)
 
void SetNumbersOfIterationsAndSubsets (int a_nbIterations, int *ap_nbSubsets)
 
void SetCurrentIteration (int a_currentIteration)
 
void SetCurrentSubset (int a_currentSubset)
 
int GetNbBackwardImages ()
 Get the number of backward images used by the specific optimizer. More...
 
FLTNB GetInitialValue ()
 Get the initial image value (for initialization) More...
 
void SetOptimizerID (const string &a_optimizerID)
 
const string & GetOptimizerID ()
 
int GetRequiredPenaltyDerivativesOrder ()
 Get the penalty derivative order needed for this algorithm. More...
 
bool GetAcceptPenalty ()
 Get the boolean saying if the optimizer accepts penalties. More...
 
void SetPenalty (vPenalty *ap_penalty)
 
bool GetNeedGlobalSensitivity ()
 Get the boolean saying if the sensitivity has to be computed globally for all data channels and not per subset. More...
 
 vOptimizer ()
 
virtual ~vOptimizer ()
 
void ShowHelp ()
 
int CheckParameters ()
 
int Initialize ()
 
int UpdateVisitedVoxels ()
 
int PreDataUpdateStep ()
 
int PreImageUpdateStep ()
 
virtual int DataStep1ForwardProjectModel (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep2Optional (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep3BackwardProjectSensitivity (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep7BackwardProjectCorrections (oProjectionLine *ap_Line, vEvent *ap_Event, int a_bed, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
virtual int DataStep8ComputeFOM (oProjectionLine *ap_Line, vEvent *ap_Event, int a_timeFrame, int a_respGate, int a_cardGate, int a_thread)
 
void SetVerbose (int a_verbose)
 
void SetImageDimensionsAndQuantification (oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
 
void SetImageSpace (oImageSpace *ap_ImageSpace)
 
void SetDataFile (vDataFile *ap_DataFile)
 Set the data file in use. More...
 
void SetNbTOFBins (int a_nbTOFBins)
 
void SetDataMode (int a_dataMode)
 
void SetDataType (int a_dataType)
 
void SetDataSpec (int a_dataSpec)
 
void SetAttenuationImage (FLTNB *ap_attenuationImage, int a_thread)
 
void SetFOMFlag (bool a_optimizerFOMFlag)
 
void SetImageStatFlag (bool a_optimizerImageStatFlag)
 
void SetNumbersOfIterationsAndSubsets (int a_nbSubIterationsTotal, int *ap_nbSubsets)
 
void SetOutputIterations (bool *ap_outputIterations)
 Set the selected output iterations. More...
 
void SetCurrentIteration (int a_currentTotalSubIteration)
 
int GetNbSubIterationsInOneIteration ()
 Get the number of sub iterations in one iteration. More...
 
void SetImageConvolverManager (oImageConvolverManager *ap_ImageConvolverManager)
 Set the Image Convolver Manager Object. More...
 
void SetCurrentSubset (int a_currentSubset)
 
int GetNbBackwardImages ()
 
FLTNB GetInitialValue ()
 
void SetOptimizerID (const string &a_optimizerID)
 
const string & GetOptimizerID ()
 
int GetRequiredPenaltyDerivativesOrder ()
 
bool GetAcceptPenalty ()
 
void SetPenalty (vPenalty *ap_penalty)
 
bool GetNeedGlobalSensitivity ()
 
void EnterPreIteration ()
 Set pre-process flag to true. More...
 
void ExitPreIteration ()
 Set pre-process flag to false. More...
 
bool NeedPreIteration ()
 Say if the optimizer needs a pre-process loop before iterations are done. More...
 
void EnterPostIteration ()
 Set post-process flag to true. More...
 
void ExitPostIteration ()
 Set post-process flag to false. More...
 
bool NeedPostIteration ()
 Say if the optimizer needs a post-process loop after iterations are done. More...
 

Private Member Functions

virtual int PreDataUpdateSpecificStep ()
 A private function used to compute some norms for the image update. More...
 
int PreImageUpdateSpecificStep ()
 A private function used to compute the penalty term update adaptive alpha of the ADMM algorithm. More...
 
void ShowHelpSpecific ()
 A function used to show help about the child optimizer. More...
 
int CheckSpecificParameters ()
 A private function used to check the parameters settings specific to the child optimizer. More...
 
int InitializeSpecific ()
 This function is used to initialize specific stuff to the child optimizer. More...
 
int SensitivitySpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_weight, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)
 This function compute the weight associated to the provided event (for sensitivity computation) More...
 
int DataSpaceSpecificOperations (FLTNB a_data, FLTNB a_forwardModel, FLTNB *ap_backwardValues, FLTNB a_multiplicativeCorrections, FLTNB a_additiveCorrections, FLTNB a_blankValue, FLTNB a_quantificationFactor, oProjectionLine *ap_Line)
 This function performs the data space operations specific to the optimizer (computes the values to be backprojected) More...
 
int ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *apImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int a_tbf=-1, int a_rbf=-1, int a_cbf=-1)
 This function perform the image update step specific to the optimizer. More...
 
virtual int ImageUpdateStep ()
 A public function used to perform the image update step of the optimizer. More...
 

Private Attributes

FLTNB **** m4p_firstDerivativePenaltyImage
 
FLTNB ** m2p_rBackgroundEvents
 
FLTNB ** m2p_yData
 
FLTNB m_alpha
 
FLTNB m_previousAlpha
 
FLTNB m_tau
 
FLTNB m_mu
 
FLTNB m_tauMax
 
FLTNB m_xi
 
FLTNB **** m4p_currentGrad
 
FLTNB **** m4p_currentGradFrameGates
 
FLTNB ** m2p_toWrite_uk
 
FLTNB ** m2p_toWrite_vk
 
FLTNB ** m2p_vectorAx
 
HPFLTNBmp_gradSquareNorm
 
HPFLTNBmp_projGradSquareNorm
 
HPFLTNBmp_penaltyGradSquareNorm
 
FLTNB m_relativePrimalSquareNorm
 
FLTNB m_relativeDualSquareNorm
 
HPFLTNBmp_primalSquareNorm
 
HPFLTNBmp_squareNorm_Ax
 
HPFLTNBmp_squareNorm_v
 
int m_adaptiveParameters
 
FLTNB m_stoppingCriterionValue
 
int m_saveSinogramsUAndV
 
int m_criterionReachedIteration
 
bool m_criterionReachedIsPassed
 
int m_firstIteration
 
bool m_firstIterationIsPassed
 
bool u_and_v_from_user
 

Additional Inherited Members

- Protected Member Functions inherited from vOptimizer
FLTNB ComputeSensitivity (FLTNB ****a4p_sensitivityImage, int a_timeBasisFunction, int a_respBasisFunction, int a_cardBasisFunction, int a_voxel)
 
FLTNB ForwardProject (oProjectionLine *ap_Line, FLTNB *ap_image=NULL)
 
void BackwardProject (oProjectionLine *ap_Line, FLTNB *ap_image, FLTNB a_value)
 
FLTNB ComputeSensitivity (FLTNB ****a4p_sensitivityImage, int a_timeBasisFunction, int a_respBasisFunction, int a_cardBasisFunction, int a_voxel)
 
FLTNB ForwardProject (oProjectionLine *ap_Line, FLTNB *ap_image=NULL)
 
void BackwardProject (oProjectionLine *ap_Line, FLTNB *ap_image, FLTNB a_value)
 
- Protected Attributes inherited from vOptimizer
string m_optimizerID
 
int m_verbose
 
int m_nbBackwardImages
 
int m_nbTOFBins
 
FLTNB ** m2p_forwardValues
 
FLTNB *** m3p_backwardValues
 
FLTNB m_initialValue
 
bool m_listmodeCompatibility
 
bool m_histogramCompatibility
 
bool m_emissionCompatibility
 
bool m_transmissionCompatibility
 
oImageDimensionsAndQuantificationmp_ImageDimensionsAndQuantification
 
oImageSpacemp_ImageSpace
 
int m_dataMode
 
int m_dataType
 
int m_dataSpec
 
FLTNB ** m2p_attenuationImage
 
int m_nbIterations
 
int * mp_nbSubsets
 
int m_currentIteration
 
int m_currentSubset
 
bool m_optimizerFOMFlag
 
HPFLTNB **** m4p_FOMLogLikelihood
 
HPFLTNB **** m4p_FOMRMSE
 
uint64_t **** m4p_FOMNbBins
 
HPFLTNB **** m4p_FOMNbData
 
HPFLTNB **** m4p_FOMPenalty
 
bool m_optimizerImageStatFlag
 
INTNBmp_imageStatNbVox
 
FLTNBmp_imageStatMin
 
FLTNBmp_imageStatMax
 
HPFLTNBmp_imageStatMean
 
HPFLTNBmp_imageStatVariance
 
HPFLTNBmp_correctionStatMean
 
HPFLTNBmp_correctionStatVariance
 
int m_requiredPenaltyDerivativesOrder
 
vPenaltymp_Penalty
 
bool m_needGlobalSensitivity
 
vDataFilemp_DataFile
 
oImageConvolverManagermp_ImageConvolverManager
 
int m_nbSubSteps
 
int * mp_nbSubIterationsInSubSteps
 
int m_nbSubIterationsInOneIteration
 
int m_nbSubIterationsTotal
 
bool * mp_outputIterations
 
int m_currentTotalSubIteration
 
int m_currentSubStep
 
int m_currentSubIterationInSubStep
 
bool m_needPreIteration
 
bool m_isInPreIteration
 
bool m_needPostIteration
 
bool m_isInPostIteration
 

Detailed Description

This class implements the ADMM with non-negativity on projection space.

This class inherits from vOptimizer and implements the ADMM algorithm proposed by Lim et al. to ensure positivity of the projections.

Definition at line 30 of file iOptimizerADMMLim.hh.

Constructor & Destructor Documentation

◆ iOptimizerADMMLim()

iOptimizerADMMLim::iOptimizerADMMLim ( )

The constructor of iOptimizerADMMLim.

This is the default and unique constructor. It does not take any parameter and its role is only to affect default values to each member of the class.

Definition at line 17 of file iOptimizerADMMLim.cc.

◆ ~iOptimizerADMMLim()

iOptimizerADMMLim::~iOptimizerADMMLim ( )

The destructor of iOptimizerADMMLim.

This is the default and unique destructor. It does not take any parameter and its role is only to free or delete all structures that were built by this class.

Definition at line 87 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

Member Function Documentation

◆ CheckSpecificParameters()

int iOptimizerADMMLim::CheckSpecificParameters ( )
privatevirtual

A private function used to check the parameters settings specific to the child optimizer.

This function is used to check that all parameters specific to the optimizer are correctly set within allowed values. It is called by the CheckParameters() function of the mother class. It is the implementation of the pure virtual function inherited from the abstract mother class vOptimizer.

Returns
An integer reflecting the check status; 0 if no problem, another value otherwise.

Implements vOptimizer.

Definition at line 372 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ DataSpaceSpecificOperations()

int iOptimizerADMMLim::DataSpaceSpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_backwardValues,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatevirtual

This function performs the data space operations specific to the optimizer (computes the values to be backprojected)

Parameters
FLTNBa_data
FLTNBa_forwardModel
FLTNB*ap_backwardValues
FLTNBa_multiplicativeCorrections
FLTNBa_additiveCorrections
FLTNBa_blankValue
FLTNBa_quantificationFactor
oProjectionLine*ap_Line
inta_th

It is the implementation of the pure virtual function from vOptimizer. It is not useful in this optimizer this function is directly written in DataStep5ComputeCorrections function as used variables depend on the current thread

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Implements vOptimizer.

Definition at line 959 of file iOptimizerADMMLim.cc.

◆ DataStep4Optional()

int iOptimizerADMMLim::DataStep4Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

Reimplemented from vOptimizer.

Definition at line 887 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ DataStep5ComputeCorrections()

int iOptimizerADMMLim::DataStep5ComputeCorrections ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

A public function used to compute the correction terms in the data space, for the provided event.

Parameters
oProjectionLine*ap_Line
vEvent*ap_Event
inta_bed
inta_timeFrame
inta_respGate
inta_cardGate
inta_thread

Inside the DataUpdateStep() of the oOptimizerManager, this is the fifth function called. Its role is to compute the correction terms in the data space, based on the forward model and the data. Here, it is overrided to get Ax, y, r_bar for u and v computation

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented from vOptimizer.

Definition at line 927 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ DataStep6Optional()

int iOptimizerADMMLim::DataStep6Optional ( oProjectionLine ap_Line,
vEvent ap_Event,
int  a_bed,
int  a_timeFrame,
int  a_respGate,
int  a_cardGate,
int  a_thread 
)
virtual

A public function to compute the analytical solution of ADMM equation on v and update u.

Parameters
oProjectionLine*ap_Line
vEvent*ap_Event
inta_bed
inta_timeFrame
inta_respGate
inta_cardGate
inta_thread

Inside the DataUpdateStep() of the oOptimizerManager, this is the sixth function called. For this optimizer, here is computed u^{k+1} and v^{k+1} update thanks to the paper analytical formulas, using preivously stored variables and x update.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented from vOptimizer.

Definition at line 973 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ ImageSpaceSpecificOperations()

int iOptimizerADMMLim::ImageSpaceSpecificOperations ( FLTNB  a_currentImageValue,
FLTNB apImageValue,
FLTNB  a_sensitivity,
FLTNB ap_correctionValues,
INTNB  a_voxel,
int  a_tbf = -1,
int  a_rbf = -1,
int  a_cbf = -1 
)
privatevirtual

This function perform the image update step specific to the optimizer.

Parameters
FLTNBa_currentImageValue
FLTNB*apImageValue
FLTNBa_sensitivity
FLTNB*ap_correctionValues
INTNBa_voxel
inta_tbf
inta_rbf
inta_cbf
inta_th

It is the implementation of the pure virtual function from vOptimizer. The new image value is put at the apImageValue location.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Implements vOptimizer.

Definition at line 1478 of file iOptimizerADMMLim.cc.

◆ ImageUpdateStep()

int iOptimizerADMMLim::ImageUpdateStep ( )
privatevirtual

A public function used to perform the image update step of the optimizer.

Parameters
inta_iteration
inta_nbSubsets

This function is called by the eponym function from the oOptimizerManager. It will manage the dynamic loops, compute the sensitivity using the private ComputeSensitivity() function, and update each voxel according to the specific optimizer by calling the pure virtual ImageSpaceSpecificOperations() function.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented from vOptimizer.

Definition at line 1283 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ InitializeSpecific()

int iOptimizerADMMLim::InitializeSpecific ( )
privatevirtual

This function is used to initialize specific stuff to the child optimizer.

It is called by the public Initialize() function from the mother.

Returns
An integer reflecting the initialization status; 0 if no problem, another value otherwise.

Implements vOptimizer.

Definition at line 452 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ PreDataUpdateSpecificStep()

int iOptimizerADMMLim::PreDataUpdateSpecificStep ( )
privatevirtual

A private function used to compute some norms for the image update.

This function computes some norms for the optimized stepsize used for the image update. so it can be overloaded by the child optimizer if needed.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented from vOptimizer.

Definition at line 633 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ PreImageUpdateSpecificStep()

int iOptimizerADMMLim::PreImageUpdateSpecificStep ( )
privatevirtual

A private function used to compute the penalty term update adaptive alpha of the ADMM algorithm.

This function implements the virtual eponym function of vOptimizer. It computes the penalty term of the ADMM algorithm, and the residuals to compute adaptive alpha.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Reimplemented from vOptimizer.

Definition at line 1058 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ ReadConfigurationFile()

int iOptimizerADMMLim::ReadConfigurationFile ( const string &  a_configurationFile)
virtual

A function used to read options from a configuration file.

Parameters
conststring& a_configurationFile

This function implements the reading of all options associated to the child optimizer, from a configuration file. It is the implementation of the pure virtual function inherited from the abstract class vOptimizer. It checks the reading status but not the options values that will be checked by the CheckSpecificParameters() function.

Returns
An integer reflecting the reading success; 0 if success, another value otherwise.

Implements vOptimizer.

Definition at line 254 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ ReadOptionsList()

int iOptimizerADMMLim::ReadOptionsList ( const string &  a_optionsList)
virtual

A function used to read options from a list of options.

Parameters
conststring& a_optionsList

This function implements the reading of all options associated to the child optimizer, from a list of options. It is the implementation of the pure virtual function inherited from the abstract class vOptimizer. It checks the reading status but not the options values that will be checked by the CheckSpecificParameters() function.

Returns
An integer reflecting the reading success; 0 if success, another value otherwise.

Implements vOptimizer.

Definition at line 343 of file iOptimizerADMMLim.cc.

Here is the call graph for this function:

◆ SensitivitySpecificOperations()

int iOptimizerADMMLim::SensitivitySpecificOperations ( FLTNB  a_data,
FLTNB  a_forwardModel,
FLTNB ap_weight,
FLTNB  a_multiplicativeCorrections,
FLTNB  a_additiveCorrections,
FLTNB  a_blankValue,
FLTNB  a_quantificationFactor,
oProjectionLine ap_Line 
)
privatevirtual

This function compute the weight associated to the provided event (for sensitivity computation)

Parameters
FLTNBa_data
FLTNBa_forwardModel
FLTNB*ap_weight
FLTNBa_multiplicativeCorrections
FLTNBa_additiveCorrections
FLTNBa_blankValue
FLTNBa_quantificationFactor
oProjectionLine*ap_Line

It is the implementation of the pure virtual function from vOptimizer. The result is put at ap_weight location.

Returns
An integer reflecting the process status; 0 if no problem, another value otherwise.

Implements vOptimizer.

Definition at line 912 of file iOptimizerADMMLim.cc.

◆ ShowHelpSpecific()

void iOptimizerADMMLim::ShowHelpSpecific ( )
privatevirtual

A function used to show help about the child optimizer.

This function must describe what the module does and how to use it. It describes in details the different parameters of the optimizer, and how to set them through the use of a configuration file or a list of options. It is the implementation of the pure virtual function inherited from the abstract class vOptimizer. It is called by the public ShowHelp() function.

Implements vOptimizer.

Definition at line 220 of file iOptimizerADMMLim.cc.

Member Data Documentation

◆ m2p_rBackgroundEvents

FLTNB** iOptimizerADMMLim::m2p_rBackgroundEvents
private

r_bar variable in original paper, to store background events (scatter + randoms), indexed on current thread and TOF bin

Definition at line 254 of file iOptimizerADMMLim.hh.

◆ m2p_toWrite_uk

FLTNB** iOptimizerADMMLim::m2p_toWrite_uk
private

Sinogram u (scaled dual variable), to be used for next iteration and to be written at the end of optimizer computation, with u the scaled dual variable in second ADMM derivation

Definition at line 266 of file iOptimizerADMMLim.hh.

◆ m2p_toWrite_vk

FLTNB** iOptimizerADMMLim::m2p_toWrite_vk
private

Sinogram v (ADMM constraint is Ax=v), to be used for next iteration and to be written at the end of optimizer computation, with v=Ax in second ADMM derivation

Definition at line 267 of file iOptimizerADMMLim.hh.

◆ m2p_vectorAx

FLTNB** iOptimizerADMMLim::m2p_vectorAx
private

Sinogram containing the forward projection of the image (for each lor and each TOF bin)

Definition at line 268 of file iOptimizerADMMLim.hh.

◆ m2p_yData

FLTNB** iOptimizerADMMLim::m2p_yData
private

y variable in original paper, to store raw data, indexed on current thread and TOF bin

Definition at line 255 of file iOptimizerADMMLim.hh.

◆ m4p_currentGrad

FLTNB**** iOptimizerADMMLim::m4p_currentGrad
private

Current gradient vector (indexed on basis functions) to compute gradient norm in gradient descent in next x update and needed to compute projection of it

Definition at line 264 of file iOptimizerADMMLim.hh.

◆ m4p_currentGradFrameGates

FLTNB**** iOptimizerADMMLim::m4p_currentGradFrameGates
private

Current gradient vector (indexed on frames)

Definition at line 265 of file iOptimizerADMMLim.hh.

◆ m4p_firstDerivativePenaltyImage

FLTNB**** iOptimizerADMMLim::m4p_firstDerivativePenaltyImage
private

Image containing the penalty terms of the algorithm

Definition at line 252 of file iOptimizerADMMLim.hh.

◆ m_adaptiveParameters

int iOptimizerADMMLim::m_adaptiveParameters
private

Integer to define which variables are adaptive : nothing, alpha, or tau (which means alpha and tau)

Definition at line 279 of file iOptimizerADMMLim.hh.

◆ m_alpha

FLTNB iOptimizerADMMLim::m_alpha
private

Alpha variable in original paper (ADMM penalty parameter), computed at each iteration if adaptive mode

Definition at line 257 of file iOptimizerADMMLim.hh.

◆ m_criterionReachedIsPassed

bool iOptimizerADMMLim::m_criterionReachedIsPassed
private

Boolean to define when stopping criterion is reached, to stop the algorithm (if asked)

Definition at line 283 of file iOptimizerADMMLim.hh.

◆ m_criterionReachedIteration

int iOptimizerADMMLim::m_criterionReachedIteration
private

Integer to define at which iteration the stopping criterion is reached, to stop the algorithm (if asked)

Definition at line 282 of file iOptimizerADMMLim.hh.

◆ m_firstIteration

int iOptimizerADMMLim::m_firstIteration
private

Integer to define value of first computed iteration (if some are skipped), for u and v initialization

Definition at line 284 of file iOptimizerADMMLim.hh.

◆ m_firstIterationIsPassed

bool iOptimizerADMMLim::m_firstIterationIsPassed
private

Boolean to check if value of first computed iteration is set

Definition at line 285 of file iOptimizerADMMLim.hh.

◆ m_mu

FLTNB iOptimizerADMMLim::m_mu
private

Mu variable in adaptive alpha computation, factor to balance primal and dual residual in adaptive alpha computation

Definition at line 260 of file iOptimizerADMMLim.hh.

◆ m_previousAlpha

FLTNB iOptimizerADMMLim::m_previousAlpha
private

Alpha variable at previous iteration, used to scale u if adaptive mode

Definition at line 258 of file iOptimizerADMMLim.hh.

◆ m_relativeDualSquareNorm

FLTNB iOptimizerADMMLim::m_relativeDualSquareNorm
private

Norm of relative dual residual (used in adaptive modes)

Definition at line 274 of file iOptimizerADMMLim.hh.

◆ m_relativePrimalSquareNorm

FLTNB iOptimizerADMMLim::m_relativePrimalSquareNorm
private

Norm of relative primal residual (used in adaptive modes)

Definition at line 273 of file iOptimizerADMMLim.hh.

◆ m_saveSinogramsUAndV

int iOptimizerADMMLim::m_saveSinogramsUAndV
private

Integer to save (or not) sinograms u and v at same iterations as the image

Definition at line 281 of file iOptimizerADMMLim.hh.

◆ m_stoppingCriterionValue

FLTNB iOptimizerADMMLim::m_stoppingCriterionValue
private

Value to use as stopping criterion based on relative residuals (0 means do not used the stopping criterion)

Definition at line 280 of file iOptimizerADMMLim.hh.

◆ m_tau

FLTNB iOptimizerADMMLim::m_tau
private

Tau variable in Wohlberg's paper, computed at each iteration if adaptive mode for alpha and tau

Definition at line 259 of file iOptimizerADMMLim.hh.

◆ m_tauMax

FLTNB iOptimizerADMMLim::m_tauMax
private

Tau_max variable in adaptive alpha and tau computation

Definition at line 261 of file iOptimizerADMMLim.hh.

◆ m_xi

FLTNB iOptimizerADMMLim::m_xi
private

Xi variable in adaptive alpha computation, factor to balance primal and dual residual convergence speed in adaptive computations

Definition at line 262 of file iOptimizerADMMLim.hh.

◆ mp_gradSquareNorm

HPFLTNB* iOptimizerADMMLim::mp_gradSquareNorm
private

Norm of current gradient indexed on basis functions, to be used in gradient descent (to compute stepsize) in x update

Definition at line 270 of file iOptimizerADMMLim.hh.

◆ mp_penaltyGradSquareNorm

HPFLTNB* iOptimizerADMMLim::mp_penaltyGradSquareNorm
private

Norm of finite difference matrix times gradient vector, to be used in gradient descent with quadratic MRF penalty in x update

Definition at line 272 of file iOptimizerADMMLim.hh.

◆ mp_primalSquareNorm

HPFLTNB* iOptimizerADMMLim::mp_primalSquareNorm
private

Norm of primal residual (used in adaptive modes)

Definition at line 275 of file iOptimizerADMMLim.hh.

◆ mp_projGradSquareNorm

HPFLTNB* iOptimizerADMMLim::mp_projGradSquareNorm
private

Norm of projection of current gradient, to be used in gradient descent (to compute stepsize) in x update

Definition at line 271 of file iOptimizerADMMLim.hh.

◆ mp_squareNorm_Ax

HPFLTNB* iOptimizerADMMLim::mp_squareNorm_Ax
private

Norm of projection of image (used in adaptive modes)

Definition at line 276 of file iOptimizerADMMLim.hh.

◆ mp_squareNorm_v

HPFLTNB* iOptimizerADMMLim::mp_squareNorm_v
private

Norm of sinogram v (used in adaptive modes)

Definition at line 277 of file iOptimizerADMMLim.hh.

◆ u_and_v_from_user

bool iOptimizerADMMLim::u_and_v_from_user
private

Boolean to check if user gave sinograms u and v in command line

Definition at line 286 of file iOptimizerADMMLim.hh.


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