DICOM2NIFTI111.m

 

Introduction

This is the first implementation of code to generate Nifti from the Siemens Sonata/Trio.  The Nifti format has been implemented according to http://nifti.nimh.nih.gov/dfwg/ as far as is reasonable.  Limitations are described below.

 

The implementation is based on the Dicom2Ana code that we have been using for a while, and this has proved to be quite reliable.

Further features:

        Handles Mosaic correctly for function EPI acquisitions

        Handles Mosaic diffusion correctly (compatible with the MDR version of the code, and so outputting bvec and bvals files correct for this orientation)

        Creates the new .bmat file as an auxiliary file for the diffusion data (bmat format is xx, xy, xz,yy,yz,zz, by the number of directions, where xx = b*r r’)

        Timing correct for EPI, EPI with time delays, 2D and 3D, but not mutli-shot EPI, FSE, GRASE etc.

        Works fine for anatomicals

 

Matlab code available at:  http://www.fmrib.ox.ac.uk/~robson/internal/Dicom2Nifti111.m

 

Tests data acquired for Dicom2Nifti

1)  Phase encoding direction

a.   Switch this in 2D sequence

b.   Switch this in 3D sequence

 

2)  Orientations is +ve correct, for orientation

a.   Acquire images which are oriented +ve

b.   Flip the slice direction and re-acquire (for 2D’s)

 

3)  Offsets is +ve correct for offset

a.   Acquire images which are offset in each of 3 directions

 

4)  Interleaving

a.   acquire with different interleaving schemes

 

5)  Timing

a.   add a delay after the slices and check it returns the correct time-between-slices

 

6)  Voxel dimensions

 

7)  Diffusion encoding and conversion

a.   Multiple b factors

b.   Mosaic version and non-mosaic version

The data for all this can be found in http://www.fmrib.ox.ac.uk/~robson/internal/data/

 

Known limitations:

Limited testing of orientation

Specific concerns about the sign of the slice direction (Slice direction is calculated from cross product, not determined correctly)

No handling of multi-slice for timing (i.e. interleaved vs ascending vs descending)

MAO.  Don’t know how to detect it, don’t know how to inform the processing code (Nifto can’t handle it except with multiple files)

TR errors:      

        Errors for FSE and other sequences with more than 1 k-space line per shot (fine for single-shot)

No storage of slice thickness (only centre of slice to centre of slice)

Incorrect treatment of 2D-cine acquisitions

This code works with 21A and earlier versions of the Siemens software, it may not work with later versions.