EEG重参考原理及python代码实现

这里主要想记录和分享的是:如果采集EEG时,使用的是部分导联,并且采集的时候使用右侧乳突作为参考电极,那么在预处理阶段,我们该如何对EEG信号进行重参考呢?使用不同重参考方法,结果是否一致?选择哪一种重参考方法更合适?

文章目录

  • 前言
  • 一、重参考原理
  • 二、重参考方法及python实现
    • 1.双侧乳突平均参考(本文重点)
    • 2.全脑平均参考
  • 三、不同重参考方法MRCP结果对比
    • 1. 运动相关皮质电位(MRCP)
    • 2. 本文结果
      • 2.1 双侧乳突平均参考MRCP结果
      • 2.2 "全脑"平均参考MRCP结果
  • 参考


前言

本文会介绍:重参考原理、重参考方法、python实现重参考、不同重参考方法结果对比

一、重参考原理

在这里插入图片描述

二、重参考方法及python实现

1.双侧乳突平均参考(本文重点)

在这里插入图片描述

# mne官方文档:https://mne.tools/stable/generated/mne.set_eeg_reference.html
raw_new_ref.set_eeg_reference(ref_channels=['M1', 'M2'])

本文重点
在这里插入图片描述
在这里插入图片描述

''' 1. 添加 M2,值为0 '''
raw_ref = raw.copy()
# add new reference channel (all zero) 添加一个新的参考电极,值为0,这样选择M1,M2重参考,就相当于 1/2 M1啦
raw_new_ref = mne.add_reference_channels(raw_ref, ref_channels=["M2"])
raw_new_ref.plot()  # 可以查看波形,M2是一根直线
''' 2. 双侧乳突平均参考''' 
raw_new_ref.set_eeg_reference(ref_channels=['M1', 'M2'])

当然这里我主要是针对软件提出的参考方法,其实你还可以直接自己写个循环,用其他通道的值减1/2M1。

2.全脑平均参考

在这里插入图片描述

raw.set_eeg_reference(ref_channels='average')

三、不同重参考方法MRCP结果对比

若采集EEG时使用右侧乳突作为参考电极且电极布置(局部,不是全脑电极)如下:
在这里插入图片描述
做了一个左右手执行任务,对比了双侧乳突平均参考和“全脑”平均参考(这里的“全脑”指的是采集时所使用的全部电极,如上图。其实根据上面第二部分全脑平均参考的注意事项我们知道这是不规范的,但我看到有的文章仍然这么做了,所以想对比看下结果)的MRCP结果。

1. 运动相关皮质电位(MRCP)

在给出本文MRCP对比结果之前,我们先看看MRCP是什么?
运动相关皮质电位(Movement Related Cortical Potentials, MRCP):作为一种事件相关电位,代表运动皮质参与运动的脑电图证据和对预期运动的有意识准备。
在这里插入图片描述
【0时刻:表示按键(运动)开始时刻】
目前得到普遍认可MRCP的三个主要成分为:

  1. 运动准备电位:产生于运动开始时刻前的负值电位,波幅大约在2~10 uv;
  2. 运动电位:运动准备电位后出现的负峰电位,表示运动准备晚期(通常出现在运动开始前150ms)的皮层活动;
  3. 运动监控电位:是动执行及其之后1s内的神经电活动,是起始于运动时刻正负值交替变化的复杂皮层电位。

2. 本文结果

2.1 双侧乳突平均参考MRCP结果

在这里插入图片描述
上图双侧乳突平均参考MRCP结果:红色实线为C1和C3电极时域的平均(左半球);蓝色实线为C2和C4电极时域的平均(右半球)。
根据上图结果,可以发现左右手均能成功诱发标准的MRCP。
【图中:0时刻为刺激时刻,0.3s左右为运动时刻

回答最开始的问题:如果采集EEG时,使用的是部分导联,并且采集的时候使用右侧乳突作为参考电极,那么在预处理阶段,可以对EEG信号进行双侧乳突平均参考,具体方法见第二部分。

