南沙免费网站建设,欧美品牌网站设计,建筑二级建造师培训机构,微网站app制作1. 从零开始#xff1a;认识你的fMRI数据与SPM 你好#xff01;如果你是一位刚接触功能磁共振成像#xff08;fMRI#xff09;数据分析的研究生或科研新手#xff0c;面对一堆以DICOM格式存在的、看似神秘的数据文件夹#xff0c;感到无从下手#xff0c;那么你来对地方…1. 从零开始认识你的fMRI数据与SPM你好如果你是一位刚接触功能磁共振成像fMRI数据分析的研究生或科研新手面对一堆以DICOM格式存在的、看似神秘的数据文件夹感到无从下手那么你来对地方了。我完全理解这种感受十年前我第一次打开SPM软件时也是一头雾水感觉每个按钮背后都藏着深奥的玄机。但别担心数据预处理就像给数据“洗澡”目的是洗掉那些不是真正大脑活动的“灰尘”和“干扰”最终得到一份“干净”的、可以用来回答科学问题的数据。这个过程虽然步骤多但每一步都有明确的逻辑和操作跟着这份“保姆级”指南你完全可以自己走通。首先我们得搞清楚手里有什么“食材”。通常你从扫描仪上拿到的原始数据分为两大类结构像和功能像。你可以把它们想象成盖房子需要的两种图纸。结构像就像一张非常清晰、高分辨率的房屋静态结构图它详细描绘了大脑的解剖结构比如灰质、白质在哪里。这份数据通常在一个单独的文件夹里扫描时间短文件数量少往往只有一个3D体积。在后续的预处理中我们常用它作为“地图基准”。而功能像则是我们要研究的核心它记录的是大脑在完成任务或处于静息状态时血氧水平依赖信号随时间的变化。这就像一套连续拍摄的、有点模糊的房屋热力图显示了哪个房间脑区在什么时候“更活跃”。功能像数据量巨大是一个包含几十甚至几百个时间点Time Points的4D数据3D空间1D时间。我们所有的预处理主要就是围绕功能像展开目的是让这些“热力图”更准确、更可比。那么为什么非要进行这一系列看似繁琐的预处理呢因为原始数据里“噪音”太多了。比如扫描时被试不可避免的轻微头动Realignment要解决的问题、大脑不同层面不是同时采集的时间差Slice Timing要解决的问题、不同被试大脑形状和大小的个体差异Normalisation要解决的问题等等。不处理这些我们看到的“激活”很可能只是头动产生的伪影根本无法进行有效的组分析或得出结论。SPMStatistical Parametric Mapping就是帮助我们完成这套“清洗”流程的经典工具之一它基于Matlab平台拥有强大的社区和详细的文档。在开始动手前请确保你的电脑上已经安装了Matlab和SPM12建议使用较新版本。安装SPM其实就是把下载的工具包解压到一个文件夹然后在Matlab中通过“设置路径”把这个文件夹及其子文件夹添加进去。下次启动Matlab在命令窗口输入spm并回车那个熟悉的SPM菜单界面就会弹出来你的旅程就正式开始了。2. 第一步整理数据与格式转换万事开头难但第一步往往是最简单的——整理你的数据。我强烈建议你建立一个清晰、规范的文件夹结构这会让后续每一步都省心很多。我在自己的项目里通常会这样操作在项目根目录下创建一个名为Data或RawData的文件夹。在Data文件夹内创建两个子文件夹分别命名为FunImg存放功能像数据和T1Img存放结构像数据。将从扫描仪拷贝出来的原始DICOM文件分别放入对应的文件夹。通常技术人员会给你两个序列的数据你需要根据序列描述或文件数量来区分结构像文件少功能像文件多。Attention重要提醒在fMRI研究中有一个几乎成为惯例的操作——剔除前几个时间点的数据。这是因为扫描刚开始时磁场还未达到完全稳定信号波动很大。通常我们会手动剔除前10个时间点TR的数据。这意味着在后续处理功能像时我们使用的不是全部时间点。你需要在记录本上记下“功能像数据从第11个Volume开始使用”。这个操作目前需要在数据转换后手动选择文件时进行SPM不会自动帮你完成。现在数据整理好了但我们还不能直接用。因为SPM主要处理的是NIfTI.nii格式的数据而扫描仪直接产出的是DICOM格式。所以我们需要进行格式转换。打开Matlab输入spm回车调出SPM菜单。在SPM的图形界面GUI左上角选择fMRI模块。这时你会看到三个主要面板左上是指令面板Toolbox左下是任务进度显示Interactive Window右边是图形显示窗口Graphics Window可以用来查看图像。转换格式的路径是Toolbox-DICOM Import。点击后会弹出一个新的配置窗口。Data 这里我们选择DICOM files。点击后会弹出文件选择框。导航到你刚才创建的T1Img文件夹选中里面所有的DICOM文件可以全选然后点击Done。注意结构像和功能像需要分开两次进行转换。我们先处理结构像作为示例。Output directory 这里选择转换后的.nii文件保存到哪里。我习惯在Data文件夹下再新建一个Nifti文件夹里面同样包含FunImg和T1Img子文件夹专门存放转换后的数据。这样原始数据和处理中的数据分开非常清晰。选择好输出路径后点击Done。检查两个选项都设置无误后点击右下角的Run按钮。转换过程中左下角的窗口会显示进度。完成后去你指定的输出文件夹查看应该会生成一个以s开头的.nii文件例如sSubject01_T1.nii。这里的s前缀是SPM自动加上的代表结构像。接下来重复完全相同的步骤处理功能像数据在DICOM Import中Data选择FunImg文件夹下的所有DICOM文件Output directory选择为Nifti/FunImg然后Run。转换完成后你会看到FunImg文件夹下生成了一系列以f开头的.nii文件例如fSubject01_Run1_0001.nii,fSubject01_Run1_0002.nii……文件数量等于你功能像扫描的Volume数量记得我们之后要手动跳过前10个。3. 核心预处理步骤详解上时间与空间对齐数据转换完毕真正的预处理流水线开始了。这一步的目标是解决数据在时间和空间上的错位问题。3.1 Slice Timing解决“不同步的快照”想象一下你要给一个三层蛋糕拍照但你的相机一次只能快速拍一层拍完第一层等蛋糕稍微转一下再拍第二层再转一下拍第三层。虽然你拍得很快但三层照片并不是在同一瞬间拍下的。fMRI扫描也是类似原理多层顺序采集它是一层一层地获取大脑图像获取完所有层一个Volume再开始下一个时间点。这就导致同一个Volume内顶层和底层的数据在时间上差了几乎一个TR重复时间。Slice Timing时间层校正就是为了矫正这个时间差。它通过插值算法将所有层的数据“对齐”到同一个参考时间点上通常是中间层就好像把所有层的拍摄时间“同步”了一样。在SPM中操作在Toolbox中选择Slice timing。Data: 点击New: Session然后选中这个新会话。接着点击Data选择你转换好的功能像.nii文件f*.nii。关键点来了由于我们要剔除前10个时间点在这里不要全选所有f文件。你需要从第11个文件开始选例如如果你的功能像有200个时间点就选择从f..._0011.nii到f..._0200.nii的文件。Number of slices: 输入你数据的层数。这个信息可以在扫描协议里找到或者用SPM的Display功能查看在Toolbox选Display打开任意一个功能像文件在Graphics窗口的标题栏会显示 “dimensions: X x Y x Z”其中Z就是层数。TR (seconds): 输入重复时间常见的是2秒或2.5秒请根据你的实验设置填写。TA: 这是获取所有层所需的时间计算公式是TR - TR/NSlices。例如TR2s层数32那么TA 2 - 2/32 1.9375。Slice order: 这是最容易出错的地方它指定了扫描时采集各层的顺序。最常见的两种方式是隔层升序 (Interleaved Ascending): 例如32层顺序可能是 2:2:32, 1:2:31。意思是先扫所有偶数层2,4,6,...,32再扫所有奇数层1,3,5,...,31。顺序升序 (Sequential Ascending): 从第1层扫到第32层即 1:1:32。你必须从扫描技术人员或协议文档中确认这个顺序填错会导致严重的校正错误。Reference Slice: 参考层通常选择中间层。如果你的采集顺序是隔层且层数为偶数参考层通常是最后一层例如32层中的第32层。如果是顺序采集则选择中间层序号如32层则选16。其他参数保持默认点击Run。运行成功后在你的功能像数据文件夹里会生成一系列以af为前缀的新文件如afSubject01_Run1_0011.nii。这个a前缀代表“已进行时间对齐”。3.2 Realign (Estimate Reslice)给晃动的脑袋“稳像”即使被试被固定得很好在长达几分钟甚至十几分钟的扫描中微小的头动也无法避免。Realignment头动校正的目的就是把一个时间序列里所有的Volume都与第一个Volume或某个参考Volume在空间上对齐补偿这些头动。在SPM中我们使用Realign: Estimate Reslice这个模块它一次性完成估计头动参数和重新采样图像两步。在Toolbox中选择Realign: Estimate Reslice。Data: 新建一个Session然后选择上一步生成的af*.nii文件即经过时间校正的数据。Estimation Options: 这里Num Passes通常选择Register to mean。意思是先所有图像对齐到第一幅然后生成一个平均图像再所有图像对齐到这个更清晰的平均图像通常效果更好。Reslicing Options:Resliced images选择All Images Mean Image。这很重要它会生成对齐后的所有图像以raf为前缀以及一个平均图像以mean为前缀。mean图像非常有用它代表了整个功能像序列的平均大脑形态后续的配准步骤会用到它。点击Run。运行结束后除了生成raf*.nii和meanaf*.nii文件SPM的Graphics窗口还会自动弹出一个头动参数报告图。这个图分为上下两部分分别显示平移Translation单位毫米和旋转Rotation单位弧度的六个参数随时间的变化。这是你进行数据质量检查的第一个关键点通常我们认为在扫描过程中头动超过2毫米或2度的数据其质量就可能存在问题需要谨慎对待甚至在极端情况下考虑剔除该被试的数据。你可以把这个图保存为图片File - Save as留作记录。同时在数据文件夹里你会找到一个名为rp_af*.txt的文本文件。这里面以矩阵形式存储了每个时间点的6个头动参数前3列平移后3列旋转。你可以用Matlab或Excel打开它进行更定量的分析。例如在Matlab中加载这个文件motion_params load(rp_afSubject01.txt);然后计算最大绝对头动max_motion max(abs(motion_params));。注意旋转参数的单位是弧度如果需要转换成角度可以乘以180/pi。4. 核心预处理步骤详解下匹配标准大脑现在我们手头的数据已经在时间上对齐了在个体空间内也通过头动校正对齐了。但是每个被试的大脑形状、大小、朝向都不同。为了进行组分析比较多个被试我们必须把所有人的大脑都“变形”到一个统一的标准空间里。这就是空间标准化Normalisation。在此之前我们通常需要一个中间步骤——配准Coregistration。4.1 Coregister为功能像找到结构像“地图”我们的功能像raf目前处于它自己的“原生”空间而高分辨率的T1结构像s也处于它的原生空间。虽然来自同一个被试但由于扫描序列和参数不同这两个图像在空间上并没有精确对齐。Coregister的目的就是把功能像的平均图像meanaf作为桥梁去匹配结构像找到两者之间的空间变换关系。在Toolbox中选择Coregister: Estimate。Reference Image: 选择功能像的平均图即上一步生成的meanaf*.nii。把它作为固定的参考图像。Source Image: 选择该被试的结构像即s*.nii。把它作为需要移动去匹配参考图像的源图像。其他参数通常保持默认点击Run。SPM会计算一个刚体变换旋转和平移将结构像“贴”到功能像的平均脑上。运行后Graphics窗口会显示配准结果你可以直观地检查对齐效果例如灰质边界是否吻合。注意这一步并没有生成新的图像文件它只是计算并保存了一个变换矩阵存储在结构像文件的头信息中供后续步骤使用。所以你的文件夹里不会出现新的c或r开头的文件。4.2 Segment把结构像“拆解”开为了进行更精确的空间标准化SPM需要知道大脑里哪些部分是灰质、白质和脑脊液。Segment分割模块利用组织概率图自动将你的T1结构像分割成这三个组织成分同时还会计算一个非常重要的东西——空间标准化所需的变形场Deformation Field。在Toolbox中选择Segment。Data: 选择已经与功能像配准好的那个结构像文件还是s*.nii但其头信息里已经包含了配准矩阵。在Writing Options部分有两个关键输出务必勾选或设置Save Bias Corrected: 会生成一个经过偏场校正的结构像前缀为m如msSubject01_T1.nii。这个图像信号更均匀质量更好。Deformation Fields: 选择Forward。这会生成一个变形场文件前缀为y如y_sSubject01_T1.nii。这个文件包含了将你这个特定大脑变形到标准MNI模板所需要的所有空间映射信息是下一步标准化的“钥匙”。点击Run。运行后你会看到生成了一系列文件其中对我们最重要的就是y_*.nii变形场和m*.nii校正后的结构像。同时还会生成c1,c2,c3开头的文件分别代表灰质、白质、脑脊液的组织概率图可用于后续的调制或质量控制。4.3 Normalise (Write)把大脑“放进”标准模板有了变形场y_文件我们现在可以把功能像和结构像都标准化到通用的MNI蒙特利尔神经研究所标准空间了。这样不同被试的同一个坐标点比如 [0, 0, 0]就对应着大脑中大致相同的解剖位置。第一步标准化功能像在Toolbox中选择Normalise: Write。Deformation Field: 选择上一步生成的变形场文件y_*.nii。Images to Write: 选择所有经过头动校正的功能像即raf*.nii文件。Writing Options中有两个参数需要调整Voxel sizes: 这是标准化后图像的体素大小。原始功能像体素通常较大如 3.5x3.5x3.5 mm³。标准化时我们通常重采样到各向同性的较小体素以平衡分辨率和计算量。常用设置是 [3 3 3]。Bounding box: 这是定义输出图像空间范围的矩阵。常用默认值为 [-90 -126 -72; 90 90 108]这个范围足够覆盖标准MNI大脑模板。点击Run。运行后会生成以wraf为前缀的功能像文件如wrafSubject01_Run1_0011.nii。w前缀代表“已写入标准化空间”。第二步标准化结构像为了后续可视化比如把功能激活叠加到个体结构像上我们通常也把校正后的结构像标准化。再次选择Normalise: Write。Deformation Field: 同样选择y_*.nii。Images to Write: 这次选择偏场校正后的结构像即ms*.nii文件。Writing Options中的Voxel sizes和Bounding box设置与上一步相同[3 3 3] 和默认边界框。点击Run。运行后会生成以wms为前缀的结构像文件如wmsSubject01_T1.nii。5. 最后一步Smooth平滑与质量检查恭喜你来到了预处理流水线的最后一站Smooth平滑的目的是什么主要有两个一是满足后续统计模型如GLM中关于数据正态分布的假设二是提高信噪比通过让相邻体素的信号“平均”一下来抑制随机噪声同时使得不同被试间由于细微解剖差异导致的激活区域错位得到一定补偿。你可以把平滑想象成对图像施加一个“高斯模糊滤镜”。这个滤镜的宽度由FWHM半高全宽参数决定单位是毫米。FWHM越大平滑程度越高。在Toolbox中选择Smooth。Images to Smooth: 选择标准化后的功能像即wraf*.nii文件。FWHM: 输入平滑核的大小。这是一个需要根据你的研究设计和数据情况来选择的参数。常见的设置是 [6 6 6] 或 [8 8 8]。[6 6 6] 是一个比较中庸且广泛使用的选择能在提高信噪比和保留空间分辨率之间取得较好平衡。如果你的体素本来就比较大如4mm可以考虑用 [8 8 8]。注意这里的三个数字代表X, Y, Z三个方向通常设为相同值各向同性平滑。点击Run。运行完成后最终用于后续统计分析的数据就诞生了它们是以swraf为前缀的文件如swrafSubject01_Run1_0011.nii。这个s前缀代表“已平滑”。至此完整的SPM fMRI数据预处理流程就结束了。别忘了做质量检查预处理不是点完按钮就万事大吉。作为一个负责任的研究者你必须检查每个关键步骤的输出是否合理。头动报告回顾Realign生成的.ps图或rp_*.txt文件确保所有被试的头动都在可接受范围内。配准检查在SPM的CheckReg工具中同时打开标准化后的功能像平均图可以对swraf文件取平均和标准化后的结构像wms看看它们是否在MNI空间中对齐良好。平滑效果用Display功能打开平滑前wraf和平滑后swraf的同一个Volume直观感受一下平滑带来的变化。预处理参数如平滑核大小、标准化体素大小的选择并非一成不变它们会影响最终结果。在正式分析前用小部分数据测试不同参数或者参考领域内同类研究的常用设置是一个好习惯。记住预处理的目标是减少噪音和差异而不是引入偏差。当你拿到那组整齐的swraf文件时你就可以充满信心地迈向更激动人心的统计分析阶段了。