Strange PET Artifacts in CASToR

Hi CASToR users and developers,

I’m a new CASToR user trying to reconstruct my simulated PET data with CASToR. My images generally look correct, except some of them have a strange artifact where the image is repeated around the center.

I managed to recreate the issue by generating CASToR files in python to make sure my simulation wasn’t the issue. I attached a python script that generates list-mode PET data describing a point source with error similar to what I was getting in my simulation. It randomly offsets the crystal id transaxially and axially. When I set the trans_error and ring_error variables in the script to 0, meaning I’m generating what would happen with a perfect point source in a vacuum, I don’t get the artifacts.

I think I’m giving CASToR good data that should just be a point. My guess is that I’m using the wrong options for reconstruction. What can I change to make these artifacts go away?

I’m using this command to reconstruct images:

castor-recon -df generated_coincidences.cdh -dout output_generated_coincidences -it 5:1 -vb 3

I’m using castor v3.0.1 on Ubuntu 18.04.5 and reading my images with ImageJ.

To recreate the bug using minimal data, I removed all corrections. When I was using TOF correction, I would still get this issue. I haven’t tried other types of correction.

I attached the python script generating point source data, the castor datafiles it generated with added error that makes the artifact, the castor datafiles it generated with no error that doesn’t make artifacts, my resulting images, and the .geom of my scanner.

What could cause these kinds of artifacts? Have other people had this issue?

Thank you,

Joseph Feld (1.76 KB) (172 KB) (103 KB)

neuro_pet_scanner.geom (1.79 KB) (1.4 MB)


The artefact appears at the edge of the actual axial field of view of your scanner (~4cm, much smaller than the specified ~25cm axial image field of view if I’m not mistaken?). The sensitivity image values drop low in the slices with artefacts, before going to 0, which may cause numerical instabilities. I’m not sure whether it’s the case here, but it is known (in general, not only in CASToR) that a night sky type of artefact can occur with list-mode data at the edge of the field of view, where sensitivity values are very low (compared to the maximum values) but still not zero: instabilities occur due to inconsistencies in your data (like when you introduce errors in your projections). The overall sum of your erroneous image is much higher than the sum of the image without artefacts.

Do you get strictly the same artefacts with your actual simulation (you may send an example artefacted image?)? Usually the artefact that I mentioned appears at the edge voxels, which are not really relevant for interpretation, so we get rid of it by masking the edge of the field of view.

Hope this helps,



The scanner I’m trying to model has 4 rings each with 21 blocks of 21x21 crystals. It should have an axial field of view of about 20 cm since it has these bonus rings. I misread the documentation and thought number of layers meant the number of rings, so I accidentally described a system where there are 4 layers instead of 4 rings. I corrected that error now and the images look amazing.

Thanks for mentioning the field of view - it made me realize my error. Thank you so much!!!