- 1. 前言
- 2. 架构模块
- 3. 模块间通信
- 4. 开源
- 5. 信号源模块的代码
- 6. 比较
- 7. 总结
- 8. 其他
1. 前言
最近恰巧了解到BCI2000项目,她是由美国德克萨斯大学健康科学中心的 Gerwin Schalk博士和Jtirgen Mellinger博士及其团队于2000年左右开发的一个通用脑-机接口(BCI)平台。最初,BCI2000 旨在为脑电图(EEG)研究和BCI实验提供一个标准化、可扩展的工具, 方便科学家采集和处理脑电信号,并将其用于各类研究和应用场景中。该平台迅速发展,成为脑-机接口研究的主流工具,广泛应用于神经科学、康复治疗、神经反馈和其他相关领域。其开源的架构使得研究人员能够自由修改代码、扩展新功能,并且适配各种硬件设备和信号处理算法。
2. 架构模块
根据上面官方原理图可以看出,其内部一共分为四大核心模块,然后核心框架高度抽象地把他们融合在一起,实现灵活扩展、进程分离:
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种。
src\contrib\SignalSource目录下,有外部贡献的14种。
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配置好期望运行的每一个进程以及参数。
操作模块打开后如下图:
点击Config将会有很多参数,他们可以保存到本地文件,也可以加载进来。
3. 模块间通信
业务相关的进程由以下三种进程组成:
- Source Process(信号源进程):与硬件设备连接,采集生理信号。
- Processing Process(信号处理进程):对接收到的信号进行处理,如滤波、特征提取等。
- Application Process(应用进程):基于处理后的信号执行具体操作,如控制设备或应用程序。
这些进程通过 TCP/IP 通信协议相互交互。数据从 Source Process 采集信号,传递给 Processing Process 处理,再传递到 Application Process 执行应用。而Operator Module负责配置并启动这些进程,管理参数。
4. 开源
BCI2000是开源软件,采用CPP编写,CMake构建。采用GPL许可证,允许自由使用、修改和分发软件,但任何衍生作品也必须在同样的GPL许可证下发布。这意味着改进和修改后的版本也必须保持开源,并提供源代码。
5. 信号源模块的代码
- 上述4个模块,通过一些基础的类框架,粘合在一起。
- 每个信号源模块,通过字符串来描述自己有哪些参数可配置,然后操作模块会据此生成对应的GUI。但是这个解释型的字符串语法本身,不太自然。
- 每个信号源模块,通过实现父类中的关键API来融入到高度抽象的框架,编写都可以编译成独立软件,从而进程分离、解耦,这一点在信号数据量本就不大的前提下,很棒。
6. 比较
7. 总结
BCI2000作为通用的BCI平台,支持各种生理信号采集设备和自定义算法,适用于BCI研究、神经康复等多个领域。与其他类似软件相比,BCI2000具有极高的灵活性,能够轻松适配多种硬件设备,且开源的特点为研究人员提供了自由的开发环境。
8. 其他
盛大的陈天桥大佬也进入了脑科学领域,和加州理工学院合作成立了陈天桥雒芊芊脑科学研究院,并投资Synchron公司和NeuroXess(脑虎科技)。