一种三维手势识别方法及装置与流程

文档序号:20017651发布日期:2020-02-25 10:53阅读:236来源:国知局
一种三维手势识别方法及装置与流程

本发明涉及手势识别技术,具体涉及一种三维手势识别方法及装置。



背景技术:

随着虚拟现实及增强现实的发展,新的三维界面形式登上历史舞台,手势交互由于其比面部表情和眼动更易于捕捉和识别,又比全身姿势更易于实施(特别是在狭小空间中)的特点成为了更适用于虚拟环境自然用户界面的交互方式。此外在智能产品、汽车、家居等领域,手势交互的作用也逐渐凸显出来。

目前尚没有成熟且具备高度可扩展性的手势交互应用开发工具,而由于手势识别所需的机器学习等专业知识成为了很多开发人员无法逾越的技术壁垒,这就导致了手势交互应用乃至于手势交互发展的滞后。

由于不同人的手掌的尺寸有着相当大的差异,基于坐标点数据的特征序列仍存在着一定的不足,这是由于基于点坐标的归一化方法无法有效的对数据进行归一化处理,这就导致了识别结果的不稳定。

动态识别相较于静态识别而言增加了时间变量这一维度,即观测数据包含多个时间节点的手势观测序列信息,由于带有时间的数据序列不符合gmm-hmm模型的输入数据要求,因而必须要对数据序列进行降维。

在现有的识别算法之中,研究者多采用将三维位置信息换算为手指间的夹角、不同指尖的距离、某部位的位移等低维度数据方式来对数据进行降维,并将每个时间点下的一维参数作为手势识别观测序列值的单个数据节点。

虽然上述方法实现了数据的降维,但对于动态手势识别来说仍然存在着一定的问题:首先上述的降维方式对原始数据进行了二次处理,这势必会导致部分数据的丢失而影响识别结果。其次,由于不同用户做手势的速度和不同时刻设备捕捉手部数据的帧率均有着较大的差异,因而需要对时间序列进行归一化,这就使得必须在运行时保存并处理前100帧左右的数据,从而极大的增加了程序运行时的资源消耗和计算时长。



技术实现要素:

发明目的:为了克服现有技术的不足,本发明提供一种三维手势识别方法,该方法可以解决识别准确率低、运算速度慢的问题,本发明还提供一种三维手势识别装置。

技术方案:本发明所述的一种三维手势识别方法,包括以下步骤:

(1)采集静态手势,并根据建立的手部空间坐标系进行手部位置表示;

(2)以静态手势的骨节方向信息作为手势识别的观测值特征序列,并对不同角度和位置下的静态手势对应的手势识别观测值特征序列进行空间旋转坐标上的归一化,得到各个静态手势对应的观测序列;

(3)确定隐马尔可夫模型的隐含状态数和混合高斯模型的分模型数后,采用gmm-hmm模型对静态手势对应的观测序列进行识别;

(4)根据等待模型对动态手势进行识别;

(5)在用户使用时收集用户个体的手势数据,并利用该数据对原gmm-hmm模型进行迁移训练,形成针对于每个用户的模型。

进一步地,包括:

所述步骤(1)中,手部空间坐标系以手掌掌心方向向量为x轴、手指指向向量为y轴以及同时与二者垂直的方向向量为z轴,所在的直线为坐标轴。

进一步地,包括:

所述步骤(2)中,手势识别的观测值特征序列为拇指三个骨节从掌心到手指的方向向量、食指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量、中指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量、无名指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量和小指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量,共15个方向向量。

进一步地,包括:

所述步骤(2)中,对不同角度和位置下的静态手势对应的手势识别观测值特征序列进行空间旋转坐标上的归一化,具体包括:

以建立的所述空间直角坐标系为基准,计算所述手部空间坐标系旋转至所在空间中的世界坐标系时的四元数;将静态手势对应的观测序列按照所述四元数进行旋转,完成归一化。

进一步地,包括:

所述步骤(3)中,采用gmm-hmm模型对静态手势进行识别的过程包括:

(31)利用外部设备每隔m秒收集一组静态手势数据序列,共收集该静态手势下在空间内转动和移动后的手势数据序列n组,其中m≥1,n≥20;

(32)通过baum-welch算法迭代训练对应的gmm-hmm模型,直至模型收敛;

(33)计算n组手势数据序列的前向算法输出值,若当前帧手势数据序列前向算法输出值大于设定阈值θ,即为识别到该手势,否则,未识别到手势。

进一步地,包括:

