手势识别方法及装置
技术领域
本发明涉及人机交互技术领域,尤其涉及手势识别方法及装置。
背景技术
目前对文件的操作,局限于鼠标和键盘,这种操作方式在某些情况下极其不便,例如在演示场合,演讲者有可能需要操作多个文件,可能需要最小化当前程序,需要打开下一个文件并将该文件进行最大化操作来重点展示。当前鼠标的操作虽然可以容易地点击最大、最小按钮,但是要求操作者在操作时依赖于鼠标和键盘,而不能在任意位置舒适地进行人机交互。
当前,体感操作识别技术作为人类和计算机之间全新的交互方式,广泛应用于智能机器人、计算机、游戏机、手机、显示器、自动控制系统等各种领域。而随着多媒体技术的普及与发展,人们在对这种全新的人机交互技术进行着不懈的探索,使用手势、肢体动作等直观的方式完成人机交互,已成为一个技术热点。
但当前的体感操作识别技术,无法较快捷有效地识别出操作者的手势,以进行人机交互操作。
发明内容
本发明的目的在于提出一种手势识别方法及装置,以能够快速准确地捕获到操控者的手势,并执行预设的该手势对应的指令。
为达此目的,本发明采用以下技术方案:
一种手势识别方法,包括:
S1、获取识别对象预设时长的三维数据;
S2、对识别对象在预设时长中各采样时刻的三维数据进行拟合,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面;
S3、获取各采样时刻的三维数据的凸包点集中各点两两距离中的最远距离,依据所述最远距离判定所述识别对象的状态,所述凸包点集为各采样时刻的三维数据在所述拟合操作平面的垂足点云的凸包点集;
S4、获取所述凸包点集的中心点,并计算所述中心点在所述预设时长内的移动距离;
S5、根据所述识别对象的状态变化以及所述移动距离执行操作指令。
优选地,依据所述最远距离判定所述识别对象的状态具体包括:当所述最远距离大于预设张开判定阈值,则判定识别对象在该采样时刻的状态为张开状态,否则判定识别对象在该采样时刻的状态为紧握状态。
优选地,所述张开判定阈值的范围为2-8厘米。
优选地,所述步骤S5包括:在所述预设时长之内,如果所述中心点的移动距离达到第一阈值,并且识别对象的状态由紧握状态变为张开状态,则执行第一指令。
优选地,所述步骤S5包括:在所述预设时长之内,如果所述中心点移动距离达到第二阈值,并且识别对象的状态由张开状态变为紧握状态,则执行第二指令。
优选地,所述步骤S4还包括计算所述中心点的移动方向;
所述步骤S5包括,在所述预设时长之内,如果所述中心点向第一方向的移动距离达到第一阈值,并且识别对象的状态由紧握状态变为张开状态,则执行第一指令。
优选地,所述步骤S5包括,在所述预设时长之内,如果所述中心点向第二方向的移动距离达到第二阈值,并且识别对象的状态由张开状态变为紧握状态,则执行第二指令。
优选地,所述步骤S2中对识别对象在预设时长中各采样时刻的三维数据使用最小二乘法公式进行拟合。
本发明还公开了一种手势识别装置,包括:
三维数据获取模块,用于获取识别对象的预设时长的三维数据;
操作平面获取模块,用于对识别对象在预设时长中各采样时刻的三维数据进行拟合,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面;
状态判定模块,用于获取识别对象各采样时刻的三维数据的凸包点集中各点两两距离中的最远距离,依据所述最远距离判定所述识别对象的状态,所述凸包点集为各采样时刻的三维数据在所述拟合操作平面的垂足点云的凸包点集;
中心点监控模块,用于获取所述凸包点集的中心点,并计算所述中心点在所述预设时长内的移动距离;
手势判定与执行模块,用于根据所述识别对象的状态变化以及所述移动距离执行操作指令。
优选地,所述状态判定模块用于在所述最远距离大于预设张开判定阈值时,判定识别对象在该采样时刻的状态为张开状态,否则判定识别对象在该采样时刻的状态为紧握状态。
优选地,所述张开判定阈值范围为2-8厘米。
优选地,所述手势判定与执行模块包括第一指令判定执行单元,所述第一指令判定执行单元用于在所述预设时长之内,判定所述中心点的移动距离是否达到第一阈值,并且识别对象的状态是否由紧握状态变为张开状态,若是则执行第一指令。
优选地,所述手势判定与执行模块包括第二指令判定执行单元,所述第二指令判定执行单元用于在所述预设时长之内,判定所述中心点的移动距离是否达到第二阈值,并且识别对象的状态是否由张开状态变为紧握状态,若是则执行第二指令。
优选地,所述中心点监控模块还用于计算所述中心点的移动方向;
所述手势判定与执行模块包括第一指令判定执行单元,所述第一指令判定执行单元用于在所述预设时长之内,判定所述中心点在第一方向上的移动距离是否达到第一阈值,并且识别对象的状态是否由紧握状态变为张开状态,若是则执行第一指令。
优选地,所述手势判定与执行模块包括第二指令判定执行单元;所述第二指令判定执行单元用于在所述预设时长之内,判定所述中心点在第二方向上的移动距离是否达到第二阈值,并且识别对象的状态是否由张开状态变为紧握状态,若是则执行第二指令。
优选地,所述操作平面获取模块对识别对象在预设时长中各采样时刻的三维数据使用最小二乘法公式进行拟合。
本发明通过将识别对象三维数据进行拟合获得识别对象所在平面的近似平面,拟合后的数据,去除了Z轴信息,获得识别对象三维数据在该拟合操作平面的垂足点云,再通过分析垂足点云的凸包点集中任意两点间的最大距离,判断识别对象的状态后,结合状态变化和识别对象移动的距离进行手势识别和执行指令。由此,本发明可以快速准确地识别出识别对象的状态,并结合根据识别对象状态的变化和移动情况执行相应预设指令。
附图说明
图1是本发明具体实施例一所述的手势识别方法的流程图;
图2是本发明具体实施例二所述的手势识别装置的结构框图。
具体实施方式
实施例一
图1是本实施例所述的三维空间特征提取方法流程图,如图1所示,本实施例所述的三维空间特征提取方法包括:
S101、获取识别对象预设时长的三维数据。
在本实施例的一个优选实施方式中,所述的识别对象可以是人的手部。
在本实施例的一个优选实施方式中,所述预设时长的三维数据获取方法可为:采用现有的三维空间数据获取方法,通过识别器获取。例如,可以采用双目计算视差,从而计算三维信息。又例如,可以采用TOF(Time of Flight,光飞行时间)方法,通过计算光的反射时间计算深度图,获得识别对象的三维数据。又例如,可以采用单目的结构光方法,通过计算匹配深度图案计算出深度值,从而获得识别对象的三维数据。
此处,识别器可以是现有技术中任何能在三维空间识别出三维数据的仪器,也可以是3D(Three Dimensional,三维)传感器或立体摄像机等。
预设时长的设定一般设定为足以完成一个指令的时长,并参考识别器的性能和操作者空间变换的频率而定,例如,此处预设时长优选为3秒。
S102、对识别对象在预设时长中各采样时刻的三维数据进行拟合,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面。
在本实施例的一个具体实施方式中,所述拟合操作平面为识别对象手部所在平面的近似平面。
平面方程的一般表达式为:
P(x,y,z)=Ax+By+Cz+D=0
两边同除以D可得:
P(x,y,z)=ax+by+cz+1=0
设某采样时刻测得的手部的三维数据为:
(xi,yi,zi)(i=0,1,2,......,n),此处获取的是手部真实的三维数据,在该三维数据获取系统坐标系下,三维数据的数值单位为厘米。
在本实施例中,根据此三维数据,可以利用最小二乘法公式进行拟合:
设:
可得Q[abc]T=K
解得平面系数为[abc]T=Q-1K。
根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。
需要说明的是,本领域技术人员也可以使用其它现有的平面拟合方法来对对识别对象在预设时长中各采样时刻的三维数据进行拟合,只要能够获得拟合操作平面即可。
S103、获取各采样时刻的三维数据的凸包点集中各点两两距离中的最远距离,依据所述最远距离判定所述识别对象的状态。
具体地,步骤S103包括如下步骤:
S103A、获取各采样时刻手部的三维数据在对应的拟合操作平面的垂足点云。
对该采样时刻的手部三维数据在所述拟合操作平面内进行分析,根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。将该采样时刻的手部三维数据进行坐标系变换,变换后去除Z轴信息只留XY平面的信息。此XY信息,即该采样时刻的手部三维数据在拟合得到的平面的垂足点云(X',Y')。由于拟合操作平面是手部所在平面的近似平面,因此手部是原样形状大小投影到拟合操作平面上。
S103B、获取该采样时刻垂足点云的凸包点集。
具体地,对垂足点云计算其凸包,获得凸包点集(P,Q)。
凸包点集是指,对于一个点集集合,集合中任意有限个点的线性组合的全体。
S103C、计算所述凸包点集中各点两两距离中的最远距离。
计算所述凸包点集中任意两点的距离,获得点集中两点之间的最远距离L。
S103D、依据所述凸包点集中各点两两距离中的最远距离判定所述识别对象在该采样时刻的状态。
若所述最远距离L大于预设张开判定阈值,则判定识别对象在该采样时刻的状态为张开状态,否则判定识别对象在该采样时刻的状态为紧握状态。
在识别对象是手部,张开判定阈值可根据不同年龄段的人群的手掌大小范围进行设置,若只考虑11岁儿童以上的一般人群,其手掌大小范围较为固定,可将张开判定阈值的取值范围设为不小于2且不大于8厘米。
S104、获取所述凸包点集的中心点,并计算所述中心点在所述预设时长内的移动距离。
在本步骤中,根据如下公式计算所述凸包点集中的中心点:
(xi,yi)∈(x',y')查询其中心点的Z坐标信息根据所述中心点的Z值信息,计算在所述预设时长内,中心点的移动距离。
S105、在预设时长内,根据手部的状态变化以及中心点移动距离执行操作指令。
在本实施例的一个优选实施方式中,预设时长为3秒,当中心点的移动距离达到第一阈值,并且识别对象的状态由紧握状态变为张开状态,则判定为捕获到预设的第一手势,执行预设的第一指令。其中,第一阈值的取值为正值,它表示手部正在逐渐远离提供手部三维数据的识别器。移动多远可进行人为设定,但根据用户的操作习惯,该第一阈值一般在10cm~20cm之间取值,优选的,第一阈值取15厘米。
在本实施方式中,还可以优选进行第二指令的执行,也即,在预设时长3秒内,当所述中心点的移动距离达到第二阈值,并且识别对象的状态由张开状态变为紧握状态,则判定为捕获到预设的第二手势,执行预设的第二指令。其中,第二阈值的取值为负值,它表示手部正在逐渐靠近提供手部三维数据的识别器。移动多近可进行人为设定,但根据用户的操作习惯,该第二阈值一般在-20cm-~-10cm之间取值,优选的,第二阈值取-15厘米。
在本实施例的另一个优选实施方式中,除了考虑识别对象的状态变化和移动距离外,还考虑识别对象的移动方向,例如,在所述预设时长3秒内,中心点向第一方向的移动距离达到第一阈值,并且识别对象的状态由紧握状态变为张开状态,则执行第一指令。其中,可定义垂直并远离指向识别器所在平面的方向为第一方向,第一阈值在10cm~20cm之间取值,优选的,第一阈值取15厘米。
在本实施方式中,还可以优选进行第二指令的执行,也即,在所述预设时长3秒内,中心点向第二方向的移动距离达到第二阈值,并且识别对象的状态由张开状态变为紧握状态,则执行第二指令。其中,可定义垂直并靠近指向识别器所在平面的方向为第二方向,第二阈值在-20cm~-10cm之间取值,优选的,第二阈值取-15厘米。
所述第一指令和第二指令可以是相对应或相反的指令,例如,在本实施例的一个具体实施方式中,第一指令是放大指令,第二指令为缩小指令。又或者第一指令是缩小指令,第二指令为放大指令。其中,放大指令指用于对当前显示界面的内容进行放大,缩小指令用于对当前显示界面的内容进行缩小。
本实施例通过将识别对象三维数据进行拟合获得识别对象所在平面的近似平面,在该近似平面上分析识别对象的凸包点集中的任意两点间的最大距离,根据所述最大距离判断识别对象的状态,结合状态变化和识别对象移动的距离进行手势识别和指令执行。由此,本实施例可以快速准确地识别出预设手势,执行预设指令。
实施例二
根据本发明的同一构思,本发明还提出了手势识别装置,图2是本实施例所述的手势识别装置结构框图,如图2所示,本实施例所述的手势识别装置包括:
三维数据获取模块201,用于获取识别对象的预设时长的三维数据。
在本实施例的一个优选实施方式中,所述的识别对象可以是人的手部。
在本实施例的一个优选实施方式中,所述预设时长的三维数据获取方法可为:采用现有的三维空间数据获取方法,通过识别器获取。例如,可以采用双目计算视差,从而计算三维信息。又例如,可以采用TOF方法,通过计算光的反射时间计算深度图获得识别对象的三维数据。又例如,可以采用单目的结构光方法,通过计算匹配深度图案计算出深度值,从而获得识别对象的三维数据。
此处,识别器可以是现有技术中任何能在三维空间识别出三维数据的仪器,也可以是3D传感器或立体摄像机等。
预设时长的设定一般设定为足以完成一个指令的时长,并参考依据识别器的性能和操作者空间变换的频率而定,例如,此处预设时长优选为3秒。
操作平面获取模块202,用于对识别对象在预设时长中各采样时刻的三维数据进行拟合,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面。
在本实施例的一个具体实施方式中,所述拟合操作平面为识别对象手部所在平面的近似平面。
平面方程的一般表达式为:
P(x,y,z)=Ax+By+Cz+D=0
两边同除以D可得:
P(x,y,z)=ax+by+cz+1=0
设某采样时刻测得手部的三维数据为:
(xi,yi,zi)(i=0,1,2,......,n),此处获取的是手部真实的三维数据,在该三维数据获取系统坐标系下,三维数据的数值单位为厘米。
在本实施例中,根据此三维数据,可以利用最小二乘法公式进行拟合:
设:
可得Q[abc]T=K
解得平面系数为[abc]T=Q-1K。
根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。
需要说明的是,本领域技术人员也可以使用其它现有的平面拟合方法来对对识别对象在预设时长中各采样时刻的三维数据进行拟合,只要能够获得拟合操作平面即可。
状态判定模块203,用于获取手部各采样时刻的三维数据的凸包点集中各点两两距离中的最远距离,依据所述最远距离判定所述识别对象的状态,所述凸包点集为各采样时刻的三维数据在所述拟合操作平面的垂足点云的凸包点集。
当该采样时刻所述最远距离大于预设张开判定阈值,则判定该采样时刻手部的状态为张开状态,否则判定该时刻手部的状态为紧握状态。
具体地,状态判定模块203对该采样时刻手部的三维数据在所述拟合操作平面内进行分析,根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。把缓冲区的三维数据进行坐标系变换,变换后去除Z轴信息只留XY平面的信息。此XY信息,即三维数据在拟合得到的平面的垂足点云。由于拟合操作平面是手部所在平面的近似平面,因此手部是原形状大小投影到拟合操作平面上。
对垂足点云计算其凸包,获得凸包点集(P,Q)。
凸包点集是指,对于一个点集集合,集合中任意有限个点的线性组合的全体。
计算所述凸包点集中任意两点的距离,获得最远距离L。
若所述最远距离L大于预设张开判定阈值,则代表该时刻识别对象的状态为张开状态,否则判定该时刻识别对象的状态为紧握状态。
在识别对象是手部,张开判定阈值可根据不同年龄段的人群的手掌大小范围进行设置,若只考虑11岁以上儿童的一般人群,其手掌大小范围较为固定,可将张开判定阈值的取值范围设为不小于2且不大于8厘米。
中心点监控模块204,用于获取所述凸包点集的中心点,并计算所述中心点在所述预设时长内的移动距离。
所述中心点监控模块204根据如下公式计算所述凸包点集中的中心点:
(xi,yi)∈(x',y')查询其中心点的Z坐标信息根据所述中心点的Z轴信息计算在所述预定时长内,中心点的移动距离。
手势判定与执行模块205,用于根据所述识别对象的状态变化以及所述移动距离执行操作指令。
在本实施例的一个优选实施方式中,手势判定与执行模块205包括第一指令判定执行单元,其用于在所述预设时长之内,如3秒,判定所述中心点移动距离是否达到第一阈值,并且识别对象的状态是否由紧握状态变为张开状态,若是则判定为捕获到预设的第一手势,执行预设的第一指令。其中,第一阈值的取值为正值,它表示手部正在逐渐远离提供手部三维数据的识别器。移动多远可进行人为设定,但根据用户的操作习惯,该第一阈值一般在10cm~20cm之间取值,优选的,第一阈值取15厘米。
在本实施方式中,手势判定与执行模块205还可以优选包括进行执行第二指令的第二指令判定执行单元,其用于在所述预设时长,如3秒内,判定所述中心点移动距离是否达到第二阈值,并且识别对象的状态是否由张开状态变为紧握状态,若是则执行第二指令。其中,第二阈值的取值为负值,它表示手部正在逐渐靠近提供手部三维数据的识别器。移动多近可进行人为设定,但根据用户的操作习惯,该第二阈值一般在-20cm~-10cm之间取值,优选的,第二阈值取-15厘米。
在本实施例的另一个优选实施方式中,除了考虑识别对象的状态变化和移动距离外,还考虑识别对象的移动方向,例如,第一指令判定执行单元用于在所述预设时长(如3秒)内,判定所述中心点在第一方向上的移动距离是否达到第一阈值,并且识别对象的状态是否由紧握状态变为张开状态,若是则执行第一指令。其中,可定义垂直并远离指向识别器所在平面的方向为第一方向,第一阈值在10cm~20cm之间取值,优选的,第一阈值取15厘米。
在本实施方式中,还可以优选进行第二指令的执行,也即,第二指令判定与执行单元用于在所述预设时长之内,判定所述中心点在第二方向上的移动距离是否达到第二阈值,并且识别对象的状态是否由张开状态变为紧握状态,若是则执行第二指令。其中,可定义垂直并靠近指向识别器所在平面的方向为第二方向,第二阈值在-20cm~-10cm之间取值,优选的,第二阈值取-15厘米。
所述第一指令和第二指令可以是相对应或相反的指令,例如,在本实施例的一个具体实施方式中,第一指令是放大指令,第二指令为缩小指令。又或者第一指令是缩小指令,第二指令为放大指令。其中,放大指令指用于对当前显示界面的内容进行放大,缩小指令指用于对当前显示界面的内容进行缩小。
本实施例通过将识别对象三维数据进行拟合获得识别对象所在平面的近似平面,快速准确地捕获到由紧握到向远张开的手势或由张开到拉近紧握的手势,并执行预设的该手势对应的指令,如进行放大和缩小的指令操作。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。