计算全脑的灰质、白质和脑脊液的体积
[转自52brain]
在做VBM分析的时候,经常会把全脑体积(total brain volume=灰质+白质)或是颅内体积(total intracranial volume=灰质+白质+脑脊液)作为无关变量放在第二层的GLM中。 因此计算灰质白质脑脊液的体积就成了一个有用的步骤。 我参照John Ashburner在SPM的mailing list中做的一小段程序,稍作修改(几乎没改)放在此处供大家参考。至于在SPM中如何做VBM,大家可以参考此教程:
如果你用VBM8这一工具包的话,里面会同时生成一个文本文档,里面就有被试的这三种组织的体积。但VBM8估算出的体积和Ashburner的代码估计出的有一些出入,具体可能是计算方法的不同。
在这里我说一下上面程序的思路。你会发现有脑组织的体素的intensity是1或者接近1.如下图就是第一百层的轴状位的大脑(右侧),虽然它是个图,但本质上是个矩阵(左侧)。你会看到很多地方是0,那是非脑区的地方,也有很多地方是接近1的。矩阵里面向左凹进去那一块其实就是大脑额叶前面凹进去的那部分。
你用这一句也能看到第一百层的矩阵 img=spm_slice_vol(V(1),spm_matrix([0 0 100]),V(1).dim(1:2),0);
Ashburner可能假设如果一个体素是1,那么脑组织就占这个体素的百分之百,如果这个体素的intensity是0.5,那么脑组织就占百分之五十。所以把所有的体素加起来就是大脑中的以体素为单位的体积。但体素的大小在每个研究中可能都是不太一样的。尤其是使用c1开头的刚分割完的比较原始的图像时,比如我这个图就是体素大小0.479×0.479×1。所以还要再通过体素的大小换算成具体的毫升或是升等单位。 而这一句voxvol=abs(det(V(1).mat))/100^3
就是做这个事的。V(1)
是我们载入的图像本身,在这里是个结构体,而V(1).mat
是一个仿射转换矩阵(affine transformation matrix),里面记录了体素的大小的信息。det函数做的就是将体素的体积信息提取出来。abs就是看绝对值的,因为det提取出的值可能是负的。
有的同学会问“我是用标准化之前的图像还是标准化之后的图像来计算这个体积?”或者“我是用mudulation之前的还是之后的?”或者“我是用smooth之前的还是之后的”。我用自己的数据算了一下,其实我感觉是这样的。 用smwc1开头的文件(经过了标准化,modulation和smooth)和用c1开头的文件(刚分割完的原始空间的灰质)来计算的话,灰质的绝对体积值是不一样的。但是被试之间的相对体积是非常接近的,四舍五入到小数点后三位数是一样的(由于smooth肯定影响了具体的数值,smooth之前应该更加接近)。
用c1开头的文件算出来的数值依次是
用smwc1开头的文件算出来的数值依次是
可以看出来还是很接近的。 另外对于同样的5名被试,我还看了VBM8处理后生成的txt文件里面的灰质体积,虽然感觉有点差别,但体积还是基本一致的, 594.832 823.331 633.403 746.745 754.158
我还没有尝试标准化modulation但未smooth的情况。所以我想标准化和modulation并没有保存其绝对体积值,而是保留了相对体积值。
如果你要把体积作为无关变量放在GLM模型中的话用标准化和调制之后的是没有问题的,但要计算绝对体积的话,那个c1开头的图像,就是那个在原始空间的刚刚分割完的图像算出来的体积是最靠谱的。
Last updated