2.2 "全脑"平均参考MRCP结果

在这里插入图片描述
上图全脑平均参考MRCP结果:红色实线为C1和C3电极时域的平均(左半球);蓝色实线为C2和C4电极时域的平均(右半球)。
根据上图结果,可以发现左右手诱发的MRCP不那么标准

【图中:0时刻为刺激时刻,0.3s左右为运动时刻

参考

脑电的基础(三):为什么要重参考
手把手教你EEG脑电数据预处理-原理篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/141382.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3 + Three.js + gltf-pipeline大型园区场景渲染与3D业务

在非使用unity作为3D渲染方案的前提下,对与目前web开发者比较友好的除了canvas场景需要的2D babylon.js,fabric.js, Three.js是目前针对于jsWeb用户最直接且比较友好的3D引擎方案了。 准备工作: 1.明确需要用的场景方案都有那些,模…

mindspore mindyolo目标检测华为昇腾上推理使用

参考: https://github.com/mindspore-lab/mindyolo 使用案例: https://github.com/mindspore-lab/mindyolo/blob/master/GETTING_STARTED.md 安装: pip install mindyolo特别注意opencv-python、opencv-python-headless版本问题&#xff0…

Redis安装、配置

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

算法的复杂性

通常情况下,一个问题可能对应有多种解决方案,每种解决方案都是一种算法。因此,我们可能经常需要做一件事:从众多算法中挑选出一个最好的算法。所谓“最好”的算法,即最适合当前场景使用的算法。 不同的应用场景&#x…

springboot整合SSE技术开发经验总结及心得

springboot整合SSE技术开发经验总结及心得 一、开发背景二、快速了解SSE1、概念2、特性 三、开发思路四、代码演示1、引入依赖2、服务端代码3、后端定时任务代码 4、解决乱码的实体类4、前端代码 五、核心代码分析 一、开发背景 公司需要开发一个大屏界面,大屏页面…

使用内网穿透实现U8用友ERP本地部署与异地访问

文章目录 前言1. 服务器本机安装U8并调试设置2. 用友U8借助cpolar实现企业远程办公2.1 在被控端电脑上,点击开始菜单栏,打开设置——系统2.2 找到远程桌面2.3 启用远程桌面 3. 安装cpolar内网穿透3.1 注册cpolar账号3.2 下载cpolar客户端 4. 获取远程桌面…

【C++笔记】AVL树的模拟实现

【C笔记】AVL树的模拟实现 一、AVL树的概念二、AVL树的模拟实现2.1、定义节点2.2、插入2.3、旋转2.3.1、左单旋2.3.2、右单旋2.3.3、左右双旋2.3.4、右左双旋2.3.5、插入接口的整体代码实现 三、验证AVL树3.1、验证 一、AVL树的概念 二叉搜索树虽然在一般情况下可以提高查找的…

生成式AI以及当前趋势

ChatGPT 激发了人们的想象力和好奇心。自 2022 年 11 月推出后,短短两个月内其月活用户便达到 1 亿,成为有史以来增长速度最快的消费类应用和第一个杀手级的生成式 AI 应用。随着创新节奏的加快,想要紧跟生成式 AI 的发展速度,难度…

web前端-Gulp入门

web前端-Gulp入门 gulp的概述使用gulp准备工作gulp的常用APIgulp的常用插件gulpfile.js的初体验打包css文件打包scss文件打包js打包html打包images创建一个默认任务创建一个删除任务gulp启动服务创建一个监控任务 gulp的概述 gulp: 前端自动化打包固件工具&#xf…

Ansible playbook详解

playbook是ansible用于配置,部署,和被管理被控节点的剧本 playbook常用的YMAL格式:(文件名称以 .yml结尾) 1、文件的第一行应该以 "---" (三个连字符)开始,表明YMAL文件的开始。    2、在同一…

IIC子系统测温湿度

