willemneal / mcgpu

Automatically exported from code.google.com/p/mcgpu
1 stars 0 forks source link

Correlations between CT projections #11

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
A user of MC-GPU observed some obvious correlations in the simulated CT 
projections, that appeared as vertical lines in the sinogram and as circular 
artifacts in the reconstructed CT.

As he suggested, the artifacts were caused by the use of the same starting 
random seed for each projection. 

The code in the Source section has been updated to use uncorrelated seeds for 
each projection, using the same leap frog algorithm used to avoid correlations 
among GPU threads.

Please, submit more bug reports, it will be better for all.
Thank you for the feed back! 

Original issue reported on code.google.com by andre...@gmail.com on 9 Dec 2011 at 11:47

GoogleCodeExporter commented 9 years ago
When I run a single projection, I get this image http://i.imgur.com/zmgHTaN.png 
. This is with a source-detector-distance of ~ 415cm. I was using an such a 
large distance to find out how the phantom I built was oriented in MC-GPU and 
noticed this artifact.

Can you specify what code fixed this artifact? We have heavily modified this 
code and I would like to add the fix as well. My version MC-GPU_v1.3.cu does 
contain the code block:

// -- Move the pseudo-random number generator seed ahead to skip all the random 
numbers generated in the current projection by this and the other
    //    "numprocs" MPI threads. Each projection will use independent seeds! (this code runs in parallel with the asynchronous GPU kernel):

Which I thought may fix the problem, but I still see the artifact. If you need 
any more information let me know and I can get it for you.

Thank you for your time,
Dave

Original comment by DAPDunke...@gmail.com on 17 Jul 2013 at 6:54

GoogleCodeExporter commented 9 years ago
Hi Dave,

It is difficult to know what is not working if you have "heavily modified this 
code".
Is the regular MC-GPU working well?

What object are you simulating? The projection image looks weird, but you 
definitely need more histories to be able to tell anything (you should not see 
individual pixels like that because the source emission is uniform in a cone).

It could be possible that due to the large source-to-detector distance you 
might see a truncation artifact in the emission angles caused by the use of 
single-precision numbers to store the direction vectors (even thought the 
sampling itself is done in double-precision). You could try modifying the code 
to use always doubles for the direction, at some speed penalty for the increase 
memory use and slower computations.

Let me know if it works!

Best regards,

    Andreu

Original comment by andre...@gmail.com on 18 Jul 2013 at 3:12