8 #ifndef OITERATIVEALGORITHM_HH
9 #define OITERATIVEALGORITHM_HH 1
This class is designed to be a mother virtual class for Datafile.
This header file is mainly used to declare some macro definitions and all includes needed from the st...
Declaration of class oDynamicModelManager.
void SetImageDimensionsAndQuantification(oImageDimensionsAndQuantification *ap_ImageDimensionsAndQuantification)
Set the Image Dimensions and Quantification Object.
Declaration of class oImageDimensionsAndQuantification.
int Iterate()
Just call either the IterateCPU or the IterateGPU function as asked for.
int SetNbIterationsAndSubsets(const string &a_nbIterationsSubsets)
Set the number of iterations and subsets.
void SetGPUflag(bool a_flagGPU)
Set the GPU flag.
bool * mp_outputIterations
virtual int StepInnerLoopInsideSubsetLoop(int a_iteration, int a_subset, int a_bed)
This function is called inside the subset loop and manages the main loop over the events The loop o...
string m_pathToSensitivityImg
void SetProjectorManager(oProjectorManager *ap_ProjectorManager)
Set the Projector Manager Object.
void SetSaveSensitivityHistoFlag(bool a_saveSensitivityHistoFlag)
Set the flag that specifies if the sensitivity image in histogram mode has to be saved for each subse...
void SetDeformationManager(oDeformationManager *ap_DeformationManager)
Set the Deformation Manager Object.
virtual int StepAfterIterationLoop()
This function is called at the end of the IterateCPU function.
void SetPathToSensitivityImage(string a_pathToSensitivityImage)
Set path to the sensitivity image.
This class is designed to manage the optimization part of an iterative reconstruction.
void ThreadBarrierSetOff()
Disable the thread locking variable (thread safe), and reset the number of waiting threads to 0...
void ThreadBarrierSetOn()
Enable the thread locking variable (thread safe), and reset the number of waiting threads to 0...
oIterativeAlgorithm()
oIterativeAlgorithm constructor. Initialize the member variables to their default values...
int SetOutputIterations(const string &a_outputIterations)
Set the selected output iterations.
void SetVerbose(int a_verboseLevel)
Set Verbosity.
string m_pathToInitialImg
This is the main class for iterative reconstructions, that manages the iteration loops. This class manages an iterative reconstruction of any kind, using a vDataFile, and through the use of an oProjector, an oOptimizer, a oConvolver, a oImageSpace.
bool ThreadBarrierCheck()
Check if all the threads are currently in waiting condition.
virtual int StepAfterSubsetLoop(int a_iteration)
This function is called after finishing the subset loop.
oImageProcessingManager * mp_ImageProcessingManager
bool ThreadBarrierFlag()
Check if the m_releaseThreads boolean is enabled or not.
oImageConvolverManager * mp_ImageConvolverManager
void SetSaveSubsetImageFlag(bool a_saveImageAfterSubsets)
Set the flag that specifies if the image has to be saved for each subset.
Declaration of class oImageConvolverManager.
bool m_generalizedImplementation
oDynamicModelManager * mp_DynamicModelManager
This class is designed to manage the use of dynamic model in the reconstruction.
Declaration of class vDataFile.
virtual int StepPostProcessInsideSubsetLoop(int a_iteration, int a_subset)
void SetNbBeds(int a_nbBeds)
Set number of beds (bed positions)
oDeformationManager * mp_DeformationManager
vDataFile ** m2p_DataFile
void SetImageProcessingManager(oImageProcessingManager *ap_ImageProcessingManager)
Set the Image Processing Manager Object.
void SetPathInitImage(string a_pathToInitialImage)
Set path to an initial image.
This class is designed to manage the different image convolvers and to apply them.
void SetPathToAttenuationImage(string a_pathToAttenuationImage)
This function is used to set the path to the attenuation image.
void SetPathToMaskImage(string a_pathToMaskImage)
Set path to a mask image.
bool m_saveImageAfterSubsets
virtual int StepBeforeIterationLoop()
This function is called at the beginning of the IterateCPU function.
bool m_saveSensitivityHistoFlag
int IterateCPU()
Perform the iterative loop of the algorithm, call the different object for optimization, projection, update, etc. Function designed to be executed on the CPU only.
Declaration of class oImageSpace.
This class is designed to manage the different image processing modules and to apply them...
This class is designed to manage the projection part of the reconstruction.
Declaration of class oImageProcessingManager.
virtual int InitSpecificOptions(string a_specificOptions)
Set the selected output iterations.
This class holds all the matrices in the image domain that can be used in the algorithm: image...
virtual int StepBeforeSubsetLoop(int a_iteration)
This function is called before starting the subset loop.
void SetImageSpace(oImageSpace *ap_ImageSpace)
Set the Image Space Object.
void SetImageConvolverManager(oImageConvolverManager *ap_ImageConvolverManager)
Set the Image Convolver Manager Object.
oImageSpace * mp_ImageSpace
virtual int StepPreProcessInsideSubsetLoop(int a_iteration, int a_subset)
This function is called right after starting the subset loop. Apply any kind of processing on the for...
This class is designed to manage all dimensions and quantification related stuff. ...
oOptimizerManager * mp_OptimizerManager
Declaration of class oOptimizerManager.
void SetPathToAnatomicalImage(string a_pathToAnatomicalImage)
Set path to an anatomical image.
oProjectorManager * mp_ProjectorManager
string m_pathToAnatomicalImg
void SetOptimizerManager(oOptimizerManager *ap_OptimizerManager)
Set the Optimizer Manager Object.
Declaration of class oProjectorManager.
void ThreadBarrierIncrement()
Increment (thread safe) the m_nbThreadsWaiting variable.
void SetDataFile(vDataFile **a2p_DataFile)
Set the list of DataFile.
void SetDynamicModelManager(oDynamicModelManager *ap_DynamicModelManager)
Set the Dynamic Model Manager Object.
oImageDimensionsAndQuantification * mp_ID
virtual ~oIterativeAlgorithm()
oIterativeAlgorithm destructor.