EEG脑电数据处理及时频分析2(脑电数据处理)

EEG脑电数据处理及时频分析2(脑电数据处理)

以下内容可以在哔哩哔哩寻找到教程零基础脑电数据处理教程_01_基础知识预备和预处理


被删除线标记的意味着对于ds004151数据集来说不需要的步骤(也许是不需要吧),或者是我没有进行的步骤。欢迎交流。


脑电数据预处理


打开EEGLAB

接下来的操作都要在EEGLAB这个程序里面进行操作,所以要先打开eeglab

在下方的命令行窗口内输入eeglab,回车就可以启动eeglab了

image.png


导入set数据集

image.png

打开放数据集的文件夹,选择打开即可

image.png


定位电极

在ds004151数据集里的数据已经定位了电极,不用再自己定位电极。如果不嫌麻烦可以检查一下

基础知识

电极标准 10/20 10/05

注意使用的模型MNI还是BESA

如果eeglab没有正确定位电极(电极无数据),无数据电极 ,matlab会在命令窗口提示,可以找到电极文件位置,查看电极文件数据,最后去修改eeglab

基本操作

image.png

image.png

image.png


剔除无用电极 Edit——select data

我找到的资料是讲64个电极的,128电极我不清楚哪个是参考电极,所以我没有经历这个步骤

基础知识

HEOG、VEOG是眼动之类的电极,但现在后期ica可以剔除,所以没用

M1、M2一般是没用的

基本操作

仅仅做个示范

image.png

image.png

按住Ctrl可以多选电极

image-20230927221908561

image.png

后面的操作就需要保存了,建议养成个好习惯,每一步都单独做个文件夹去保存,比如像这样,每一步处理完成之后的文件就保存在对应的文件夹下面

image.png


滤波

我们研究的四个脑波频率在1-30Hz,所以我们做1-30Hz的带通滤波就可以了,至于工频干扰,额,了解一下带通滤波就发现做了好像意义不大,只做带通滤波就行了

基础知识

滤波分为高通滤波,低通滤波,带通滤波和凹陷滤波。

高通滤波是指,高于某个频率的信号可以通过,而低于这个频率的信号会被衰减过滤掉。

低通滤波则相反,指的是低于某个频率的信号可以通过,而高于这个频率的信号则相反。所以,在输入数值的时候,高通滤波要输入的是一个较小的数字,而低通滤波则是输入一个较大的数字。这可能跟我们的第一反应有点相悖。因此,也可以用它们的英文叫法来辨别,高通high-pass,低通low-pass,英文看起来就更为直观了。

带通滤波,指的是在某个频率段范围内的信号可以通过,而这个频率段范围以外的信号会被衰减过滤掉,就相当于同时做了高通滤波和低通滤波。

凹陷滤波,指的是在某个频率范围内的信号会被衰减过滤掉,而这个频率范围以外的信号会被保留下来。这个操作通常是用来去除50Hz市电的干扰。我国的50Hz,因此在收集到的信号中,会有一个非常强烈的50Hz频段的信号存在,这就可以用凹陷滤波来去掉。

参数选择

e3358dff4ae0d9f241a4c06a7c6cb1c7.png

基本操作

image-20230927222232387

带通滤波会过滤掉除开指定范围的所有值,而且我们只考虑脑电数据,脑电数据四个波在1-30Hz范围内,如果我们做1-30Hz的带通滤波就不用考虑工频干扰,低通,高通之类的滤波了,第三步那个是画个图,没什么用,勾不勾选都无所谓

image-20230927222331695

保存文件

image-20230927222853166

为这一步新建一个文件夹,点开这个文件夹

image-20230927223124077

输入文件名,保存

image-20230927223240365


降采样

这部分操作还是可以做的,我降到了250,就是为了,处理数据能处理快点

基础知识

采样率:单位时间内采样点的个数

frames per epoch 每段采样点

EEG.times可以查看采样点和时刻点

为什么要降采样

Nyquist采样定理,采样率必须两倍以上,最好是3-4倍才不会有信息损失

脑电波一般在40hz以下,所以脑电信号采样率一般在250-1000hz就足够了

降采样最大的好处就是减少数据量,提高计算速度

基本操作

image-20230927223426002

