questions > sliceDir in GE DTI scans
Showing 1-5 of 5 posts
Display:
Results per page:
Aug 18, 2023  02:08 AM | Manuela Zimmer
sliceDir in GE DTI scans

Hello everyone,


I am currently in the process of validating GE DTI scans using different Patient Positions (HFS, FFS), oblique vs. non-oblique acquisitions and reversed slice orders. When checking the 'geCorrectBvecs()' function I came across the 'sliceDir' variable. I found the function 'headerDcm2NiiSForm()' that is returning sliceDir as follows: 0=unknown,1=sag,2=coro,3=axial,-=reversed slices


I struggle in understanding what exactly is happening in the C code and how the sliceDir is determined from the DICOM header information. Could anyone help me out, in particular for the settings used by GE?


The scans that I have are in PhaseEncoding 'COL' either HFS or FFS and slice order either from inferior to superior or from superior to inferior (by ticking the "reverse slice order" check box on the scanner GUI when setting up the FOV).


Assuming sliceDir to be axial (sliceDir=3), I would expect a bvec file with reversed z component for those scans using the reversed slice order from the 'geCorrectBvecs()' function. (Please be aware that FFS is currently not handled by geCorrectBvecs() but Jaemin Shin from GE recently made changes in the dcm2niix development branch that I am testing).


I hope my questions are understandable... I appreciate any help or thoughts on this. Thanks!

Aug 18, 2023  10:08 AM | Chris Rorden
RE: sliceDir in GE DTI scans

The recent PR for the development branch of dcm2niix should resolve this


  https://github.com/rordenlab/dcm2niix/pu...


To compile the development branch on a Unix computer you can run:


 


git clone --branch development https://github.com/rordenlab/dcm2niix.gi...
cd dcm2niix/console
make
./dcm2niix



If you have additional issues, please create an issue on Github.


For details on the diffusion tensor details, please see:


https://github.com/rordenlab/dcm2niix/tree/master/GE#diffusion-tensor-notes


 

Aug 20, 2023  10:08 PM | Manuela Zimmer
RE: sliceDir in GE DTI scans

Thanks for the fast reply.


The latest PR you mentioned now considers bvec corrections for non-HFS scans (which is helpful for us and we are currently testing) but there are no changes regaring the sliceDir. And the GE diffusion tensor notes do not provide information about the slice order either. 


I was hoping to get some insights in how dcm2niix determined the sliceDir variable (i.e. which DICOM headers are considered to determine if the slice direction was axial, coronal, sagittal and if it was reversed.)

Aug 21, 2023  05:08 PM | Chris Rorden
RE: sliceDir in GE DTI scans

The DICOM tag ImageOrientationPatient (0020,0037) reports the row and column vectors. The cross product provides the slice direction for MR (with CT you need to be aware of gantry tilt).


  https://dicom.innolitics.com/ciods/rt-do...


The DTI bvec is in image space. The world space orientation information is recorded in the SForm and QForm.


 


https://brainder.org/2012/09/23/the-nifti-file-format/


 


 

Aug 21, 2023  09:08 PM | Manuela Zimmer
RE: sliceDir in GE DTI scans

I understand that this is straightforward for purely axial, sagittal or coronal acquisition, i.e. (0020,0037) being either [1, 0, 0; 0, 1, 0], [0, 1, 0; 0, 0, 1] or [0, 1, 0; 0, 0, 1]. But how about oblique acquisitions? Are there threshold values about how much the image coordinate system can be rotated to still be considered e.g. "axial" acuqisition?


(0020,0037) describes the image-to-world-coordinate transformation and also which axis (the z axis) is the slice encoding direction. The remaining (x and y) describe Freq and Phase Encoding ((0018,1312) InPlanePhaseEncodingDirection can be set to either COL or ROW to determine if (x,y) are (Freq, Phase) or (y,x) are (Freq, Phase)). But the (0020,0037) does not describe the polarity of the Freq, Phase and Slice Encoding directions. Correct? As GE uses the "MR physics coordinate system" to define their diffusion gradients, I am trying to understand if this needs to be reflected in the "sliceDir" variable that is used by the "GEcorrectBvecs" function.