STIR icon indicating copy to clipboard operation
STIR copied to clipboard

EstimateScatter forces the use of ForwardProjectorByBinUsingProjMatrixByBin for mask computation

Open robbietuk opened this issue 4 months ago • 2 comments

Attempting to estimate scatter from a CT attenuation map, many small voxels.

This leads to an issue with the ForwardProjectorByBinUsingProjMatrixByBin as https://github.com/UCL/STIR/blob/454be92288d3eac39bbaf79fd8bfdd1c71937521/src/recon_buildblock/DataSymmetriesForBins_PET_CartesianGrid.cxx#L74-L79

I am generally using parallelproj that avoids this issue elsewhere in the code base (no symmetries) but estimate_scatter forces the use of ForwardProjectorByBinUsingProjMatrixByBin when computing the mask projection data.

https://github.com/UCL/STIR/blob/454be92288d3eac39bbaf79fd8bfdd1c71937521/src/scatter_buildblock/ScatterEstimation.cxx#L1238-L1240


Two options

  1. Pre-compute and set the mask projdata before setup is called.
  2. Add a settable member forward projector shared pointer to the EstimateScatter class.

@KrisThielemans thoughts? Estimate scatter is already complex and convoluted, the second option adds more but simplifies. It can default to the current behavior.

robbietuk avatar Oct 25 '24 15:10 robbietuk