基于双通道表面肌电信号的在线手势识别系统研究

2022-03-16 07:15郑海鹏李玉榕
物联网技术 2022年3期
关键词:尺侧电信号手势

郑海鹏,李玉榕

(福州大学 电气工程与自动化学院,福建 福州 350108)

0 引 言

手势是人们日常沟通交流的重要方式,人们可以通过几个简单的手势表达出十分复杂的信息,而对于一部分信息通过语言文字去表达则要复杂许多。表面肌电信号包含了生物运动的各种信息并且它还超前于生物的运动行为。这一特性使得表面肌电信号在人机交互、假肢控制、手势识别等领域得到了广泛应用。

通过分析手前臂肌肉的表面肌电信号,可以预测人的手势动作,再将识别出的手势动作作为计算机系统的输入,从而实现人与计算机的交互。上海理工大学的刘万阳等人基于尺侧腕伸肌和尺侧腕屈肌上的表面肌电信号对受试者的手势进行识别,并将识别的结果作为虚拟厨房的控制指令输入虚拟厨房系统中,从而实现对虚拟厨房的控制。

表面肌电信号是生物运动时产生的生物电信号。它仅与生物运动有关,而与外界光和声音等因素无关,这使得基于表面肌电信号的手势识别的应用场景十分广泛。针对提高系统的鲁棒性方法,葡萄牙科英不拉大学系统和机器人研究所的Mahmoud等人提出了利用支持向量机阈值法和设置锁定手势的方式来防止系统在人运动时的误识别,从而使得基于表面肌电的手势识别系统有了更大的应用空间。

表面肌电信号采集十分简单且无创,使得表面肌电信号的采集实验十分容易被受试者接受。从肌电信号到手势识别、再从手势识别到计算机系统的人机交互方式是一种便捷且实用的人机交互方式。基于此,本文开展了健康人群的表面肌电信号的采集和分析,并对目标动作进行识别,最后通过GUI界面实时显示系统识别结果。

1 系统设计

本文选取的目标动作为握拳、伸掌、伸腕和屈腕四个动作。本文通过由肌电传感器和Arduino UNO开发板组成的双通道表面肌电信号采集系统实时采集手前臂的尺侧腕屈肌和尺侧腕伸肌的表面肌电信号,并在上位机中搭建模式识别系统对采集到的信号进行预处理、活动段提取、特征值提取和目标动作识别等,最后通过GUI界面实时显示分类识别的结果。在实现在线识别的过程中,本文首先通过了多组离线实验来确定系统各个环节的方法和参数,然后再根据离线实验确定的参数搭建在线识别系统。整体的系统框图如图1所示。

图1 系统框图

2 实现方法

2.1 表面肌电信号采集系统的搭建与数据采集

如图2所示,本文所搭建的双通道表面肌电信号采集系统主要包括DFROBOT Gravity肌电传感器和Arduino UNO开发板,实验实物图如图3所示。通过在Arduino UNO开发板编写程序,实现该双通道表面肌电信号采集系统以475 Hz的采样频率采集受试者尺侧腕伸肌和尺侧腕屈肌上的表面肌电信号,并将采集到的信号通过串口传输到上位机。

图2 表面肌电信号采集系统设计框图

图3 实验实物图

在采集实验中本文选择了4名男性和1名女性共5名健康受试者作为实验对象,受试者详细信息见表1所列。实验前,用酒精擦拭受试者皮肤表面,并待其自然风干。采集过程中,首先要求受试者保持手臂完全放松,直至MATLAB打印“静息段采集结束,实验开始”。本文要求受试者依次做握拳、伸掌、屈腕和伸腕四个动作,每个动作重复四次,每次动作保持4 s,每次动作中间休息3 s。四种目标动作如图4所示。

表1 受试者信息

图4 四种目标动作

2.2 上位机中的信号处理

(1)串口助手

本文最终目的是为了实现手势的在线识别,故要求MATLAB(R2018b)能够实时读取下位机通过串口传输至上位机的数据。本文利用MATLAB(R2018b)自带的函数编写一个串口工具,从而实现MATLAB(R2018b)对下位机传输的数据进行实时显示和保存。

(2)肌电信号预处理

表面肌电信号十分微弱,并且十分容易受到环境噪声、工频干扰和个人身体差异的影响,使得表面肌电信号的信噪比较低。为了获得高信噪比并使在线系统具有良好的实时性,本文采用了工频陷波器、绝对值整流和2阶巴特沃兹低通滤波器的组合去噪方法对采集到的信号进行预处理。

本文所采用的工频陷波器传递函数如下:

其中:=-2cos(2π),=50 Hz,为采样周期;=0.75。

本文所采用的2阶巴特沃兹滤波器的传递函数如下:

其中:=[1-1.984 0.984];=10×[3.322 6.644 3.322]。

(3)去除基线

由于DFROBOT Gravity肌电传感器和Arduino UNO开发板组成的信号采集系统采集到的信号中存在着较大的基线,并且MATLAB(R2018b)串口读取函数与Arduino的串口通信函数存在版本不兼容问题,因此本文采用了两段去基线的方法。首先在下位机中降低基线,然后在上位机中去除基线。而在下位机中降低基线的方法与在上位机中去除基线的思路相同,即通过采集一段静息信号,并依据该段静息信号求出一个预估基线,最后再用静息段后的信号减去该预估基线。本文主要通过去除基线、去除工频干扰、绝对值整流和巴特沃兹低通滤波等4个流程,对采集到的表面肌电信号进行预处理。

(4)滑动窗口设置

