STIR
STIR copied to clipboard
Parallelproj support issues linked to scanner/FOV radius
In the parallelproj wrapper in STIR there still seem to be a couple of issues. Currently, there are artifacts on either side of the sinogram when forward-projecting a sphere (or a voxel) that is positioned towards the edge of the FOV (left: Cylindrical, right: BlocksOnCylindrical):
This can be fixed by increasing the radius in ParallelprojHelper.cxx (which is currently set to the inner ring radius of the scanner). However, when increasing this radius a lot, it not only fixes these horizontal artifacts, but it also shrinks the extent of the activity curve in the sinograms, which should not happen (left: inner_radius + 5, right: inner_radius + 20):
Kris: "The ray really shouldn’t change if we ask it to compute intersections with a larger FOV. That might be another bug on how we call parallelproj (although our code is quite small). I think we need to add a few test cases to the “compute intersections” for the LOR code. Stuff like checking that if we give an LORAs2Points, we get a line that still contains the 2 original points."
At present we see the only relevant code is https://github.com/UCL/STIR/blob/4142d5969e4320e32ed9dbe463b0fd50f36fb3f6/src/recon_buildblock/Parallelproj_projector/ParallelprojHelper.cxx#L91
We should have a test function for get_intersections_with_cylinder
just to exclude this is where the problem sits.
The "squashing" of the sinograms was caused by a bug in the code that computes intersections with a cylinder.
Should this be closed and a new one created that refers specifically to investigating methods to replicate tangential lines of response, @KrisThielemans ?