发明内容
本发明的目的在于减低已有的手势识别技术中对周围环境和用户位置的高依赖性以及识别过程中噪点和信号变化带来的限制,而提供一种基于加速度传感器的、采用分帧和同时利用信号时域和频域特征的手势识别的方法。
一种基于加速度传感器的手势识别的方法,其步骤如下:
(1)利用三维加速度传感器检测手持该三维加速度传感器的用户整个手势变化过程中相对于三维加速度传感器的三维加速度数据序列;
通过装有三维加速度传感器的手持设备(如手机、游戏机控制器、遥控器等,三维加速度传感器则可以采用现有技术)检测用户某个独立的、包含某种语意或表达某种意图的动态手势,并记录该手势从开始到完成的整个过程中由加速度传感器检测的、相对于加速度传感器前后方向x轴、左右方向y轴、上下方向z轴的三个正交方向的加速度数据列(称为三维加速度数据序列);
步骤(1)中的三维加速度数据序列G采用下述方法标记:
G=(ax,ay,az),式1
其中ax、ay、az分别表示在前后方向x轴、左右方向y轴、上下方向z轴的三个正交方向的加速度数据序列,而就某一方向上加速度数据序列可以表示为 T=x,y,z,即下标T可以表示x、y或z轴,L为的加速度数据序列长度,这样三维加速度数据序列T轴上在第i个加速度数值可以用aT i表示。
(2)三维加速度数据序列分帧处理:
将步骤(1)中记录下来的三维加速度数据序列进行帧间等长的分帧处理,得到的每个帧称为三维加速度数据子序列;
步骤(2)将三维加速度数据序列G首先分帧的方法具体为:现将为三维加速度数据序列G分为N+1段,其中每两个相邻的段组成1帧,共N帧。上述分帧方法的特征为各帧等长,相邻两帧之间具有50%重叠。其中第k个三维加速度数据子序列Rk采用下述方法描述:
Rk=(rx,k,ry,k,rz,k),k=0,...,N-1,式2
式3
式4
其中r
T,k表示第k个三维加速度数据子序列T轴上的加速度子序列,
表示三维加速度数据子序列r
T,k的长度,r
T,k i表示三维加速度数据子序列r
T,k的第i个的加速度数值。由于R
k是G的子序列,r
T,k i的值可从G中获得,其对应关系见式4。
步骤(2)中N为一个固定的整数值,取值根据实际应用以及手势完成的时间长短取值,一般为4至15中任一整数。
(3)帧内特征描述子提取
将步骤(2)中得到N个三维加速度数据子序列分别进行帧内三维加速度数据序列信号特征提取,并将该三维x轴、y轴、z轴上的多个不同信号特征连接成一个帧内特征描述子;
步骤(3)中的信号特征采用信号理论中的时域和频域信号特征,共5种。
可以参见Ling Bao,Stephen S.Intille.Activity Recognition fromUser-Annotated Acceleration Data:PERVASIVE 2004,LNCS 3001,pp.1-17,2004;以及Nishkam Ravi,Nikhil Dandekar,Preetham Mysore,Michael L.Littman.Activity Recognition from Accelerometer Data.Proceedings of the17th conference on Innovative applications of artificial intelligence,2005。
对于第k个三维加速度数据子序列Rk,特征1采用x轴、y轴、z轴三个维度上的加速度时域上的方差σT,k,T=x,y,z:
式5
式6
其中rT,k i见式4,rT,k表示三维加速度数据子序列Rk在T轴的所有加速度值在时域上的均值。
对于第k个三维加速度数据子序列R
k,特征2采用加速度两两维度时域上的的相关度
T
1,T
2=x,y,z:
式7
式8
其中
表示三维加速度数据子序列R
k上T
1轴和T
2轴的相关度。
采用快速傅里叶变换分别将三维加速度数据子序列Rk的x轴、y轴、z轴时域上数据子序列{rT,k i},T=x,y,z转换到频域上的数据子序列{tT,k n},T=x,y,z:
式9
k=0,...,N-1,
n=0,...,Ls·2-1.
对于第k个三维加速度数据子序列Rk,特征3采用x轴、y轴、z轴三个维度上的加速度频域上的直流分量μT,k,T=x,y,z:
式10
对于第k个三维加速度数据子序列Rk,特征4采用x轴、y轴、z轴三个维度上的加速度频域上的交流分量的能量均值εT,k,T=x,y,z:
式11
对于第k个三维加速度数据子序列Rk,特征5采用x轴、y轴、z轴三个维度上的加速度频域上的交流分量的信息熵作为帧内特征描述子δT,k,T=x,y,z:
式12
式13
其中pT,k i表示第i个交流分量的权重占所有交流分量权重总和的比例。
按上述方法,计算得出第k个三维加速度数据子序列Rk的5种×3维=15个的信号特征,并简单连接成帧内特征描述子τ(k):
τ(k)=(σx,k,σy,k,σz,k,
γx~y,k,γy~z,k,γz~x,k,
μx,k,μy,k,μz,k,.式14
εx,k,εy,k,εz,k,
δx,k,δy,k,δz,k)
(4)整体特征描述子的形成
将步骤(3)中得到的一个手势的N个帧的帧内特征描述子简单连接成一个整体特征描述子;
整体特征描述子τ表示为:
其中τi (k)表示帧内特征描述子τ(k)的第i个元素。
(5)基于支持向量机的手势数据集模型训练
对不同种类的手势按步骤(1)分别检测并记录其三维加速度数据序列,以作模型训练所需的数据样本,并按步骤(2)-(4)对每个三维加速度数据序列进行整体特征描述子的计算,最后采用基于结构化输出的多类支持向量机算法,可以参见I.Tsochantaridis,T.Hofmann,T.Joachims,and Y.Altun.Support Vector Learning for Interdependent and StructuredOutput Spaces,ICML,2004.对所有整体特征描述子进行建模和参数训练,最终得到在整体特征描述子张成的向量空间中不同种类手势的分界面;
(6)基于支持向量机的手势识别
按步骤(1)检测并记录一个新的手势三维加速度数据序列,按步骤(2)-(4)对该三维加速度数据序列进行整体特征描述子的计算,
利用步骤(5)训练得出的支持向量机模型的向量空间中不同种类手势的分界面对新的手势数据进行分类识别。
本发明的积极效果在于减低手势识别过程中环境和用户的依赖性,已经减低加速度信号中噪点和变化得影响,从而提高手势识别的性能。
具体实施方式
本发明的步骤如图1所示,
用户手持内置了三维加速度传感器的
Wiimote游戏控制器不同种类的动态手势。加速度数据序列中的x轴、y轴、z轴是相对于加速度传感器建立的三维坐标系,其中前后方向为x轴,左右方向为y轴,上下方向为z轴,见图2。数据采用率为100Hz。用户手势的开始与结束通过按按钮来标识。用户手势的三维加速的数据序列通过蓝牙通讯发送至计算机端。手势的三维加速的数据序列
G=(ax,ay,az),式16
以文件形式记录在计算机内,其中 T=x,y,z表示T轴上长度为L的加速度数据序列。根据Wiimote内置的三维加速度传感器的物理性能,aT 0的量纲为重力加速的g,取值范围为[-3,3]。
(2)三维加速度数据序列分帧处理
设一个手势样本的三维加速的数据序列G的长度为L。L根据具体的手势样本确定。参数N取N=9,我们将手势样本的三维加速的数据序列G为10段,其中每两个相邻的段组成1帧,共9帧,见图3。根据上述的方法,每段的长度应为
每帧的长度应为
为了方便描述,我们把每个帧的三维加速度数据子序列形式化地写成R
k:
Rk=(rx,k,ry,k,rz,k),k=0,...,N-1,式17
式18
式19
其中rT,k表示第k个三维加速度数据子序列T轴上的加速度子序列,rT,k n表示序列的rT,k的第n个的加速度数值。由于Rk是G的子序列,rT,k n的值可从G中获得,其对应关系见式4。
(3)帧内特征描述子提取
将步骤(2)中得到N个三维加速度数据子序列分别在x轴、y轴、z轴上提取信号特征σ
T,k,
μ
T,k,ε
T,k,δ
T,k。计算方法如下:
式20
式21
式22
式23
式24
其中,
按上述方法,计算得出第k个三维加速度数据子序列Rk的5种×3维=15个的信号特征,并简单连接成帧内特征描述子τ(k):
τ(k)=(σx,k,σy,k,σz,k,
γx~y,k,γy~z,k,γz~x,k,
μx,k,μy,k,μz,k,式25
εx,k,εy,k,εz,k,
δx,k,δy,k,δz,k)
(4)将步骤(3)中得到的一个手势的9个帧的帧内特征描述子简单连接成一个整体特征描述子;整体特征描述子τ表示为:
(5)基于多类支持向量机的手势数据集模型训练
我们要求10位用户做手持Wiimote做12种不同的手势,包括向左、向右、向后、向前、圆圈、方框、直角、字母C、字母S、字母V、字母W、字母Z。每种手势做28次,组成一个规模为10×12×28=3360的手势数据集。按步骤(2)-(4)对手势数据集分别进行分帧,特征提取,最后使得每一个手势样本均被一个整体特征描述子表示。
多类支持向量机模型训练算法以手势数据集中所有样本的整体特征描述子作为输入,以一个多类支持向量机模型M作为输出;采用基于结构化输出的多类支持向量机算法实现一对多的多类分类策略(winner-takes-all);核函数采用一次线性核函数。
为了检验模型的有效性,我们通过4折交叉确认方法来验证。将手势数据集中每个用户的数据分为4组,每组均包含了12种不同的手势,每种手势7个样本。每次实验选取某一个用户4组手势中的中3组作为训练数据集,另外1组作为测试数据集。因此实验总共进行 次。40次实验结果的平均识别准确率为95.21%。
(6)基于支持向量机的手势识别
按步骤(1)检测并记录一个新的手势三维加速度数据序列,按步骤(2)-步骤(4)对该三维加速度数据序列进行整体特征描述子的计算,最后利用步骤(5)训练得出的支持向量机模型M对新的数据样本分类识别。