Hi Jim, I can't quite follow all of that. To go from a functional CRS to 
an anatomical CRS, you'd need

M = Ta*inv(R)*Tf
where Ta is the vox2raatkr for the anat
Tf is that of the func
and R is the register.dat mtx

I would compare what you get to mri_vol2surf output. If they match, then 
you're good to go.

doug

James Thompson wrote:
> Hi Doug and list,
> I'm trying to map surface/mesh vertices (e.g. rh.pial) to voxels (cols, rows, 
> slices) in a functional volume in matlab,
> and just wanted to a) get a check that what I'm doing sounds right and b) 
> share it in case it's useful to anyone else
>
> (I searched the mailing list and found most of my answers there, just not all 
> in one post). Of course, mri_surf2vol does
> all this, probably better, but I want to iterate through many, many times. 
> I've tested it and it seems to work.
>
>
> Functional data has been registered to anatomical (T1.mgz? orig.mgz? w/e) 
> using bbregister.
>
> Doug Greve 19 Dec 2008 said:
> >
> >if you have the voxel index (col, row, slice) then you can:
> >
> >V2R = [
>
> > -1.00000    0.00000    0.00000  128.00000
> >  0.00000    0.00000    1.00000 -128.00000
> >  0.00000   -1.00000    0.00000  128.00000
> >  0.00000    0.00000    0.00000    1.00000 ]
> >
> >crs = [col row slice]';
>
> >
> >
> >xyz = V2R * [crs+1; 1];
> >
> >then find the vertex whose xyz coords are closest to xyz
>
> So:
> to find CRS from vertex RAS:
>
> crs = round(inv(V2R)*[xyz; 1]) %maybe crs -1 to make a closer match? but then 
> this messes with below
>
>
> ------------------------------------------------------------------------------
>
> From fscoordinates.pdf page 6, plus above...
>
> To go from Func CRS to T1 CRS (& vice versa)
>
> bbmtx is the transform matrix from register.dat
>
>
> Q = inv(Func_tkrvox2ras)*bbmtx*T1_tkrvox2ras;
>
> Q is now the transform from Func_tkrvox2ras to T1tkrvox2ras
>
> To find T1 CRS from Func CRS:
> T1_crs = inv(Q)*[Func_crs; 1]; 
>
> To find Tfunc CRS from T1 CRS:
>
>
> Func_crs = Q*[T1_crs; 1]; %T1_crs + 1 if you subtracted 1 above
>
> So...to go from vertex RAS to Func CRS:
>
> Func_crs = Q*(round(inv(V2R)*[xyz; 1]);
>
> This seem right? 
>
> best,
> Jim T
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Freesurfer mailing list
> Freesurfer@nmr.mgh.harvard.edu
> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

-- 
Douglas N. Greve, Ph.D.
MGH-NMR Center
gr...@nmr.mgh.harvard.edu
Phone Number: 617-724-2358 
Fax: 617-726-7422

Bugs: surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
FileDrop: www.nmr.mgh.harvard.edu/facility/filedrop/index.html

_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Reply via email to