EEGLAB系列教程5:数据预处理2(ICA去伪迹)

article/2025/11/3 15:20:32

EEGLAB系列教程5:数据预处理2(ICA去伪迹)

今天介绍EEG数据处理系列教程5,在前面的几期中,已经介绍了数据基本处理过程,可以参见以下链接:

EEGLAB系列教程1:安装和启动 EEGLAB

EEGLAB系列教程2:在 EEGLAB 中管理数据集

EEGLAB系列教程3:在 EEGLAB 中建立location

EEGLAB系列教程4:在 EEGLAB 中预处理数据1

在很久之前,我也利用analyzer软件进行了ICA去噪的教程分享,可以参考链接:

独立成分分析(ICA)

在运行ICA之前,通过前面的系列教程可以剔除了不好的通道和肉眼可见的不好数据段。然后在来运行ICA是更好的。

运行 ICA

对连续 EEGLAB 数据集进行ICA,选择Tools → Decompose data by ICA。将调用函数pop_runica。如使用默认选项运行 ICA,只需按OK即可。

image-20221218090410757

如使用高导联(128导及以上),可以将选择的commandline option参数进行修改,选取其中的一部分数据进行PCA提取成分。

正常运行过程:

image-20221218090609351

ICA 算法

EEGLAB 允许尝试不同的 ICA 算法。Infomax ICA 使用runica、 Jader 算法使用jamer.m和 SOBI 算法使用sobi.m这些都是EEGLAB 默认算法。通过下拉选择即可选择算法。

另外需要使用 FastICA 算法,必须安装FastICA 工具箱并将其添加到MATLAB 路径中。

查看 ICA 成分

runica.m给出的成分顺序是按每个成分计算的 EEG 方差的降序排列。

IC成分激活(时间进程)

依时间进程查看IC成分,选择Plot → component activiations(scroll)。滚动浏览 ICA 激活,可以很容易地发现占特征伪影的成分。例如,在下面的展示中,成分 3 可能是眨眼成分。

image-20221218090826816

绘制2-D成分头皮图

绘制 2-D 头皮成分图,选择Plot → Component maps → In 2-D。然后由函数pop_topoplot生成交互式窗口(如下) 。只需按确定即可绘制所有成分。

image-20221218090945045

出现以下图片,显示所选成分头皮显示图。

image-20221218091029624

优化 ICA 分解的质量

ICA是利用机器学习的算法,对EEG数据进行成分分解。它是将所有训练数据都考虑在内,当训练数据中留下太多类型的噪声—复杂的运动伪影、电极坏道等,这些坏数据特征将对ICA分解会产生影响。因此,向 ICA 提供尽可能多的干净 EEG 数据才是最佳的。(剔除较大的明显的伪迹数据)

在 ICA 之前与自动伪迹剔除相关的问题

ICA 之前的自动伪迹剔除可能会删除部分数据(如:较大的眨眼等),当然这也可以通过 ICA方法进行校正。但是,降低自动伪迹剔除的阈值可能会保留太多 ICA 无法删除的伪迹。在这种情况下,推荐以下操作步骤:

  1. 从已最少清除伪迹(或仅删除坏通道)的数据集开始
  2. 在这个数据集上运行 ICA
  3. 识别不良 ICA 成分并从数据中删除
  4. 使用更严格的阈值或剔除伪迹方法再次清理ICA后的数据集,以删除数据的剩余伪迹部分

将 ICA 应用于分段数据而不是连续数据

一般来说,建议对连续数据使用 ICA,而不是已提取的分段数据。首先,分段数据已经减少了样本数量,当存在更多数据时,ICA 成分的质量会更高些。其次,删除分段数据的基线会对ICA 产生重大影响,因为它会在每个通道中引入随机偏移,这是 ICA 无法建模或补偿的。虽然可以提取分段时不删除基线,但是在运行 ICA 之后,基线可能会被删除。

