nagyistoce / mcgpu

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

About which axis does the source rotate? #14

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Hi,

I just want to confirm that the source always rotates around the axis x=0, y=0 
(i.e. z-axis)?  And due to the way the program is setup, this z-axis is always 
at the edge of the voxel volume?

This seems to cause trouble if one wants to produce CT datasets.  In the ".in" 
file, to get the voxel volume to project to the center of the detector on the 
first projection one must offset the source's coordinates in the ".in" file to 
be half of the voxel volume size in each dimension.  However, since the source 
continues to rotate around the z-axis and not the axis parallel to the z-axis 
that runs through the center of the volume.  Thus, the object rotates 
eccentrically relative to the detector and tends to "fall off" the detector at 
most angles when the field of view is small.

Is this the case, or do I understand the ".in" file incorrectly?  Is one 
supposed to fix this problem by changing the source cosines?  Or should I edit 
the source trajectory function (void set_CT_trajectory(...)) to try to make it 
so the voxel volume is centered in the field of view throughout a CT 
acquisition.

Thanks!

Jared

Original issue reported on code.google.com by jaredwmo...@gmail.com on 4 Feb 2013 at 7:12

GoogleCodeExporter commented 9 years ago
Hi Jared,

The code is able to simulate CT datasets but it is true that the CT trajectory 
model is not very flexible. 

As you mention the CT projections are acquired rotating around the Z axis. It 
is customary to define the human phantom with the Z axis going from the feet to 
the head of the patient, that is the reason the CT rotates around Z (usually 
the Y axis goes from the patient back to the front of the chest, and the X axis 
from the left side towards the right). 

However the axis of rotation is NOT located at the edge of the voxel volume, it 
is located in between the source focal spot and the detector, at the distance 
that you input in the line "SOURCE-TO-ROTATION AXIS DISTANCE". 

In the input file you have to write the parameters of the first projection of 
the CT scan, that is, the focal spot location and direction for the first 
projection. I usually start by defining a posterior-anterior projection with 
the source behind the patient (negative Y) and pointing to +Y: (0,+1,0). 
For example, if you want the source at the middle of the patient in X and Z the 
initial position could be r=(VoxelsBoundingBox.x/2, -d, VoxelsBoundingBox.z/2). 
Since the source will rotate around Z the height 'VoxelsBoundingBox.z/2' will 
be the same for all projections, unless you define an helical scan. The 
distance 'd' has to be calculated depending on your case (where you want the 
rotation axis) and depending on the size of your phantom (usually you don't 
want the source penetrating inside the voxel volume, even thought the code 
would still work well). 

You can try to simulate multiple projections with the sample simulations 
provided with MC-GPU. It works well for me! 

I hope this helps!
Have a nice day.

       Andreu

Original comment by andre...@gmail.com on 5 Feb 2013 at 3:42