MRI volume data from FreeSurfer MGH/MGZ file. More...
#include <mri_vol_data.h>
Public Member Functions | |
| MriVolData () | |
| bool | read (const QString &path) |
| bool | isValid () const |
| int | dimX () const |
| int | dimY () const |
| int | dimZ () const |
| QVector< int > | dims () const |
| QVector< float > | voxelDataAsFloat () const |
| Eigen::Matrix4f | computeVox2Ras () const |
Public Attributes | |
| QString | fileName |
| int | version |
| int | width |
| int | height |
| int | depth |
| int | nframes |
| int | type |
| int | dof |
| bool | rasGood |
| float | xsize |
| float | ysize |
| float | zsize |
| Eigen::Vector3f | x_ras |
| Eigen::Vector3f | y_ras |
| Eigen::Vector3f | z_ras |
| Eigen::Vector3f | c_ras |
| FIFFLIB::FiffCoordTrans | voxelSurfRasT |
| float | TR |
| float | flipAngle |
| float | TE |
| float | TI |
| float | FoV |
| QString | talairachXfmPath |
| QVector< MriSlice > | slices |
MRI volume data from FreeSurfer MGH/MGZ file.
Holds a complete MRI volume loaded from a FreeSurfer MGH/MGZ file.
This class encapsulates all header geometry, coordinate transforms, scan parameters, and voxel data that describe a 3D MRI volume.
Based on the FreeSurfer MGH format specification: https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/MghFormat
Header structure (all big-endian):
Image data starts at byte 284.
Footer (after data): optional scan parameters (TR, FlipAngle, TE, TI, FoV) and tags (Talairach transform path, provenance info).
Ported from mneMRIdataRec in MNE C (mne_types_mne-c.h) by Matti Hamalainen.
Definition at line 148 of file mri_vol_data.h.
| MriVolData::MriVolData | ( | ) |
Default constructor.
Definition at line 55 of file mri_vol_data.cpp.
| Matrix4f MriVolData::computeVox2Ras | ( | ) | const |
Builds the voxel-to-surface-RAS (MRI) 4×4 transform matrix.
Following FreeSurfer convention: M = Mdc * diag(xsize, ysize, zsize) P0 = c_ras - M * (dim/2) vox2ras = | M P0 | (in mm, converted to meters for FIFF) | 0 1 |
Definition at line 129 of file mri_vol_data.cpp.
|
inline |
Definition at line 201 of file mri_vol_data.h.
|
inline |
Definition at line 183 of file mri_vol_data.h.
|
inline |
Definition at line 189 of file mri_vol_data.h.
|
inline |
Definition at line 195 of file mri_vol_data.h.
| bool MriVolData::isValid | ( | ) | const |
Returns whether this volume contains valid data.
Definition at line 81 of file mri_vol_data.cpp.
| bool MriVolData::read | ( | const QString & | path | ) |
Convenience loader: reads an MGH/MGZ file and populates this volume.
Wraps MriMghIO::read() so callers don't need to manage a separate additionalTrans vector. Mirrors MNE-Python's nib.load(path) one-liner.
| [in] | path | Path to the .mgh or .mgz file. |
Definition at line 88 of file mri_vol_data.cpp.
| QVector< float > MriVolData::voxelDataAsFloat | ( | ) | const |
Returns all voxel data as a contiguous float array in x-fastest order.
Mirrors MNE-Python's img.get_fdata().ravel(order='F'). Regardless of the on-disk type (UCHAR, SHORT, INT, FLOAT) the output is always float. The array length is width * height * depth.
Definition at line 96 of file mri_vol_data.cpp.
| Eigen::Vector3f MRILIB::MriVolData::c_ras |
Center RAS coordinates (cr, ca, cs). Default: (0, 0, 0).
Definition at line 248 of file mri_vol_data.h.
| int MRILIB::MriVolData::depth |
Third dimension (slowest).
Definition at line 237 of file mri_vol_data.h.
| int MRILIB::MriVolData::dof |
Degrees of freedom.
Definition at line 240 of file mri_vol_data.h.
| QString MRILIB::MriVolData::fileName |
Name of the source file.
Definition at line 233 of file mri_vol_data.h.
| float MRILIB::MriVolData::flipAngle |
Flip angle (radians).
Definition at line 261 of file mri_vol_data.h.
| float MRILIB::MriVolData::FoV |
Field of view (unreliable per FreeSurfer docs).
Definition at line 264 of file mri_vol_data.h.
| int MRILIB::MriVolData::height |
Second dimension.
Definition at line 236 of file mri_vol_data.h.
| int MRILIB::MriVolData::nframes |
Number of frames (scalar components per voxel).
Definition at line 238 of file mri_vol_data.h.
| bool MRILIB::MriVolData::rasGood |
Whether the direction cosines in the header are valid.
Definition at line 241 of file mri_vol_data.h.
| QVector<MriSlice> MRILIB::MriVolData::slices |
Per-slice data (for COR-equivalent representation).
Definition at line 276 of file mri_vol_data.h.
| QString MRILIB::MriVolData::talairachXfmPath |
Path to the Talairach .xfm file (from MGH footer tags).
Definition at line 270 of file mri_vol_data.h.
| float MRILIB::MriVolData::TE |
Echo time (ms).
Definition at line 262 of file mri_vol_data.h.
| float MRILIB::MriVolData::TI |
Inversion time (ms).
Definition at line 263 of file mri_vol_data.h.
| float MRILIB::MriVolData::TR |
Repetition time (ms).
Definition at line 260 of file mri_vol_data.h.
| int MRILIB::MriVolData::type |
Voxel data type (MRI_UCHAR, MRI_INT, MRI_FLOAT, MRI_SHORT).
Definition at line 239 of file mri_vol_data.h.
| int MRILIB::MriVolData::version |
MGH format version (should be 1).
Definition at line 234 of file mri_vol_data.h.
| FIFFLIB::FiffCoordTrans MRILIB::MriVolData::voxelSurfRasT |
Voxel -> surface RAS (MRI) transform.
Definition at line 254 of file mri_vol_data.h.
| int MRILIB::MriVolData::width |
First dimension of the image buffer (fastest).
Definition at line 235 of file mri_vol_data.h.
| Eigen::Vector3f MRILIB::MriVolData::x_ras |
X-direction cosines (xr, xa, xs). Default: (-1, 0, 0).
Definition at line 245 of file mri_vol_data.h.
| float MRILIB::MriVolData::xsize |
Voxel spacing in X direction (mm).
Definition at line 242 of file mri_vol_data.h.
| Eigen::Vector3f MRILIB::MriVolData::y_ras |
Y-direction cosines (yr, ya, ys). Default: (0, 0, -1).
Definition at line 246 of file mri_vol_data.h.
| float MRILIB::MriVolData::ysize |
Voxel spacing in Y direction (mm).
Definition at line 243 of file mri_vol_data.h.
| Eigen::Vector3f MRILIB::MriVolData::z_ras |
Z-direction cosines (zr, za, zs). Default: (0, 1, 0).
Definition at line 247 of file mri_vol_data.h.
| float MRILIB::MriVolData::zsize |
Voxel spacing in Z direction (mm).
Definition at line 244 of file mri_vol_data.h.