1. 前言

最近恰巧了解到BCI2000项目,她是由美国德克萨斯大学健康科学中心的 Gerwin Schalk博士和Jtirgen Mellinger博士及其团队于2000年左右开发的一个通用脑-机接口(BCI)平台。最初,BCI2000 旨在为脑电图(EEG)研究和BCI实验提供一个标准化、可扩展的工具, 方便科学家采集和处理脑电信号,并将其用于各类研究和应用场景中。该平台迅速发展,成为脑-机接口研究的主流工具,广泛应用于神经科学、康复治疗、神经反馈和其他相关领域。其开源的架构使得研究人员能够自由修改代码、扩展新功能,并且适配各种硬件设备和信号处理算法。

2. 架构模块

BCI2000_New_Schematic_Extra_Large.gif

根据上面官方原理图可以看出,其内部一共分为四大核心模块,然后核心框架高度抽象地把他们融合在一起,实现灵活扩展、进程分离:

2.1. Source Module(信号源模块)

采集脑电或其他生理信号。比如:EEG采集设备如Biosemi可以作为Source Module,接收实时的EEG信号输入。

由于信号都是其他厂家的外部硬件负责采集,故在src\contrib\SignalSource目录下,有外部贡献的44种信号源。

这里是采集信号的波形图:

波形图

2.2. Signal Processing Module(信号处理模块)

处理和分析采集到的信号。举例:BCI2000的处理模块可以通过滤波和特征提取来分析特定的脑电波,如α波和β波,进而将这些信息转换为BCI的控制信号。

这是BCI科学中的核心部件,为科研工作者提供分析脑电信号的手段:

src\shared\modules\signalprocessing目录下,有官方贡献的25种。 Official_SignalProcessing

src\contrib\SignalSource目录下,有外部贡献的14种。 Third_SignalProcessing

2.3. User Application Module(用户应用模块)

基于处理后的信号控制外部应用程序或设备,这些模块让BCI2000成为一个灵活的脑机接口平台,能够适应不同实验需求和应用场景。

简单的说,是一些读心术的经典应用,比如:

2.3.1. CursorTask (光标控制任务)

  • 功能:该模块实现了一个基于脑电信号的光标控制任务,用户可以通过脑电信号控制屏幕上的光标移动。
  • 应用场景:用于研究脑控界面的性能、基于想象运动的光标控制等任务。
  • 例子:用户通过想象手的运动,控制光标向左或向右移动,完成特定目标任务。

2.3.2 FeedbackTask (反馈任务)

  • 功能:该模块实现了实时反馈机制,可以根据用户的脑电信号输出特定反馈(如声音、视觉反馈)。
  • 应用场景:用于用户的脑状态评估和适应性反馈调整,如在认知任务中,评估专注度并给出相关反馈。
  • 例子:当用户保持高集中注意力时,系统会显示绿色光标,注意力降低时光标会变红。

2.3.3. P300Speller (P300拼写器)

  • 功能:这是基于 P300 事件相关电位的拼写任务模块。用户通过选择字母矩阵中的字符进行脑控输入。
  • 应用场景:主要用于帮助失去语言表达能力的患者进行文字输入。
  • 例子:用户通过注视某一字母,系统通过检测 P300 信号来确定用户的选择,从而实现文字的拼写。

2.3.4. StimulusPresentation (刺激呈现任务)

  • 功能:这个模块可以控制呈现给用户的视觉或声音刺激,并记录用户的脑电反应。
  • 应用场景:用于事件相关电位(ERP)的实验,如研究特定刺激对脑电信号的影响。
  • 例子:向用户呈现闪烁的图像,并记录大脑对这些图像的反应以研究注意力或感知能力。

2.3.5. RoboArmControl (机器人手臂控制)

  • 功能:该模块通过分析用户的脑电信号来控制外部设备,例如机械手臂。
  • 应用场景:可以应用于残疾人辅助技术,通过脑控机械手臂进行日常任务的完成。
  • 例子:用户通过想象手臂的运动,来控制机器人手臂抓取和放置物体。

2.3.6. SoundFeedback (声音反馈任务)

  • 功能:根据脑电信号生成音频反馈,常用于训练用户如何利用脑信号进行控制。
  • 应用场景:如通过脑电信号调节声音的频率和音量,以帮助用户更好地控制自己的脑信号。
  • 例子:当用户放松时,音调变得柔和,当用户集中注意力时,音调变得更高亢。

2.3.7. BrainSwitch (脑开关任务)

  • 功能:通过脑电信号控制“开关”状态,即基于用户的脑电活动决定是否触发某个操作。
  • 应用场景:用于简单的二进制任务,如开关电器或启动系统功能。
  • 例子:通过想象特定动作,用户可以控制灯光的开关。

2.4. Operator Module(操作模块):

提供图形用户界面,用于配置和控制BCI2000的运行。由于上述模块都有很多种、每个都是独立的进程,所以在你的科研环境中,需要编写BAT配置好期望运行的每一个进程以及参数。

操作模块打开后如下图:

Operator

点击Config将会有很多参数,他们可以保存到本地文件,也可以加载进来。

3. 模块间通信

SoftwareList

业务相关的进程由以下三种进程组成:

  • Source Process(信号源进程):与硬件设备连接,采集生理信号。
  • Processing Process(信号处理进程):对接收到的信号进行处理,如滤波、特征提取等。
  • Application Process(应用进程):基于处理后的信号执行具体操作,如控制设备或应用程序。

这些进程通过 TCP/IP 通信协议相互交互。数据从 Source Process 采集信号,传递给 Processing Process 处理,再传递到 Application Process 执行应用。而Operator Module负责配置并启动这些进程,管理参数。

4. 开源

BCI2000是开源软件,采用CPP编写,CMake构建。采用GPL许可证,允许自由使用、修改和分发软件,但任何衍生作品也必须在同样的GPL许可证下发布。这意味着改进和修改后的版本也必须保持开源,并提供源代码。

5. 信号源模块的代码

  1. 上述4个模块,通过一些基础的类框架,粘合在一起。
  2. 每个信号源模块,通过字符串来描述自己有哪些参数可配置,然后操作模块会据此生成对应的GUI。但是这个解释型的字符串语法本身,不太自然。
  3. 每个信号源模块,通过实现父类中的关键API来融入到高度抽象的框架,编写都可以编译成独立软件,从而进程分离、解耦,这一点在信号数据量本就不大的前提下,很棒。

6. 比较

EEGSoftwareCompare

7. 总结

BCI2000作为通用的BCI平台,支持各种生理信号采集设备和自定义算法,适用于BCI研究、神经康复等多个领域。与其他类似软件相比,BCI2000具有极高的灵活性,能够轻松适配多种硬件设备,且开源的特点为研究人员提供了自由的开发环境。

8. 其他

盛大的陈天桥大佬也进入了脑科学领域,和加州理工学院合作成立了陈天桥雒芊芊脑科学研究院,并投资Synchron公司和NeuroXess(脑虎科技)。