将 ICA 应用于分段数据也是可能的。ICA 期望数据是平稳的,即相同的统计模型正在生成所有数据样本。如果您在 分段之后有足够的数据,那么分段数据可能更可取,因为它会更加稳定。但是,在对不同事件进行分段以生成不同数据集时,我们建议对所有条件使用相同的 ICA 分解。实际上,这可能意味着在运行 ICA 之前创建一个包含所有分段类型的数据集。假设所有数据在统计上相似,更多的数据通常会提供更好的 ICA 分解。更长的时期更可取,因为它们为 ICA 产生更多数据(假设平稳性成立。)

自动检测伪迹ICA成分

目前,Luca Pion-Tonachini的ICLabel插件是 EEGLAB 默认安装的 EEGLAB 插件,它提供了对每个独立成分(大脑、眼动、肌肉、线路噪声等)类型的估计。ICLabel 的目标是开发一种足够可靠和准确的脑电图 IC 分类器,可用于大规模研究。当前的分类器实现是在数千个手动标记的 IC 和数十万个未标记的 IC 上进行训练的。更多信息可以在ICLabel 参考文章中找到。

运行 ICA 后,选择菜单项Tools → Classify components using ICLabel → Label components。只需选择默认值,然后按 OK。

image-20221218091548007

将弹出以下窗口并要求绘制成分。只需按确定。

image-20221218091640043

单击一个成分将弹出一个窗口,包含其成分属性以及属于每种类型的估计概率。IC 成分将与它们最可能属于的类别以及属于该类别的可能性一起绘制。

image-20221218091715991

然后可以选择菜单项Tools → Classify components using ICLabel → Flag components as artifacts。默认设置是标记那些有超过 90% 的概率属于肌肉或眼动伪迹(眨眼和眼球运动)类别的成分。使用此功能标记成分时,手动拒绝成分的界面中的按钮将显示为红色(Tools→Reject componengts by map),可以编辑哪些成分将其标记为伪迹。

image-20221218091845169

image-20221218092256841

剔除 ICA 成分

删除成分,使用菜单栏Tools → Remove components from data。

结果窗口(下图)中默认包含的前面标记的伪迹成分编号。

image-20221218092414533

可以点击"Yes"或"Manual reject"按钮来手动编辑成分列表,如下所示。

image-20221218092439877

输入需要剔除的成分编号,然后点击Ok。会弹出对话框窗口,询问是否要比较剔除成分前后的数据,如下图。

image-20221218092502190

单击Plot single trials按钮。显示(下图)在(黑色)和之后(红色)分量剔除之前的数据。我们可以清楚地看到 ICA 去除眨眼伪迹的效果如何。

image-20221218092533202

如果是在分段数据时期中删除 ICA 成分,可以单击Plot ERPs按钮,获得类似的下图,绘制通道 ERP 之前(蓝色)和之后(红色)剔除后的数据结果。

image-20221218092733787

一旦对结果感到满意,点击接受按钮。将弹出另一个窗口,询问是否要重命名新数据集。输入新名字,保存数据集,然后再次按Ok

image-20221218092612464

最后附上网络上总结的经典成分识别:

眨眼成分

图片

成分判断: 眨眼成分

判断依据:

  1. 在头皮地形图的前端分布;
  2. ERP图像中有小方块;
  3. 随机分布;
  4. 功率谱图中,低频能量高;
  5. 成分排序较为靠前,像这个示例中,为IC3

颜色的深浅有意义,但是红还是蓝无所谓,大红大蓝都可以的。

眼动成分

图片

成分判断: 眼动成分

判断依据:

  1. 在头皮地形图的前端两侧分布,红蓝相对;
  2. 在ERP图像中,长条状,红蓝相间;
  3. 随机分布;
  4. 在功率谱图中低频能量高
  5. 分量排序靠前,但一般在眨眼后面,在该示例中为IC5.

头动成分

图片

成分判断: 头动成分

判断依据:

  1. 在头皮地形图中分布在周围;
  2. 在ERP图像中呈现长条状;
  3. 随机分布;
  4. 在单个trial里有非常明显(非常长)的飘移。

成分判断:心电成分

图片

成分判断:心电成分

判断依据:

1.在ERP图像中呈雨点般散落状。

图片

成分判断:工频干扰

