基于手机加速度传感器的手势识别系统研究

龙源期刊网 http://www.qikan.com.cn

基于手机加速度传感器的手势识别系统研究

作者:王鹏 丁任之 何天翔 雷汝霖 来源:《软件导刊》2016年第08期

摘 要:基于智能手机上的加速度传感器,设计并实现了一种手势识别系统。采用时间数列方法对加速度数据样本建模,对数据进行降噪和优化处理,包括使用抽取突变消除平缓强调动作的变化;利用门限值差分方法进行手势动作动态自截取;利用特征提取简化数据,提高识别正确率;利用模板匹配方式,基于动态时间规整(DTW)算法进行手势检测。实验结果表明,该系统方便可行,具有较高的识别率。

关键词关键词:加速度传感器;动态时间规整;手势识别 DOIDOI:10.11907/rjdk.161536 中图分类号:TP319

文献标识码:A 文章编号:1672-7800(2016)008-0062-03 0 引言

智能手机已广泛使用,但目前单纯基于触屏和按键操作的二维手势操作方法却不能满足人们对手机操作体验越来越高的要求。笔者设计了一款可以在3维空间中识别用户特定动作的手势识别系统,该系统具有以下优点:①手势识别时直接以人手的动作作为输入,省去了中间媒介,相较于语音识别减少了冗余因素不必要的影响;②用于数据获取的加速度传感器广泛内置于智能手机中,成本低且具有较高的灵敏度和较小的体积,便于获取和使用。

基于加速度传感器的手势识别技术主要包括隐马尔科夫模型、模糊神经网络、模板匹配等方法。本文实现了基于DTW算法的动态手势识别系统。为了减少脏数据获取,本文使用一系列方法进行优化。主要包括:使用抽取突变的方法来强调数据的突变并忽略数据的平缓;使用基于门限的动态手势截取方法,对手势进行实时识别,提升了系统对个体差异的适应性,增强了连续动态手势输入的实时性;使用特征提取方法,简化了手势识别的分析模式,提高了手势识别的准确性。 1 系统流程

本系统流程如图1所示[1]。首先,用户手握手机做出相应手势,手势数据被智能手机的加速度传感器所获取。经过数据处理(包括抽取突变、手势截取)后,对得到的时间序列进行特征提取。经过特征提取的数据再通过DTW算法进行手势匹配,最后得到识别结果。 2 数据采集

龙源期刊网 http://www.qikan.com.cn

笔者通过Android手机内置的三轴加速度传感器进行数据采集,设定三轴加速度传感器数据获取间隔为5000 μs,单位为m/s2。同时,需要获取每个轴的重力加速度,为之后的特征提取进行数据准备,因此还需使用手机的重力传感器。设定重力加速度传感器数据获取间隔为SENSOR_DELAY_NORMAL,即20000 μs,单位为m/s2。最后,对获取到的三轴加速度数据进行建模[2]: 3 数据处理 3.1 抽取突变

对于用户手势数据的获取,需要采集加速度数据变化剧烈的点(通常是手势进行的标志),同时应忽略变化平稳的数据样本(通常是脏数据)。本文使用了抽取突变[3]这种强调传感器数据的瞬间变化,初步去除静态和缓慢变化的数据背景方法,见公式(1)。 定义权值Alpha,则有:

其中,currentAcc表示某个方向轴经过抽取突变处理的数值,x表示该方向轴传回的原始数据,preData表示上个时间帧经过抽取突变得到的冗余值,Alpha值为0.8。 3.2 手势截取

本系统采用基于门限的手势动态截取方法[4],通过将加速度的变化量与设置好的门限进行比较,判断手势的开始和结束。公式(2)实时获取了每个时间帧加速度变化量之和。其中x(t),y(t)、z(t)分别表示在t时刻(即当前时间帧)x轴、y轴、z轴方向的加速度值,x(t-1)、y(t-1)、z(t-1)分别表示在t-1时刻(即上个时间帧)x轴、y轴、z轴方向的加速度值。