所述阈值θ∈[α1pav,α2pav],其中,pav为最后一次训练中计算出的n组训练数据前向算法的输出值的均值,α1=75%,α2=90%,所述最后一次训练由设置好最大训练次数和前后两次训练值输出差值的阈值共同决定,在以下两种情况中的一种情况率先发生时即停止迭代:a训练次数达到100次;b当前一次训练输出的p值与上一次训练输出p值的差值的绝对值小于0.001。

进一步地,包括:

所述步骤(4)中,等待模型是将构成动态手势的若干个静态手势节点的对应信息进行存储,并在一定的动态手势识别过程的等待时间内依次检测整个动态手势的静态手势节点所代表的手势的出现。

进一步地,包括:

所述根据等待模型对动态静态手势进行识别,具体包括:

(41)设置静态手势的阈值σ,利用前向算法检测首个静态手势节点所代表的静态手势是否出现,若检测到首个静态手势节点所代表的静态手势则开启下一个节点手势的检测;

(42)在预设的动态手势识别过程的等待时间内,若依次检测到设置的所有静态手势节点所代表的手势个数的出现,则判定为检测到该动态手势,否则,

若超出时间限制仍未检测到所有静态手势节点所代表的手势,则将该手势的检测重置,重新开始首个静态节点手势的检测;

(43)直至将设置的若干个静态手势节点全部检测。

进一步地,包括:

所述设置静态手势的阈值σ∈[λ1lav,λ2lav],其中,lav最后一次训练中计算出的n组训练数据前向算法的输出值的均值,λ1=55%,λ2=70%,所述最后一次训练由设置好最大训练次数和前后两次训练值输出差值的阈值共同决定,在以下两种情况中的一种情况率先发生时即停止迭代:a训练次数达到100次;b当前一次训练输出的p值与上一次训练输出p值的差值的绝对值小于0.001。

一种三维手势识别装置,包括:静态手势采集单元、特征序列归一化单元、静态手势识别单元、动态手势识别单元和用户个体自适应单元;

所述静态手势采集单元,用于采集静态手势,并根据建立的手部空间坐标系进行手部位置表示;

所述特征序列归一化单元,用于以静态手势的骨节方向信息作为手势识别的观测值特征序列,并对不同角度和位置下的静态手势对应的手势识别观测值特征序列进行空间旋转坐标上的归一化,得到各个静态手势对应的观测序列;

所述静态手势识别单元,用于确定隐马尔可夫模型的隐含状态数和混合高斯模型的分模型数后,采用gmm-hmm模型对静态手势进行识别;

所述动态手势识别单元,用于根据等待模型对动态手势进行识别;

所述用户个体自适应单元,用于根据用户个体特征调整gmm-hmm模型参数,形成适用于该用户的识别模型。

有益效果:本发明与现有技术相比,其显著优点是:1、本发明所述的归一化的方法是在特征序列的基础上来的,它能够在保留完整数据的情况下很方便且准确的实现归一化,使得识别准确率升高;2、本发明所述的基于等待模型的动态手势识别方法,降低了运算量,不需要处理时间序列,提升了运算速度,且识别的准确度更高;3、本发明还通过对个体用户数据的收集来实现对用户个体的自适应。

附图说明

图1为本发明所述的手指方向信息示意图;

图2为本发明所述的同一空间中三个不同角度的手势;

图3为本发明所述的手部空间坐标系示意图;

图4为本发明一实施例所述的leapmotion系统坐标系;

图5为本发明一实施例所述的经旋转后的手部空间坐标系;

图6为本发明所述的静态手势识别方法流程框图;

图7为本发明所述的静态手势参数类;

图8为本发明所述的动态手势识别方法的流程框图;

图9为本发明所述的动态手势参数类;

图10为本发明所述的用户手势的差异对比图。

具体实施方式

本发明所述的一种三维手势识别方法,包括以下步骤:

步骤1、采集静态手势,并根据建立的手部空间坐标系进行手部位置表示;

如图1所示,通过leapmotion、数据手套等外部设备来获取手部各个关节点的位置信息,并通过建立的手部空间坐标系进行手部位置信息表示;从差异适应性的角度来讲,骨节方向、指尖距离、关节角度等信息均对不同用户的手掌尺寸有着良好的适应性,手部节点的位置信息则难以进行归一化处理。而从信息保留度的角度来讲,手部节点的位置信息以及骨节方向都较为完整的保留了手部的数据信息,而指尖距离、关节角度等信息因为经过了计算处理信息并不完整。综合考虑上述两方面的因素,骨节方向信息即有着对不同手掌尺寸的良好的适应性又能够最大限度的保留手部数据的原始信息,非常适用于作为手势识别的观测值特征序列。