判断依据:

  1. 头皮地形图显示分布在地线周围;
  2. 在ERP图像中单个trail上的分布非常规律;
  3. 在功率谱图中,50Hz左右能量最高(有剧烈的峰值)。

ICA判断网站,若是对ICA成分不熟悉,可以看看这个网站的介绍

网址:https://labeling.ucsd.edu/tutorial/labels

参考网址:

https://github.com/sccn/ICLabel

https://labeling.ucsd.edu/tutorial/format

Groppe, D. M., Makeig, S., & Kutas, M. (2009). Identifying reliable independent components via split-half comparisons. NeuroImage, 45(4), 1199–1211. https://doi.org/10.1016/j.neuroimage.2008.12.038

Luca Pion-Tonachini, Ken Kreutz-Delgado, Scott Makeig,ICLabel: An automated electroencephalographic independent component classifier, dataset, and website,NeuroImage,Volume 198,2019,Pages 181-197,ISSN 1053-8119,https://doi.org/10.1016/j.neuroimage.2019.05.026.

谢谢大家观看,如有帮助,来个喜欢或者关注吧!
本文作者:陈锐

本文仅供学习参考,有任何疑问及侵权,可添加微信交流:braintechnology

更多学习内容,仅在知识星球发布:

图片


http://chatgpt.dhexx.cn/article/U2eVPC3W.shtml

相关文章

无法识别ICA文件

问题:无法识别ICA文件怎么办? 场景:该问题常发生在Windows系统,由于软件关联异常,无法打开云桌面的ICA文件,导致无法调用云桌面客户端。 【方案1】导入注册表项 步骤一、点击下载 ICA文件打开方式修复 …

ICA算法

一、盲信号处理(blind signal processing) 在系统的传输特性未知条件下,从系统的输出信号估计系统的输入信号和系统的传输特性 基本问题表述:已知多输入多输出的非线性动态系统的输出信号x(t),要找到一个稳定的逆系统(重构系统)&…

史上最直白的ICA教程之一

前言 独立成分分析ICA是一个在多领域被应用的基础算法。ICA是一个不定问题,没有确定解,所以存在各种不同先验假定下的求解算法。相比其他技术,ICA的开源代码不是很多,且存在黑魔法–有些步骤并没有在论文里提到,但没有…

ICA简介:独立成分分析

1. 简介 您是否曾经遇到过这样一种情况:您试图分析一个复杂且高度相关的数据集,却对信息量感到不知所措?这就是独立成分分析 (ICA) 的用武之地。ICA 是数据分析领域的一项强大技术,可让您分离和识别多元数据集中的底层独立来源。 …

尝试理解ICA(Independent Component Analysis)独立成分分析

1.从鸡尾酒会问题(cocktail party problem)说起 ICA最早是从神经网络领域开始研究的,应用于信号分离、特征提取。为了简单,我们这里从一个经典的例子开始——盲源信号分离(blind signal separation)。 假…

Linux reboot全过程

原文:https://blog.csdn.net/davion_zhang/article/details/52233043 一、版本说明 嵌入式Linux 下面的reboot命令看似简单,但出问题时定位起来发现别有洞天。 下面就按在shell下执行reboot命令之后程序的执行过程进行解析。 Busybox:1.23…

linux嵌入式reboot不生效,Embeded linux之reboot

reboot命令 //kernel\sys.c magic1、magic2,两个int类型的“魔力数”,用于防止误操作。具体在“include/uapi/linux/reboot.h”中定义。 cmd,reboot方式。 //include\linux\reboot.h #define LINUX_REBOOT_CMD_RESTART 0x01234567 #define LI…

reboot 流程

前言 对于生在智能时代的我们,对关机和重启这两个概念肯定不会陌生,尤其经历早期Android智能机的人们,印象最深恐怕就是重启,当然现在不会了,还没有改过来的都被淘汰了。在Linux系统中我们使用reboot完成这个动作,下面…

Vue路由和路由器简介

前言 路由(route)是vue中非常重要的技术,几乎每一个用vue所写的项目都会用到路由,它是一个vue的插件库,专门实现SPA应用 路由(route)的简介 说到路由,大多数人会想到路由器(router),可以这么说,路由器上的每一个口都…

