Replies: 2 comments 2 replies
-
|
Extra info: the (still in progress) GPU-projector code in PR #817 can do arbitrary subsets (the GPU code itself, not the PR). Currently, the subset are composed by projections that share some symmetry (I am I am not wrong) so they can not be fully arbitrary, otherwise the CPU code will be much slower (because not exploiting symmetries means much much slower code). However, GPU code does not have this limitation, you can compute any arbitrary projection/bin on the same subset without any loss of generality or speed. Allowing to do have arbitrary subsets can be of benefit here. So, adding this idea would have the benefit of also unlocking extra capabilities of the soon to come GPU code. |
Beta Was this translation helpful? Give feedback.
-
|
Note that for SIRF/CIL, with @paskino we were discussing another way of handling subsets: you encode the subset info into the acquisition data (e.g. if on disk and read-only, by sharing the file, if in memory, presumably not). You can then write the objective function as a sum of objective functions (in STIR using SumOfGeneralisedObjectiveFunctions, and generic subset algos for any sum. This is quite interesting, but also somewhat different. Not so easy to write OSEM et al. that way (as it has to check balancing etc, and it's very unclear how to do that generically). Of course, both ways (subset of data, or subset of objective function) need a generic |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I have been looking into the use of subsets in STIR, with a focus on sinogram reconstruction.
Background
STIR subsets only relate to the "ordered" subsets methodology. The two key variables are
num_subsetsandsubset_num, which are defined atIterativeReconstructionand inGeneralisedObjectiveFunctionclasses. The number of subsets is used in the projectors (symmetries etc.).At each iteration of an iterative algorithm,
subset_num = this->get_subset_num().subset_numis parsed through various methods todistributable_computationwhere both variables are used infind_basic_vs_nums_in_subset(also takessymmetries).find_basic_vs_nums_in_subsetreturns a vector ofViewSegmentNumbers, a class composed of 3 variables (view,segment, andtof), which corresponds to all view, segment (and tof) values associated with the particular subset specified.Note:
find_basic_vs_nums_in_subsetalso requiresproj_data_infoandsymmetriesto be parsed to iterate from min to max values in eachview,segment, andtofdimensionProposed
It may be of interest to collect these methods into a common class. I therefore propose a new class hierachy (temporarily denoted
SubsetNumbersClass) that would contain all information related to subsets, includingfind_basic_vs_nums_in_subsetandnum_subsets.Secondly, I propose this class be parsed seperately to
OSMAPOSLandOSSPSwith its ownadd_parsing_keyand thatnum_subsetsandsubset_numbe renamednum_view_subsetsandsubset_view_numrespectively. This would allow for furture expansion into subset in additional dimentions, e.g. TOF and segments.Furthermore, additional classes can be introduced to handle
get_subset_num()to allow for an expansion into additional subset sampling methods (e.g. stochastic).Points of discussion
Beta Was this translation helpful? Give feedback.
All reactions