spmfMRI数据处理修订版.docx
- 文档编号:30097904
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:22
- 大小:105.89KB
spmfMRI数据处理修订版.docx
《spmfMRI数据处理修订版.docx》由会员分享,可在线阅读,更多相关《spmfMRI数据处理修订版.docx(22页珍藏版)》请在冰豆网上搜索。
spmfMRI数据处理修订版
Documentnumber:
PBGCG-0857-BTDO-0089-PTT1998
spmfMRI数据处理
SPM简介和安装
SPM,即统计参数图,也是这个软件的最终输出,它是由英国伦敦大学的Friston教授等人在通用数学软件包Matlab基础上开发的软件系统,其统计功能非常强大,设计这个软件包的初衷是采用统计的方法来处理fMRI,PET和SPECT的数据。
用SPM进行数据处理分析过程主要分为两大部分:
预处理过程和统计分析过程。
需要注意的是,静息态、任务态和DTI数据的预处理大致框架一致,但具体步骤不同,本教程主要讲任务态数据处理。
数据预处理主要包括三个大框架:
(1)Convertdicomfilestohdrfilesandimgimages;
(2)Temporalprocessing,即SliceTiming;(3)Spatialprocessing,包括Realign、Normalize和Smooth。
具体步骤下面有讲。
统计分析过程包括:
个体分析和组分析。
使用Specify1stlevel做单个被试(singlesubject)分析;使用Specify2ndlevel做组分析(groupanalysis)。
先写一下SPM8的安装:
有必要说一下SPM实际不是一个独立的软件,它相当于一个用Matlab程序编写的工具箱,必须依赖Matlab的环境完成其功能。
言归正传,首先将下载好的SPM8程序包导入Matlab,复制整个spm8文件夹到MATLAB的安装路径:
MATLAB\R2009a\toolbox\下。
然后运行Matlab,在其主窗口选择File->setpath->AddwithSubfolders->spm8->save->close。
设置完成后在Matlab中执行命令>>spmfmri。
这样出现了spm8的操作界面(如下图),这也表示spm8安装成功!
我们称左上侧的窗口为按钮窗口(buttonwindow),左下侧的窗口为输入窗口(inputwindow),右侧大窗口为树形结构窗口或图形窗口(TreeBuildingWindoworthegraphicswindow)。
一、数据准备(先设置数据输入和输出目录,再转换数据格式)
为方便后续的数据处理,如果数据分散处理后整合,建议所有处理数据路径保持一致,要统一路径。
如原始DICOM图像放在rawdata文件夹中,data文件夹存放转换后的功能像,data3D文件夹中存放转换后的结构像。
处理前首先要采用数据转换软件将dicom数据转换成SPM解析格式,转换时格式请选择NIfTI,可用SPM输入面板中的DiCOMImport模块转换,也可以采用专门的转换软件,如MRIcovert。
然后进行数据预处理,预处理结束后到matlab安装目录中备份spm*.ps文件,其中包含了空间校正和标准化的信息,然后进行建模分析。
格式转换后data文件夹(功能像)中会有多对(和TR的个数一样).img(图像数据)和.hdr(矩阵数据);data3D文件夹中只有一个.img和.hdr文件。
二、数据预处理流程
0、预处理的workflow
1)DICOMtoNIFTI(详见核磁数据格式转换)
2)DeleteImages
3)SliceTiming
4)Realign
5)Normalize:
①NormalizebyusingEPItemplates,即使用公共的EPI模版来进行空间标准化,这样的话就用不到T1结构像,也就不需要对T1像进行Coregister和Segment;
6)②NormalizebyusingT1imageunifiedsegmentation,即用T1像来进行空间标准化,这样的话需要用到T1结构像,所以需要在normalize前先对T1像进行Coregister和Segment,换句话说就是用coregisteredandsegmentedT1像来进行空间标准化。
另外,如果以后希望把功能激活图像叠加到结构像上,那么结构像也需要做一次空间标准化。
Parametersfiles和功能像的normalize一样,也选择在segment中生成的空间标准化参数文件(批处理中选择Subj→MNI)。
Imagestowrite选择在segment中场强校正后的结构像。
这里的voxelsize要设置结构像的大小,也就是[1,1,1]。
7)Smooth
8)Detrend
9)Filte
1、SliceTiming时间层校正
SliceTiming用来校正1个volume中层与层之间获取(采集)时间的差异,对事件相关设计的实验尤为重要。
我们在按钮窗口中的预处理面板中点击“SliceTiming”,将出现一个对话框,修改其中参数:
Data:
New:
Session
Session:
选择你要处理的数据,如文件夹data中的所有数据
NumberofSlices:
我们输入每祯图像的层数,如“32”(可以在spm8->Display->data:
.img->done->Dimensions:
64*64*32中查看)
TR:
我们输入重复时间,一般为2秒,我们输入“2”
TA:
是每祯图像获取第一层开始到获取最后一层图像的时间间隔,TR-TR/nslice,可直接输入公式,如我们输入“2-2/32”
Sliceorder:
我们输入“1:
2:
312:
2:
32”(图像是隔层扫描所得到的)。
指定层获取顺序的层次序参数是一个含N个数的向量,这里N是每个volume所含的层数。
每一个数表示该层在图像(volume)中的位置。
向量内的数字排列顺序是这些层的获取时间顺序。
如行向量[13579111315171921232524681012141618202224](在Matlab中可表示为[1:
2:
25,2:
2:
25])
ReferenceSlice:
我们输入“31”。
选择参考层,通常选择nslice/2,如25层时选择13层作为参考层。
FilenamePrefix:
是指新生成的图像前加何标记,一般采用默认设置。
默认为a
最后点击面板上方的向右的绿色三角即开始运行。
运行完后将会生成一系列a*.img文件,这就是时间校准后的数据。
注意:
很多研究者容易将时间校准和空间校准顺序颠倒,一般的观点是如果图像获取是隔层(interleaved)进行的,如1、3、5、7、9、2、4、6、8、10,则要先进行slicetiming再进行realign,如果图像各层是连续(sequential)获取的,如1、2、3、4、5、6、7、8、9、10,则要先进行realign再做slicetiming。
做完了SliceTiming,接下来就该进行头动校正了。
2、Realignment头动校正
即使我们对被试的头部做了很好的固定,在实验过程中,被试也会不由自主的有一些轻微的头动,这在fMRI实验中尤为明显。
这一步就是把一个实验序列中的每一帧图像都和这个序列的第一帧图像按照一定的算法做对齐,以矫正头动。
目的:
如果在容许的头动范围内,可以使用一定的算法校正信号,使其靠近真实值,如果超过了这个规定的范围,则必须剔除这组数据。
头动范围(CheckRealign):
平动≤and旋转≤[严老师观点]
我们在预处理面板校准选项中选择“Realign(Est&Res)”,出现一个参数设置对话框。
过程:
realign:
estimate+reslice
Data:
New:
Session,然后选中data下出现的“Session”选项。
点击“SpecifyFiles”,用spm文件选择器选择刚做完时间校准的全部图像(a*.img)。
FilenamePrefix:
默认为r
其余选项采用默认设置,点击上方绿色的三角开始运行。
做完这一步,能给出该序列中被试的头动情况,以作为是否放弃该数据的依据,如果头动超过1个voxel(功能图像扫描矩阵一般是64*64,则体素的大小为(FOV/64)*(FOV/64)*(层厚+层间距)),则要考虑放弃该时间点数据。
该程序利用最小二乘法(leastsquaresapproach)原理和含6个参数(刚体模型)的空间变换,对从一个被试获取的时间序列进行校正。
用户可指定某个volume作为随后volumes的参考。
可以是第1个volume,也可选择比较有代表性的volume(更明智的选择),例如选择磁场相对稳定的第4个volume。
校正信息(头动信息)将在结果窗口(GraphicsWindow)显示。
每个Session的校正信息将存储为rp*.txt,其中*为Session数据集名称。
另外,头动校正信息将以plot图形显示。
如下图:
translation图表示被试头部在X,Y,Z三个方向的平移,分别用蓝,绿,红三种颜色表示。
rotation图表示被试头部在实验过程当中绕X(L-R),Y(A-P),Z(S-I)三条轴的转动角度。
横坐标代表这个序列所采集的所有图像,纵坐标表示的是偏移量和偏转角度,分别以毫米和度为单位。
采用SPM8,头动信息和空间标准化的图形文件将以spm_“data”.ps的形式保存于matlab的工作目录下,如我们是2009年4月30日处理的数据,则将以文件存于matlab的work目录下。
当然也可以将生成的图像保存成.jpg格式:
File->SaveAs->.jpg
说明:
①matlab中如何查看头动范围
打开rp_af*.txt文件,前3列为平动数据、后3列为旋转数据;
在matlab中输入命令:
b=load(‘rp_af*.txt’);%----[载入头动数据文件]
c=max(abs(b));%---[取b值的绝对值的最大值,表示找出每列的最大值]
c(4:
6)=c(4:
6)*180/pi%---[4-6列为转动,将以弧度为单位的数值转化为以角度为单位的值,pi表示π]
②运行结束后将生成一对mean*(.img和.hdr)文件(平均脑)、一个rp_*.txt文件(头动参数文件)及若干对r*(.img和.hdr)文件。
3、Coregister配准
对于单个被试的研究,往往是通过在高分辨率结构图像上叠加激活区来精确定位功能区,也就是coregistration。
目的:
上述头动校正的求解参数仅对同一被试的同一种成像方法(或成像模态modality)有效,对于同一被试的不同成像方法(功能像/结构像)所得图像,由于它们之间没有足够的可比性,不可以直接用头动校正的方法来求解参数,这时需要用图像配准的方法来做空间校正。
具体为将所有的图像同一个volume对齐,对功能像与结构像做一个信息的变换。
为什么选择Coregister里面的(Estimate)呢?
因为我们相信对于被试,功能像与结构像是线性相关的平动与转动,而不是扭曲的。
由功能像向结构像去配,对于结构像中的hdr文件存有一个矩阵,而这个矩阵就包含了功能像的信息。
只需要将旋转的矩阵写入到hdr文件中,不需要生成新的文件,也就是对3D文件做一个刚体的变换,变换到功能像空间里。
过程:
在spm8中选择Coregister(Estimate):
ReferenceImage---[选择头动校正后生成的mean*.img文件]
SourceImage---[选择3D文件,即data3D文件夹中的.img文件]
其余选项采用默认设置,点击上方绿色的三角开始运行。
说明:
Sourceimage与Referenceimage的关系,可以认为是将结构像向以mean开头的功能像里估计,估计结束后就可以将旋转矩阵写入到精度更高的3D文件当中,最后做出的图像的分辨率就会很高。
(结构像比功能像清晰很多)
4、Segment分割
目的:
要将被试的结构像配到功能像里,就需要将结构像进行分割。
一般分割为灰质、白质和脑脊液三部分。
过程:
在spm8中选择Segment
Data---[选择配准后的3D图像,即data3D文件夹中的.img文件]
.Cleanupanypartitions----Lightclean
AffineRegularisation---[选择欧洲人或东亚人大脑模板]如:
ICBMspacetemplate-Europeanbrains
其余选项采用默认设置,点击上方绿色的三角开始运行。
5、Normalize空间标准化
对于多个被试的研究,由于不同人的脑的尺寸、形态各不相同,一般认为需要一个模板,把所有被试的功能统计图叠加到标准模板上,这叫做normalize
目的:
将不同容积及形状的被试的大脑放到一个标准空间里,用一个公用的坐标系去描述具体的一个位置,例如有十个被试,他们脑袋的形状和大小都不一样,如果你让他们进行了一个激活了某个脑区的情绪实验,然后你想把该脑区计算出来并进行呈现,那么你就需要一个标准的脑模版来衡量这十个被试的大脑空间位置以实现准确的空间定位。
方法:
①.NormalizebyusingEPItemplates;
②.NormalizebyusingT1imageunifiedsegmentation。
注意:
只有使用方法②时才需要对结构像进行coregister和segment,方法①用不到T1像,所以不需要对T1像进行预处理。
先说第①种方法的操作:
在预处理面板标准化选项中选择“Normalise:
Estimate&Write”,出现一个对话框,我们做如下设置:
选中“data”——“newsbject”,在data下新出现的“subject”选项中作如下设置,“sourceimage”选择realignment生成的“mean*.img”文件,“imagetowrite”选择realignment生成的“.img”文件,“templateimage”我们选择“”,其余采用默认设置,点绿三角运行。
或用第②种方法的操作:
用3D像文件做分割,用分割的信息去做空间标准化,分割要做三个小步骤,被试既有结构像,又有功能像,我们要用结构像分割所得到的信息来做功能像的空间标准化。
首先,要保证功能像与结构像在同一个位置。
所以,需要做一次coregister,即配准。
先把被试的结构像变换到被试的功能像空间里,然后将变换到功能像里的结构像分割所得到的相应信息运用到功能像里。
结构像在功能像空间里被分割后,会得到一个矩阵。
这个矩阵就会告诉我们如何从被试的功能空间去往标准空间。
也就是MNI空间。
我们可以根据这些信息应用到功能像里,写进去以后就会自动配准到标准空间里去。
Normalise:
Write
Data/newsubject/ParameterFile---[参数文件,选择3D文件夹下segment后的文件,有2个文件,分别是和,前者表示由功能像到标准化空间去配,而后者正相反,所以选择前者。
]
ImagetoWrite---[要写入的文件,选择3D文件下的ms*.img文件]
Boundingbox---[默认的偏小,可以改为-90-126-729090108](相当于把整个大脑装在这个“盒子”里)
Voxelsizes—[改为333](不能为111)
其余参数默认即可。
如果以后希望把功能激活图像叠加到结构图像上,那么结构图像也需要做一下空间标准化。
再次Normalise,做完头动校正后,以平均脑文件做一次标准化。
Normalise:
Write
Data:
newsubject
ParameterFile---[参数文件,选择3D文件夹下segment后的文件]
ImagetoWrite---[要写入的文件,选择头动校正后以r开头的.img文件]
Boundingbox---[默认的偏小,可以改为-90-126-729090108]
Voxelsizes—[改为333]
FilenamePrefix:
默认为w
其余参数默认即可。
点击上方绿色的三角开始运行。
说明:
运行完毕会生成若干对waf*打头的img/hdr文件,同时还会生成一个mean*文件(存放变换参数)。
6、Smooth平滑
目的:
将功能像文件平滑
过程:
(1)在spm总的按钮窗口中,选择Smooth按钮,会弹出批处理对话框。
(2)在这一步有两个参数必须要进行设置:
imagestowrite,选择在上一步生成的所有空间标准化之后的以w开头的功能像文件;平滑的“全宽半高FWHM”,将默认的“[8,8,8]”,改成“[6,6,6]”。
这里的6,是我们所采用数据的体素大小的两倍。
其余默认。
点击上方绿色的三角开始运行。
说明:
高斯平滑后会生成若干对swaf*打头的img/hdr文件。
数据预处理过程到此完成。
注意!
最容易出问题的地方在于:
1)没有在每一步之后检查生成的图像是否有问题(主要为头动参数和空间标准化图像);
2)没有按照自己数据适合的方式进行预处理。
对于图像检查,可以参考;
3)对于预处理方式选择:
a.如果是Block设计,不需要做slicetiming。
如果是事件相关设计,则需要做;b.在事件相关设计中,如果BOLD功能图像的扫描方式是间隔采样,先做slicetiming,后做realignment;如是顺序采样,则先做realignment后做slicetiming;c.当扫描参数为长TR(TR>3sec)时,不推荐做slicetiming;d.头动过大的剔除原则:
按照在一个run内不超过一个voxelsize的标准。
这是一个普遍承认的标准。
当然具体研究有具体的标准,需要具体对待;e.平滑参数一般选择为2-3倍的voxelsize。
三、GLM模型和Specify1st-level
如前所述,用SPM进行数据处理分析过程主要分为两大部分:
预处理过程和统计分析过程。
预处理过程已经在前两篇里完成啦,接下来是统计分析过程。
参数估计:
在spm8中选择Specify1st-level,即以前版本的“fMRImodel”。
spm5和spm8使用Specify1stlevel做单个被试(singlesubject)分析;使用Specify2ndlevel做组分析(groupanalysis)。
这里只有Specify1stlevel。
在真正的统计分析之前,必须先对SPM的统计分析基础——GLM模型有一定的了解。
广义线性模型(generalizedlinearmodel,GLM)是简单最小二乘回归(OLS)的扩展,在OLS的假设中,响应变量是连续数值数据且服从正态分布,而且响应变量期望值与预测变量之间的关系是线性关系。
而广义线性模型则放宽其假设,首先响应变量可以是正整数或分类数据,其分布为某指数分布族。
其次响应变量期望值的函数(连接函数)与预测变量之间的关系为线性关系。
因此在进行GLM建模时,需要指定分布类型和连接函数。
理论上,经过预处理的数据可以直接进行统汁分折,但是这样做会有很大的局限胜。
我们需要考虑到实际信号(探测到的神经生理响应)包含有多方面的因素。
如果我们可以把它分成感兴趣的部分、不感必趣的部分以及误差项,这样以来,一方面可以用于复杂问题的研究,另一方面使有用信息更加突出。
为了达到这个目的,SPM采用一般线性模型(GLM)对采集到的信号进行统计分析。
通俗的说,GLM基于这样一种假设:
每个像素上的实验数据(用Y来表示,同一任务的时间序列或不同任务序列的),是一些未知参数(用x表示)的线性组合(用β表示)。
这些未知参数与任务或时间有关、但与具体脑区(像素)无关的已知参数.它组成的矩阵通常又称为设计矩阵。
数学表达式为:
Y=β*X+ε,其中ε表示误差。
在经过GLM描述之后,分析的对象就发生了转变。
原本是对Y的统计分析,现在转向了拟合得到的β。
SPM得到的脑功能激图实际上就是根据对参数β的统计推断而得到的。
那么,对参数β的统计推断究竟是怎么一回事?
首先,是检查设计矩阵的正确性;
其次,使用最小二乘法法拟合出参数β使得误差和最小;
再次,对β系数做t检验或者F检验;
最后,根据t检验或者F检验统计量和阈值,对β系数做统计推断。
根据t或F值以及相应的阈值,可以得到该阈值对应置信度的脑功能激活图。
由于它是对模型的参数做统计分析而得到的,所以被称为统计参数图。
与阈值对应的t或F值记为SPM{t},SPM{F}。
SPM还提供了与t或F值及它们相应的自由度所对应置信度的{0,1}正态分布的参数值z,这样也得到关于z图像,记为SPM{z}。
此外,根据这些激活图,SPM还可以输出脑血流等生理信号的响应曲线以及不同状态的响应特性等。
一、Modelspecification建立模型
我们选择“Specify1stlevel”,出现一个fMRIModelspecification对话框,设置参数如下:
需要设置的参数
具体方法
Directory
建议建立results文件夹来单独存放一阶分析的结果。
Timingparameters
Unitsfordesign:
下面的onsettime是以秒为单位还是以TR的倍数为单位。
即如选scans,其后durations的时间按TR的倍数计算;如选seconds,则以秒为单位计算。
Interscaninterval(扫描间隔时间):
TR是多少秒
Microtimeresolution---[通常默认为16,除非TR很长]与陈昌明师兄所说不一致
Microtimeonset---[在ER设计中,slicetiming时,referenceslice的扫描次序,例如referenceslice为第25层,是第13个扫描的,这里就填13]与SPMmanual的提示不一致
Data&Design
存在很多子选项需要设置,务必细心!
有几个run就Session几次,就会生成几个Subject/Session子菜单。
【Scans】:
该run预处理后的以sw开头的文件;
【Condition】:
有几种条件(这里的条件指的是呈现的刺激图片或声音)就定义几个。
然后输入条件的名字和相应的onsettime。
Onsets代表任务刺激启动的扫描数(如1:
14:
70,代表任务从第1个TR开始,每14个TR为一个周期,共70个TR)。
在Onsets中输入数组T:
2T:
M,这里输入的数组实质是每个cycle中task状态的起始volume的序号(注意编号从0开始)。
T:
2T:
M在Matlab中就是一个数组,是T,3T,5T,……。
注意:
可以建立Multi-conditionfiles以避免输入每个run参数的苦恼。
【Durations】:
ER设计填0、block设计填刺激任务的持续时间,注意前面Unitsfordesign的选择!
!
Duration为block的长度,如果是事件相关设计,duration就输入0。
Multiregressors
输入被试的头动文件,rp*.txt
Modulederivatives
ER设计选第二项,block设计默认
其他参数默认。
设置完毕后点击绿三角运行。
这样将会在开始选择的目录中生
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- spmfMRI 数据处理 修订版