GIfTI library for MATLAB

A MATLAB GIfTI library

This MATLAB class allows to handle GIfTI Geometry file format from the Neuroimaging Informatics Technology Initiative (NIfTI).

It relies on external libraries or functions:

  • yxml, by Yoran Heling,
  • Base64, by polfosol,
  • miniz, by Rich Geldreich,
  • mVTK, also available from this website,
  • JSONio, also available from this website.

Note that these tools are already included in the GIfTI library provided here, so you don't need to install them separately.

There are import facilities from FreeSurfer, VTK, Wavefront OBJ, Stanford PLY, STL and MZ3 file formats.

There are export facilities to VTK, Collada, IDTF, Wavefront OBJ and JS/JSON file formats.

This library is also part of SPM.


This library takes advantage of MATLAB Object-Oriented facilities and all the code is embedded in a @gifti class. To install it, all you need is to make sure that the directoy containing @gifti is in MATLAB path:

  >> addpath /home/login/matlab/gifti

Note that the handling of gzipped data requires either Java (dzip) or a MEX file (miniz), so don't start MATLAB with the -nojvm option unless you compiled the zstream.c MEX file.


In the following, we use the files contained in BV_GIFTI.tar.gz (BrainVISA examples), available from the NITRC website.

  >> % Read the GIfTI surface file
  >> g = gifti('')
  g =
      vertices: [22134x3 single]
           mat: [4x4 double]
         faces: [44264x3 int32]
       normals: [22134x3 single]
  >> % Read the GIfTI shape file
  >> gg = gifti('sujet01_Lwhite.shape.gii')
  gg =
      cdata: [22134x1 single]
  >> % Display mesh
  >> figure; plot(g);
  >> % Display mesh with curvature
  >> figure; plot(g,gg);
GIfTI surface file    GIfTI surface & shape file

In a similar way, a gifti object can be created from scratch and saved to a file:

  >> % Load a MATLAB example dataset and convert it into GIfTI
  >> load mri
  >> Ds = smooth3(squeeze(D));
  >> g = gifti(isosurface(Ds,5))
  g =
         faces: [32310x3 int32]
      vertices: [16564x3 single]
           mat: [4x4 double]
  >> % Display the surface mesh
  >> h = plot(g);
  >> daspect([1,1,.4]); view(45,30); axis tight
  >> lightangle(45,30);
  >> set(h,'SpecularColorReflectance',0,'SpecularExponent',50)
  >> % Save as a Base64Binary GIfTI file
  >> save(g,'','Base64Binary');

This will have created the file in the current directory.

GIfTI MRIsurface file

See also: export to Plotly.