T1结构像+RS-fMRI影像处理完整过程记录(数据下载+Matlab工具箱+数据处理)
最近需要仿真研究T1结构像+RS-fMRI影像融合处理输出目标坐标的可行性。就此机会记录下来。
为了完成处理,首先需要有数据,然后需要准备对应的处理平台和工具箱。那么正文开始~
(1)下载满足要求的开源数据
去OpenNEURO https://openneuro.org/datasets/ds002422/versions/1.1.0
下载数据做仿真验证够够的了,有46个被试,每个被试下面有多个数据记录,完全符合我的需要,有这个做仿真研究真的是太方便了。
(sub-01_T1W.nii就是T1结构像,sub-01_task-rest_bold.nii.gz就是我要的RS-fMRI)
多下载几个数据处理验证没得问题。
(2)准备数据处理平台
按照如下准备先按照到位,这些是处理和查看处理过程的利器,作为研究核磁影像的人少不了。
安装完Matlab以后,除了MRIcron 是独立软件,其他就都是工具箱。工具箱软件需要先下载到本地,后解压缩放到Matlab 安装路径的toolbox 文件夹下,并打开matlab 界面,从设置路径处导入。这里我是遇到了一个问题,到底是 添加文件夹 还是 添加并包含子文件夹?
那么看下面
REST 是DPABI 的一个子模块。
(3)实施处理
先说一下数据摆放路径,如果用DPABI 来做预处理,那数据摆放路径就是讲究,路径关系如果层级发生错误,就会报各种奇怪的错误。
首先新建一个路径文件夹,如202504_MRI是我的文件夹,文件夹下面需要新建两个子文件夹:
如果原始数据都是Dicom 格式,新建T1Raw 和FunRaw 文件夹,并将各被试的T1像拷贝到T1Raw文件夹,RS-fMRI 像拷到FunRaw文件夹。
如果T1是nii格式,RS-fMRI 是.nii.gz 格式就新建T1Img 和FunImg文件夹,并将3个被试的T1像拷贝到T1Img文件夹,RS-fMRI 像拷到FunImg文件夹,我这次的数据就是这一种。
另外,一定要注意,如果使用DPABI进行预处理,这些原始数据的父文件夹是T1Img 和FunImg文件夹,或T1Raw 和FunRaw 文件夹,我曾经将sub当父文件夹出现了难以接受的错误。正确的数据层级关系如下:
当原始数据是.nii+.nii.gz 格式时:
当原始数据是Dicom格式时:
(2)预处理步骤虽多,但是处理的过程有讲究
在matlab 窗口输入 DPARSFA(是DPARSF advance 版本,支持T1+fMRI 联合分析)后即可进入DPARSFA 交互界面
①先选中Blank,其实就是空白模版,其他的都有很多默认的参数和处理步骤被选中是有特定的处理,作为新手来说,先从0开始进入吧,选中blank就相当于空白开始,灭有任何的默认选中处理步骤,需要自己去尝试设定探索;
②这个工作路径需要选中建立的文件夹,是一个总的大路径,不要出现中文字符;
③参数很讲究,Time Points:采集的时间点数,应该是个整数,预估100~300,具体需要查看数据
TR:是重复时间,这个也是扫描参数,一般这两个参数需要基于fMRI 数据去查看,或者如果已知就直接填写
这两个参数必须要准确,如果不知道,可以通过软件查看,实在不行就空着,软件会在处理的过程中读取到。**
也可以在matlab 中通过命令得到点数,这个是.nii.gz 的获取方式
nii=niftiinfo("my-rs-fMRI.nii.gz");
TimePoints = nii.ImageSize(4);
disp(['时间点总数:',num2str(TimePoints)]);
dicom也有其获取参数的方式。
TR(s)这个参数可重要了,就是重复时间,这个需要基于扫描json文件去查看,也可以用别的软件工具去查看。
④就是将dicom转成nifti格式,由于我的输入就不是dicom,这一步完全不用选。
上面没有标出来,Apply Mats,如果输入是dicom 格式数据,那就选中吧,如果是我这样的nii格式就不选
⑤ 去除因设备开机不稳的时间点,一般会去掉开始的5~10个时间点的数据。这里,我没有去,因为我下载的数据中已经在json中说了手动去掉了3个时间点,我就不再去了,直接填了0,也可以不选中,省的有效数据变短。
⑥时间层矫正,因为功能像是隔层扫描,做这个处理就是要重新把时间对齐,必须要选中;
⑦功能像的扫描层数,就是ImageSize(3),我下载的数据是64X64X36X200,我这里就是36层
后面的Slice Order:扫描次序,我填的[2:2:36,1:2:35](我看了我下载的json文件,我的是隔层扫描,先扫偶数层,后扫奇数层)
⑧参考层,一般用正中间的扫描时刻对应的层作为参考层,也有TR/2最接近的时刻处的层作为参考
我的扫描时间序列
“SliceTiming”: [1.5375,0,1.6225,0.085,1.7075,0.1725,1.7925,0.2575,1.8775,0.3425,1.9625,0.4275,2.05,0.5125,2.135,0.5975,2.22,0.6825,2.305,0.7675, 2.39,0.855,2.475,0.94,2.56,1.025,2.645,1.11,2.7325,1.195,2.8175,1.28,2.9025,1.365,2.9875,1.4525 ],
可以看出0时刻在第2帧,而且偶数层比奇数层的时刻小,说明先偶数后奇数。
⑨ 表明数据开始处理的路径这样可以附加到工作路径文件夹。
⑩ 运行时间层矫正
明天继续。。。