# Horizontally Gantry Tilt

**URL:** <https://discourse.slicer.org/t/horizontally-gantry-tilt/23959>\
**Category:** Support\
**Tags:** dicom\
**Created:** [June 20, 2022, 11:39am UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959 "2022-06-20T11:39:49Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mahdiye\_Imanpanah](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/mahdiye_imanpanah/32/15747_2.png) [@Mahdiye\_Imanpanah](https://discourse.slicer.org/u/Mahdiye_Imanpanah)\
**Post date:** [June 20, 2022, 11:39am UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/1 "2022-06-20T11:39:49Z")

</div>

Hi everyone  
I’m a medical image processing specialist, and now I’m working on Dicom.  
I have a question about Tilt in Dicom, which is defined using the (0018, 1120) Dicoms tag.  
Based on my research, we have 3 types of tilts, Normal, Vertical, and Horizontal.  
1- Is there anybody to tell me what are the differences between these types?  
2- Why do the applications support the Vertical and Normal but they don’t support the horizontal?  
I will be so thankful if you answer my questions.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [June 20, 2022, 1:28pm UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/2 "2022-06-20T13:28:08Z")

</div>

> [@Mahdiye\_Imanpanah](#):
>
> Based on my research, we have 3 types of tilts, Normal, Vertical, and Horizontal.

These 3 types of tilts don’t sound familiar. Maybe it refers to “no tilt”, or rotation around horizontal axis and rotation around vertical axis. Rotation around horizontal axis it means towards the patient’s head or feet, this is what [(0018,1120)](https://dicom.innolitics.com/ciods/pet-image/pet-series/00181120) DICOM standard can describes, and I have ever encountered in CT images. Rotation around vertical axis might be feasible, too, but would be harder to implement (there is not much space available to do that) and I don’t think it is commonly done (if at all).

Maybe gantry rotations that you have come across describe C-arm rotations (RAO/LAO, CRA/CAU), which are very different from Gantry tilt of a CT described by [(0018,1120)](https://dicom.innolitics.com/ciods/pet-image/pet-series/00181120).

---

<div class="post-metadata">

**Author:** ![Mahdiye\_Imanpanah](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/mahdiye_imanpanah/32/15747_2.png) [@Mahdiye\_Imanpanah](https://discourse.slicer.org/u/Mahdiye_Imanpanah)\
**Post date:** [June 20, 2022, 2:15pm UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/3 "2022-06-20T14:15:26Z")

</div>

Thanks for answering dear Andras  
I have seen these types in some applications, you might be right and (0018, 1120) is not the same thing that I’m working on.  
My main problem is that I can’t get the MPR for some datasets, cause of this error: Does not support [horizontally gantry tilted images] as a source dataset for MPR.  
I can’t figure out why there is no problem with vertical and normal images, but for horizontal?  
In my point of view, the acquired images should be the same in the 3 directions, so what is the problem?  
Is my question clear?

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [June 20, 2022, 6:17pm UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/4 "2022-06-20T18:17:02Z")

</div>

> [@Mahdiye\_Imanpanah](#):
>
> this error: Does not support [horizontally gantry tilted images] as a source dataset for MPR.

That doesn’t sound like a Slicer error. Where does it come from?

Slicer uses a more general method to account for gantry tilt (and other geometric issues like irregular slice spacing) so it doesn’t rely on the tag you referenced.

> <https://github.com/Slicer/Slicer/commit/3328b81211cb2e9ae16a0b49097744171c8c71c0>
>
> Add a step to the DICOMScalarVolumePlugin to check that the loaded
> volume node's… slice geometry matches what is expected from
> the position and orientation information of the individual
> slices in the DICOM headers.
> 
> If needed, a grid transform is created to reposition each slice
> to the appropriate position in patient space.
> 
> Use an empirically defined epsilon threshold to decide if
> an acquisition transform is needed. The selected value of
> 1e-3 millimeters (one micrometer) is still very small by
> medical imaging standards but is large enough that rounding
> errors and other small variations do not result in extra
> correction transforms when they won't add real value.
> The error is defined as the max absolute difference
> in any coordinate of the corner of any slice so it
> is designed to handle gantry tilt, missing slices,
> and irregularly spaced slices.
> 
> The DICOMReaders self test has been extended to test this in the
> case where slices are missing from the middle of the volume. The
> grid transform results in an interpolated band of pixels using
> information from adjacent slices to 'fill in' for the missing
> data. The test confirms that the last slice of the reconstructed
> volume is in the expected location in patient space. This correction
> means that calculations like ruler or segment statistics can be
> robust even with missing slices.
> 
> Currently the only available testing data is for the case of missing
> slices. However this code should allow proper loading and display of
> several not-uncommon imaging scenarios:
> 
> 1) Missing slices due to network failure or accidental file deletion.
> 
> 2) Gantry tilted image acquisitons (see #4409) which is
> used, for example, to minimize radiation exposure to the retinas
> especially in pediatric imaging.
> 
> 3) Variable table speed during CT acquisition, which is sometimes
> used in abdominal or musculoskeletal imaging to provide high resolution
> in selected body parts and lower resolution between (e.g. high res
> at the ankle, knee and hip, but low res in the shin and thigh).
> 
> Consderations:
> 
> By creating a transform we preserve the original data and leave it
> to the user to resample if desired. The option of resampling
> during load was rejected since it is unclear what sampling grid
> would be best in all cases.
> 
> Although the transform should correct the geometry, a warning dialog is
> still generated during loading since the issue could be correctable
> (such as missing slices) or may be triggered by other data issues
> not forseen by this code.
> 
> Most DICOM data has identical row and column spacing
> but when they do not it's critical to have the right
> spacing geomtry. This code uses the correct definitions
> from the standard. Where PixelSpacing is row/column
> but ImageOrientationPatient if column/row
> 
> We check and avoid ValueError warning when dicom files do not have
> geometry information.
> 
> svn-url: http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=26500
> git-svn-id: http://svn.slicer.org/Slicer4/trunk@26500 3bd1e089-480b-0410-8dfb-8563597acbee

---

<div class="post-metadata">

**Author:** ![Mahdiye\_Imanpanah](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/mahdiye_imanpanah/32/15747_2.png) [@Mahdiye\_Imanpanah](https://discourse.slicer.org/u/Mahdiye_Imanpanah)\
**Post date:** [June 20, 2022, 7:15pm UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/5 "2022-06-20T19:15:25Z")

</div>

Thanks for answering dear Steve  
The link you’ve sent is really helpful.

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [June 20, 2022, 11:20pm UTC](https://discourse.slicer.org/t/horizontally-gantry-tilt/23959/6 "2022-06-20T23:20:33Z")

</div>

It seems that the message comes from [ClearCanvas](https://documentation.clearcanvas.ca/Documentation/UsersGuide/Personal/13_1/index.html?mpr.htm). The small illustration that they provide is very nice and clear:

![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/9/b/9bef3cbb4113099c70fcebc01088690e8cb127ca.png)

However, I don’t think this “horizontal tilt” technique is used in clinical imaging. It may be hard to implement because the gantry would collide with the table, it would need an extra rotation joint for the gantry, etc.

What ClearCanvas documentation calls “vertical tilt” is used for clinical imaging (I’ve seen mostly in brain imaging) and this is what (0018,1120) refers to as well:

![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/e/0/e0e95dbe332c02e553b86b55b8e0bfceace04913.png)

If you indeed use ClearCanvas then I would recommend to replace it with some more up-to-date software. If you host the DICOM server yourself then you can use DCM4CHE or Orthanc; if you are on the cloud then Google, Microsoft, etc. have their own hosted DICOM server implementations that you can rely on (and may save you some maintenance efforts). If you want to just have something simple then you may use [DCM.js DICOMweb server](https://github.com/dcmjs-org/dicomweb-server) or [Slicer’s built-in DICOMweb server](https://slicer.readthedocs.io/en/latest/user_guide/modules/webserver.html#dicomweb-endpoints).
