# How to understand the world coordinate of DSA?

DSA (digital subtraction angiography) have two important tags:

(0018, 1110) Distance Source to Detector
(0018, 1111) Distance Source to Patient


The DSA image is perspective projection to an object, likes:

where S is the source, N is the distance source to patient (0018, 1111) , and F is the distance source to detector (0018, 1110).

P is a point inside of the imaging object, and P' is the point in DSA image. If the position of P is (w_x, w_y, w_z) , and the position of P' is (x, y) , we can have:

\frac {w_x-o_x}{N-o_y} = \frac {x-o_x}{F}

My question is: what should (o_x, o_y, o_z) be? Is it the image position (0020, 0032)? Or how can I obtain this point?

In addition, the image position (0020, 0032) is a absolute point in a world coordinate, where is the original point (0, 0, 0)?

Any suggestion is appreciated~~~

Image position patient (0020, 0032) is the physical position of the origin (you didn’t draw it on your diagram) of your P’ plane. Unless some DICOM tag provides position of source, we don’t know where it is. We could assume it is on the distance F from the center of the image plane P’, but we don’t know to which side.

As patient is not a rectangular block, it is not so easy to define origin of the patient. And different body-parts might have different conventions, e.g. should a head scan have coordinate origin at the neck, middle of AP-fissure or whatever? What if that scan also includes parts of the shoulders? What should be the origin of head and torso scan? What about torso alone? Chest? Abdomen, wrist, knee? You see the conundrum.

@dzenanz Thank you for the kindly reply.

Image position patient (0020, 0032) is the physical position of the origin (you didn’t draw it on your diagram) of your P’ plane.

Question1: If the origin located at the P' plane for DSA, where is the origin point for MRI/DSA? In MRI/DSA, there is no P' plane.

We could assume it is on the distance F from the center of the image plane P’

Question2: But, how can we konw the position of the center of P' plane?

I want to repeat my purpose: with the point position inside CTA, I want to calculate the projection in DSA.

In order to implement my requirement, I need to know the position of source (s_x, s_y, s_z), for any 3D position (w_x, w_y, w_z), we assume the projected 2D point is (x, y). we have \frac {w_x-s_x}{w_y-s_y}=\frac {x-s_x}{s_z} \rightarrow x= \frac {w_x-s_x}{w_y-s_y}. Question3: If the dicom tag don’t provides the position of source (s_x, s_y, s_z), we could not obtain x= \frac {w_x-s_x}{w_y-s_y}, am I correct?

3D images are usually a series of slices in DICOM. In each slice, (0020, 0032) is the physical position of the origin of that slice - physical position of pixel with index (0,0) within that slice. In ITK, a 3D image has just one origin, the physical position of pixel with index (0,0,0). ITK does this mapping when reading DICOMs.

Center of P’ plane is the physical position of pixel with index (w/2, h/2), where w and h are number of pixels along i and j axes (usually x and y physical axes).

You might want to consider using RTK, instead of writing your own code.

Thank you again for your patience.

I have final one question. Where is the point (0, 0, 0) for MRI/CT? Is it a point in scanner? Where is it?

The MRI/CT technician who operates the machine selects “field of view” (FoV), the physical extent of the inside of the tube which will be imaged, along with number of pixels of the array. The FoV is selected from a scout scan or scans, 1-3 2D projections (CT) or thick slices (MRI), and diagnostic purpose playing a big part. The origin (pixel 0,0,0) is a point in the corner of the imaged volume. It can be anywhere inside the tube (for CT maybe even outside the tube), and can be even inside the patient (e.g. only a part of the spine is scanned).

You can use positioner primary/secondary angle fields along with source-to-detector and source-to-patient distances to get appriximate coordinates of the X-ray generator and detector. There were some discussions about this topic recently on the Slicer forum, you might find some usefil pieces of information there.

Note that all the models that assume accurate angle measurement and completely rigid C-arm are very inaccurate (may have several centimeter reprojection error). They are mostly just usable as an initial guess for further optimization. If you want more accurate CT/fluoro fusion then you can do what C-arm manufacturers do - use a model that takes into account inaccuracy of sensors, non-rigidity of the C-arm, etc. You can find out more about such more advanced models in scientific papers, for example in C-arm calibration papers of Sebastien Gorges.

1 Like

There are two coordinate system: 1. volume pixel coordinate system, 2. world coordinate. I feel confuzed about the origin point in world coordinate.

The pixel (0, 0, 0) is a point in the corner of the imaged volume. But the world position of pixel (0, 0, 0) may be (-100, 20, 300). My question is: where is the point (0, 0, 0) in world coordinate system. Is it a point in scanner? Or is it a point in patient?

We don’t know upfront. Frequently, it is in the middle of the imaged volume. But it can be outside of the volume, and I remember some instance where the origin of the imaged volume had one coordinate 14000 (meaning 140 meters), which makes zero sense. And it was causing numerical stability issues (e.g. registration rotates around coordinate origin, and with it being 14k units away even a rotation of fraction of a degree completely misaligns the volumes.)

Since image’s origin is expressed in world coordinate system, you can find the world’s origin in image coordinate system by inverting the image’s origin. I am not sure why are you so interested in it. For image computation purposes, world coordinate system is arbitrarily chosen by the scanner technician. We have no control over it.

1 Like

If the DICOM provide the position of source, which tag should it be?

A quick search makes me think there is no such tag. I could be wrong.

1 Like