![]() |
CASToR
3.2
Tomographic Reconstruction (PET/SPECT/CT)
|
This class is designed to generically described any iterative optimizer. More...
#include <vOptimizer.hh>
Public Member Functions | |
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 | 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) |
virtual int | DataStep6Optional (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) |
virtual int | ImageUpdateStep () |
A public function used to perform the image update step of the optimizer. More... | |
virtual int | ReadConfigurationFile (const string &a_configurationFile)=0 |
virtual int | ReadOptionsList (const string &a_optionsList)=0 |
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 | 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) |
virtual int | DataStep6Optional (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) |
virtual int | ImageUpdateStep () |
virtual int | ReadConfigurationFile (const string &a_configurationFile)=0 |
virtual int | ReadOptionsList (const string &a_optionsList)=0 |
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... | |
Protected Member Functions | |
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) |
Private Member Functions | |
virtual int | PreDataUpdateSpecificStep () |
A private function used to perform any step required by the child optimizer, before the loop on event inside the subset loop. More... | |
virtual int | PreImageUpdateSpecificStep () |
A private function used to perform any step required by the child optimizer, between the loop on event and the image update step. More... | |
virtual void | ShowHelpSpecific ()=0 |
A function used to show help about the child module. More... | |
virtual int | CheckSpecificParameters ()=0 |
A private function used to check the parameters settings specific to the child optimizer. More... | |
virtual int | InitializeSpecific ()=0 |
A private function used to initialize everything specific to the child optimizer. More... | |
virtual 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)=0 |
virtual 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)=0 |
virtual int | ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int tbf=-1, int rbf=-1, int cbf=-1)=0 |
virtual int | PreDataUpdateSpecificStep () |
virtual int | PreImageUpdateSpecificStep () |
virtual void | ShowHelpSpecific ()=0 |
virtual int | CheckSpecificParameters ()=0 |
virtual int | InitializeSpecific ()=0 |
virtual 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)=0 |
virtual 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)=0 |
virtual int | ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int tbf=-1, int rbf=-1, int cbf=-1)=0 |
This class is designed to generically described any iterative optimizer.
This class is an abstract one, in the sense that it cannot be used on its own because several pure virtual functions belong to it. Its children are implementations of actual optimizers. Everywhere in the code, this parent class should be used instead of any of its children. The optimizer is created by the oOptimizerManager is used during the iterative process of the algorithm through the call of multiple functions. All functions prefixed by DataStepX are called within the DataUpdateStep() function of the oOptimizerManager. The other main function is the ImageUpdateStep() function called by the eponym function from the manager. Anyway, all these aforementioned functions are virtual, but are designed to be flexible enaugh for any kind of optimizer. Finally, a particular optimizer (a child of this vOptimizer) will be characterized by the implementation of some pure virtual functions, some for options and initialization management, and three particular ones that really describe what this particular optimizer does: SensitivitySpecificOperations(), DataSpaceSpecificOperations() and ImageSpaceSpecificOperations(). Read the description of these functions below to get more details.
Definition at line 37 of file code/include/optimizer/vOptimizer.hh.
vOptimizer::vOptimizer | ( | ) |
The constructor of vOptimizer.
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 15 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
The destructor of vOptimizer.
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. It is virtual, so that it is automatically called when a child object is deleted.
Definition at line 61 of file code/src/optimizer/vOptimizer.cc.
vOptimizer::vOptimizer | ( | ) |
|
virtual |
|
protected |
Definition at line 1116 of file code/src/optimizer/vOptimizer.cc.
|
protected |
int vOptimizer::CheckParameters | ( | ) |
A public function used to check the parameters settings.
This function does not take any parameter and is used to check that all mandatory members were correctly parameterized. At the end, it calls the pure virtual CheckSpecificParameters() function implemented by children.
Definition at line 232 of file code/src/optimizer/vOptimizer.cc.
int vOptimizer::CheckParameters | ( | ) |
|
privatepure virtual |
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. It is pure virtual so is implemented by children.
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
protected |
Definition at line 1131 of file code/src/optimizer/vOptimizer.cc.
|
protected |
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerMLTR, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerSens, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, and iOptimizerMLEM.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerMLTR, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerSens, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, and iOptimizerMLEM.
|
virtual |
Definition at line 620 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
|
virtual |
Definition at line 702 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
|
virtual |
Definition at line 715 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
|
virtual |
Reimplemented in iOptimizerADMMLim.
Definition at line 755 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
Reimplemented in iOptimizerADMMLim.
|
virtual |
Reimplemented in iOptimizerADMMLim, and iOptimizerMLMuMap.
Definition at line 768 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
Reimplemented in iOptimizerADMMLim, and iOptimizerMLMuMap.
|
virtual |
Reimplemented in iOptimizerADMMLim.
Definition at line 804 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
Reimplemented in iOptimizerADMMLim.
|
virtual |
Definition at line 817 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
|
virtual |
Definition at line 872 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
|
inline |
Set post-process flag to true.
Definition at line 638 of file include/optimizer/vOptimizer.hh.
|
inline |
Set pre-process flag to true.
Definition at line 619 of file include/optimizer/vOptimizer.hh.
|
inline |
Set post-process flag to false.
Definition at line 644 of file include/optimizer/vOptimizer.hh.
|
inline |
Set pre-process flag to false.
Definition at line 625 of file include/optimizer/vOptimizer.hh.
|
protected |
Definition at line 1101 of file code/src/optimizer/vOptimizer.cc.
|
protected |
|
inline |
Get the boolean saying if the optimizer accepts penalties.
Definition at line 569 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 598 of file include/optimizer/vOptimizer.hh.
|
inline |
Get the initial image value (for initialization)
Definition at line 540 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 569 of file include/optimizer/vOptimizer.hh.
|
inline |
Get the number of backward images used by the specific optimizer.
Definition at line 533 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 562 of file include/optimizer/vOptimizer.hh.
|
inline |
Get the number of sub iterations in one iteration.
Definition at line 541 of file include/optimizer/vOptimizer.hh.
|
inline |
Get the boolean saying if the sensitivity has to be computed globally for all data channels and not per subset.
This is only relevant for histogram data
Definition at line 584 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 613 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 555 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 584 of file include/optimizer/vOptimizer.hh.
|
inline |
Get the penalty derivative order needed for this algorithm.
Definition at line 562 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 591 of file include/optimizer/vOptimizer.hh.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerAPPGML, iOptimizerBSREM, iOptimizerMLTR, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerSens, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, and iOptimizerMLEM.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerAPPGML, iOptimizerBSREM, iOptimizerMLTR, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerSens, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, and iOptimizerMLEM.
|
virtual |
A public function used to perform the image update step of the optimizer.
int | a_iteration |
int | a_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.
Reimplemented in iOptimizerADMMLim.
Definition at line 935 of file code/src/optimizer/vOptimizer.cc.
|
virtual |
Reimplemented in iOptimizerADMMLim.
int vOptimizer::Initialize | ( | ) |
A public function used to initialize the optimizer.
This function does not take any parameter and is used to initialize everything that should be initialized. At the end, it calls the pure virtual InitializeSpecific() function implemented by children.
Definition at line 327 of file code/src/optimizer/vOptimizer.cc.
int vOptimizer::Initialize | ( | ) |
|
privatepure virtual |
A private function used to initialize everything specific to the child optimizer.
This function is used to initialize everything specific to the optimizer that should be initialized. It is called by the Initialize() function. It is pure virtual so is implemented by children.
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
inline |
Say if the optimizer needs a post-process loop after iterations are done.
Definition at line 651 of file include/optimizer/vOptimizer.hh.
|
inline |
Say if the optimizer needs a pre-process loop before iterations are done.
Definition at line 632 of file include/optimizer/vOptimizer.hh.
|
privatevirtual |
A private function used to perform any step required by the child optimizer, before the loop on event inside the subset loop.
The vOptimizer implementation just does nothing. It is called by the PreDataUpdateStep() function. It is virtual so it can be overloaded by the child optimizer if needed.
Reimplemented in iOptimizerADMMLim, and iOptimizerAPPGML.
Definition at line 446 of file code/src/optimizer/vOptimizer.cc.
|
privatevirtual |
Reimplemented in iOptimizerADMMLim, and iOptimizerAPPGML.
int vOptimizer::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)
It does some reseting for the FOM computation. At the end, it calls the PreDataUpdateSpecificStep() function, which does nothing but being virtual, so it can be overloaded to perform specific stuff at this step by specific optimizers that would need to do so.
Definition at line 409 of file code/src/optimizer/vOptimizer.cc.
int vOptimizer::PreDataUpdateStep | ( | ) |
|
privatevirtual |
A private function used to perform any step required by the child optimizer, between the loop on event and the image update step.
The vOptimizer implementation just does nothing. It is called by the PreImageUpdateStep() function. It is virtual so it can be overloaded by the child optimizer if needed.
Reimplemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, and iOptimizerTemplate.
Definition at line 609 of file code/src/optimizer/vOptimizer.cc.
|
privatevirtual |
Reimplemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, and iOptimizerTemplate.
int vOptimizer::PreImageUpdateStep | ( | ) |
A public function used to do stuff that need to be done between the loop over events and the image update step.
It does some reseting for the FOM computation. At the end, it calls the PreImageUpdateSpecificStep() function, which does nothing but being virtual, so it can be overloaded to perform specific stuff at this step by specific optimizers that would need to do so.
Definition at line 457 of file code/src/optimizer/vOptimizer.cc.
int vOptimizer::PreImageUpdateStep | ( | ) |
|
pure virtual |
Implemented in iOptimizerADMMLim, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerMLEM, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerAPPGML, iOptimizerMLEM, iOptimizerMLMuMap, iOptimizerPenalizedPreconditionedGradientML, iOptimizerSens, and iOptimizerTemplate.
|
pure virtual |
Implemented in iOptimizerADMMLim, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerMLEM, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerAPPGML, iOptimizerMLEM, iOptimizerMLMuMap, iOptimizerPenalizedPreconditionedGradientML, iOptimizerSens, and iOptimizerTemplate.
|
pure virtual |
Implemented in iOptimizerADMMLim, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerMLEM, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerAPPGML, iOptimizerMLEM, iOptimizerMLMuMap, iOptimizerPenalizedPreconditionedGradientML, iOptimizerSens, and iOptimizerTemplate.
|
pure virtual |
Implemented in iOptimizerADMMLim, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerBSREM, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerMLTR, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerLandweber, iOptimizerOneStepLate, iOptimizerMLEM, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerAPPGML, iOptimizerMLEM, iOptimizerMLMuMap, iOptimizerPenalizedPreconditionedGradientML, iOptimizerSens, and iOptimizerTemplate.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerOneStepLate, iOptimizerTemplate, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerPenalizedPreconditionedGradientML, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
inline |
Definition at line 490 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 498 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 519 of file code/include/optimizer/vOptimizer.hh.
void vOptimizer::SetCurrentIteration | ( | int | a_currentTotalSubIteration | ) |
|
inline |
Definition at line 526 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 555 of file include/optimizer/vOptimizer.hh.
|
inline |
Set the data file in use.
vDataFile* | ap_DataFile |
Definition at line 462 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 468 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 476 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 482 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 490 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 475 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 483 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 497 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 505 of file include/optimizer/vOptimizer.hh.
|
inline |
Set the Image Convolver Manager Object.
ap_ImageConvolverManager |
Definition at line 548 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 447 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 448 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 454 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 455 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 504 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 512 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 461 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 469 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 512 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 520 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 547 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 576 of file include/optimizer/vOptimizer.hh.
|
inline |
Set the selected output iterations.
bool* | ap_outputIterations |
Definition at line 527 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 576 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 605 of file include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 440 of file code/include/optimizer/vOptimizer.hh.
|
inline |
Definition at line 441 of file include/optimizer/vOptimizer.hh.
void vOptimizer::ShowHelp | ( | ) |
A function used to show help about the optimizer.
This function simply calls the ShowHelpSpecific() function implemented by children.
Definition at line 211 of file code/src/optimizer/vOptimizer.cc.
void vOptimizer::ShowHelp | ( | ) |
|
privatepure virtual |
A function used to show help about the child module.
This function must describe what the optimizer 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 pure virtual so is implemented by children. It is private because called by the public ShowHelp() function.
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
|
privatepure virtual |
Implemented in iOptimizerADMMLim, iOptimizerAPPGML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerModifiedEMForMRFPenalizedML, iOptimizerBSREM, iOptimizerBSREM, iOptimizerOneStepLate, iOptimizerOneStepLate, iOptimizerMLTR, iOptimizerMLTR, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerPenalizedPreconditionedGradientML, iOptimizerTemplate, iOptimizerMLMuMap, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerNEGML, iOptimizerOriginalAML, iOptimizerLandweber, iOptimizerLandweber, iOptimizerMLEM, iOptimizerMLEM, and iOptimizerSens.
int vOptimizer::UpdateVisitedVoxels | ( | ) |
A public function used to update the 'visited' voxels after each subset.
This function is called at the end of each subset. Based on the sensitivity image, it labels which voxel has been visited or not during each subset. At the end of the iteration, all voxels that have not been visited in any subset are set to 0. There is a dedicated matrix in the oImageSpace to keep track of visited voxels. Practically, this avoids having those never visited voxels trapped in their initial value if the latter is different from 0.
Definition at line 900 of file code/src/optimizer/vOptimizer.cc.
int vOptimizer::UpdateVisitedVoxels | ( | ) |
|
protected |
The attenuation image currently in use for the current event, one per thread (used for SPECT)
Definition at line 652 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Buffer for forward projected values, as many as threads and as many as TOF bins
Definition at line 639 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Buffer for values to be back-projected, as many as threads, as many as TOF bins and as many as backward images
Definition at line 640 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The log-likelihood, as many as frames, respiratory gates, cardiac gates and threads
Definition at line 660 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The number of bins contributing to the FOM computation, as many as frames, respiratory gates, cardiac gates and threads
Definition at line 662 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The number of data (counts) contributing to the FOM computation, as many as frames, respiratory gates, cardiac gates and threads
Definition at line 663 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The contribution of the penalty to the objective function
Definition at line 664 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The RMSE, as many as frames, respiratory gates, cardiac gates and threads
Definition at line 661 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Current iteration number
Definition at line 656 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Current sub iteration within the current sub step
Definition at line 734 of file include/optimizer/vOptimizer.hh.
|
protected |
Current subset number
Definition at line 657 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Current sub step number
Definition at line 733 of file include/optimizer/vOptimizer.hh.
|
protected |
Current total subiteration number (number of iterations x number of substeps + current_sub_iteration)
Definition at line 732 of file include/optimizer/vOptimizer.hh.
|
protected |
The mode of the data (list-mode or histogram)
Definition at line 649 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The physical specificity of the data (EMISSION or TRANSMISSION)
Definition at line 651 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The type of the data (PET, SPECT, ...)
Definition at line 650 of file code/include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if the optimizer is compatible with emission data
Definition at line 644 of file code/include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if the optimizer is compatible with histogram data
Definition at line 643 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The initial value of the image for the specific optimizer
Definition at line 641 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Flag specifying if the optimizer is currently under post-processing loop (after iterations are done)
Definition at line 740 of file include/optimizer/vOptimizer.hh.
|
protected |
Flag specifying if the optimizer is currently under pre-processing loop (before iterations are done)
Definition at line 738 of file include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if the optimizer is compatible with list-mode data
Definition at line 642 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The number of backward images used by the specific optimizer
Definition at line 637 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Number of iterations
Definition at line 654 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Total number of subiterations of all sub steps in one iteration
Definition at line 727 of file include/optimizer/vOptimizer.hh.
|
protected |
Total number of subiterations of all sub steps for all iterations
Definition at line 728 of file include/optimizer/vOptimizer.hh.
|
protected |
Number of sub steps in each iteration
Definition at line 725 of file include/optimizer/vOptimizer.hh.
|
protected |
The number of TOF bins in use
Definition at line 638 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Say that the sensitivity has to be computed at the beginning of the reconstruction process from the whole set of data channels with histogram data, as opposed to the computation from data channels only belonging to the current subset
Definition at line 677 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Flag specifying if the optimizer needs to perform a post-processing loop (after iterations are done)
Definition at line 739 of file include/optimizer/vOptimizer.hh.
|
protected |
Flag specifying if the optimizer needs to perform a pre-processing loop (before iterations are done)
Definition at line 737 of file include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if figures-of-merit are computed in the data space
Definition at line 659 of file code/include/optimizer/vOptimizer.hh.
|
protected |
String containing the name provided as the class identifer in the children classes
Definition at line 635 of file code/include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if some basic statistics about image update are computed
Definition at line 666 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The penalty derivatives order required by the specific optimizer (-1 if none)
Definition at line 675 of file code/include/optimizer/vOptimizer.hh.
|
protected |
A flag saying if the optimizer is compatible with transmission data
Definition at line 645 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The verbose level
Definition at line 636 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The mean additive update correction value, one per thread to be thread safe
Definition at line 672 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The variance of additive update correction values, one per thread to be thread safe
Definition at line 673 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Pointer to the data file object in use
Definition at line 717 of file include/optimizer/vOptimizer.hh.
|
protected |
Pointer to the oImageConvolverManager object in use
Definition at line 718 of file include/optimizer/vOptimizer.hh.
|
protected |
Pointer to the image dimensions and quantification object
Definition at line 647 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Pointer to the image space object in use
Definition at line 648 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The maximum image value, one per thread to be thread safe
Definition at line 669 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The mean image value, one per thread to be thread safe
Definition at line 670 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The minimum image value, one per thread to be thread safe
Definition at line 668 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The number of voxels contributing to the image statistics, one per thread to be thread safe
Definition at line 667 of file code/include/optimizer/vOptimizer.hh.
|
protected |
The image variance value, one per thread to be thread safe
Definition at line 671 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Number of sub iterations for each sub step
Definition at line 726 of file include/optimizer/vOptimizer.hh.
|
protected |
Numbers of subsets
Definition at line 655 of file code/include/optimizer/vOptimizer.hh.
|
protected |
Output iterations (to be stored)
Definition at line 730 of file include/optimizer/vOptimizer.hh.
|
protected |
Penalty of the algorithm
Definition at line 676 of file code/include/optimizer/vOptimizer.hh.