发明内容
鉴于上述问题,本发明的目的在于提出一种手势识别方法及装置,以能够快速准确地捕获到操控者的预设手势,并执行预设手势对应的指令。
为达此目的,本发明采用以下技术方案:
一种手势识别方法,其特征在于,包括:
S1、获取识别对象的三维数据;
S2、拟合三维数据,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面;
S3、获取三维数据在所述拟合操作平面的垂足点云;
S4、分别以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,对所取窗口的内部区域进行扫描,根据扫描结果标记出待分离垂足点,去除所有待分离垂足点后,将剩余垂足点云中彼此连通的区域归为同一独立区域,否则为不同独立区域;所述标记出待分离垂足点包括,当对所取窗口的内部区域进行扫描时,计算窗口内扫描到的所有垂足点所占区域面积,判定该区域面积是否大于窗口面积的一定比例,若是则标记窗口内取到的所有垂足点为待分离垂足点;
S5、分别计算各独立区域的面积,获取有效区域的数量,所述有效区域为面积符合预设面积条件的独立区域,当所述有效区域的数量等于预设数量时,则判定为捕获到预设手势;
S6、执行所述预设手势对应的指令。
优选地,所述预设面积条件为不大于6平方厘米且不小于2平方厘米,所述预设数量为1。
优选地,步骤S4中所述预设大小的窗口为各边长度不小于1.5厘米且不大于3厘米的正方形窗口。
优选地,所述预设大小的窗口为边长为2厘米的正方形窗口。
优选地,所述步骤S2中对三维数据使用最小二乘法公式进行拟合。
本发明还公开了一种手势识别装置,其特征在于,包括:
三维数据获取模块,用于获取识别对象的三维数据;
操作平面获取模块,用于拟合三维数据,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面;
垂足点云提取模块,用于获取三维数据在所述拟合操作平面的垂足点云;
分离模块,用于分别以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,对所取窗口的内部区域进行扫描,根据扫描结果标记出待分离垂足点,去除所有待分离垂足点后,将剩余垂足点云中彼此连通的区域归为同一独立区域,否则为不同独立区域;所述标记出待分离垂足点包括,当对所取窗口的内部区域进行扫描时,计算窗口内扫描到的所有垂足点所占区域面积,判定该区域面积是否大于窗口面积的一定比例,若是则标记窗口内取到的所有垂足点为待分离垂足点;
手势判定模块,用于计算各独立区域的面积,获取有效区域的数量,所述有效区域为面积符合预设面积条件的独立区域,当所述有效区域的数量等于预设数量时,则判定为捕获到预设手势;
手势执行模块,用于执行所述预设手势对应的指令。
优选地,所述预设面积条件为不大于6平方厘米且不小于2平方厘米,所述预设数量为1。
优选地,所述手势判定模块中所述预设大小的窗口为各边长度不小于1.5厘米且不大于3厘米的正方形窗口。
优选地,所述预设大小的窗口为边长为2厘米的正方形窗口。
优选地,所述操作平面获取模块对所述三维数据使用最小二乘法公式进行拟合。
本发明通过将识别对象三维数据进行拟合获得识别对象所在平面的近似平面,再将识别对象的三维数据映射到该近似平面上得到垂足点云,通过窗口扫描垂足点云以辨识待分离垂足点,获取从垂足点云中去除待分离垂足点后的各独立区域,计算个独立区域的面积并获得有效区域数量,根据有效区域数量来进行手势识别和指令执行。由此,本发明可以快速准确地识别手部状态,并结合根据手部状态识别其对应的指令进行执行。
具体实施方式
实施例一
图1是本实施例所述的手势识别方法流程图。如图1所示,本实施例所述的手势识别方法包括:
S101、获取识别对象的三维数据。
在本实施例的一个优选实施方式中,所述的识别对象可以是人体的手部。
在本实施例的一个优选实施方式中,所述三维数据获取方法可为:采用现有的三维空间数据获取方法,通过识别器获取。例如,可以采用双目计算视差,从而计算三维信息。又例如,可以采用TOF(Time of Flight,光飞行时间)方法,通过计算光的反射时间计算深度图获得识别对象的三维数据。又例如,可以采用单目的结构光方法,通过计算匹配深度图案计算出深度值,从而获得识别对象的三维数据。
此处,识别器可以是现有技术中任何能在三维空间识别出三维数据的仪器,也可以是3D(Three Dimensional,三维)传感器或立体摄像机等。
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[a b c]T=K
解得平面系数为[a b c]T=Q-1K。
根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。
需要说明的是,本领域技术人员也可以使用其它现有的平面拟合方法来对对识别对象的三维数据进行拟合,只要能够获得拟合操作平面即可。
S103、获取三维数据在所述拟合操作平面的垂足点云。
根据从拟合操作平面方程中获得平面法线相对原坐标系的旋转关系R对三维数据进行坐标系变换,变换后去除Z轴信息只留XY平面的信息。此XY信息,即识别对象的三维数据在拟合操作平面的垂足点云(X′,Y′)。由于拟合操作平面是手部所在平面的近似平面,因此手部是原样形状大小投影到拟合操作平面上。
S104、分别以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,对所取窗口的内部区域进行扫描,根据扫描结果标记出待分离垂足点。所述标记出待分离垂足点包括,当对所取窗口的内部区域进行扫描时,计算窗口内扫描到的所有垂足点所占区域面积,判定该区域面积是否大于窗口面积的一定比例,若是则标记窗口内取到的所有垂足点为待分离垂足点(P,Q)i(i=0,1,2,......,n),由此,通过移动窗口至以不同的垂足点为定位基准且逐一进行扫描,从而获得所有的待分离垂足点。然后,从垂足点云中去除所有的待分离垂足点,即,(X′,Y′)-Σ(P,Q)i。通过连通域分析或其它现有手段将剩余垂足点中彼此连通的数据区域归为同一个独立区域,否则为不同独立区域,从而获取一个或多个独立区域。
其中,以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,可以以如下方式进行:
一种是以当前垂足点为中心来定位窗口,就是说使得用来定位的当前垂足点位于窗口的几何中心上,相应地将当前垂足点周围的一些区域划入窗口内。
一种是以当前垂足点为窗口边界特定位置的点,以此来定位所述窗口,将垂足点某侧的一些区域划入窗口内。
另一种是以当前垂足点位于窗口内的某个确定的坐标位置来定位窗口。
但是,无论是哪种情形,同一种实施方式中各垂足点作为的基准点的位置应保持一致。
在本实施例的一个优选实施方式中,所述的识别对象为人体的手部,需要识别的手势为人手伸出的手指的数量(例如,识别手部是否仅竖起一个手指)。此时,待分离垂足点为人体手掌部分的数据。
在此前提下,可以设置所述预设大小的窗口为各边长度不小于1.5厘米且不大于3厘米的正方形窗口,进一步地,所述矩形窗口优选为2cm*2cm的正方形,窗口以垂足点云中的每个垂足点作为定位基准,对每次所取窗口的内部区域均进行扫描。
在本实施方式中,原始的识别对象为手部的垂足点云。如图2a所示,其显示为手部的基本轮廓。由于手部的特点,手掌部分的面积较大,而手指部分由于存在间隙,因此面积较小。用大小合适的正方形窗口取手部的垂足点云时,取到手掌部分数据时,窗口中基本没有空白,而取到手指部分数据时,由于手指之间的间隙会使得窗口中出现较多的空白。由此,以某一垂足点为定位基准取窗口,计算窗口内取到的所有垂足点所占区域面积,若该区域面积大于窗口面积的90%,则标记窗口内取到的所有垂足点为待分离垂足点,去除待分离垂足点,由此手掌部的数据被去除掉,即如图2b所示,去除待分离垂足点后,实现了手掌部分数据和手指部分数据的分离。
在本实施例的一个优选实施方式中,去除待分离垂足点后,通过连通域分析,剩余垂足点云中彼此连通的区域即为同一个独立区域,从而获得一个或多个独立区域。在本实施中,识别对象是手部,手势是张开时,获得三个独立区域,即大拇指部分、除大拇指之外的四指连在一起的部分以及手掌底部的零碎部分,参见图2c所示。
S105、计算各独立区域的面积,获取有效区域的数量,所述有效区域为面积符合预设面积条件的独立区域,当所述有效区域的数量等于预设数量时,则判定为捕获到预设手势。
本步骤通过计算独立区域的面积,将面积符合预设面积条件的认定为有效区域,排除分离过程中得到的零碎的独立区域对于手势识别的干扰。然后计算有效区域的数量即可进行判断是否捕获到预设手势。
在本实施例的一个优选实施方式中,当识别对象是手部,预设面积条件为不大于6平方厘米且不小于2平方厘米,预设数量为1,即独立区域的面积不大于6平方厘米且不小于2平方厘米时,将其认定为有效区域,当有效区域的数量等于1时,则表示采集到的手部的三维数据形态为仅竖起一个手指,此时判定捕获到预设手势。
第一种情形,如图2c所示,此时手部的姿态为张开,在去除待分离垂足点,即手掌部分的数据后,通过连通域分析,在获得的三个独立区域中,大拇指部分数据与除大拇指之外的剩下四指连在一起部分的数据均为有效区域,此时有效区域的数量为2,表示没有捕捉到预设手势。
另一种情形,此时手部四指弯曲,仅竖起一个手指,去除掉手掌部分数据,对剩下的数据通过连通域分析,获得独立区域,在认定有效区域的面积范围为2平方厘米到6平方厘米的预设下,满足有效区域的独立区域恰好为一个,即仅竖起的手指部分的数据区域能够满足,此时便可快速判定出捕捉到预设手势。
当然,本领域技术人员可以理解,通过变化对于有效区域的面积范围以及获得的有效区域数量的设定,可以使得捕获到的预设手势是竖起两个或两个以上的手指。
S106、执行预设手势对应的指令。
在本实施例的一个优选实施方式中,所述预设手势对应的指令为启动正在运行的菜单,即当在所述步骤S105成功捕获到预设手势时,在步骤S106中会启动正在运行的菜单。
本实施例通过将识别对象三维数据进行拟合获得识别对象所在平面的近似平面,再将识别对象的三维数据映射到该近似平面上得到垂足点云,通过一定大小的窗口对垂足点云进行扫描,标记出所有待分离垂足点,计算将剔除待分离垂足点后的各独立区域的面积获得有效区域数量,根据有效区域数量来进行手势识别和指令执行。由此,本发明可以快速准确地识别手部状态,并执行相应的预设指令。
实施例二
根据本发明的同一构思,本发明还提供了手势识别装置,图3是本实施例所述的手势识别装置结构示意图,如图3所示,本实施例所述的手势识别装置包括三维数据获取模块31、操作平面获取模块32、垂足点云提取模块33、分离模块34、手势判定模块35以及手势执行模块36。
其中,三维数据获取模块31用于获取识别对象的三维数据。
在本实施例的一个优选实施方式中,所述三维数据获取方法可为:采用现有的三维空间数据获取方法,通过识别器获取。例如,可以采用双目计算视差,从而计算三维信息。又例如,可以采用TOF(Time of Flight,光飞行时间)方法,通过计算光的反射时间计算深度图获得识别对象的三维数据。又例如,可以采用单目的结构光方法,通过计算匹配深度图案计算出深度值,从而获得识别对象的三维数据。
此处,识别器可以是现有技术中任何能在三维空间识别出三维数据的仪器,也可以是3D(Three Dimensional,三维)传感器或立体摄像机等。
操作平面获取模块32用于对三维数据进行拟合,获取拟合操作平面,所述拟合操作平面为识别对象所在平面的近似平面。
在本实施例的一个具体实施方式中,当识别对象为手部时所述拟合操作平面为手部手掌所在平面的近似平面。
平面方程的一般表达式为:
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[a b c]T=K
解得平面系数为[a b c]T=Q-1K。
根据空间几何的知识,可以从平面方程中获得平面法线相对原坐标系的旋转关系R。
需要说明的是,本领域技术人员也可以使用其它现有的平面拟合方法来对对识别对象的三维数据进行拟合,只要能够获得拟合操作平面即可。
垂足点云提取模块33,用于获取三维数据在所述拟合操作平面的垂足点云。
具体地,根据从操作拟合平面方程中获得平面法线相对原坐标系的旋转关系R对三维数据进行坐标系变换,变换后去除Z轴信息只留XY平面的信息。此XY信息,即三维数据在拟合得到的平面的垂足点云(X′,Y′)。由于拟合操作平面是手部所在平面的近似平面,因此手部是原样形状大小投影到拟合操作平面上。
分离模块34,用于分别以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,对所取窗口的内部区域进行扫描,根据扫描结果标记出待分离垂足点。所述标记出待分离垂足点包括,当对所取窗口的内部区域进行扫描时,计算窗口内扫描到的所有垂足点所占区域面积,判定该区域面积是否大于窗口面积的一定比例,若是则标记窗口内取到的所有垂足点为待分离垂足点(P,Q)i(i=0,1,2,......,n),由此,通过移动窗口至以不同的垂足点为定位基准且逐一进行扫描,从而获得所有的待分离垂足点。然后,从垂足点云中去除所有的待分离垂足点,即,(X′,Y′)-Σ(P,Q)i。通过连通域分析或其它现有手段将剩余垂足点中彼此连通的数据区域归为同一个独立区域,否则为不同独立区域,从而获取一个或多个独立区域。
其中,以所述垂足点云中的每一个垂足点为定位基准取预设大小的窗口,可以以如下方式进行:
一种是以当前垂足点为中心来定位窗口,就是说使得用来定位的当前垂足点位于窗口的几何中心上,相应地将当前垂足点周围的一些区域划入窗口内。
一种是以当前垂足点为窗口边界特定位置的点,以此来定位所述窗口,将垂足点某侧的一些区域划入窗口内。
另一种是以当前垂足点位于窗口内的某个确定的坐标位置来定位窗口。
但是,无论是哪种情形,同一种实施方式中各垂足点作为的基准点的位置应保持一致。
在本实施例的一个优选实施方式中,所述的识别对象为人体的手部,需要识别的手势为人手伸出的手指的数量(例如,识别手部是否竖起一个手指)。此时,待分离垂足点为人体手掌部分的数据。
在此前提下,可以设置所述预设大小的窗口为各边长度不小于1.5厘米且不大于3厘米的正方形窗口,进一步地,所述矩形窗口优选为2cm*2cm的正方形,窗口以垂足点云中的每个垂足点作为定位基准,对每次所取窗口的内部区域均进行扫描。
在本实施方式中,原始的识别对象为手部的垂足点云。如图2a所示,其显示为手部的基本轮廓。由于手部的特点,手掌部分的面积较大,而手指部分由于存在间隙,因此面积较小。用大小合适正方形窗口取手部的垂足点云时,取到手掌部分数据时,窗口中基本没有空白,而取到手指部分数据时,由于手指之间的间隙会使得窗口中出现较多的空白。由此,以某一垂足点为定位基准取窗口,计算窗口内取到的所有垂足点所占区域面积,若该区域面积大于窗口面积的90%,则标记窗口内取到的所有垂足点为待分离垂足点,去除待分离垂足点,由此手掌部的数据被去除掉,即如图2b所示,去除待分离垂足点后,实现了手掌部分数据和手指部分数据的分离。
在本实施例的一个优选实施方式中,去除待分离垂足点后,通过连通域分析,剩余垂足点云中彼此连通的区域即为同一个独立区域,从而获得一个或多个独立区域。在本实施中,识别对象是手部,手势是张开时,获得三个独立区域,即大拇指部分、除大拇指之外的四指连在一起的部分以及手掌底部的零碎部分,参见图2c所示。
手势判定模块35,用于计算各独立区域的面积,获取有效区域的数量,所述有效区域为面积符合预设面积条件的独立区域,当所述有效区域的数量等于预设数量时,则判定为捕获到预设手势。
手势判定模块35通过计算独立区域的面积,将面积符合预设面积条件的认定为有效区域,排除分离过程中得到的零碎的独立区域对于手势识别的干扰。然后计算有效区域的数量即可进行判断是否捕获到预设手势。
在本实施例的一个优选实施方式中,当识别对象是手部,预设面积条件为不大于6平方厘米且不小于2平方厘米,预设数量为1,即独立区域的面积不大于6平方厘米且不小于2平方厘米时,将其认定为有效区域,当有效区域的数量为1时,则表示采集到的手部的三维数据形态为仅竖起一个手指,此时判定捕获到预设手势。
第一种情形,如图2c所示,此时手部的姿态为张开,在去除待分离垂足点,即手掌部分的数据后,通过连通域分析,在获得的三个独立区域中,大拇指部分数据与除大拇指之外的剩下四指连在一起部分的数据均为有效区域,此时有效区域的数量为2,表示没有捕捉到预设手势。
另一种情形,此时手部四指弯曲,仅竖起一个手指,去除掉手掌部分数据,对剩下的数据通过连通域分析,获得独立区域,在认定有效区域的面积范围为2平方厘米到6平方厘米的预设下,满足有效区域的独立区域恰好为一个,即仅竖起的手指部分的数据区域能够满足,此时便可快速判定出捕捉到预设手势。
当然,本领域技术人员可以理解,通过变化对于有效区域的面积范围以及获得的有效区域数量的设定,可以使得捕获到的预设手势是竖起两个或两个以上的手指。
手势执行模块36,用于执行所述预设手势对应的指令。在本实施例的一个优选实施方式中,当手势执行模块36成功捕获到竖起一个手指的手势时,启动正在运行的菜单。
本实施例通过将对象三维数据映射到识别对象所在平面的近似平面内,在进行数据分离和分割处理后,通过对分割后得到的独立区域数据进行分析,能快速准确地捕获到竖起一个手指的手势,从而进行预设的指令。由此,本发明可以快速准确地识别手部状态,并执行相应的预设指令。
以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。