-
通过表面肌电信号进行人体手部动作的发起检测,是利用肌电信号实时识别手部动作的基础,它实际上可以认为是对肌肉动作(收缩)发起时刻的判断。对于肌肉收缩的准确判断,在模式识别领域有广泛的应用研究价值。在康复医学领域,利用肌电信号帮助残疾人实现运动功能,得到了越来越多研究人员的认可;在虚拟现实领域,通过肌电信号准确反映人体的运动状态,实现自然深度的人机交互。本文的前期工作是在离线模式下,利用自制肌电信号采集与处理实验系统,采用较少的表面肌电电极(两个),对常用手势库中的8种手势动作进行识别,识别率高,适应性强,取得了较好的实验效果[1]。
然而,肌电信号具有微弱性和随机性等显著特点,易受干扰[2],使利用肌电信号进行手部动作发起的精确检测成为一难点问题;另一方面,探索一种高精度的肌电信号检测方法可以准确地判断人体动作对应的始末肌电信号,对于准确识别手部动作具有重要的意义[3]。早期的检测方法一般是由经验丰富的医师进行观察得到,但由于受到检测者主观方面(经验及技术)的影响,个体差异性比较大[4]。因此如何利用肌电信号对手部动作发起实现客观检测,并使之引入对其的在线识别,必须建立一套有效的手部动作发起的检测方法。
前期有学者使用双阈值检测器[5]、小波变换[6-7]、统计判据决策[8]等先进的方法,但以上方法计算量大,亦或是需要不断获取当前肌电信号水平等先验知识建立预先模型。这些方法并不适用于动作发起的实时检测。目前,现有方法都不能较好地达到精确检测的目的,文献[9]利用运动单位动作电位(motor unit action potential, MUAP)在发放时所产生的波峰进行检测,并使用非线性能量算子来突出表面肌电信号的峰值,之后通过阈值的方法进行判断。由于非线性能量算子在算法处理时耗时较长,难以应用于在线判断。而另一些学者便将研究目标放在了与肌电信号有着某种相似之处的语音信号处理上与数字信号处理中,由于具有相似特点,所以可以尝试将较为成熟的语音信号端点检测方法应用于表面肌电信号。文献[10]提出一种基于(hidden markov model, HMM)模型的语音信号端点检测方法,能将语音和噪声的细微差别进行有效的放大,提高语音端点检测准确性,但方法较为复杂,不利于信号的实时处理。而有研究人员将端点检测变换成模式识别以及图像处理的问题来处理。文献[11]使用Bayes最小错误率的方法,将每帧语音进行分类并训练学习,采用最小错误率贝叶斯选出最优门限值,从而提高了检测的精确度。这类算法充分考虑了语言帧之间的联系,这种相关性会使误差的概率最小。文献[12]实现了语音信号的端点检测,利用了图像处理的边缘检测方法,通过改进经典Roberts算子,并设定阈值门限,将检测精度进一步提高。Roberts算子简单直观,有较好的水平与垂直边缘检测效果,且定位精度较好。
本文提出一种通过表面肌电信号进行手部动作发起检测的方法,将TKE算子应用于sEMG信号的预处理,设计二值化状态函数,并针对消除噪声对肌电信号的影响,提出启发式滤波策略。建立手部动作发起的表面肌电仿真模型,通过比对应用几种算子对仿真模型进行发起检测,证明TKE算子方法的有效性。利用肌电信号采集与处理系统进行实验验证,结果表明本文提出的检测方法能够对手部动作发起进行高精度的实时检测。
HTML
-
若用真实肌电信号进行测试,人工记录动作的发起时刻,则实验结果准确性不高,且受主观影响。为了对比验证使用TKE算子检测操作者手部行为发起的有效性,对肌电持续时间进行判断,需建立行为发起时刻肌电信号的仿真模型。通过对模型的建立,从而获取准确的行为发起时间,客观上与不同检测方法获取的时间进行对比。本文采用文献[8]提出的方法建立模型,其基本原理是基于肌电信号在活动段与非活动段之间信号方差σ2的差别,在t0处、t长度内形成线性增量。图 1表示了一段持续时间为1 s长度的仿真肌电信号以及其对应的方差变化,这段信号的基本参数信息是:$\sigma _{{\rm{noise}}}^2 = 1$,τ=50 ms,t0=501 ms,SNR=10 dB。
其信噪比为:
以Duchene模型建立了4 000段在不同时刻肌肉收缩的肌电信号,每段信号时长均为1 s,用以模拟人体手部握拳时产生的肌电信号。在产生仿真肌电信号时,其特征参数均有一定范围,发起时刻${t_0} \in [500,600]\;{\rm{ms}}$、收缩时间$\tau \in [5,30]\;{\rm{ms}}$、信噪比${\rm{SNR}} \in [10,20]\;{\rm{dB}}$,参数按照均匀随机分布设定。
-
在生成仿真肌电信号的基础上,开展基于TKE算子的手部动作发起检测。通过TKE算子提取信号频率及幅值信息,而后经过二值化状态函数对预处理后的肌电信号进行发起判断,得到二值化状态特征,如图 2所示。
图 2表明,仿真肌电信号经过TKE算子以及二值化状态函数处理后,可以判断出动作发起的时刻。但由于信号易受噪声影响,偶尔会出现动作发起时刻的误判。本文提出启发式滤波策略,可以大幅减少这种噪声对发起检测带来的影响。
-
通过引入启发式滤波策略,可以避免动作发起时刻的误判,如图 3所示。
由仿真实验得到,引入启发式滤波策略能够消除肌电尖峰等噪声的影响,即根据操作者前臂肌肉肌电信号的一些固有特性,如收缩率以及持续长度,有效判断肌肉一次收缩的发起、持续、结束。滤波完成,即可根据s'(n)内“1”所在位置清晰地判断肌肉信号发起的位置${\hat t_0}$、持续时间及结束时间。
-
实验将依据Duchene模型生成4 000段肌肉收缩信号。本文采用TKE算法及其他几种经典算法:1) 标准差STD方法;2) 均值MAV的方法;3) Hodges方法。TKE方法中阈值乘子j=7,STD、MAV与Hodges方法中M=1000,W=20,O=10,h=3。将各个方法得到的${\hat t_0}$与真实t0进行比较,有:
式中,te为检测时间的误差。对各种方法所得到的te进行概率密度的估计(probability density function, PDF),结果如图 4所示。
由图 4可以看出,TKE算法求得的te能够收敛在一个较小区域,而且其峰值更接近中心(峰值对应te≈1.3 ms)。使用STD与MAV方法,峰值远离中心(STD:te≈15.3 ms,MAV:te≈17.1 ms),如此将在真正检测时形成10 ms以上的误差。Hodges方法利用窗口第一数据点,当峰值te≈-3.1 ms,将会产生超前预测误差。
最后引入启发式滤波策略对结果进行优化,采用T1=50 ms,T2=25 ms。结果表明,超前检测方面,TKE方法变得精确,$\min {t_e} >-50{\rm{ ms}} $,而STD、MAV及Hodges方法则变化不大。在检测后误差方面,Hodges有增加的趋势,其他方法基本不变。进一步,讨论4种算法的实现时间,在32位core i5处理器,2 GB内存配置的PC机上,利用matlab中tic和toc命令进行程序运算时间的测算,各种检测方法耗时如表 1所示。
检测方法 TKE Hodges STD MAV 实现时间/s 0.112 0.115 0.095 0.104 表中,4种算法在数量级上几乎没有差别,STD方法计算速度稍快,因为该算法涉及到的只是在时域的处理,MAV方法同Hodges方法的区别仅在于最后的决策阶段,乘子h分别作用于均值(MAV)还是标准差(Hodges),耗时相当,TKE算法步骤较复杂,但运算时间与其他方法差别不大。算法耗时在数量级上相同,几乎不影响,而从误差分布来看,TKE最为准确。为了能更准确地描述行为发起时间,选用TKE算子作为判断的方法。