人体手部除拇指外每根手指的四个骨节的方向信息以及拇指3个骨节的方向信息共计19个方向向量。其中,除拇指外其他每根手指的最靠近掌心一段的骨节无法对手指姿态进行有效的表征,因而视其为无效信息。其余方向向量自拇指末端至小指近掌心端依序构成观测序列o={o1,o2,o3……o15},即拇指三个骨节从掌心到手指的方向向量、食指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量、中指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量、无名指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量和小指除去最靠近掌心一段骨节的三个骨节从掌心到手指的方向向量。

手势识别过程中,不同用户的手掌大小以及各个指节的长度比例均有着较大的差异,这就要求用于手势识别的观测值特征序列应当能够适应这种差异,同时还应使观测序列值最大可能的保留原始信息,从而避免信息丢失以至于影响识别的准确率。

步骤2、以静态手势的骨节方向信息作为手势识别的观测值特征序列,并对不同角度和位置下的静态手势对应的手势识别观测值特征序列进行空间旋转坐标上的归一化,得到各个静态手势对应的观测序列。

如图2和3所示,考虑到用户在使用手势时手在空间的旋转角度可能不同,需要对不同的观测序列进行空间旋转坐标上的归一化。

归一化方法如下:

(1)以手掌掌心方向向量为x轴、手指指向向量为y轴以及同时与二者垂直的方向向量为z轴,所在的直线为坐标轴,建立如图4所示空间直角坐标系;

(2)以该坐标系为基准,计算该手部坐标旋转至所在空间中的世界坐标系((1,0,0)、(0,1,0)、(0,0,1))时的四元数。

以leapmotion为代表的手部节点获取设备可以返回手部坐标系相对于世界坐标系的旋转“rotation”(四元数),若要计算手部坐标系旋转至世界坐标系的四元数,只需要将“rotation”中的w(旋转角度)这一参数取反即可。

normaliazevector=hand.rotation.toquaternion();//获取当前手部坐标系相对于世界坐标的旋转四元数

normaliazevector.w=-normaliazevector.w;//将w值取反,求得手部坐标系旋转至世界坐标系的四元数

(3)将操作手势对应的观测序列o按照该四元数进行旋转,完成观测序列的归一化。

output=normaliazevector*output;//按照四元数“normaliazevector”旋转“output”这一向量。

本发明采用四元数计算的优势在于其相对于矩阵旋转的方法(一个旋转需要16个信息值而四元数只需要四个)计算紧凑高效,且相对于利用欧拉角的旋转四元数不受万向节锁死的困扰。

最终归一化完成后的观测序列即可作为手势识别算法的观测序列,此时观测序列可以同时适应不同用户手部尺寸的差异以及保持同一个姿势时用户手部在空间位置和旋转上的差异,并最大限度的保留设备所获取的原始数据。

以下为本发明举出的针对leapmotion设备的实施例:

(1)以手掌掌心方向向量、手指指向向量以及同时与二者垂直的方向向量所在的直线为坐标轴。

(2)以该坐标系为基准,计算该坐标系旋转至与如图4所示leapmotion坐标系重合时的四元数。

(3)如图5所示,将观测序列o按照该四元数进行旋转,完成观测序列的归一化。

最终归一化完成后的观测序列即可作为手势识别算法的观测序列,此时观测序列可以同时适应不同用户手部尺寸的差异以及做手势时用户手部在空间位置和旋转上的差异,并最大限度的保留leapmotion所获取的原始数据。

步骤3、确定隐马尔可夫模型的隐含状态数和混合高斯模型的分模型数后,采用gmm-hmm模型对静态手势对应的观测序列进行识别;

状态数m指的是隐马尔可夫模型的隐含状态数,而分模型数指的是对应于一个隐含状态的gmm的分模型数,gmm是混合高斯模型,就是说有多少个高斯模型共同组成了这一个gmm;

在用于手势识别的gmm-hmm模型之中,隐含状态不需要有明确的定义。但是隐含状态数m的选取会对模型训练的收敛性及准确度产生一定的影响。同时,会对收敛性及准确度产生影响的另一个参数是gmm模型的分模型数目k。

