关注“心仪脑”查看更多脑科学知识的分享。
关键词:文献综述、科普散文
相信很多朋友在初学使用fsl进行sMRI/fMRI数据分析的时候都有一些不熟悉,这里我整理了一些使用fsl进行数据处理的经验,本篇是有关使用fsl中的feat工具进行fMRI数据预处理的部分,后续文章还会继续跟进一级,二级分析与静息态功能性连接以及与PET结合的多种高级数据处理技巧等。
工具介绍:
FEAT工具多用于对task/res-fMRI数据进行预处理和统计分析(1st、2st),基于实验设计的复杂性与否可以自行选择自己定义的design matrix或是利用程序自动进行简单的矩阵生成进行GLM分析或是ICA。
预处理步骤:
预处理大致包含的步骤如下图所示,其中红色是必选项,蓝色为按照自己的实验设计与需求进行的附加项。其基本都可以在FEAT的Pre-stats tag中实现。
其分别是:转换成Nifti格式-运动校正-失真矫正-时间矫正-去颅骨-空间平滑-时间漂移滤波-注册到标准空间。
一(转换到Nifti格式):
可以使用dcm2niix工具进行无损转换,同时也可以自订输出文件的格式以应对不同的处理工具。该工具可在如下网站找到:
https://www.nitrc.org/plugins/mwiki/index.php/dcm2nii:MainPage
也可以使用常用的MRIcroGL工具进行这一步,可在以下网址找到:
https://www.nitrc.org/projects/mricrogl/
这两种工具都有将被试信息匿名化以及自订输出文件格式的功能。
二(运动校正):
因为生命在于运动(bushi),被试总是可能活动他们的头部,所以运动校正的步骤是必要的。在这一步中,每一个voxel应该在每个时间点上与稳定的解剖学结构中对应的voxel点相符。FSL中是通过MCFLIRT进行刚性矫正,基于FLIRT命令将voxel调整到一个通常的)参考点实现。如下图所示:
为所有的fMRI volumes选择一个MCtarget(参考)
将每个volume分别注册到参考
这个MCtarget可以是任何一个volume,不管是第一个/中间层或是几个volume的平均都可以。
在FEAT_GUI的操作如下图所示。
利用命令行的代码如下:
mcflirt –in [options]
其中的option选项如下:
-o [specify name of output file; default is _mcf]
-dof [degrees-of-freedom, default is 6, i.e., uses 6 motion parameters]
-refvol [specify reference volume; default is middle volume]
-meanvol [uses as reference volume the average of all volumes]
-stats [variance and standard deviation of images]
-mats [save transformation matrices in subdirectory outfilename.mat]
-plots [save transformation parameters in file outputfilename.par]
在预处理结束的report中我们可以看到的MC结果如下图:
此处值在1.5以下都为可用值。
三(失真矫正):
众所周知,我们的脑子里都是水(指脑脊液),但我要告诉你不止如此,因为额窦,上颌窦,蝶窦,筛窦四个颅内空腔的存在,我们不仅头里进了水,还有空气。那有人可能要问了,马老师马老师你这闪电五连鞭......不好意思串台了。那有的同学可能要问了,这和失真矫正有什么关系呢?有关系,很有关系。因为这样的空气组织会造成我们的B0磁场不均,从而对得到的图谱造成一定程度的扭曲。但我们又不能把这四个空腔充满水,那就积液了不得行。所以只能进行失真矫正。
(四个窦)
在FSL中,进行失真矫正需要 fieldmaps(场图),理想状态下在EPI的前后马上获得。
关于如何在FEAT中构建用于B0 unwarping的fieldmaps参考如下:
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FUGUE/Guide#Making_Fieldmap_Images_for_FEAT
用一张图解释如何实现
这是一张EPI和B0场图。在失真矫正中,fsl会:
首先,沿着相位编码方向展开,之后记录丢失的信号。随后不是恢复额叶的信号而是降低配registration中有大量信号丢失区域的权重。
在FSL中的操作如下图所示(GUI):
最上方箭头所指fieldmap放场图,中间的fieldmap mag放Brain-extracted Fieldmap Magnitude(whole-head in the same folder)。最下方箭头处选择相位编码的方向。
四(时间矫正/slice timing correction):
这一步的目的是使用插值/时间导数(具体使用GLM)将不同时间点的切片对其至同一时间点上。因为MRI扫描时每个slice的时间点不同,为了采集到整个大脑的状态数据,扫描脉冲会在TR时刻内扫描到>=30个slice。过去扫描序列是从上到下或者从下到上的顺序序列,目前通常是间隔序列,例如先奇数slice,之后偶数slice。slice timing所要做的修正就是对slice9的数据进行偏移和重采样(shift+interpolate)。修正后如下。
在FEAT_GUI的操作如下图
此处选择的是成像的slice order。使用hanning windowing kernel同步插值,将其对应至TR正中。
命令行的实现代码:
slicetimer -i [options]
可选项:
-r Specify TR of data - default is 3s
-d direction of slice acquisition (x=1,y=2,z=3) - default is z [axial]
--down reverse slice indexing (default is: slices were acquired from the negative to the positive direction)
--odd use interleaved acquisition
--tcustom filename of single-column slice timings, in fractions of TR
--tglobal global shift in fraction of TR (default is 0)
--ocustom filename of single-column custom interleave order file (first slice is referred to as 1 not 0)
五(去颅骨):
这一步的目的是消除具有高度可变对比度和几何形状的非脑组织,这一步是影响后续分割(segmentation)质量的关键。
在FEAT_GUI的操作,点击BET后方块,高亮后出现下图
随后修改自己想要的参数即可。
命令行实现方式如下:
bet
选项如下:
-R robust brain centre estimation
-c < x y z> centre-of-gravity (voxels not mm) of initial mesh surface[crop image before running BET with –R/-c] robustfov –i -r
-f
-g
-r
-o generate brain surface outline overlaid onto original image
-m generate binary brain mask
-s generate rough skull image
-t apply thresholding to segmented brain image and mask
六(空间平滑):
在这一步的时候有的同学可能要问了,我辛辛苦苦处理半天,你搁这一个平滑给我把漂漂亮亮的脑图全都模糊了,这是毁了这个甜蜜的家!
其实并不是。因为我们知道,fmri中重要的是体素信息代表的脑激活,那如何集中于数据中的激活呢?答案是提高信噪比,那么基于这一目的,人们发现如果平滑模糊的size小于激活的size,那我们的信噪比就会得到显著提高。但这也带来了弊端,也就是会在处理的过程中减少较小区域的激活。所以平滑这一步,越少做越安全。但也不能不做,因为需要最小平滑度才能使用高斯随机场理论进行统计上的阈值化。具体的实施是会利用一个3D的卷积核,对每个voxel逐一做卷积,对于特定的voxel,将其周围voxel强度的加权平均作为该voxel的强度。
我知道这么说肯定很抽象看不懂,没事。上图。
下图是通过平滑处理中FWHM的数值(加权系数)
FWHM=半峰全宽的最大值=0.5个值时波的宽度
每个体素的强度被相邻强度的加权平均所取代,中心voxel的系数为1,周围voxel 上的系数随距离减小。在整体上就如下图
这样就完成了平滑
在FEAT_GUI中的操作如下
FWHM平滑核宽度不同,结果也会不同。如果需要看比较精细的结构, 可以选择平滑核宽度为5mm, 如果只是在看比较粗的\大致的范围, 可以设置为10mm甚至是15mm.
命令行的实现方式如下:
fslmaths -kernel gauss
其中的sigma=FWHM/2.3548(常数值)
七(Temporal filtering 时间漂移滤波):
这一步的目的是在不丢失所感兴趣信号的情况下去除低频和高频的噪声。与脑电相似,高频与低频噪声分析代表不同的噪声。
例如低频噪声就可能代表:扫描仪漂移/残留的头部运动/呼吸和心脏相关伪影。为了消除这些噪声我们需要滤波。
下图是在进行高通滤波后的对比:
主要去除了线性趋势。注意,低通滤波一般不建议使用,除非已经确定你预测的模型中不包含高频成分。
FEAT_GUI中的操作如图:
但一般此步建议命令行输入:
fslmaths -bptf
如果不想指定一个阈值的话即可使用<-1>代替高通/低通的阈值。即如下
[如果TR=2,Highpass only, 100s filter]
fslmaths -bptf 25 -1
在DATA tag中也可以使用estimate进行估计
八(registration):
这一步的目的是通过被试的结构图t1将被试的功能图像与标准空间图像mn152对齐。抽象的说,是使用空间变换在空间之间移动图像内部的相关信息。
通常如下图所示有两步,即将功能像配准到t1像,随后配准至标准空间。
FSL中操作如下:
命令行实现代码:
Functional to structural registration:
epi_reg [options] --epi=
选项:
--fmap=
--fmapmag=
--fmapmagbrain=
--wmseg=
Register two images together:
flirt -in -ref
Use a pre-existing transformation matrix to register a functional to a reference image:
flirt -in -ref
以上就是利用FSL中的FEAT工具进行fmri数据预处理的全部过程了,你学废了吗。
全文完结,整理不易,看不完记得收藏,最后希望点赞支持一下!
了解更多,请关注“心仪脑”公众号!