SPM数据预处理【“傻瓜”操作版】

本文详细介绍了使用SPM进行fMRI数据预处理的步骤,包括数据转换、SliceTiming时间切片矫正、头动矫正(Realignment)、Coregister配准、Segment图像分割、Normalization标准化和Smooth图像平滑等关键步骤,旨在帮助初学者理解和掌握数据预处理流程。
摘要由CSDN通过智能技术生成

如有错误,欢迎指正,共同学习!

本文用于记录自己学习,自己编写了spm"傻瓜文档”,分享给刚入门有需要的同学,如有错误,欢迎指正,共同学习、进步。本文参考了spm官方手册,老师给的一些资料,以及本论坛里已有的文章,如有侵权请及时联系进行修改~

Q&A

1.为什么要进行数据预处理

原始的fMRI数据存在许多与实际大脑活动无关的干扰因素,因此需要进行预处理以消除这些干扰,从而提高数据的质量和解释能力。

2.数据分为几类

分为结构像和功能像。

结构像文件命名为3Ddata,功能像命名为data。

3.功能像和结构像是分开进行数据预处理吗?

SPM中一起进行处理的。

4.数据的预处理都分为几步

转格式、Slice timing、Realignment、Coregister、Normalise、Smooth。

5.每一操作后,生成数据前缀表达的含义

预处理操作步骤

1.创建数据文件夹

创建一个Data文件夹,里面两个子文件夹分别放结构像和功能像的数据。

 

Attention:

注意在SPM中做数据预处理需要手动剔除前十个时间点的数据!

2.转格式

原始数据是DICOM格式,需要转为NII格式在SPM中进行操作;

在Matlab命令窗口中,输入“spm”以打开spm。

​出现spm操作系统,选择fMRI。

​出现以下界面:

左上角的界面是操作板,在这上面选择功能进行数据预处理;

左下角的界面是用来看每一个操作处理的进度条;

右边的界面是可以用来看数据、看脑图,可以使用操作板的“Display”功能,选择所需数据后会在右边的界面上展示脑图和相应的数据。

 

 

此时需要做的步骤是进行数据的转换,选择DICOM Import进行数据的转换。

Attention:

(功能像的格式转换是与结构像一致,需要分别对这两个数据进行格式转换,本步骤以结构像为例)

出现以下界面;

选择DICOM files;

选择Data中3D_data。

选择所有数据,在红框内单击右键,选择“select all”。

选择“select all”后,所有数据会在红色框内,再选择Done。

此时DICOM files中是包含了结构像相应的文件数,check一下和原文件中的数量是否一样;

接下来,选择”Output directory“,这一步是选择转换出来的nii格式输出到哪个文件夹里。

Attention:

首先,这里选择的是结构像的数据为例子,功能像的格式转换步骤与结构像的步骤是一样的;

其次,输出文档选择自己所需存的路径即可,可根据自己习惯单独建立文件夹存数据(这样后续找数据时会方便一些)。

选好输出文档后,选择Done。

DICOM files和Output directory检查无误后,选择蓝色框中的按键,进行格式转换。

点击RUN按钮后,会发现右下角的界面显示进度,当该界面没有进度条显示时,代表转换完成。

数据转换完成后,在之前选择的Output directory中可以看到转换后的nii格式的数据。

Attention:

1.在进行DICOM转NIIFIT后,转换后的文件结构像是以”s”为前缀命名的文件,功能像是以“f”为前缀命名的文件。

2.结构像进行数据转换后,是只有一个文件,见pig1;

功能像的数据转换后是与原文件数量是一样的,见pig2。

pig1:

pig2:

3.Slice Timing 时间切片矫正

原理:Slice Timing 时间层矫正,由于大脑各层数据扫描的时间点不是严格一致的,由于数据少苗一般都是隔层扫描的,导致相邻的两个层获得时间相差比较大,时间层矫正后可以使相邻的两个层的时间相对一致。

步骤

选择“slice timing”。

选择”Data”,建立一个新的Session,选则该Session。

