MriMghIO class declaration. More...


Go to the source code of this file.
Classes | |
| class | MRILIB::MriMghIO |
| FreeSurfer MGH/MGZ file reader. More... | |
Namespaces | |
| namespace | MRILIB |
| MRI volume and coordinate-system I/O (volumes, voxel geometry, transforms). | |
MriMghIO class declaration.
Copyright (C) 2026, Christoph Dinh. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Reader for FreeSurfer MGH/MGZ (gzip-compressed MGH) volume files.
File format reference:
https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat
MGH Header Layout (all big-endian, total 284 bytes):
Offset Size Field
------ ---- -----
0 4 version (int32) — must be 1
4 4 width (int32) — first image dimension
8 4 height (int32) — second image dimension
12 4 depth (int32) — third image dimension
16 4 nframes (int32) — number of frames
20 4 type (int32) — voxel data type (0=uchar, 1=int, 3=float, 4=short)
24 4 dof (int32) — degrees of freedom
28 2 goodRASflag (int16) — if > 0 the following fields are valid
30 12 spacingX, spacingY, spacingZ (3×float32) — voxel sizes in mm
42 36 direction cosines: xr,xa,xs, yr,ya,ys, zr,za,zs (9×float32)
78 12 c_ras: cr, ca, cs (3×float32) — center RAS coordinates
90 194 unused (padding to byte 284)
Image Data (starting at byte 284):
width × height × depth × nframes × sizeof(type) bytes
Stored in column-major (Fortran) order: x varies fastest.
Footer (after image data, optional):
Scan parameters: TR (float32), flipAngle (float32), TE (float32),
TI (float32), FoV (float32)
Tags: type(int32) + length(int32/int64) + data
TAG_OLD_SURF_GEOM (20): old surface geometry, length is int32
TAG_OLD_MGH_XFORM (30): old transform, length is int32
TAG_MGH_XFORM (31): path to talairach.xfm file, length is int64
Ported from make_mgh_cor_set() in MNE C mne_make_cor_set by Matti Hamalainen.
Definition in file mri_mgh_io.h.