在一个观察序列中共有15个不同的独立的向量参数。在同一手势的多次数据读取中,每个独立的向量参数应当在一定的误差范围内保持一致。gmm-hmm模型中包含m×k个符合高斯分布的分模型。可知,当m×k=15时,各分模型恰好可以表征所有的独立参数向量。但由于模型学习时可能产生的误差,15个分模型不一定能够完整的表征所有参数向量。因而需要在合理的范围内通过实验对m和k的合理取值进行测定。

本发明的实施例,利用leapmotion收集n组该手势在不同角度下的三维观测序列数据ot1,ot2……ot30,利用matlab的hmm工具箱,计算当m、k分别为2至5时模型收敛的训练次数,结果如表1所示。可知当hmm模型的隐藏状态数为5,gmm模型的高斯概率密度函数构成数为3时,手势训练有着最快的收敛结果。

表1模型收敛所需训练次数表

静态手势识别的识别框架如图6所示,静态手势的识别共分为训练和识别两个基本过程;

步骤31、利用外部设备每隔m秒收集一组静态手势数据序列,共收集该静态手势下在空间内转动和移动后的手势数据序列n组,其中m≥1,n≥20;在本实施例中,leapmotion每隔一秒种收集一组手势数据序列,共收集30组手势数据序列。

步骤32、通过baum-welch算法迭代训练对应的gmm-hmm模型,直至模型收敛;

步骤33、计算n组手势数据序列的前向算法输出值,若当前帧手势数据序列前向算法输出值大于设定阈值θ,即为识别到该手势,否则,未识别到手势。

由于引入了gmm模型,导致前向算法输出的匹配概率值远大于1,而且不同手势模型的最大输出值也都不尽相同。因此需要对每一个手势的gmm-hmm模型指定判定阈值θ,当当前帧手势数据序列前向算法输出值大于该阈值时判定为检测到该手势。将实时获取到的手部信息序列(15个三维向量)输入到前向算法中,输出的结果即为实时获取到的手势与训练完成的手势的匹配程度。

在手势的训练阶段会在每一次训练中计算30组训练数据前向算法的输出值,并以此作为模型是否收敛的判断依据。

提取最后一次训练时计算出的30组训练数据前向算法的输出值的均值pav,阈值θ∈[α1pav,α2pav],其中,pav为最后一次训练中计算出的n组训练数据前向算法的输出值的均值,α1=75%,α2=90%,并将阈值参数作为模型参数储存在相应的手势对象之中,最后一次训练由设置好最大训练次数和前后两次训练值输出差值的阈值共同决定,在以下两种情况中的一种情况率先发生时即停止迭代:a训练次数达到100次;b当前一次训练输出的p值与上一次训练输出p值的差值的绝对值小于0.001;且本实施例优选为80%的均值作为阈值,该阈值的选择使得模型识别率更高。

由于静态手势识别过程无需处理时序序列,因而只需要在程序运行的每一帧中收集当前手势的数据序列并利用前向算法计算其匹配值并根据阈值做出判断即可。

在上述识别方法之中需要储存或提取的数据包括当前静态手势的gmm-hmm模型参数、用于训练的三十组手势数据序列以及用于训练的当前帧手势数据序列,如图7所示。

其中,模型参数以及训练数据为需要长期存储的静态数据,而当前帧手势数据序列则是每一帧都会产生变化的动态数据。考虑到同一系统中可能会需要多个不同的静态手势,为了便于手势的扩充和管理,建立静态手势参数类,将静态手势的参数等信息以对象的形式储存。如图6所示,静态手势参数类中包含gmm-hmm模型的必要参数以及用于训练的三十组手势数据。

对于当前帧手势数据序列来说,由于该数据仅对当前帧的判定有效,可采用覆盖的形式用后一帧数据覆盖前一帧以避免不必要的资源浪费。

步骤4、根据等待模型对动态手势进行识别。

为了解决之前动态手势识别方法中存在的问题,现提出基于等待模型的动态手势识别方法,其逻辑框架如图8所示。其中,等待模型是指将动态手势的整个过程简化为多个静态手势节点,并依次检测静态手势是否出现。

在动态手势的训练阶段,首先完成静态手势的训练(最后一次训练结束)之后就可以进行动态手势的识别;动态手势的识别依次检测n个静态手势的出现,这n个静态手势依序构成一个动态手势,可以看成挑选一个动态手势视频里的某几帧静态图片来表征这一动态手势。

识别阶段,首先,设置静态手势的阈值,利用前向算法检测首个静态手势节点所代表的静态手势是否出现,若检测到首个静态手势节点所代表的静态手势则开启下一个节点手势的检测,在动态手势识别过程的等待时间内,若依次检测到设置的所有静态手势节点所代表的手势个数的出现,则判定为检测到该动态手势,若超出时间限制仍未检测到所有静态手势节点所代表的手势,则将该手势的检测重置,重新开始首个静态节点手势的检测,直至将设置的若干个静态手势节点全部检测。

