Re: x-ray imaging using 3x4 projection matrices [message #49149] |
Mon, 03 July 2006 11:08 |
Marius Hagen
Messages: 3 Registered: November 2005
|
Junior Member |
|
|
mark wrote:
> I would like to simulate projecting x-rays through a my own virtual 3D
> object to this 2D plane for any given projection angle using the 3x4
> projection matrices that I have. Does anyone have some code for this,
> or some advice as to how to proceed?
Mark,
Your simulation sounds like the classic tomosynthesis problem, which is
closely related to the instrument that I work with. In order to
construct a simulation for the system that I use, I first chop the
object up into voxels (often millions of voxels) and then I can
consider each planar slice of the object (a plane parallel to the
detector plane). Each of these slices is a 2D function which gets
mapped to a set of 2D pixels on the detector plane, so my simulation
involves calculating the magnification and shift for doing that
mapping, and then interpolating the result onto the detector pixel
grid.
As far as constructing a system matrix for this, then, you need a
matrix which tells you the sensitivity of each pixel on the detector to
every voxel in the object. (This matrix gets very large very fast as
the object voxels and detector pixels increase in number.) What I do
is to build a matrix in which the columns are the voxels of the object,
the rows are the pixels of the image, and the values of each entry are
the "sensitivities", meaning that if an object voxel has a value of "1"
and the corresponding pixel has a value of "0.5", then that matrix
element will have a value of 0.5. The above process of calculating the
signal at each pixel is then just the process of filling in the
elements of the system matrix. You will find that the matrix is
generally extremely sparse.
My system measures emission, and so the pixel values are exactly the
things I'm interested in. Since you're doing an x-ray problem, you
probably will be interested in the logarithm of those values rather
than the values themselves, but the overall process should be similar.
I hope this helps...
- Marius
|
|
|