表面肌电信号(Surface Electromyography)是众多生物电信号中的一种,也是相对来说最容易获取的一种电生理信号。将电极片放置在人体的皮肤表面,可以记录到皮肤表面因肌肉收缩而产生的微弱的电位差,而这个微弱的电位信号通过肌电采集电路的放大和转换就形成了可用作处理的表面肌电信号。sEMG是及其微弱的,下面是肌电与常见电源的电压值比较。
采集sEMG的装置很多,国内外均有比较成熟的产品在售,例如美国的Delsys、Noraxon、瑞典的MYON、德国FREEEMG(下图从左到右)
国内也有一些厂商在做肌电仪,虽然知名度不如Delsys这些全球厂商做的大,但是可以满足一般的科研条件,例如杭州交浦科技研发的ELONXI肌电仪
这些产品在性能上大致相同,区别在于:1)通道数,这决定了采集肌肉块的数量,一般通道数越多,信息越丰富;2)通信方式,现在一般是采用蓝牙或者WIFI通信;3)采样率,采样率高表示单位时间内获取的有效信息更多,能够甄别出更多肌肉突变的信息,当然也存在着信息冗余,增加计算时间的缺点;4)软件功能支持,包括接口支持、滤波支持、内置处理方法等。
上述对产品的简单介绍只是让大家了解一下采集肌电信号的设备,当然也有很多实验室会自己研发特定需求的肌电采集装置来满足实验需求。采集的过程是基本步骤,当然如果仅仅要验证算法,可以使用公共数据集进行测试,比较有名的公共数据集是Ninapro,体量大,数据量全,针对的场景也比较广。当然还有high-density肌电阵列采集的数据集,浙江大学的CapgMyo。
那么肌电是如何产生的呢?
其实人体的各种运动的源头信号均来自于大脑,相当于一个指挥官在给身体的各个组织部分发送命令。当人体做出某个动作时,脊髓神经会产生一个控制信号并利用神经肌肉接头作为媒介传递到肌纤维,与每个神经元关联的肌纤维有很多条,这些部分合在一起就构成了所谓的运动单元。肌纤维细胞经过去极化和复极化操作,在神经肌肉接头处产生动作电位,这个动作电位会沿着神经元的轴突传导到末梢神经和肌肉接点,一旦运动神经接触到肌肉,那么它的轴突将会分支到多个肌纤维上,每个分支终止在肌纤维上形成运动突出的过程称为运动终板。传导到轴突末梢的动作电位使神经与肌肉的接点释放化学物质乙酸胆碱,它使得运动终板的离子通透性发生变化产生终板电位,而后,该终板电位使肌细胞膜达到去极化阈值电位,并产生肌纤维的动作电位,这个动作电位沿着肌纤维向两个肌腱端传播,引起了肌纤维内的一系列变化,导致肌纤维的收缩,大量肌纤维收缩产生肌肉力,并在其周围组织中产生细胞外电场。周围组织经过滤波操作,便可由表面电极或针电极检测到人体软组织中因电流场而表现出的电位差,记录这种肌肉动作电位的曲线称为肌电图(Electromyography, EMG),即所谓的肌电信号。
总结一句比较好理解的就是:你想抬胳膊的时候,这个想法从大脑给出,通过神经介质啥的传递到能执行抬胳膊的肌肉处,一系列的化学反应之后促使肌肉收缩从而在肌肉纤维上产生动作电位,形成电势差,恰好你把特殊装置(肌电贴片)贴合在皮肤表面就获取到了这个电势差的变化,产生的微弱的电位信号。加入我们在胳膊的前臂上贴了足够多的有效电极,那么手部的任何运动在各个电极上产生的电位信号的组合是不相同的,是可区分的。因此,我们可以通过肌电信号来把手势动作分割出来(对应到整个手臂动作、腿部动作、咽喉部动作、背部动作均可以区分)。下图是16个通道信号在完成不通手势的时候的原始信号幅值变化。动作越接近,幅值变化也就越接近。
那么采集到这些信号之后如何处理呢?
一般情况下,采集装置的软硬件中都会有一些滤波装置,例如肌电在20Hz-500Hz有效,那么就用滤波器截取出这部分有效信号,对于50Hz/60Hz的电位串扰噪声,可以用陷波滤波器去掉。所以我们可以默认从采集装置中获取的信号就是比较纯净的信号了(当然噪声还是很大的,毕竟生物电信号的特点就是不稳定、噪声大)。对肌电信号的处理流程图如下所示
当然也不是绝对的这个过程,预处理中的放大、滤波等都可以在硬件中处理。大多数按照这个处理流程:采集——>预处理(滤波)——>特征提取(含分窗)——>分类。其中特征提取和分类一直是做肌电分类的研究者的研究重点。
简单的介绍下后边的三个部分
预处理一般就是对获取到的信号进行软件处理,可以用小波变换等去噪方法进行去噪,也可以根据处理性能对信号进行重采样,还可以对信号从频域或者时频域上进行分析
特征提取一般是与信号分割(分窗)结合的,采用移动窗口法,在特定的小窗口中提取特征变量,一方面可以降维,另一方面特征量相对原始数据更能体现该段的特征,下图中的w就是一个窗口,t是一个shift window,相邻的两个窗口之间的重合率是(w-t)/ w。因为时序信号往往都存在这上下文相关的特性,所以具备一定的重合更能体现出特征。在w窗口内对这一段信号提取特征,这些特征可以分为时域特征,就是一些统计量啥的,均方根,能量,过零点等等太多了。频域特征,提取的就是经过傅里叶变换的频域方面的特征,中值频率,均值频率等等,不过频域特征的效果不如时域特征好。还有时频域特征,包括小波变换,小波包变换等等。当然还有其他一些特征提取方法,包括有人用深度学习方法CNN从大量的数据中提取出一些“黑盒”特征。
分类就是对特征进行分类,一般现在都是用机器学习方法(包括深度学习)对特征与对应的类别进行建模。传统意义上的分类方法包括KNN,Bayes,LDA,SVM,ANN,RF等等分类器,效果其实已经很好了。但是大家不满足传统分类器经验指导(设定参数)的模式,觉得如果用深度学习深挖模式关系会更好,然后有了很多人把目前流行的深度学习框架都放到肌电上去跑,从CNN,LSTM到TCN,GCN甚至胶囊网络等等。
总结一下,本文主要是简单介绍下肌电是什么,怎么采集,大致的处理流程。更多细致的处理方法见后续...如有错误,请评论指正!