Calculating surface orientation angles

Cortical surface orientation with respect to B0 and imaging axes can be calculated in mris_convert with the --angle flag.

The command line is

mris_convert --angle <surface> <outname>.mgz


mris_convert --angle lh.pial lh.pial.orientations.mgz will produce a six-frame overlay file with the orientation angles between the vertex-wise surface normal and:

0. scanner y-direction

1. scanner z-direction

2. scanner x-direction

3.-5. imaging volume axes

The normal vector at a vertex is approximated by the face-angle weighted average normal from the normals of all faces touching the vertex.


If you run mris_convert --angle on an original surface, i.e. one that has not been transformed (e.g. with mris_surf2surf to transform the surface from orig space to another head position during a functional run) you are all set. However, if you want to calculate orientation angles of transformed surfaces you will have to convert the .lta or .dat registration file first and force the original volume as the source. Otherwise crucial header information will be lost and the angles will be incorrect (do not be fooled, they might appear close, but they won't be exact). The series of commands should look similar to this:

lta_convert --inlta fMRI2orig.lta --outlta fMRI2orig_src_orig.lta --src orig.mgz

then re-run mris_surf2surf with

mri_surf2surf --reg register_src_orig.dat --sval-xyz white --tval-xyz epi_reference.nii.gz --hemi lh --surfreg white --tval lh.white2_fMRI --s subject 


If you use cortical surface orientation calculation in your research, please refer to these publications:

Viessmann O, Scheffler K, Bianciardi M, Wald L L, Polimeni J R; Dependence of resting-state fMRI fluctuation amplitudes on cerebral cortical orientation relative to the direction of B0 and anatomical axes. NeuroImage 2019; 196:337--350; DOI:10.1016/j.neuroimage.2019.04.036