I am simulating a TOF PET scanner in GATE, and I would like to reconstruct an image with scatter and random correction. I am using “castor-GATErootToCastor” utility function, and I noticed an option “-src” that computes scatter and random correction rates for each LOR. Performing a test, I noticed this option reconstructs basically the same image as if only true coincidences (option “-t”) are reconstructed. I presume the function calculates exact correction factors and thus no statistical (Poisson) noise is introduced into the image. To introduce this statistical noise that is inevitable in real world, my idea is to obtain correction factors from one simulation and then use them to reconstruct an image from a separate simulation (same simulation but with a different seed). My questions are:
Is there an option to extract just the scatter and correction factors from the simulation?
Is there a simple way to include correction factors into list-mode data (I want to include TOF information)?
Any other experience/suggestion how to perform scatter and random correction? Maybe it is better/easier to modify “castor-GATERootToCastor” function and introduce some statistical noise when determining correction factors.
Any advice and suggestion will be greatly appreciated. Thank you!
There is no corrections computed in the GATE to CASToR utility.
It only removes scatter and/or random coincidences from the datafile.
So this is normal that you get the exact same results as if reconstructing the trues only.
If you want to mimic corrections as in real scanners, you must provide smooth corrections. In CASToR, scatter and random corrections are accounted for by adding them to the forward projection of the image. This implies that these corrections have to be noise free.
The solution that you propose (using another simulation to get an independent statistical realization of the scatter and random coincidences) is half of what should be done because you will have to smooth these signals. You can look at some papers about Monte Carlo scatter corrections in which they may propose some smoothing strategies. For randoms, you can do a fan sum followed by a reverse fan sum which should be enough.
Otherwise, you may simply subtract the second simulation of scatter and random from the prompts of the first simulation. BUT, if you want to get the best image from such a signal, you should then consider using the shifted poisson algorithm from Fessler.
As for the implementation, it may be easier to modify the castor-GATErootToCastor to read the two simulations and do what you want inside it before writing the castor datafile.
If you implement such things, we would be interested in including your developments in the castor tools so that they can be shared with the community.
I’m research random correction using Gate and CASToR. I found many paper only gave the random correction by Singles Rate as R = 2tSiSj, which Si is the single rate of detect i and 2t is the coincidence window time. So if I just counted all singles of each detect,then device simulate time as the single rate, then add R in Cdf, is it the right Random correction? Or should I add more energy window or time window to choose Singles in root? Cuz after I done this, found little difference between random correction and no random correction. Or because of low random correction rate(my gate simulation got about 5%)?
Yes it is right to do so unless you have dead times that are not the same for Singles and Coincidences. The energy windows have to be the same.
Being related to the singles rates, the random signal is spread out over the entire image space, it is very smooth and thus is quite homogeneously distributed in the image. So with only 5% of random signal, this is expected that you will not notice significant changes after correction.