选择data中的已经转换成nii格式的文件,即选择功能像文件中以f为前缀开头的文件;

这里可以红色框中输入f后,enter键一下,在绿色框中就会出现以f开头的文件了,单机右键“select all”即可

选择好数据后“Done”。

​Next 选择“Number of Slices”,它是每帧图像的层数,在绿色框中输入数值,举例的数据是32,根据自己的数据进行输入相应的值。如果不知道自己“Number of Slices”的数值可以使用spm中“display“功能进行查看(具体步骤看下一步)。

Attention:

如果不知道自己“Number of Slices”的数值可以使用spm中“display“功能进行查看;

选择”Display“功能,随机选择一个刚刚转换成nii格式的数据,即以”f“为前缀的文件,选好后”Done“进行查看。

在SPM右边的界面会出现这样的脑图与数据,红框内的就是我们数据的”Number of Slices“。

Next 选择”TR“,它是指重复时间,一般TR都是为2s。

Next 选择”TA“,它是每祯图像获取第一层开始到获取最后一层图像的时间间隔,这个是有公式的,是TR-TR/Number slice。比如我的TR是2,Number slice是32,则是”2-2/32“;

注意,这里的字符都是英文字符!

Next 选择 ”Slice order“,指定层获取顺序的层次序参数是一个含N个数的向量,这里N是每个volume所含的层数。每一个数表示该层在图像(volume)中的位置。向量内的数字排列顺序是这些层的获取时间顺序。举例的数据Slice order是2:2:32 1:2:31。

Next 选择”Reference Slice“,选择中间层作为参考层,这里举例的数据Reference Slice是32。

Next ”Filename Prefix“指新生成的图像前加何标记,一般采用默认设置;

检查绿色框中的数据无误后选择RUN。

Next 跑完后,在data文件中会发现有”af“为开头的文件,Slice Timing做完后会生成”af“为前缀的文件。

4.Realignment头动矫正

原理:

即使我们对被试的头部做了很好的固定,在实验过程中,被试也会不由自主的有一些轻微的头动,这在fMRI实验中尤为明显。这一步就是把一个实验序列中的每一帧图像都和这个序列的第一桢图像按照一定的算法做对齐,以矫正头动。做完这一步,能给出该序列中被试的头动情况,以作为是否放弃该数据的依据,如果头动超过1个voxel(功能图像扫描矩阵一般是6464,则体素的大小为(FOV/64)(FOV/64)*(层厚+层间距)),则要考虑放弃该时间点数据。该程序利用最小二乘法(least squares approach)原理和含6个参数(刚体模型)的空间变换,对从一个被试获取的时间序列进行校正。用户可指定某个volume作为随后volumes的参考。可以是第1个volume,也可选择比较有代表性的volume(更明智的选择),例如选择磁场相对稳定的第4个volume。校正信息(头动信息)将在结果窗口(Graphics Window)显示。

步骤:

单个被试:

选择”Realignment“中的”Realign(Est & Res);

选择Data创建new Session,点击该Session。

选择所有“af”为开头的文件。

选择“Num Passes”中的”Register to mean”。

​Next 选择“Resliced images”中默认值”All Images+Mean Image”;

(如果使用3D像配准的话,此处需要选择All Images+Mean Image,如果只选择Mean Image Only,不会生成以“r”开头的文件)。

参数设置好后RUN,数据跑完后我们spm右边的界面会出现以plot图形显示的头动校正信息,分为Translation与Rotation,可保存为jpg格式,以便后续查看;

一般认为,平动范围≤±2mm,转动范围≤±2degree为有效数据。

输出文件中应该有“mean”开头的nii为文件以及“rp”开头的txt文件,以及raf开头的若干文件。

rp开头的txt文件是保存了头动的参数,其中后三列是头动的角度,但是它是一个弧度值而不是常用的角度值。在Matlab中输入b=load(‘这个文本文件的名字.txt’)→回车;

再输入c=max(abs(b))→回车(取绝对值最大的);

