Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Slice distance, center to center when there is gantry tilt (CT)

339 views
Skip to first unread message

sor...@gmail.com

unread,
Feb 2, 2015, 7:23:58 PM2/2/15
to
Hi,
I have had this question posted a couple of times over the last few years but it has never resulted in a definitive answer.
I would like to know if there is a "correct" way to calculate the inter slice distance for CT when there is gantry tilt.
For MRI I always project the Image Position Patient (IOP) onto the slice normal (calculated from) the Image Orientation Patient (IPP) cosines. The distances between the projected points sorted along the normal vector is then the inter-slice-distance (normally equidistant and summarized by a single value for that reason).

For CT systems where the gantry is tilted I am uncertain if the same method can be used.
Specifically, my question is this:
What does Image Position Patient indicate under gantry tilt?
a) The position of the slice corner in patient space?
b) The position of the slice corner in patient space, had the gantry not been tilted?
c) Something else?

From reading the standard, I would think (a). However, looking at several data sets this does not seem to be consistent with how the IOP tag is used in practice where the calculated increment (by IOP,PPP) will often not coincide with the Thickness tag nor with the first difference of the "Location" tag across slices.

Any advice appreciated!

Thanks
Soren


David Gobbi

unread,
Feb 3, 2015, 5:50:16 PM2/3/15
to
On Monday, February 2, 2015 at 5:23:58 PM UTC-7, Soren Christensen wrote:
> Hi,
> I have had this question posted a couple of times over the last few years but it has never resulted in a definitive answer.
> I would like to know if there is a "correct" way to calculate the inter slice distance for CT when there is gantry tilt.
> For MRI I always project the Image Position Patient (IOP) onto the slice normal (calculated from) the Image Orientation Patient (IPP) cosines. The distances between the projected points sorted along the normal vector is then the inter-slice-distance (normally equidistant and summarized by a single value for that reason).

Yes, the projected positions thus computed will provide an inter-slice distance
even if the gantry is tilted. However, note that for CT the spacing may vary within
the series (it may be done e.g. due to dose considerations).

> For CT systems where the gantry is tilted I am uncertain if the same method can be used.
> Specifically, my question is this:
> What does Image Position Patient indicate under gantry tilt?
> a) The position of the slice corner in patient space?

Yes.

> b) The position of the slice corner in patient space, had the gantry not been tilted?

No.

> c) Something else?

No. Image Position Patient is defined by the standard to be the position,
in Patient Space, of the center of the first voxel in the image.

> From reading the standard, I would think (a). However, looking at several data sets this does not seem to be consistent with how the IOP tag is used in practice where the calculated increment (by IOP,PPP) will often not coincide with the Thickness tag nor with the first difference of the "Location" tag across slices.

There is no guarantee that the IPP inter-slice spacing will be equal to the
Thickness. Slices might overlap, or there might be a gap between slices.
For CT the slice thickness depends on the beam width, while the inter-slice
spacing depends on how far the gantry moves between acquisitions.

The Slice Location generally corresponds to the gantry position along the Z
direction (i.e. not along the plane normal, but strictly along Z). Note, however,
that it does not have a strict mathematical definition in the standard.
Quoting PS 3.3 C.7.6.2.1.2, "Slice Location (0020,1041) is defined as the
relative position of the image plane expressed in mm." There is a lot of
wiggle-room for interpretation.

Summary: IPP and IOP have strict mathematical definitions in the standard
(see PS 3.3 C.7.6.2.1.1). Thickness does not have to equal the inter-slice
distance. The definition of Location (in particular the direction along it is
to be measured) is up to interpretation by the manufacturer.

Stick with your method of computing the inter-slice distance. It is correct.
However, please note that you cannot simply stack up the CT slices like
you would do with MRI slices. The slices from a gantry-tilted CT will not
form a rectangular volume!

- David

Soren Christensen

unread,
Feb 3, 2015, 10:30:55 PM2/3/15
to
Thank you very much for a detailed and clear answer. Much appreciated!

Best
Soren

bki...@aucklanduni.ac.nz

unread,
Jan 14, 2019, 7:48:20 AM1/14/19
to
Hello there Soren,

I am trying very hard to figure out how to calculate the inter slice distance. Would you please explain what you mean by "project the Image Position Patient (IOP) onto the slice normal"? And subsequent steps that I need to take to calculate the distance?

A small disclaimer is that I am a med student attempting to do some volumetric analysis for brain tumours. So my knowledge on DICOMs and vectors are sketchy at best. I would greatly appreciate it if you would not gloss over steps which you think are 'easy'.

Thank you and kind regards,
Bernard

Soren Christensen

unread,
Jan 14, 2019, 11:33:27 PM1/14/19
to
Hi,
Just replace the word vector with arrow - that works fine here for all practical purposes.
In brief, you have a stack of slices, all slices are parallel to each other - like a deck of cards. The deck (slices) can be organized in a cuboid fashion as is typical in MR and PET (like cards in a card box) or gantry tilted (like a card deck that you slant with your finger) as is sometimes used in CT.
Either way, for volumetrics, you want the distance from slice center to slice center so that you can calculate the voxel volume as: interslice-distance X pixelspacingX X pixelSpacingY.
Each slice has a corner coordinate available in the ImagePositionPatient DICOM field. You could use this directly to calculate inter-slice distance as long as you don't have gantry tilt and you know how the slices are ordered so that you know how to get the distance from neighboring slices. For gantry tilt, the card deck analogy should convince you quickly that the corner-to-corner distance is now longer than the perpendicular slice distance (which is the one you want).

A more general way of calculating the interslice distance is to project each slice corner onto a vector that runs perpendicular to your slices. Following the card deck analogy, that is like poking a needle straight through the deck and making little (very little) marks on the needle for each card. Each mark you made should now be 0.01mm apart from the next if your card thickness is 0.01mm. You can intuitively appreciate that this is also true for a slanted (tilted) deck.

To get that perpendicular vector you need to do some math since it is not directly listed in the DICOM header. Fortunately it is very easy to calculate as you have the row and column vectors (in the IOP field) of the DICOM and the perpendicular vector is just the cross-product of those vectors. The row and column vectors describe the direction of your rows (image left right) and columns (up down) in the scanners coordinate system. So the final step is now to project each of the slice corners (IPP) onto the IOP and sort them to make sure they are in order.
That is basically it.

There's some code here: https://github.com/horosproject/horosplugins/blob/767f630607094e3ba3b814f788fc49736c70367d/VoxelVolume/VoxelVolumeFilter.m

The above is from a Horos plugin that implements this - maybe that will do what you need?

Hope that helps!

bki...@aucklanduni.ac.nz

unread,
Jan 15, 2019, 5:52:31 AM1/15/19
to
Thank you very much for the prompt comprehensive answer !! The analogy definitely helped me get to terms with all of the language :)

Kind regards,
Bernard
0 new messages