由于表面肌电信号采集实验是一个连续的过程,为了能够划分出活动段和特征提取段,需要将采集到的信号划分为一个个的小窗口。依据表面肌电信号超前于人行为动作约300 ms的特性、在线手势识别系统的实时性要求和表面肌电信号前后的关联性,本文选择了277 ms为一个窗口,并且每次滑动139 ms。因为本文所采用的双通道表面肌电信号采样系统的采样频率为475 Hz,所以每个窗口包含132个点,每次滑动66个点,如图5所示。

图5 滑动重叠窗

(5)活动段检测

人的表面肌电信号可分为活动信号和静息信号两类。活动信号是人体做出动作时肌肉收缩产生的信号变化,该部分的信号具有能量大和变化快的特点;而静息信号与活动信号相反,其能量小且变化缓慢。依据该特点,本文设置两个能量阈值并计算每个窗口信号的绝对平均值;再将计算的每个窗口信号的绝对平均值与预先设置的开始和结束阈值进行比较。当该绝对平均值大于开始阈值时,认为信号进入活动段;而当绝对平均值小于结束阈值时,认为活动段结束。

(6)特征值提取

表面肌电信号的特征值可分为时域、频域和时频域三类,本文依据在线系统的实时性要求,选择了计算量较小的绝对平均值、均方根和方差等三个时域特征值。以上三种特征值计算方法如下。

绝对平均值(MAV):反映了表面肌电信号在肌肉运动过程中的能量平均变化。

均方根(RMS):反映了肌电信号在运动过程中的能量有效值的变化。

方差(VAR):反映了肌电信号在运动过程中的能量变化速度。

2.3 分类器离线训练与测试

本文在CPU主频为2.5 GHz的上位机和MATLAB(R2018b)软件平台上通过两组对照实验对比了支持向量机、随机森林和KNN三种分类算法。

实验一:将受试者的数据分为训练集和测试集,再用训练集分别训练三种分类器,最后将测试集送进训练集属于同一受试者的分类器进行预测。实验结果见表2所列。

表2 实验一:识别准确率(单位:%)

实验二:用受试者1的数据训练三种分类器模型,再将剩余受试者的数据送进训练好的三种分类器进行预测。实验结果见表3所列。

表3 实验二:识别准确率(单位:%)

从表2可以发现,三种分类器的平均识别准确率都达到了90%以上,其中KNN和支持向量机的最高识别率达到了97%。从分类器计算时间来看,KNN、随机森林和支持向量机三种分类器的计算时间分别为0.041 s、0.135 s和0.002 s。支持向量机分类器计算时间要远小于其他两种分类算法。从表3可以看到,相较于实验一,实验二中三种分类器模型的识别率都大大降低了,故可推测个人的身体差异对于分类器的识别准确率有较大的影响。

根据三种分类算法的识别准确率、算法的计算量和分类器模型的普适性,最终选择了支持向量机作为本文的分类算法。

2.4 GUI界面

本文利用MATLAB(R2018b)的GUIE编辑器搭建了两个GUI界面,分别用于实时显示采集到的尺侧腕屈肌和尺侧腕伸肌的表面肌电信号和实时显示分类识别结果,如图6所示。

图6 人机交互界面

2.5 在线手势识别

本文通过GUI界面中开始按钮的回调函数将前文介绍的串口助手、数据预处理、活动段的检测、特征提取和分类识别整合到一起,即首先通过串口助手接收下位机传输来的数据,获得的数据经过信号预处理流程,然后选取最新窗口的数据进行特征提取和分类识别,最后根据分类器识别结果将对应动作的图片更新至GUI界面中,从而实现实时采集表面肌电信号和实时进行动作识别。

3 实验结果

3.1 采集到的表面肌电信号

采用Arduino UNO和肌电传感器组成的双通道表面肌电信号采集系统采集受试者1的尺侧腕屈肌和尺侧腕伸肌表面肌电信号,并通过MATLAB(R2018b)观测采集到的表面肌电信号,如图7和图8所示。

图7 尺侧腕屈肌上的表面肌电信号

图8 尺侧腕伸肌上的表面肌电信号

3.2 信号处理

本文对串口助手接收到的受试者1的尺侧腕屈肌和尺侧腕伸肌的表面肌电信号分别进行去除基线、去除工频干扰、绝对值整流和巴特沃兹低通滤波等四个步骤,其输出结果如图9和图10所示。

图9 尺侧腕屈肌肌电信号的信号处理后波形

图10 尺侧腕伸肌肌电信号的信号处理后波形

3.3 手势在线识别

将利用受试者1的数据训练好的支持向量机分类器模型导入在线系统,再由受试者1进行在线手势识别实验。以握拳手势动作为例,在线显示结果如图11所示。

图11 受试者1在线实验结果

4 结 语

本文经过多组离线实验测试,最终选出了最佳的参数和方法,并且本文提出的四种手势的识别正确率最高达到97%。在上位机CPU主频为2.5 GHz以及软件平台采用MATLAB(R2018b)的条件下进行在线测试。当受试者做出动作,上位机GUI界面可以刷新肌电信号波形,并实时显示识别出的动作。

猜你喜欢
尺侧电信号手势
螺旋CT三维重建诊断尺侧腕伸肌腱复发性脱位1例
第3指掌侧总动脉起始走行变异1例
基于联合聚类分析的单通道腹部心电信号的胎心率提取
尺侧副韧带前束与尺骨冠突关系的解剖学研究
挑战!神秘手势
基于Code Composer Studio3.3完成对心电信号的去噪
V字手势的由来
基于随机森林的航天器电信号多分类识别方法
基于生物电信号的驾驶疲劳检测方法
尺神经血液供应神经前置的解剖学研究