输入c(4:6)=c(4:6)*180/pi→回车(将弧度转换为角度),就会得到六个数值。

5.Coregister配准(使用被试3D像数据配准时做的步骤)

该步骤可以提高图像的分辨率和清晰度。

步骤:

选择spm中Coregister(Estimate)。

选择“Reference Image”,选择data中上一步生成的以“mean”开头的文件。

选择“Source Image”,选择3D数据转换好的nii格式的文件,即以“s”开头的文件。

check设置好的参数,Run。

会生成以下脑图,可保存为jpg格式,以便后续查看。

6.Segment图像分割(使用被试3D像数据配准时做的步骤)

该步骤是将3d结构像分割成灰质、白质、脑脊液。

步骤:

打开“Segment”。

Next 选择Data中的Volume,选择3D中的数据。

Next 选择“Save Bias Corrected”则会生成偏差校准后的结构像文件(前缀是m)。

Next 选择Deformation Fields中的“Forward”,则将分割后的结构像文件标准化到MRI空间中,生成前缀为y的结构像,将用于后续的标准化。

Run后产生以下数据。

7.Normalise标准化(使用被试3D像数据配准时做的步骤)

分为两步

Step1:

目的:将时间层校正和头动校正后的功能像标准化到MNI空间(标准空间)中。

选择Normalise(Write)。

Next 选择Data中的”Deformation Field“;

选择3D中以”y”开头的数据,即选择分割生成的结构像数据。

Next 选择”Images to Write“,选择data中的以”raf“开头的所有文件,即选择经过时间层校正和头动校正的所有功能像数据。

Next 选择”Voxel sizes“,输入改为[3 3 3]。

Next 选择”Bounding box“ 将数据修改为90 -126 -72和90 90 108。

运行数据。

Step2:

目的:将偏差校正后的结构像标准化到MNI空间(标准空间)中,可用于后续将功能像激活叠加在结构像上。

依旧选择Normalise(Write),选择Data中的”Deformation Field“,选择分割生成的前缀为y的结构像数据。

Next 选择”Images to Write“,选择选择经过偏差校正的结构像,即前缀为ms的文件。

Next 选择”Voxel sizes“,输入改为[3 3 3]。

Next 选择”Bounding box“ 将数据修改为90 -126 -72和90 90 108。

运行。

8.Smooth 图像平滑

选择”Smooth“。

选择”Images to smooth“,选择功能像中以”waf“为前缀的文件,即为标准化后的所有功能像;

FWHM:这里指的是半宽全高,可以根据自己的数据进行修改,有人用[4 4 4]、[5 5 5]、[6 6 6],[8 8 8]算是比较大的了。

运行;

运行后,会有”swaf“为前缀的文件出现,证明平滑处理完了,预处理结束!

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用Spark进行数据预处理时,首先需要导入SparkContext库,并通过spark-submit命令提交脚本。然后,使用sc.textFile()方法导入数据集,例如可以使用user_data = sc.textFile('/路径/ml-100k/u.user')导入数据。接下来,通过map()方法对每一行进行操作,可以将其理解为对每个元素做的操作。例如,可以使用movie_fields = movie_data.map(lambda lines:lines.split('|'))将数据集中的每一行按照'|'进行分割,得到字段。 在具体的数据预处理过程中,可以使用各类算子对数据进行操作。例如,可以使用count()方法对整个数据集进行操作,得到数据集的元素数目。同时,还可以根据具体的需求使用其他算子对数据进行清洗、转换、筛选等操作。 总结来说,Spark数据预处理的基本步骤包括导包、提交脚本、导入数据、对数据进行操作,并可以通过各类算子进行数据处理。在处理过程中,可以使用map()方法对每一行进行操作,并通过lambda函数对数据进行具体的处理操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Spark学习(一)基础数据预处理](https://blog.csdn.net/Yolanda71/article/details/76223327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于Spark的电影数据集分析](https://download.csdn.net/download/qq_44806047/85760608)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值