采用stm32MP157AAA芯片,温度传感器 si7006 0x40 1、在内核空间不支持浮点数进行打印,所以需要将读取到的数据拷贝到用户空间,执行用户程序打印 2、在probe函数中 分步注册字符设备驱动自动创建设备节点 3、在i2c驱动代码中,需要自…

通用的链栈实现(C++)

template<class T> class MyStack//链栈 { private:struct StackNode{T data;StackNode* next;StackNode(const T& val T(), StackNode* p nullptr) :data(val), next(p) {}//};StackNode* top;int cursize;void clone(const MyStack& s){Clear();cursize s.c…

cgo与调用c的回调函数指针

cgo直接调用函数&#xff0c;使用基本数据类型非常简单&#xff0c;包括一些结构体也比较简单&#xff0c;嵌套的稍微复杂些&#xff0c;但也可以&#xff0c;但有的时候&#xff0c;cgo调用c函数&#xff0c;会需要传递一个回调函数的指针&#xff0c;这时候就比较复杂了&…

office365 outlook邮件无法删除

是否遇到过&#xff0c;office365邮件存储满了&#xff0c;删除邮件无法删除&#xff0c;即便用web方式登录到outlook&#xff0c;删除邮件当时是成功的&#xff0c;但一会儿就回滚回来了&#xff0c;已删除的邮件&#xff0c;你想清空&#xff0c;最后清理后还是回到原样。 请…

YTM32的循环冗余校验CRC外设模块详解

YTM32的循环冗余校验CRC外设模块详解 文章目录 YTM32的循环冗余校验CRC外设模块详解引言原理与机制CRC算法简介从CRC算法到CRC硬件外设 应用要点&#xff08;软件&#xff09;CRC16 用例CRC32 用例 总结参考文献 引言 在串行通信帧中&#xff0c;为了保证数据在传输过程中的完…

基于Python优化图片亮度与噪点

支持添加噪点类型包括&#xff1a;添加高斯噪点、添加椒盐噪点、添加波动噪点、添加泊松噪点、添加周期性噪点、添加斑点噪点、添加相位噪点&#xff0c;还提供清除噪点的功能。 我们先看一下实测效果&#xff1a;&#xff08;test.jpg为原图&#xff0c;new.jpg为添加后的图片…

自动化测试的成本高效果差,那么自动化测试的意义在哪呢?

一、自动化测试的成本高效果差&#xff0c;那么自动化测试的意义在哪呢&#xff1f; 我觉得这个问题带有很强的误导性&#xff0c;是典型的逻辑陷阱之一。“自动化测试的成本高效果差”是真的吗&#xff1f;当然不是。而且我始终相信&#xff0c;回答问题的最好方式是把问题本身…

达索系统3DEXPERIENCE WORKS 2024流体仿真功能增强

设计工作中&#xff0c;网格划分和设计验证十分重要&#xff0c;它可以方便我们把复杂组件简单化处理&#xff0c;从而提升工作效率。 轻松应对&#xff0c;精准划分 在优化设计以获得更好的空气动力学性能时&#xff0c;需要了解空气在其周围产生的流动方式。达索系统3DEXPE…

(论文阅读29/100 人体姿态估计)

29.文献阅读笔记 简介 题目 DeepCut: Joint Subset Partition and Labeling for Multi Person Pose Estimation 作者 Leonid Pishchulin, Eldar Insafutdinov, Siyu Tang, Bjoern Andres, Mykhaylo Andriluka, Peter Gehler, and Bernt Schiele, CVPR, 2016. 原文链接 h…

STM32 X-CUBE-AI:Pytorch模型部署全流程

文章目录 概要版本&#xff1a;参考资料STM32CUBEAI安装CUBEAI模型支持LSTM模型转换注意事项模型转换模型应用1 错误类型及代码2 模型创建和初始化3 获取输入输出数据变量4 获取模型前馈输出模型应用小结 小结 概要 STM32 CUBE MX扩展包&#xff1a;X-CUBE-AI部署流程&#xf…