具体实施方式
参阅图1所示,是本发明手势创建系统10较佳实施例的应用环境图。该手势创建系统10应用于体感设备1中。该体感设备1用于感知位于体感设备1前方的物体,并获取物体的坐标。在本较佳实施例中,所述物体为人。所述物体的坐标为人的坐标。所述人的坐标包括头部坐标、左肩膀坐标、右肩膀坐标、左手肘关节坐标、右手肘关节坐标、左手腕坐标、右手腕坐标、左腿关节坐标、右腿关节坐标及人的其它部位的坐标。如图4所示,所述体感设备1获取右肩膀的坐标。如图5所示,所述体感设备1获取右肘关节的坐标。所述体感设备1还包括一个或多个摄像头,所述摄像头用于拍摄位于体感设备1前方的人的图像。
所述体感设备1包括应用程序,所述体感设备1通过捕捉位于体感设备1前方的人的手势动作,从而实现对所述应用程序进行操作,例如,关闭应用程序、开启应用程序等操作。所述应用程序可以是,但不限于,游戏(如一款网球游戏)、播放器、浏览器、聊天软件等。
所述显示设备2用于显示体感设备1的应用程序的画面或体感设备1所拍摄的人的图像。
所述体感设备1可以内置于显示设备2中,也可以独立于显示设备2之外,通过线缆与显示设备2连接。在本较佳实施例中,所述体感设备1安装于显示设备2的边框的某一个位置(例如,安装于显示设备2上边框的中间位置)。
参阅图2所示,是体感设备1较佳实施例的结构示意图。该体感设备1除了包括手势创建系统10,还包括通过数据线或信号线相连的存储器150和处理器160。该手势创建系统10包括获取模块110、计算模块120、补偿模块130及创建模块140。模块110至140的程序化代码存储于存储器150中,处理器160执行这些程序化代码,实现手势创建系统10提供的上述功能。本发明所称的模块是完成一特定功能的计算机程序段,比程序更适合于描述软件在计算机中的执行过程,因此在本发明以下对软件描述中都以模块描述。
所述获取模块110用于获取人的坐标。所述获取模块110可以通过体感设备1中的距离感应器获取人的坐标,或者通过图片分析获取人的坐标。
所述计算模块120用于根据获取的人的坐标计算手势区域的中心点坐标及得到手势区域。所述手势区域的中心点坐标包括左手势区域的中心点坐标及右手势区域的中心点坐标。所述手势区域包括左手势区域及右手势区域。
计算所述左手势区域的中心点坐标的方式如下:C(x,y,z)=P(x,y,z)+d(x,y,z),其中,C(x,y,z)为左手势区域的中心点坐标,d(x,y,z)为任意坐标,并满足条件|d(x,y,z)|<D1,左手势区域的左边框距左手势区域中心点的距离为S,其中S=k*D2,k为任意正实数,在本较佳实施中,所述k为某一个设定范围内的值,如0.1<k<3,D1为左肩膀坐标P(x,y,z)与头部坐标之间的最大距离,D2为左手肘关节坐标与左手腕坐标之间的距离。
由上述描述可知,以C(x,y,z)为左手势区域的中心点坐标,产生距左手势区域的中心点坐标为S的左手势区域。
计算所述右手势区域的中心点坐标的方式如下:C1(x,y,z)=P1(x,y,z)+d1(x,y,z),其中,C1(x,y,z)为右手势区域的中心点坐标,d1(x,y,z)为任意坐标,并满足条件|d1(x,y,z)|<D11,右手势区域的左边框距右手势区域中心点的距离为S1,其中S1=k*D12,k1为任意正实数,在本较佳实施中,所述k1为某一个设定范围内的值,如0.1<k1<3,D11为右肩膀坐标P(x,y,z)与头部坐标之间的最大距离,D12为右手肘关节坐标与右手腕坐标之间的距离。由上述描述可知,以C1(x,y,z)为右手势区域的中心点坐标,产生距右手势区域的中心点坐标为S1的右手势区域如图6所示。需要说明的是,所述图6中的右手势区域的外形为长方形。而该右手势区域实际为一个三维空间立体区域,其外形、大小可以为椭圆形、菱形、六边形以及其它形状,该手势区域前、后、上、下边框与右手势区域的中心点坐标之间的距离S1不等长,依照不同使用者的体态,以调整S1大小来构筑最适合的适当区域,如图7所示。
需要说明的是,由于C1(x,y,z)=P1(x,y,z)+d1(x,y,z),当人移动时右肩坐标P1(x,y,z)也会变动,因此,当人移动时,C1(x,y,z)会跟随人移动,右手势区域也跟着使用者移动而跟着移动,不会出现限制人的站位的情况,如图8所示,即人向右移动时,右手势区域也会向右移动。同理可知,当人移动时,左手势区域也会移动。
所述补偿模块130用于计算偏移量坐标,根据所述偏移量坐标对手势区域的中心点坐标进行补偿,以修正手势区域。
所述偏移量坐标为左手偏移量坐标或右手偏移量坐标。
所述左手偏移量坐标的计算方式如下:l(x,y,z)为左手偏移量坐标,其中,左手偏移量坐标根据机器学习算法训练后得到。所述机器学习算法为判定树算法。
具体地说,以计算左手偏移量坐标的x轴坐标值为例,如图9所示,当人站在某个位置(如体感设备1左边的某一个位置)时,用测试工具(如标尺)量测出人距离体感设备1的x轴的实际距离DL,此时,体感设备1通过计算得到左手势区域中心点距离体感设备1的x轴的测试距离,并实际距离与测试距离的差值。通过上述同样的方法,调整人站的位置,反复计算预定次数(例如,50次)的差值,之后计算所有差值的平均数,该平均数为左手偏移量坐标的x轴坐标值。同理可知,左手偏移量坐标的y轴坐标值,左手偏移量坐标的z轴坐标值。
所述对左手势区域的中心点坐标进行补偿的方式如下:C^(x,y,z)=C(x,y,z)+l(x,y,z),其中,C^(x,y,z)补偿后的左手势区域的中心点坐标。
所述右手偏移量坐标的计算方式如下:l1(x,y,z)为右手偏移量坐标,其中,右手偏移量坐标根据机器学习算法训练后得到。所述机器学习算法为判定树算法。
具体地说,以计算右手偏移量坐标的x轴坐标值为例,如图9所示,当人站在某个位置(如体感设备1右边的某一个位置)时,用测试工具(如标尺)量测出人距离体感设备1的x轴的实际距离DR,此时,体感设备1通过计算得到右手势区域中心点距离体感设备1的X轴的测试距离,并实际距离与测试距离的差值。通过上述同样的方法,调整人站的位置,反复计算预定次数(例如,50次)的差值,之后计算所有差值的平均数,该平均数为右手偏移量坐标的x轴坐标值。同理可知,右手偏移量坐标的y轴坐标值,右手偏移量坐标的z轴坐标值。
所述对右手势区域的中心点坐标进行补偿的方式如下:C1^(x,y,z)=C1(x,y,z)+l1(x,y,z),其中,C1^(x,y,z)补偿后的右手势区域的中心点坐标。
所述创建模块140用于根据偏移量坐标对手腕坐标进行修正,之后通过修正后的手腕坐标及修正后的手势区域创建手势事件。具体地说,所述手腕坐标包括左手腕坐标及右手腕坐标。所述左手腕坐标通过左手偏移量坐标进行调整(即左手腕坐标与左手偏移量坐标相加得到调整后的左手腕坐标),所述右手腕坐标通过右手偏移量坐标进行调整(即右手腕坐标与右手偏移量坐标相加得到调整后的右手腕坐标)。
创建不同的手势事件的方式如下:以x轴为水平坐标轴左为正、右为负,y轴为垂直坐标轴上为正、下为负,z轴为深度坐标轴前为正、后为负;对应左手势区域而言:
若左手腕坐标的y轴坐标值大于左手势区域的上方边框y轴坐标,则创建向上手势事件。
若左手腕坐标的y轴坐标值小于左手势区域的下方边框y轴坐标,则创建向下手势事件。
若左手腕坐标的x轴坐标值大于左手势区域的左方边框x轴坐标,则创建向左手势事件。
若左手腕坐标的x轴坐标值小于左手势区域的右方边框x轴坐标,则创建向右手势事件。
若左手腕坐标的z轴坐标值大于左手势区域的前方边框z轴坐标,则创建向前手势事件。
若左手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向左手势事件及向上手势事件,或左手势事件、向上手势事件及向右手势事件,或向上手势事件、向右手势事件及向下手势事件,或向右手势事件、向下手势事件及向左手势事件,则创建顺时钟旋转手势事件。
对应右手势区域而言:
若右手腕坐标的y轴坐标值大于右手势区域的上方边框y轴坐标,则创建向上手势事件。
若右手腕坐标的y轴坐标值小于右手势区域的下方边框y轴坐标,则创建向下手势事件。
若右手腕坐标的x轴坐标值大于右手势区域的左方边框x轴坐标,则创建向左手势事件。
若右手腕坐标的x轴坐标值小于右手势区域的右方边框x轴坐标,则创建向右手势事件。
若右手腕坐标的z轴坐标值大于右手势区域的前方边框z轴坐标,则创建向前手势事件。
若右手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向左手势事件及向上手势事件,或左手势事件、向上手势事件及向右手势事件,或向上手势事件、向右手势事件及向下手势事件,或向右手势事件、向下手势事件及向左手势事件,则创建顺时钟旋转手势事件。
若右手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向右手势事件及向上手势事件,或右手势事件、向上手势事件及向左手势事件,或向上手势事件、向左手势事件及向下手势事件,或向左手势事件、向下手势事件及向右手势事件,创建逆时钟旋转手势事件。
如图3所示,是本发明手势创建方法较佳实施例的流程图。
步骤S10,获取模块110获取人的坐标。所述获取模块110可以通过体感设备1中的距离感应器获取人的坐标,或者通过图片分析获取人的坐标。
步骤S20,计算模块120根据获取的人的坐标计算手势区域的中心点坐标及得到手势区域。所述手势区域的中心点坐标包括左手势区域的中心点坐标及右手势区域的中心点坐标。所述手势区域包括左手势区域及右手势区域。
计算所述左手势区域的中心点坐标的方式如下:C(x,y,z)=P(x,y,z)+d(x,y,z),其中,C(x,y,z)为左手势区域的中心点坐标,d(x,y,z)为任意坐标,并满足条件|d(x,y,z)|<D1,左手势区域的左边框距左手势区域中心点的距离为S,其中S=k*D2,k为任意正实数,在本较佳实施中,所述k为某一个设定范围内的值,如0.1<k<3,D1为左肩膀坐标P(x,y,z)与头部坐标之间的最大距离,D2为左手肘关节坐标与左手腕坐标之间的距离。
由上述描述可知,以C(x,y,z)为左手势区域的中心点坐标,产生距左手势区域的中心点坐标为S的左手势区域。
计算所述右手势区域的中心点坐标的方式如下:C1(x,y,z)=P1(x,y,z)+d1(x,y,z),其中,C1(x,y,z)为右手势区域的中心点坐标,d1(x,y,z)为任意坐标,并满足条件|d1(x,y,z)|<D11,右手势区域的左边框距右手势区域中心点的距离为S1,其中S1=k*D12,k1为任意正实数,在本较佳实施中,所述k1为某一个设定范围内的值,如0.1<k1<3,D11为右肩膀坐标P(x,y,z)与头部坐标之间的最大距离,D12为右手肘关节坐标与右手腕坐标之间的距离。由上述描述可知,以C1(x,y,z)为右手势区域的中心点坐标,产生距右手势区域的中心点坐标为S1的右手势区域如图6所示。需要说明的是,所述图6中的右手势区域的外形为长方形。而该右手势区域实际为一个三维空间立体区域,其外形、大小可以为椭圆形、菱形、六边形以及其它形状,该手势区域前、后、上、下边框与右手势区域的中心点坐标之间的距离S1不等长,依照不同使用者的体态,以调整S1大小来构筑最适合的适当区域,如图7所示。
需要说明的是,由于C1(x,y,z)=P1(x,y,z)+d1(x,y,z),当人移动时右肩坐标P1(x,y,z)也会变动,因此,当人移动时,C1(x,y,z)会跟随人移动,右手势区域也跟着使用者移动而跟着移动,不会出现限制人的站位的情况,如图8所示,即人向右移动时,右手势区域也会向右移动。同理可知,当人移动时,左手势区域也会移动。
步骤S30,补偿模块130计算偏移量坐标,根据所述偏移量坐标对手势区域的中心点坐标进行补偿,以修正手势区域。
所述偏移量坐标为左手偏移量坐标或右手偏移量坐标。
所述左手偏移量坐标的计算方式如下:l(x,y,z)为左手偏移量坐标,其中,左手偏移量坐标根据机器学习算法训练后得到。所述机器学习算法为判定树算法。
具体地说,以计算左手偏移量坐标的x轴坐标值为例,如图9所示,当人站在某个位置(如体感设备1左边的某一个位置)时,用测试工具(如标尺)量测出人距离体感设备1的x轴的实际距离DL,此时,体感设备1通过计算得到左手势区域中心点距离体感设备1的x轴的测试距离,并实际距离与测试距离的差值。通过上述同样的方法,调整人站的位置,反复计算预定次数(例如,50次)的差值,之后计算所有差值的平均数,该平均数为左手偏移量坐标的x轴坐标值。同理可知,左手偏移量坐标的y轴坐标值,左手偏移量坐标的z轴坐标值。
所述对左手势区域的中心点坐标进行补偿的方式如下:C^(x,y,z)=C(x,y,z)+l(x,y,z),其中,C^(x,y,z)补偿后的左手势区域的中心点坐标。
所述右手偏移量坐标的计算方式如下:l1(x,y,z)为右手偏移量坐标,其中,右手偏移量坐标根据机器学习算法训练后得到。所述机器学习算法为判定树算法。
具体地说,以计算右手偏移量坐标的x轴坐标值为例,如图9所示,当人站在某个位置(如体感设备1右边的某一个位置)时,用测试工具(如标尺)量测出人距离体感设备1的x轴的实际距离DR,此时,体感设备1通过计算得到右手势区域中心点距离体感设备1的X轴的测试距离,并实际距离与测试距离的差值。通过上述同样的方法,调整人站的位置,反复计算预定次数(例如,50次)的差值,之后计算所有差值的平均数,该平均数为右手偏移量坐标的x轴坐标值。同理可知,右手偏移量坐标的y轴坐标值,右手偏移量坐标的z轴坐标值。
所述对右手势区域的中心点坐标进行补偿的方式如下:C1^(x,y,z)=C1(x,y,z)+l1(x,y,z),其中,C1^(x,y,z)补偿后的右手势区域的中心点坐标。
步骤S40,创建模块140根据偏移量坐标对手腕坐标进行修正,之后通过修正后的手腕坐标及修正后的手势区域创建手势事件。具体地说,所述手腕坐标包括左手腕坐标及右手腕坐标。所述左手腕坐标通过左手偏移量坐标进行调整(即左手腕坐标与左手偏移量坐标相加得到调整后的左手腕坐标),所述右手腕坐标通过右手偏移量坐标进行调整(即右手腕坐标与右手偏移量坐标相加得到调整后的右手腕坐标)。
创建不同的手势事件的方式如下:以x轴为水平坐标轴左为正、右为负,y轴为垂直坐标轴上为正、下为负,z轴为深度坐标轴前为正、后为负;对应左手势区域而言:
若左手腕坐标的y轴坐标值大于左手势区域的上方边框y轴坐标时,创建向上手势事件。
若左手腕坐标的y轴坐标值小于左手势区域的下方边框y轴坐标时,创建向下手势事件。
若左手腕坐标的x轴坐标值大于左手势区域的左方边框x轴坐标时,创建向左手势事件。
若左手腕坐标的x轴坐标值小于左手势区域的右方边框x轴坐标时,创建向右手势事件。
若左手腕坐标的z轴坐标值大于左手势区域的前方边框z轴坐标时,创建向前手势事件。
若左手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向左手势事件及向上手势事件、或左手势事件、向上手势事件及向右手势事件、或向上手势事件、向右手势事件及向下手势事件、或向右手势事件、向下手势事件及向左手势事件,则创建顺时钟旋转手势事件。
对应右手势区域而言:
若右手腕坐标的y轴坐标值大于右手势区域的上方边框y轴坐标时,创建向上手势事件。
若右手腕坐标的y轴坐标值小于右手势区域的下方边框y轴坐标时,创建向下手势事件。
若右手腕坐标的x轴坐标值大于右手势区域的左方边框x轴坐标时,创建向左手势事件。
若右手腕坐标的x轴坐标值小于右手势区域的右方边框x轴坐标时,创建向右手势事件。
若右手腕坐标的z轴坐标值大于右手势区域的前方边框z轴坐标时,创建向前手势事件。
若右手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向左手势事件及向上手势事件、或左手势事件、向上手势事件及向右手势事件、或向上手势事件、向右手势事件及向下手势事件、或向右手势事件、向下手势事件及向左手势事件,则创建顺时钟旋转手势事件。
若右手腕坐标依照顺序在预设时间内(如1秒内)满足向下手势事件、向右手势事件及向上手势事件、或右手势事件、向上手势事件及向左手势事件、或向上手势事件、向左手势事件及向下手势事件、或向左手势事件、向下手势事件及向右手势事件,创建逆时钟旋转手势事件。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照以上较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。