修改成250,新建文件夹保存

image-20230927223502458

image-20230927223844611

image-20230927224006180


分段和基线矫正

这个是肯定要做的,ds004151数据集按照‘Ton+’和‘Ton-’进行分段,分段之后根据论文是252+108=360的epochs,可以在EEGLAB的主界面看到epochs的数量,然后的基线矫正,在完成分段之后就会自动跳出来对话框让你做了

基础知识

epoch:-1到2 (预留多一点,方便后面处理),包含一点静息态还有任务态

然后将epoch拼接起来

基本操作

image-20230927224058393

image-20230927224133502

按住Ctrl选中这两个,这里分段依据的mark主要是根据论文里面的实验设计,如果没有明确的信号说明,就先猜测,然后分段出来,看看数量是否匹配,比如下方

image-20230927224222288

论文说一共有252+108=360个marks

image-20230927225039294

我按照Ton+和Ton-进行分段之后再EEFLAB主界面。Epochs一共360个,刚好符合

image-20230927225205644

我们继续上面选择完mark之后的操作,新建文件夹正常保存

image-20230927224507259

image-20230927224713559

保存之后会自动跳出来基线矫正的对话框,我们不用特别设置,直接确认就可以,但是不用新建文件夹保存了,直接点下面的overwrite…覆盖

image-20230927224738021

image-20230927224758763


插值坏导和剔除坏段

呃呃呃,看情况做吧,一般插值坏导不要超过十个,删除坏段也不要超过1/3,实在不行,数据太烂了,就先不管了,先把组平均地形图跑出来看看结果,结果没问题,就先不管了

基础知识

坏导:某一通道出现了问题

解决办法:插值,不能删除电极,会发生不匹配。把周围电极的值取一个平均

Spherical算法:容积传导效应,周围电极有权重,然后再计算

坏段:某一段出现了问题,直接删除

基本操作

注意不要点错了,下面的用ICA reject也有个extreme values

image-20230927225355031

把框出来的改了,这个100是100uV的意思,如果有脑电信号超过了±100uV,那就肯定不是脑电信号了,脑电数值没这么大

image-20230927225647331

会跳出来两个框框,有个是文件保存框,建议新建文件夹保存一下文件,如果已经保存了,可以点cancel取消保存

image-20230927225837380
还有一个框是这样的,有绿色标记的和没有被绿色标记的,没有被标记是正常数据,如果这个时候直接点右下角reject会把所有的绿色给去除掉,当然也可以自己标记,点击一下片段会变黄,也算是标记,再点一下就是取消。但,我们这步重点不是reject,重点是查看有哪些坏道,那我们怎么看坏道呢?

image-20230927225921897

这个界面有bug其实,他在绿色标记段,本来应该用红色标记出哪个电极有问题的,但是他没有。不过我们可以在片段上右键,会跳出来一个地形图,把地形图关掉,再移动片段,异常的电极就会被红色标记出来

image-20230927230546194

异常就被标记出来了

image-20230927230641542

但这个时候还有个问题,就是电极实在是太多了,左边一列密密麻麻,根本看不清楚,我们要怎么调节呢?我们有两个办法,第一个调节显示的电极数目,第二个放大缩小,推荐第二个

第一个办法,调节显示的点击数

image-20230927230924419

image-20230927231001857

第二个办法有点bug。在我们做完这个操作之后,电脑没有什么反应,这个时候我们需要像显示红色的异常数据那样,在片段上鼠标右键一下,等一下,鼠标就会变成一个十字,这个时候就已经可以通过鼠标滚轮放大缩小了,但是我们会发现,异常红线没了,我们需要再进行一次右键,这次不会出现地形图,只会出来个右键菜单,然后再移动片段,红线就能正常展示了。

image-20230927231106184

一些其他方便的操作

image-20230927231923186

了解、统计完有哪些电极不正常之后,我们需要对这些电极进行插值,左下角取消掉上面那个图,千万别reject了,删得有点多,我们后面再删。

image-20230927232013475

image-20230927232157523

最后新建文件夹保存数据

image-20230927232909299

对电极进行插值之后,数据会变得好看一些


重参考

这个还是要做的,ds004151数据集有128个电极,直接做全脑平均就OK了

基础知识

