question about System Matrix & PSF in CASToR iteration

Dear CASToR Users and Developers,

We have using CASToR to recon our PET data for half a year, and it shows impressive ability to provide the image that we urgently needed. But there are two problems that confused me:

1)How does CASToR generate its System Matrix when running OSEM? I used to know that before running MLEM iterative reconstruction, one should precompute the system matrix for the current specific PET scanner system, which will cost a lot, and must re-generate it when changing different PET scanner geometry. But CASToR needs no precomputation and can recon any kind of PET geometry immediately, how does it happen?

2)When does Point Spread Function calculation be used in MLEM iteration? I compared MLEM reconstruction with and without PSF calculation, and find out that the MLEM with PSF provides far better image results than another. In the attachment, I showed the reconstructed image of Derenzo by CASToR with PSF, its image quality is good! I just what to in which step does PSF work in CASToR MLEM iteration? Does anyone know which article I should read?

Thank you a lot for your help, any answer will be helpful.

Christopher Zhao

Dear Christopher Zhao,

Glad to know that you are happy with CASToR.

In CASToR, the system matrix is factorized using two components: a projector and an image-based PSF. We did it that way because it is generic and efficient and it allows to adapt to any geometry.

  1. The projector makes the link between the image space and the data space. We provide few geometric projector implementations that compute the elements on-the-fly, based on the scanner description. You can have a brief description with reference articles of these projectors by running castor with the option ‘-help-projm’.

  2. As mentioned, you can consider the system matrix as a product of two components: the projector and the image-based PSF. This means that the PSF is applied each time the system matrix appears: in the forward and backward projection processes. When you create a convolver with CASToR using the option “-conv gaussian,X,X,X::when”, you need to specify when the convolution is applied. In your case, you likely used the “psf” keyword. If you look at the inline documentation using the option “-help-conv”, you will have all explanations about when the convolution is applied. For “psf”, it says “(include both ‘forward’ and ‘backward’; the standard image-based PSF modelling)”.

Auto-citing could be blamed, but have a look at Stute and Comtat 2013 “Practical considerations for image-based PSF and blobs reconstruction in PET” in Phys Med Biol. You will find some explanations about this but most importantly many relevant references to the literature.