How to calculate space between dicom slices for MPR?

Omid Nazifi picture Omid Nazifi · Feb 18, 2013 · Viewed 16k times · Source

Due to showing MPR view based on Dicoms. I've made a 3D array from series of dicom files. And I show it from Coronal and Sagittal sides.

My 3D array includes: 

 - z = count of dicoms
 - c = column value for every dicoms
 - r = Row value for every dicoms

But I have a problem. When there is some space between slices, image is made by this way doesn't show a correct view. Because I can not think of simulation distance between them!

I don't know how to calculate space between slices? I want to add extra space between slices. for example, If space between slices is 4. I have to add 4 time z inner slices.

I hope to arrive my mean.

Answer

malat picture malat · Feb 27, 2013

Image Position (Patient) and Image Orientation (Patient) are the two only attributes you should ever used when computing distance between slices. For more details see here or here. For an actual implementation see here, this implementation also does take into account Frame Of Reference UID, as well as Gantry/Detector Tilt.

This question is the question #1 asked on comp.protocols.dicom.

Please see ImageJ bug


I believe the answer from @Matt is erroneous, let me clarify a few things here.

  • No: 'DICOM does not have an attribute called Spacing Between Slices'. That is very wrong (technically it does not even mean anything).

DICOM defines IODs which define the set of required attributes available in an SOP Class Instance. Let's consider two very common cases: CT Image Storage (legacy) and MR Image Storage (legacy). So we need to compare the set of attributes in between:

  1. CT Image IOD Modules
  2. MR Image IOD Modules

Now let's say we want to check that MR Image Storage support Spacing Between Slices, it is easy to jump to:

However it is much harder to find this attribute for CT Image Storage: simply because this attribute does not exist (per standard). So the only time you would find such attribute would be within an extended SOP Class (some vendors may decide that Spacing Between Slices attribute make sense within their extended SOP Class Instance).

  • Mixing in the same answer both Spacing Between Slices and Slice Thickness (0018,0050) is very confusing for new users.

I agree that Slice Thickness is perfectly defined in the standard for both CT Image Storage and MR Image Storage since they both include Image Plane Module Attributes, however let's not exchange one for the other.

I found a nice summary of Slice Thickness vs Spacing Between Slices here (if you scroll to the section, you can even play the small demo) :

In step and shoot CT the Slice Thickness and Spacing Between Slices are identical so there is no big issue here. However for helical CT those values are not the same and can vary in any direction (they are independent).

[…] Slice Thickness is determined by the detector width and pitch, while reconstruction interval (=Spacing Between Slices) can be chosen arbitrarily. […]

In conclusion to compute (safely!) the Spacing Between Slices (= Reconstruction Interval), it is much safer to use Image Orientation (Patient) and Image Position (Patient) since they are available in either MR Image Storage or CT Image Storage instances.