在动态手势识别的具体实现之中分别需要对其中静态手势节点的静态手势识别的阈值、静态手势节点的个数以及动态手势识别过程的等待时间进行设定。

由于动态手势过程中关键静态手势节点的静态手势在执行时可能产生的波动范围较大,即用户在动态手势过程中出现相同静态节点对应的同一静态手势时可能出现的细微的差异要比单纯维持一个静态手势时可能出现的差异要大;因而需要对每个静态手势的阈值进行调整,经实验,设置静态手势的阈值σ∈[λ1lav,λ2lav],其中,lav最后一次训练中计算出的n组训练数据前向算法的输出值的均值,λ1=55%,λ2=70%。在本发明实施例中,当阈值为最后一次训练的所有训练数据前向算法输出值均值的百分之六十时,动态手势识别的效果较为良好,因而以此作为动态手势识别中每个静态手势的阈值。

考虑到动态手势的自然性和可行性,动态手势的设计势必不能过于复杂,如用于自然手势交互的手势之中,一般的交互动作如点按、招手等手势的复杂度均较低,因而可将动态手势识别中的静态节点n数目设定为4。

此外,经测定,一个动态动作所需要的时间在0.4~0.9s之间,考虑到动态手势识别过程中误触发并不容易出现,因而设定检测到首个节点的静态手势之后的动态手势识别的限定时间为1.2s,用户必须在限定时间内完成动态手势的各个节点的静态手势方可触发动态手势。

如图9所示,同样以动态手势类的对象的形式存储当前系统中所有的动态手势,动态手势类中包含一个静态手势参数类的对象数组,用以存储构成动态手势的多个静态手势节点的对应信息。而用于节点静态手势检测的当先帧的手势数据信息则同样以当前帧覆盖前一帧的形式存储。

基于等待模型的动态手势识别方法从本质上来讲同基于时间序列的识别方法一致,均是对关键帧的数据进行处理及运用。但不同的是,基于等待模型的动态手势识别打破了必须对数据进行降维的条件,最大限度的保留了手势的数据信息,提高了手势识别的效率。同时也无需处理时间序列的归一化问题,这使得在识别阶段时动态手势的识别运算同静态手势一样只需要处理当前帧的数据,提高了手势识别的速率和算法的简洁和易用性。

步骤5、在用户使用时收集用户个体的手势数据,并利用该数据对所述gmm-hmm模型进行迁移训练,形成针对于每个用户的模型。

此外,不同用户的行为习惯不同,在实现同一手势的行为特征上会有着一定的差异,举例如下:如图10所示,两名不同的被试做出的“ok”手势就存在着一定的差异。其中,被试a的中指、无名指及小指略有弯曲,而被试b的中指、无名指及小指则保持着伸直的状态。为了改善这种差异,需要根据用户的行为特征重设预定义手势的模型参数,以使得相应的手势的模型能够更好的匹配用户的行为特征。

收集并储存每个手势前20次被触发时的手势数据信息,当收集完成后将以之作为训练参数,以该手势预设模型的模型参数作为初始模型参数重新训练该模型,并以该模型参数覆盖预设的模型参数。经测试,重新训练后的模型即可很好的适应不同用户的行为特征,实现用户个体的自适应。

一种三维手势识别装置,包括:静态手势采集单元、特征序列归一化单元、静态手势识别单元、动态手势识别单元和用户个体自适应单元;

所述静态手势采集单元,用于采集静态手势,并根据建立的手部空间坐标系进行手部位置表示;

所述特征序列归一化单元,用于以静态手势的骨节方向信息作为手势识别的观测值特征序列,并对不同角度和位置下的静态手势对应的手势识别观测值特征序列进行空间旋转坐标上的归一化,得到各个静态手势对应的观测序列;

所述静态手势识别单元,用于确定隐马尔可夫模型的隐含状态数和混合高斯模型的分模型数后,采用gmm-hmm模型对静态手势进行识别;

所述动态手势识别单元,用于根据等待模型对动态手势进行识别;

所述用户个体自适应单元,用于根据用户个体特征调整gmm-hmm模型参数,形成适用于该用户的识别模型。

本发明所述的识别装置是在前文所述的识别方法基础上实现的,详细技术方案与方法相似,在此不再赘述。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1