路由传递数据

1.路由可以传递query和params参数。路由组件可以通过$route获取query和params参数。 2.路由传递params参数 (1)当to为字符串形式时。直接在路径后边添加数据 但是在路由中,path属性必须给数据占位。 (2)当to为对象形…

vue-router 路由传参方式/缓存路由/路由跳转

基础 前端路由 用来开发 SPA(单页面应用) 单页面应用 整个应用只有一个完整页面,页面变化都是在这一个页面更新的点击链接不会刷新整个页面,会局部更新,也会更新浏览历史(地址)点击链接也不…

Vue路由的$router.back(-1)回退时如何判断有没有上一个路由

每个页面的左上角有一个返回按钮< 点击时的代码是this.$router.back(-1)&#xff0c;返回上一个路由 但是用户点开其中一页&#xff0c;用户打开时并没有上一条路由的历史记录&#xff0c;所以点击<按钮时没有反应。 所以应该怎么判断有没有上一条路由的历史记录。 1.在页…

回程静态路由及trunk简单链路

六、trunk链路 可以实现连个交换机间不同vlan相同网段间的互访 [one]vlan 2 [one-vlan2]vlan 3 [one-vlan3]quit [one]port-group 1 [one-port-group-1]group-memberGigabitEthernet 0/0/1 Gigab&#xff09;itEthernet 0/0/3 [one-port-group-1]port link-type access …

Vue路由(vue-router)

一、Vue路由的相关概念 1、路由&#xff08;routing&#xff09;&#xff1a;是指从源到目的地时&#xff0c;决定端到端路径的决策过程。 2、前端路由&#xff1a;即由前端来维护一个路由规则。实现模式有两种。 (1)利用URL的Hash模式&#xff1a;就是常说的锚点&#xff0c;J…

Vue Router路由详解

文章目录 1. 介绍2. Vue Router 和 Vue 项目集成3. 声明式导航4. 编程式导航5. 重定向和4046. 嵌套路由7. 动态路由匹配 1. 介绍 Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成&#xff0c;让构建单页面应用变得易如反掌。包含的功能有&#xff1a; 嵌…

Vue 路由(Router)详细介绍(切换,传参,通信)

目录 前言 准备工作 基本使用 router-link router-view 基本流程 扩展内容 动态路由匹配 ​编辑 编程式导航 重定向 路由组件传参 HTML5 History模式 前言 在一个vue项目中&#xff0c;免不了对组件&#xff08;页面&#xff09;进行切换与跳转。而用 Vue.js Vu…

使用Best Trace工具查看VPS的去程和回程线路的路由

​ 去程线路查询操作比较简单&#xff0c;这里主要先说回在Linux VPS上安装Best Trace工具查询回程线路的方法 ​ Best Trace官网 回程线路路由查询 Linux版本Best Trace Ubuntu/Debian准备工作 apt install -y wget zip CentOS准备工作 yum -y install wget zip 下载 …

Vue路由(vue-router)详细讲解指南

中文文档&#xff1a;https://router.vuejs.org/zh/ Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成&#xff0c;让构建单页面应用变得易如反掌。路由实际上就是可以理解为指向&#xff0c;就是我在页面上点击一个按钮需要跳转到对应的页面&#xff0c;这…

静态路由配置

静态路由配置 一、静态路由简单配置方法 一、静态路由简单配置方法 设置静态路由步骤&#xff1a; 1.设置每个设备&#xff08;PC、路由器&#xff09;接口IP&#xff1a; 如图所示配置好各个接口的IP地址: 配置路由器AR1 0/0/0接口IP&#xff1a; [Huawei]interface Gigabi…

【接口篇 / Lan】(5.4) ❀ 02. 与交换机连接 (回程路由) ❀ FortiGate 防火墙

【简介】大多数企业都会配备三层交换机&#xff0c;通过划分VLAN更好的管理内部网络&#xff0c;三层交换机功能强大&#xff0c;本身带路由功能&#xff0c;可以控制VLAN之间的互相访问&#xff0c;这里要介绍的是三层交换机与防火墙连接上网。 回程路由 在没有等动态路由的情…