Sorry, this should be:
  M = inv(Ta)*inv(R)*Tf

doug

Douglas N Greve wrote:
> 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