GGEMS / ggems

GGEMS - Advanced Monte Carlo simulation platform using the OpenCL
GNU General Public License v3.0
34 stars 14 forks source link

Line/streak artifacts in projections #23

Open villekf opened 9 months ago

villekf commented 9 months ago

When using voxelized phantoms with enough small voxel size and large enough size, line/streak appear in the projections. While I've managed to get these appear in different cases, the example 2 can be modified easily to cause these lines (see figure): image

The lines appear by simply increasing the size of the phantom in example 2: volume_creator_manager.set_dimensions(1000, 1000, 1000) Note that I replaced the water with air for better visibility (box_phantom.set_material('Air')) and used 1000000000 photons.

The center region does not have these lines and they disappear if the phantom voxel size is increased sufficiently.

Is there some way to avoid these streaks other than increasing the phantom voxel size?

SS99aaNN commented 4 months ago

Hello, villekf. Have you made any progress on this issue? I have encountered a similar problem and conducted some simulations to address it. I attempted to use different combinations of detector crystal sizes and phantom voxel sizes to test for streak artifacts. The detector crystal material used was CSI, the phantom material was air, and the photon count was 1e10. The final results are as follows: image

Additionally, I conducted a simulation of a mouse phantom, attempting to scale up the crystal size, phantom size, SID, and SDD by a factor of four. For instance, the original phantom voxel size of 0.1 was scaled up to 0.4 while maintaining the same data dimensions. The final projection results showed that there were still a few streak artifacts in projections from certain angles, but these artifacts generally did not affect the reconstructed image.

image

villekf commented 4 months ago

No, I haven't done any progress on this. Since I wanted to simulate a specific scanner, it was important to keep the same dimensions. Aside from the first tests, I haven't thus done any experimentation on this. Lately I've used MCGPU for any possible simulations though GGEMS does have some nice features that the MCGPU lacks.