原参考:脑电数据采集的数据,就是电极位置和参考电极之间的电位差

重参考:在分析数据的时候,有些时候需要转换参考电极的位置,因为离参考电极近的电极的电位差会非常小

常用的参考方式:双侧乳突平均参考(32个以下),全脑平均参考(电极32个以上)

基本操作

image-20230927232337339

我们做全脑平均,直接Ok

image-20230927232412914

然后正常新建文件夹保存数据

image-20230927232659390


独立成分分析ICA

这个操作也很简单,但算是自动化操作里面最费时间的了,57个被试我整整跑了十个小时

在进行ICA之前,EEGLAB的主界面长这样,除了ICA weights那一项,其它都有正常数据了

image-20230927232952320

基础知识

ICA又称盲源分离算法,ICA可以找到不同脑电信号源活动以及它们的头皮分布。这一步骤的主要目的是去除眼电、心电、肌电等伪迹

ICA原理

每一个麦克风记录到的都是一个混合的声音,来自于不同声源的不同强度的声音的总和,有的记录到的乐队演奏的声音比较大,有的记录到的人们的交流声音比较大,通过对比不同麦克风记录到的成分,分离出来彼此独立的成分。而且分离出成份数一定小于等于麦克风数

2114a08943f7f8d1de314b23c23c6a32.png

基本操作

image-20230927233116503

如果我们在插值那一步调整了电极,调整了几个电极,就在后面添加‘pca’,几个,例如我调整了两个,就如下输入。(其实不管这个直接点OK,他好像也会自动识别你调整了几个电极,然后跳出来对话框,告诉你,你不懂就点ok就行,我不太明白,拿不准就直接全部点ok,就什么也别管)这一步是在告诉ICA程序有多少个有效数据

image-20230927233207845

完成之后就会出现这个框,千万别点interrupt,等他跑完了,就自动没了

image-20230927233509053

跑完了之后不会主动跳保存框,一定要记住自己新建文件夹保存

image-20230927233825345


剔除伪迹/坏段

使用ICALAB插件就OK了,但ICA分析出来的成分不要去除太多了,去除太多,有效成分就被去除了,一般去除默认的眼电和肌电就可以了

基础知识

常见伪迹

眨眼VEOG

前端分布、小方块、随机分布、低频能量高、成分排序靠前

1f1b0a419ea23594121c234ab0a015c6.png

眼漂HEOG

前端两侧分布,红蓝相对、长条状,红蓝相间、随机分布、低频能量高、成分排序靠前,但一般排在眨眼后面

38f3e95b091ab1e0ed3b94481dfb4e25.png

头动

  • 周围分布、长条状、随机分布、在单个trial里有,非常明显的漂移
  • 61a61e6e40cea11719da80e3137eb75a.png

工频干扰

  • 分布在地线周围、单个trial的分布非常有规律、50hz明显
  • 6c3fac89a50aa69f91fefc11a994a46a.png

心电

  • 呈雨点般散落状
  • 45cd49462627e1a172ddc7b01df6bbfb.png

ICLabel项目 准确的EEG-IC分类器,用大数据研究

基础操作

因为跑完了ICA,我们直接用ICALAB就可以自动去伪迹了,不用手动去挑,一路确认就OK。做完这个会出来一堆图,全部关掉就OK

image-20230927234154060

然后我们标记出来,一路ok就行

image-20230927234519143

在MATLAB的命令窗口我们还能看到具体标记情况

image-20230927234620983

然后自动移除标记片段

image-20230927234656340


绝对阈值法去坏段

跟插值坏导同理,数据太烂就先不管了,看看结果先,这个步骤需要很多经验,拿不准就多问

基本操作

image-20230927234824554

image-20230927234927527

可以先在MATLAB命令行窗口看看有多少trails被标记了,再决定reject与否

image-20230927235106922

image-20230927234948543


结束

数据处理真的需要专业人士给予建议,而且细节非常多,网络上的教程又不够详尽,很多想知道的不一定搜得到,就算搜到了可能讲的是原理,对于与小白也很抽象。
最最抽象的是,原始数据可能会很烂。烂到不忍直视,以上预处理步骤都不太理想,这个时候就更需要专业人士进行指导了,这是坑最多的一个部分了