关于在rest slice viewer中MNI坐标与matlab中.mat坐标的关系

Submitted by lwz110911 on
 大家好:
  (1)我用matlab将.img文件读出,在matlab中显示的坐标与真实空间的MNI坐标是什么关系呢? 
  (2)在rest slice viewer中能否直接定位出体素的坐标呢?如果可以具体怎么操作呢?
    谢谢大家

YAN Chao-Gan

Fri, 12/07/2012 - 20:03

你好!
   关于affine矩阵:[Data Vox Header]=rest_readfile('xxx.nii');
   设头文件中的的affine矩阵为M(即Header.mat)。continuous coordinates记为(x,y,z),voxel
   index coordinates (i.e., the array indexes) 记为(i,j,k)。
 
   x         i
   y         j
   z  =  M * k
   1         1
 
 
   i               x
   j               y
   k  =  inv(M)  * z
   1               1
 
 
因为SPM voxel index从1起算,所以SPM .mat里面最后一列要比MRIcroN显示的多一个体素。
 

 谢谢严老师的回复,有几个问题没太弄明白
(1) 我已经读出.img 文件(相应的坐标,坐标值)我想把它转换为真实空间的坐标。(有没有类似线性公式之类的)
(2)上面的公式我没太看懂是什么意思。
  麻烦您了

 严老师您好:
  按照您的方法,我读取了一个被试的.img文件。生成了相应的Header文件,然后在脑图中选取了一个体素(任意),记录下坐标值和体素值。
用体素坐标乘以inv(M)得到相应的坐标值,可是在回查的过程中发现其体素值不对应。我的老师和我说存在一个偏移量的差异。我也不太懂。想问问您。
希望您能说下我的处理步骤是哪出了问题,偏移量是否应该加上。
       非常感谢!!

从体素坐标到实际坐标(mm,如MNI坐标),不是用inv (M) ,而是直接用M乘。
如前面提到的公式:
 x              i
  y            j
  z  =  M * k
  1            1

coordinates = Head.mat*[i;j;k;1]

 严老师:
  按照您的方法我进行了验证,但是还是行不通。下面是Header生成的矩阵
-3 0 0 93
0 3 0 -129
0 0 3 -75
0 0 0 1
 我们先是定位在计算出来的体素坐标上,然后我们发现对应的体素值不配套。然后又在体素周围寻找,还是没有。我们猜想是把计算出来的体素坐标加上(-3,3,3)或是减去(-3,3,3)仍然不行。                  希望严老师能讲讲为什么。
 
Forums