![]() |
CASToR
3.2
Tomographic Reconstruction (PET/SPECT/CT)
|
This class implements the Block Sequential Regularized Expectation Maximization (BSREM) algorithm. More...
#include <iOptimizerBSREM.hh>
Public Member Functions | |
iOptimizerBSREM () | |
The constructor of iOptimizerBSREM. More... | |
~iOptimizerBSREM () | |
The destructor of iOptimizerBSREM. More... | |
int | ReadConfigurationFile (const string &a_configurationFile) |
int | ReadOptionsList (const string &a_optionsList) |
iOptimizerBSREM () | |
~iOptimizerBSREM () | |
int | ReadConfigurationFile (const string &a_configurationFile) |
int | ReadOptionsList (const string &a_optionsList) |
![]() | |
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... | |
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 () |
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 | |
int | PreImageUpdateSpecificStep () |
A private function used to compute the penalty term of the BSREM 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) |
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) |
int | ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int a_tbf=-1, int a_rbf=-1, int a_cbf=-1) |
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... | |
void | ShowHelpSpecific () |
A function used to show help about the child module. More... | |
int | CheckSpecificParameters () |
A private function used to check the parameters settings specific to the child optimizer. More... | |
int | InitializeSpecific () |
A private function used to initialize everything specific 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) |
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) |
int | ImageSpaceSpecificOperations (FLTNB a_currentImageValue, FLTNB *ap_newImageValue, FLTNB a_sensitivity, FLTNB *ap_correctionValues, INTNB a_voxel, int a_tbf=-1, int a_rbf=-1, int a_cbf=-1) |
This class implements the Block Sequential Regularized Expectation Maximization (BSREM) algorithm.
This class inherits from vOptimizer and implements the BSREM algorithm. This implementation follows the BSREM II algorithm defined in Ahn and Fessler 2003.
Definition at line 24 of file code/include/optimizer/iOptimizerBSREM.hh.
iOptimizerBSREM::iOptimizerBSREM | ( | ) |
The constructor of iOptimizerBSREM.
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 16 of file code/src/optimizer/iOptimizerBSREM.cc.
iOptimizerBSREM::~iOptimizerBSREM | ( | ) |
The destructor of iOptimizerBSREM.
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 57 of file code/src/optimizer/iOptimizerBSREM.cc.
iOptimizerBSREM::iOptimizerBSREM | ( | ) |
iOptimizerBSREM::~iOptimizerBSREM | ( | ) |
|
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.
Implements vOptimizer.
Definition at line 210 of file code/src/optimizer/iOptimizerBSREM.cc.
|
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. It is pure virtual so is implemented by children.
Implements vOptimizer.
|
privatevirtual |
Implements vOptimizer.
Definition at line 412 of file code/src/optimizer/iOptimizerBSREM.cc.
|
privatevirtual |
Implements vOptimizer.
|
privatevirtual |
Implements vOptimizer.
Definition at line 431 of file code/src/optimizer/iOptimizerBSREM.cc.
|
privatevirtual |
Implements vOptimizer.
|
privatevirtual |
This function is used to initialize specific stuff to the child optimizer.
It is called by the public Initialize() function from the mother.
Implements vOptimizer.
Definition at line 261 of file code/src/optimizer/iOptimizerBSREM.cc.
|
privatevirtual |
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.
Implements vOptimizer.
|
privatevirtual |
A private function used to compute the penalty term of the BSREM algorithm.
This function implements the virtual eponym function of vOptimizer. It computes the penalty term of the BSREM algorithm.
Reimplemented from vOptimizer.
Definition at line 314 of file code/src/optimizer/iOptimizerBSREM.cc.
|
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 from vOptimizer.
|
virtual |
Implements vOptimizer.
|
virtual |
Implements vOptimizer.
Definition at line 114 of file code/src/optimizer/iOptimizerBSREM.cc.
|
virtual |
Implements vOptimizer.
|
virtual |
Implements vOptimizer.
Definition at line 180 of file code/src/optimizer/iOptimizerBSREM.cc.
|
privatevirtual |
Implements vOptimizer.
Definition at line 397 of file code/src/optimizer/iOptimizerBSREM.cc.
|
privatevirtual |
Implements vOptimizer.
|
privatevirtual |
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.
Implements vOptimizer.
|
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 87 of file code/src/optimizer/iOptimizerBSREM.cc.
|
private |
Image containing the penalty terms of the algorithm
Definition at line 179 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Threshold applied to the voxels to avoid too large values values and enforce convergence
Definition at line 178 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Threshold applied to the voxels to avoid non-positive values and enforce convergence
Definition at line 177 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Current value of the relaxation factor
Definition at line 183 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Classic relaxation factor: initial value (alpha_0)
Definition at line 181 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Classic relaxation factor: step size (gamma)
Definition at line 182 of file code/include/optimizer/iOptimizerBSREM.hh.
|
private |
Type of relaxation factors
Definition at line 180 of file code/include/optimizer/iOptimizerBSREM.hh.