为了减少误差消除噪声,采取N个采样数据的差分结果求均值,如公式(3)所示。 最后使用门限值进行数据截取,其中定值Start和End分别表示判断手势开始和手势结束的门限值。结合通过公式(3)得到的ai,则有截取过程如下:①ai >Start,标志手势已开始,开始记录三轴加速度传感器获取的数据并转换为时间序列;②ai

图2表示用本方法获取的手势1样本数据,可以发现在无手势时,各方向加速度趋于稳定,变化较小,在有手势动作时,则剧烈变化。 4 特征提取

由于手势数据过于复杂且类型多样,直接作为分类标准无法实现,为此本文使用特征提取方法,该方法有助于减少数据处理工作量并提高手势识别准确性。

龙源期刊网 http://www.qikan.com.cn

通过特征提取作为手势识别的判别标准,就必须明确反映出使用者手势的运动学特性并且与其它手势有明显差异[5]。在这样的前提下,本文以可分性、可靠性、独立性作为特征的选取标准,得到如下3个手势特征:

(1)时间长度:即该手势所花费的时间T,是最基本的手势判定标准。 其中tend为手势结束时间,tsta为手势开始时间。

(2)手势能量:即进行该手势所用的能量E,通过能量可以判断手势的剧烈程度。 其中T为时间序列长度; axi、ayi、azi分别为i时间点x方向、y方向、z方向的加速度数值;gxi、gyi、gzi分别为i时间点x方向、y方向、z方向的重力加速度数值。

(3)波峰数:X、Y、Z三个方向加速度时间图像中,波峰的数量P反映了加速度的变化 通过统计不同方向的加速度变化,从而判断手势运动轨迹。

Px、Py、Pz分别为X方向、Y方向、Z方向加速度图中的波峰数量。 5 手势识别

事先在手机中存储一系列的标准动作模板,当检测到手机有动作发生时便将该动作的传感器波形与标准动作模板库中的动作波形进行匹配处理,以此来判断动作类型。采用DTW(Dynamic Time Warping,动态时间归整)算法来实现波形匹配[6]。DTW相对于HMM算法,在训练阶段不需要大量数据。R={R(1),R(2),……,R(m)},测试模板T={T(1),T(2),……,T(n)}, n=1为起点语音帧,n=N为终点语音帧。为了比较相似度,可以计算它们之间的距离 D[T,R],距离越小则相似度越高[7]。对齐可以采用线性扩张方法,动态规划(DP)方法,采用欧式距离,d(Ri, Tj)= (Ri-Tj)2。

为了对齐这两个序列,需要构造一个n、x、m的矩阵网格,矩阵元素(i,j)表示Ri和Tj两个点的距离d(Ri,Tj)(也就是序列R的每一个点和T的每一个点之间的相似度,距离越小则相似度越高,这里先不管顺序),一般采用欧式距离,d(Ri,Tj)= (Ri-Tj)2(也可以理解为失真度)。每个矩阵元素(i,j)表示点Ri和Tj的对齐。DP算法可以归结为寻找一条通过此网格中若干格点的路径,路径通过的格点即为两个序列进行计算对齐的点。为了使路径不过于倾斜,可以约束斜率在0.5~2的范围内,如果路径已经通过了格点(n,m),那么下一个通过的格点(n,m)只可能是下列3种情况之一:1(n,m)=(n+1,m);2(n,m)=(n+1,m+1);3(n,m)=(n,m+1)。所以,

实践中对此思路做了测试,以空间手势为例 ,主要根据三轴加速度来对敲击动作进行识别 ,加速度能够很好地反映作用于手机力的变化率和手机空间位置的变化。手势定义:①在系统中定义有意义的手势;②手势建模: 根据手势中三轴加速度的大小来建立模型;③手势

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4