External Email - Use Caution
Dear FreeSurfer devs,
I'm writing a program in JavaScript that converts FreeSurfer surface (mesh)
files to other formats, which require the vertices to sit in scanner RAS
coordinates.
Right now I'm relying on the FreeSurfer *brain.finalsurf.mgz* or *T1.mgz*
file to obtain the Torig (vox to tkr-ras) and Norig (vox to scanner ras)
matrices, and using these matrices to calculate the rigid transform. This
approach requires the users to upload the mgz volume files (but I only need
the transforms).
Today I found that each binary surface file (e.g. lh.pial) has a little
footer that starts with uint32 sequence `2 0 20`, followed by the meta
information such as xras, yras, zras, and cras. For example:
valid = 1 # volume info valid
filename = ../mri/filled-pretess127.mgz
volume = 256 256 256
voxelsize = 1.000000000000000e+00 1.000000000000000e+00
1.000000000000000e+00
xras = -1.000000000000000e+00 0.000000000000000e+00 0.000000000000000e+00
yras = 0.000000000000000e+00 0.000000000000000e+00 -1.000000000000000e+00
zras = 0.000000000000000e+00 1.000000000000000e+00 0.000000000000000e+00
cras = -1.000000000000000e+00 -1.700000000000000e+01 1.900000000000000e+01
\u0000\u0000\u0000\u0003\u0000\u0000\u0000\u0000\u0000\u0000\u0001
From what I understand, cras is the xyz of the volume center, which is the
translation from mesh vertices xyz (in tkr-ras) to native scanner RAS.
I wonder if I can rely on this information to calculate the transform from
tkr-ras to scan-ras, if so, where are the rotation matrices? (Affine/rigid
transform is a 4x4 matrix, if cras is the translation, where are the first
3x3 elements, are those always identity matrices?)
Best,
- Dipterix