本发明涉及人机交互领域,特别是涉及一种人体肢体语言识别方法及系统。
背景技术:
本发明的技术背景是三维虚拟世界中的人机交互技术,在虚拟世界的人机交互中,计算机通过摄像头识别人的肢体动作,判断人的操作意图,即判断人传送给机器的命令,机器接收到命令后从而做出反馈,完成现实世界的人与虚拟世界的机的交互过程。在这个人机交互过程中,机器检测到人体的肢体动作,并且识别肢体动作所代表的语义,是整个人机交互过程的关键。
手势语义设计的方法很多,总体而言,现有的基于人体特征的语义设计方法大多没有遵循固定的思维逻辑,有些是基于人体特征点位置信息改变的思维逻辑,有些是基于特征点的时序逻辑,有些则是思维逻辑和时序逻辑的组合。因为没有遵循固定的逻辑,导致语义设计这领域的研究没有形成体系化以及特别有影响力的理论和应用,每个研究课题组都有自己的方法,效果参差不齐,彼此不能通用,传播性能较弱;且关于虚拟世界中的人体肢体的语义设计较少,仅根据手势语义无法精确识别现实中人的具体操作指令。
技术实现要素:
本发明的目的是提供一种人体肢体语言识别方法及系统,以解决传统的手势语义识别通用性差,传播性能弱,无法精确识别操作指令的问题。
为实现上述目的,本发明提供了如下方案:
一种人体肢体语言识别方法,包括:
构建虚拟世界环境,基于kinect摄像头获取人体的肢体特征点;所述肢体特征点包括头部特征点、颈部特征点、脊柱特征点、指尖特征点、手指特征点、手腕特征点、手肘特征点、肩部特征点、臀部特征点、膝盖特征点、踝关节特征点以及脚部特征点;
根据所述肢体特征点构建肢体语义集合;所述肢体语义集合包括基于肢体语义特征点的多条肢体语义;每条所述肢体语义至少对应两个相关的所述肢体特征点;
当人体处于“十”字状态下,以人体手臂为x轴,以身体为y轴,x轴与y轴的交点为o点,以垂直于xoy平面的轴为z轴,构建所述虚拟世界环境的三维坐标系;
确定每一条所述肢体语义在所述三维坐标系中的肢体语义方向向量;
获取每一条肢体语义方向向量分别与x轴、y轴以及z轴的方向角;
根据所述肢体语义方向向量以及所述方向角确定方向余弦;
根据所述方向余弦建立肢体语义触发机制;
根据所述肢体语义触发机制识别人体肢体语言。
可选的,所述根据所述肢体特征点构建肢体语义集合,具体包括:
根据公式
根据多条所述肢体语义构建肢体语义集合。
可选的,所述确定每一条所述肢体语义在所述三维坐标系中的肢体语义方向向量,具体包括:
根据公式
可选的,所述根据所述肢体语义方向向量以及所述方向角确定方向余弦,具体包括:
根据公式
可选的,所述根据所述方向余弦建立肢体语义触发机制,具体包括:
比较所述x轴、所述y轴以及所述z轴上所述方向余弦与0的大小,确定比较结果;所述比较结果为:当cosα>0或cosα<0时,确定当前运动的肢体特征点沿着x轴的正方向运动或负方向运动;当cosβ>0或cosβ<0时,确定当前运动的肢体特征点沿着y轴的正方向运动或负方向运动;当cosγ>0或cosγ<0时,确定当前运动的肢体特征点沿着z轴的正方向运动或负方向运动;
根据所述比较结果确定肢体运动方向;
根据所述肢体运动方向建立肢体语义触发机制。
一种人体肢体语言识别系统,包括:
肢体特征点获取模块,用于构建虚拟世界环境,基于kinect摄像头获取人体的肢体特征点;所述肢体特征点包括头部特征点、颈部特征点、脊柱特征点、指尖特征点、手指特征点、手腕特征点、手肘特征点、肩部特征点、臀部特征点、膝盖特征点、踝关节特征点以及脚部特征点;
肢体语义集合构建模块,用于根据所述肢体特征点构建肢体语义集合;所述肢体语义集合包括基于肢体语义特征点的多条肢体语义;每条所述肢体语义至少对应两个相关的所述肢体特征点;
三维坐标系构建模块,用于当人体处于“十”字状态下,以人体手臂为x轴,以身体为y轴,x轴与y轴的交点为o点,以垂直于xoy平面的轴为z轴,构建所述虚拟世界环境的三维坐标系;
肢体语义方向向量确定模块,用于确定每一条所述肢体语义在所述三维坐标系中的肢体语义方向向量;
方向角获取模块,用于获取每一条肢体语义方向向量分别与x轴、y轴以及z轴的方向角;
方向余弦确定模块,用于根据所述肢体语义方向向量以及所述方向角确定方向余弦;
肢体语义触发机制确定模块,用于根据所述方向余弦建立肢体语义触发机制;
人体肢体语言识别模块,用于根据所述肢体语义触发机制识别人体肢体语言。
可选的,所述肢体语义集合构建模块具体包括:
肢体语义确定单元,用于根据公式
肢体语义集合构建单元,用于根据多条所述肢体语义构建肢体语义集合。
可选的,所述肢体语义方向向量确定模块具体包括:
肢体语义方向向量确定单元,用于根据公式
可选的,所述方向余弦确定模块具体包括:
方向余弦确定单元,用于根据公式
可选的,所述肢体语义触发机制建立模块具体包括:
比较结果确定单元,用于比较所述x轴、所述y轴以及所述z轴上所述方向余弦与0的大小,确定比较结果;所述比较结果为:当cosα>0或cosα<0时,确定当前运动的肢体特征点沿着x轴的正方向运动或负方向运动;当cosβ>0或cosβ<0时,确定当前运动的肢体特征点沿着y轴的正方向运动或负方向运动;当cosγ>0或cosγ<0时,确定当前运动的肢体特征点沿着z轴的正方向运动或负方向运动;
肢体运动方向确定单元,用于根据所述比较结果确定肢体运动方向;
肢体语义触发机制建立单元,用于根据所述肢体运动方向建立肢体语义触发机制。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供了一种人体肢体语言识别方法及系统,基于方向向量的方向余弦作为语义设计的理论基础,以整个人体的肢体特征点为基础,建立肢体语义触发机制,从而更精确识别人体的操作指令,采用统一的肢体语义,解决了传统的手势语义识别通用性差,传播性能弱的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的人体肢体语言识别方法流程图;
图2为本发明所提供的25个肢体特征点在人体肢体的空间位置示意图;
图3为本发明所提供的虚拟世界环境中的人体模型示意图;
图4为本发明所提供的用户与虚拟世界中的物体进行交互的多张视频序列帧示意图;图4(a)为本发明所提供的用户与虚拟世界中的物体进行交互的第一张视频序列帧示意图;图4(b)为本发明所提供的用户与虚拟世界中的物体进行交互的第二张视频序列帧示意图;图4(c)为本发明所提供的用户与虚拟世界中的物体进行交互的第三张视频序列帧示意图;图4(d)为本发明所提供的用户与虚拟世界中的物体进行交互的第四张视频序列帧示意图;图4(e)为本发明所提供的用户与虚拟世界中的物体进行交互的第五张视频序列帧示意图;图4(f)为本发明所提供的用户与虚拟世界中的物体进行交互的第六张视频序列帧示意图;图4(g)为本发明所提供的用户与虚拟世界中的物体进行交互的第七张视频序列帧示意图;图4(h)为本发明所提供的用户与虚拟世界中的物体进行交互的第八张视频序列帧示意图;图4(i)为本发明所提供的用户与虚拟世界中的物体进行交互的第九张视频序列帧示意图;
图5为本发明所提供的人体肢体语言识别系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种人体肢体语言识别方法及系统,解决了传统的手势语义识别通用性差,传播性能弱的问题。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图1为本发明所提供的人体肢体语言识别方法流程图,如图1所示,一种人体肢体语言识别方法,包括:
步骤101:构建虚拟世界环境,基于kinect摄像头获取人体的肢体特征点;所述肢体特征点包括头部特征点、颈部特征点、脊柱特征点、指尖特征点、手指特征点、手腕特征点、手肘特征点、肩部特征点、臀部特征点、膝盖特征点、踝关节特征点以及脚部特征点。
构建虚拟世界环境,使用kinect摄像头作为视觉输入,在kinect摄像头的视角内,捕捉到用户的肢体并以25个特征点的方式存在具有深度信息的虚拟空间中。
kinect是微软公司开发的一套市场消费级设备,主要由一个红外发射器和红外摄像头以及一颗普通摄像头组成;kinect第二代的主要功能是把人体当成25个特征点来对待。kinect的优势是经过了几百万张图片的机器学习,相对来说比较稳定,所以kinect成为人机交互中比较常见的摄像头设备,作为计算机的视频信息输入。
本发明以kinect设备捕捉到的人体25个特征点,结合达芬奇的名画“uomovitruviano”的人体轮廓作为人体肢体语义设计的背景。普通人体轮廓在一般情况下,四肢张开的基本轮廓就是一个圆圈的形状,kinect能够捕捉到人体的25个关节点部位,如图2所示,每个关节点都具有三维空间的位置信息,比如定义右手肘的三维空间信息是(xelbow_right,yelbow_right,zelbow_right),定义右手腕的三维空间位置信息是w(xwrist_right,ywrist_right,zwrist_right)。
如果定义其中两个肢体关节点形成一个空间向量,比如:
kinect捕捉到的人体25个特征点是具有深度信息的,在三维的虚拟世界中,根据kinect捕捉到的用户特征点构建一个简单的人体模型,如图3所示,用户所有的肢体动作都会在模型人中一一体现出来,实时呈现用户与虚拟世界的交互,比如用户打开一个虚拟世界中的冰箱,只要把手放到冰箱门的把手上,就可以抓住把手并打开。本发明的主要贡献也是为了让用户能够在虚拟世界中与虚拟世界的物体进行交互。本发明可以用于操作培训、技能评估、娱乐游戏、体育锻炼等等。
步骤102:根据所述肢体特征点构建肢体语义集合;所述肢体语义集合包括基于肢体语义特征点的多条肢体语义;每条所述肢体语义至少对应两个相关的所述肢体特征点。
某个肢体语义si并定义其相关肢体特征点。相关肢体特征点是指在某一个肢体语义设计中,参与这个语义的所有肢体特征点的集合,如无特殊说明,一个相关关节点通常由两个关节点组成,在虚拟空间中表示为r1(x1,y1,z1),r2(x2,y2,z2)。
步骤103:当人体处于“十”字状态下,以人体手臂为x轴,以身体为y轴,x轴与y轴的交点为o点,以垂直于xoy平面的轴为z轴,构建所述虚拟世界环境的三维坐标系。
步骤104:确定每一条所述肢体语义在所述三维坐标系中的肢体语义方向向量。
构建基于特征点表达的方向向量。肢体语义si在虚拟世界的三维坐标系中的方向向量表达为
步骤105:获取每一条肢体语义方向向量分别与x轴、y轴以及z轴的方向角。
步骤106:根据所述肢体语义方向向量以及所述方向角确定方向余弦。
在虚拟世界的三维坐标系中,定义方向向量与三维坐标系各个轴的方向角是α,β,γ,则方向向量
方向向量
其中,方向余弦具有如下特征:
(1)在三个方向轴,x轴、y轴和z轴的方向上,方向余弦cosα>0或者cosα<0;cosβ>0或者cosβ<0;cosγ>0或者cosγ<0;或者是同时具备以上几种;
(2)在三个方向轴,x轴、y轴和z轴的方向上,其方向余弦的增量。δcosα>0(朝着x轴正方向运动)或者δcosα<0(朝着x轴负方向运动);δcosβ>0(朝着y轴正方向运动)或者δcosβ<0(朝着y轴负方向运动);δcosγ>0(朝着z轴正方向运动)或者δcosγ<0(朝着z轴负方向运动);或者是同时具备以上几种。
步骤107:根据所述方向余弦建立肢体语义触发机制。
根据人机交互中用户的行为习惯,选择方向余弦特征中的一种或多种符合逻辑的语义触发机制,在时间t<1秒的条件下,如果该特征组合的所有肢体动作全部按顺序完成,则形成有效的触发命令,向机器发送一个用户命令。
步骤108:根据所述肢体语义触发机制识别人体肢体语言。
把所有基于特征点表达及其方向余弦的肢体语义设计与触发机制存入系统数据库,形成人机交互系统的语义库,以便人机互动。
构建基于kinect的虚拟世界,设计一个表示“否定”的肢体语义,表示这个语义需要两个相关关节点,分别是右手肘re(xelbow_right,yelbow_right,zelbow_right)与右手腕rw(xwrist_right,ywrist_right,zwrist_right),需要注意的是,因为人体的结构是对称的,本发明仅以右半肢体为例,但同样适用于左半肢体;命令触发机制也是同样的逻辑,适用于事件对称的机制。
这里仅以右手肘re与右手腕rw作为分析对象。组成方向向量表示为
按照上面的肢体语义设计方法,定义其它肢体语义触发机制,表1为基于肢体特征点与方向余弦的用户肢体语义识别表,如表1所示。
表1
本发明强调的是语义设计的机制方法,凡属于利用这种思路进行肢体语义设计的逻辑均属于本发明保护的范围。由于利用这种逻辑方法进行语义设计的实际样例趋向无限,难以一一列举,因此本发明只列举表1所示的一些样例。同时根据这个肢体语义设计的方法进行试验论证,取得理想的效果,请看下面实验效果。
图4为本发明所提供的用户与虚拟世界中的物体进行交互的视频序列帧示意图,其中图中的简单模型人是用户在虚拟世界中由kinect捕捉到的特征点生成的,因为是在虚拟世界中所拍,所以图片有叠影,带上虚拟现实眼镜就会如图3所示的没有叠影。从序列帧可以看出,基于本发明的基于用户特征点表达与方向向量的肢体语义设计方法能够有效的应用于虚拟现实世界的人机交互过程,本发明能够用于产品测试、操作演练、技能评估等领域。
图5为本发明所提供的人体肢体语言识别系统结构图,如图5所示,一种人体肢体语言识别系统,包括:
肢体特征点获取模块501,用于构建虚拟世界环境,基于kinect摄像头获取人体的肢体特征点;所述肢体特征点包括头部特征点、颈部特征点、脊柱特征点、指尖特征点、手指特征点、手腕特征点、手肘特征点、肩部特征点、臀部特征点、膝盖特征点、踝关节特征点以及脚部特征点。
肢体语义集合构建模块502,用于根据所述肢体特征点构建肢体语义集合;所述肢体语义集合包括基于肢体语义特征点的多条肢体语义;每条所述肢体语义至少对应两个相关的所述肢体特征点。
所述肢体语义集合构建模块502具体包括:肢体语义确定单元,用于根据公式
三维坐标系构建模块503,用于当人体处于“十”字状态下,以人体手臂为x轴,以身体为y轴,x轴与y轴的交点为o点,以垂直于xoy平面的轴为z轴,构建所述虚拟世界环境的三维坐标系。
肢体语义方向向量确定模块504,用于确定每一条所述肢体语义在所述三维坐标系中的肢体语义方向向量。
所述肢体语义方向向量确定模块504具体包括:肢体语义方向向量确定单元,用于根据公式
方向角获取模块505,用于获取每一条肢体语义方向向量分别与x轴、y轴以及z轴的方向角。
方向余弦确定模块506,用于根据所述肢体语义方向向量以及所述方向角确定方向余弦。
所述方向余弦确定模块506具体包括:方向余弦确定单元,用于根据公式
肢体语义触发机制确定模块507,用于根据所述方向余弦建立肢体语义触发机制。
所述肢体语义触发机制建立模块507具体包括:比较结果确定单元,用于比较所述x轴、所述y轴以及所述z轴上所述方向余弦与0的大小,确定比较结果;所述比较结果为:当cosα>0或cosα<0时,确定当前运动的肢体特征点沿着x轴的正方向运动或负方向运动;当cosβ>0或cosβ<0时,确定当前运动的肢体特征点沿着y轴的正方向运动或负方向运动;当cosγ>0或cosγ<0时,确定当前运动的肢体特征点沿着z轴的正方向运动或负方向运动;肢体运动方向确定单元,用于根据所述比较结果确定肢体运动方向;肢体语义触发机制建立单元,用于根据所述肢体运动方向建立肢体语义触发机制。
人体肢体语言识别模块508,用于根据所述肢体语义触发机制识别人体肢体语言。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。