动态手势识别方法和装置与流程

文档序号:12864180阅读:211来源:国知局
动态手势识别方法和装置与流程

本发明涉及人机交互技术领域,尤其涉及一种动态手势识别方法和装置。



背景技术:

手势交互在人机交互技术领域中的重要性越发突出,在基于虚拟人机交互的场景中,主要通过手势来完成对虚拟界面上不同物体的抓取、移动并释放,因此,需要大量的动态手势来完成对物体的操作,为了保证动态手势识别的实时性,需要对动态手势进行快速准确的识别。

现有技术中,基于tower算法来进行手势识别,其计算过程非常复杂,运算量超大,降低了手势识别的实时性。基于手势训练的手势识别,如果为了不占用大量内存则手势模型过于简单,造成手势识别准确率降低;如果为了保证手势识别准确率,需要对手势模型进行大量的训练,且增加的变量将占用大量的内存。



技术实现要素:

为了解决上述问题,本发明提供一种动态手势识别方法和装置,可以快速准确地进行手势识别,而且算法简单,不需要占用大量的内存资源。

本发明提供一种动态手势识别方法,包括:

根据时间帧的先后顺序获取多个手势图像;

将每一个手势图像划分为预设个数的图像块;

从每个手势图像的图像块中,识别手势图像块和非手势图像块;

根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果识别手势运动方向。

可选地,从每个手势图像的图像块中,识别手势图像块和非手势图像块,包括:

根据肤色范围区域,在每个手势图像的图像块中确定属于肤色范围区域的图像块;

对每个属于肤色范围区域的图像块进行傅里叶变换,确定该肤色范围区域的图像块的高频分量以及高频分量在对应图像块中的占比,其中高频分量表示图像中灰度变换速率大于预设阈值的图像区域;

若高频分量在对应图像块中的占比小于等于预设的占比阈值,则确定该肤色范围区域的图像块为手势图像块,否则确定为非手势图像块。

可选地,根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果识别手势运动方向,包括:

将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第一运算结果值;

将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第二运算结果值;

将第一运算结果值与第二运算结果值进行比较,识别手势运动方向。

可选地,将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第一运算结果值,包括:

将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第一异或运算值;

将第一异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将当前帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第一区域值;

将第一异或运算值与第一区域值进行与运算,得到第一运算结果值,若结果值大于0则设为1,否则设为0。

可选地,将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第二运算结果值,包括:

将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第二异或运算值;

将第二异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将下一帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第二区域值;

将第二异或运算值与第二区域值进行与运算,得到第二运算结果值,若结果值大于0则设为1,否则设为0。

本发明还提供一种动态手势识别装置,包括:

获取模块,用于根据时间帧的先后顺序获取多个手势图像;

划分模块,用于将每一个手势图像划分为预设个数的图像块;

第一识别模块,用于从每个手势图像的图像块中,识别手势图像块和非手势图像块;

第二识别模块,用于根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果识别手势运动方向。

可选地,第一识别模块具体用于:

根据肤色范围区域,在每个手势图像的图像块中确定属于肤色范围区域的图像块;

对每个属于肤色范围区域的图像块进行傅里叶变换,确定该肤色范围区域的图像块的高频分量以及高频分量在对应图像块中的占比,其中高频分量表示图像中灰度变换速率大于预设阈值的图像区域;

若高频分量在对应图像块中的占比小于等于预设的占比阈值,则确定该肤色范围区域的图像块为手势图像块,否则确定为非手势图像块。

可选地,所述的装置还包括:

逻辑运算模块,用于将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第一运算结果值;将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第二运算结果值;

所述第二识别模块,用于将所述逻辑运算模块得到的第一运算结果值与第二运算结果值进行比较,识别手势运动方向。

可选地,所述逻辑运算模块具体用于:将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第一异或运算值;将第一异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将当前帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第一区域值;

将第一异或运算值与第一区域值进行与运算,得到第一运算结果值,若结果值大于0则设为1,否则设为0。

可选地,所述逻辑运算模块具体用于:将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第二异或运算值;

将第二异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将下一帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第二区域值;

将第二异或运算值与第二区域值进行与运算,得到第二运算结果值,若结果值大于0则设为1,否则设为0。

本发明实施例可以获取时间帧连续的多个手势图像,对每个手势图像划分为多个图像块,对每个图像进行傅里叶变换以及肤色判断变化,识别手势图像块和非手势图像块,然后根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果进行手势滑动的识别,由于该方法处理过程,不需要对整幅图像进行处理,且用逻辑运算简化及整合标识后多个图像块关系,可以快速准确地进行手势识别,也不需要占用大量的内存资源,大大提高手势识别的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的动态手势识别方法流程示意图;

图2为本发明实施例的一种划分图像示意图;

图3为图1所示实施例中步骤103的一种实现方法示意图;

图4为图1所示实施例中步骤105的一种实现方法示意图;

图5为本发明实施例提供的一种图像块异或运算示意图;

图6为本发明实施例提供的又一种图像块异或运算示意图;

图7为本发明实施例提供的另一种图像块异或运算示意图;

图8为本发明一实施例提供的动态手势识别装置结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应当理解,尽管在本发明实施例中可能采用术语第一、第二、第三等来描述xxx,但这些xxx不应限于这些术语。这些术语仅用来将xxx彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一xxx也可以被称为第二xxx,类似地,第二xxx也可以被称为第一xxx。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

目前由于计算机视觉领域快速发展,及虚拟现实技术的蓬勃发展,虚拟现实技术领域也在拓宽,人机交互刻不容缓,但是,虚拟现实设备由于硬件上局限,不方便配置大量的硬件设备(键盘、鼠标)等进行人机交互,因此,基于视觉的手势识别就显得非常重要了。

然而现有的基于tower算法来进行手势识别,其计算过程非常复杂,运算量超大,降低了手势识别的实时性。基于手势训练的手势识别,如果为了不占用大量内存则手势模型过于简单,造成手势识别准确率降低;如果为了保证手势识别准确率,需要对手势模型进行大量的训练,且增加的变量将占用大量的内存。

为了解决上述问题,本发明实施例提出了基于rgb摄像头的快速手势识别算法,该算法对图像分辨率的要求不高,且算法简单,效率高,可以快速准确地进行手势识别,也不需要占用大量的内存资源。

图1为本发明一实施例提供的动态手势识别方法流程示意图,如图1所示,包括:

101、根据时间帧的先后顺序获取多个手势图像;

假设虚拟现实设备上配有rgb摄像头,当用户通过手势挥动进行人机交互时,摄像头可以连续拍摄手势挥动图像,这些连续拍摄的手势挥动图像在时间帧上是连续的。

102、将每一个手势图像划分为预设个数的图像块;

本发明实施例中可以将每个手势图像划分为预设个数的图像块,其中,预设个数包括3、9、16等,图2为本发明实施例的一种划分图像示意图,如图2所示,将图像划分为9个图像块。

103、从每个手势图像的图像块中,识别手势图像块和非手势图像块;

图3为图1所示实施例中步骤103的一种实现方法示意图,如图3所示,包括:

201、根据肤色范围区域,在每个手势图像的图像块中确定属于肤色范围区域的图像块;

将步骤101中拍摄的每一个手势图像从rgb空间转化为hsv空间,对步骤102中划分的各个图像块进行颜色判断,为此,本发明设置有肤色范围区域([0,30,102]~[30,1000,256]及[168,30,102]~[180,170,256]),将属于肤色范围区域([0,30,102]~[30,1000,256]及[168,30,102]~[180,170,256])的图像块检测出来,之后对属于肤色范围区域的图像块进行形态学操作,以便去除噪点,并使手势图像的边界更加清晰。

202、对每个属于肤色范围区域的图像块进行傅里叶变换,确定该肤色范围区域的图像块的高频分量以及高频分量在对应图像块中的占比;

对每个图像块进行傅里叶变换时,可以确定每个图像块的高频分量和低频分量,其中,高频分量表示图像中灰度变换速率大于预设阈值的图像区域(即灰度变换比较快的区域),比如手势边缘部位灰度突然变化,所以手势边缘部位就是高频分量,而手势内部比较平坦,灰度基本没有变化,对应的就是低频分量,即低频分量表示图像中灰度变换小于等于预设阈值的图像区域(即灰度变换比较慢的区域),需要说明的是,这是的预设阈值是指图像灰度变换速度阈值,可以根据实际应用中可以根据经验值进行设置。

本发明实施例中,为了减少计算量,提高识别效率,只对步骤201中已经确定的属于肤色范围区域的图像块进行傅里叶变换,从而可以确定每个肤色范围区域的图像块的高频分量以及高频分量在对应图像块中的占比,其他不属于肤色范围区域的图像块就不需要进行傅里叶变换。

203、若高频分量在对应图像块中的占比小于等于预设的占比阈值,则确定该肤色范围区域的图像块为手势图像块,否则确定为非手势图像块。

如图2所示,在手势运行时,手势运动区域其实是模糊,对步骤202中,对图像块进行傅里叶变换后得到的高频分量和低频分量进行分析得知,当图像是模糊的,从频率空间上体现为高频分量会非常少。因此,通过判断频率空间中,高频分量占整个图像块的频率空间占比,来判断该图像块是否为模糊图像,如果是模糊图像则可以确定该图像块是手势图像块。为此,本发明实施例中预设一个占比阈值,若高频分量在对应图像块中的占比小于等于预设的占比阈值,则确定该肤色范围区域的图像块为手势图像块,否则确定为非手势图像块。

需要说明的是,上述对每个图像块进行傅里叶变换时,在实际应用中,可以得到每个图像块的频谱图,将频谱移频到原点,计算以圆心为中心的亮斑占整个图像块的占比,这里的亮版是指高频分量,如果亮斑(高频分量)占比小,确定为图像块为手势图像块,否则不是手势图像块。

104、设置手势图像块和非手势图像块的标识值;

为了简化算法,降低运算量,提高手势运动的识别效率和实时性,本发明中将手势图像块标识值设为第一逻辑运算值,例如为1,将非手势图像块标识值设为第二逻辑运算值,例如为0,以便后续进行标识值的异或运算。

105、根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果识别手势运动方向。

基于步骤104中将手势图像块标识值设为第一逻辑运算值,非手势图像块标识值设为第二逻辑运算值,之后,可以根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,从而根据逻辑运算结果识别手势运动方向。

图4为图1所示实施例中步骤105的一种实现方法示意图;如图4所示,包括:

301、将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第一运算结果值;

具体实现时包括:

将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第一异或运算值;

将第一异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将当前帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第一区域值;

将第一异或运算值与第一区域值进行与运算,得到第一运算结果值,若结果值大于0则设为1,否则设为0。

图5为本发明实施例提供的一种图像块异或运算示意图,如图5所示,将当前帧图像块的标识值与上一帧图像块的标识值进行异或运算,得到第一异或运算值;将第一异或运算值中每一列图像块的异或运算值相加,如果>0,则表示当前帧相比较于上一帧发生了变换,那么该列的异或运算值设为1,否则该列的异或运算值设为0;将当前帧的每一列图像块的标识值进行相加,得到第一区域值,如果>0,则该列的区域值设为1,否则该列的区域设为0;然后将上述得到的第一异或运算值与第一区域值进行与运算,得到的与运算值即为第一运算结果值,如果>0,则结果值为1,否则结果值为0。

302、将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第二运算结果值;

具体实现时包括:

将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第二异或运算值;

将第二异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将下一帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第二区域值;

将第二异或运算值与第二区域值进行与运算,得到第二运算结果值,若结果值大于0则设为1,否则设为0。

如图5所示,将当前帧手势图像中各图像块的标识与下一帧手势图像中各图像块的标识值进行异或运算得到第二运算结果值,具体实现参考上述步骤301中的具体描述。

303、将第一运算结果值与第二运算结果值进行比较,识别手势运动方向。

将步骤301得到的第一运算结果值与步骤302得到的第二运算结果值进行比较,通过对相邻时间帧中第一运算结果值与第二运算结果值中1的位置移动来判断手势的运动方向,如图5所示,判断出手势是向右滑动,上下滑动判断也类似。

图6为本发明实施例提供的又一种图像块异或运算示意图;如图6所示,本发明实施例还可以将手势图像划分为16个图像块,从每个手势图像的图像块中,识别手势图像块和非手势图像块,之后,将手势图像块标识值设为1,非手势图像块标识值设为0,之后,对相邻时间帧对应的手势图像中各图像块的标识值进行逻辑运算,根据逻辑运算结果识别手势运动方向,如图6所示,通过对相邻时间帧中第一运算结果值与第二运算结果值中1的位置移动来判断手势的运动方向,如图6所示,判断出手势是向右滑动。

图7为本发明实施例提供的另一种图像块异或运算示意图;如图7所示,本发明实施例还可以将手势图像划分为3个图像块,此时不需要异或运算,如图7所示,通过对相邻时间帧中标识值1的位置移动来判断手势的运动方向,判断出手势是向右滑动。

本发明实施例可以基于rgb摄像头可以获取时间帧连续的多个手势图像,对每个手势图像划分为多个图像块,对每个图像进行傅里叶变换以及肤色判断变化,识别手势图像块和非手势图像块,然后对手势图像块标识为1,对非手势图像块标识为0,从而可以并对时间帧相邻的且标识后的手势图像进行异或运算、与运算等逻辑运算,根据异或运算逻辑运算结果进行手势滑动的识别,由于该方法处理过程,不需要对整幅图像进行处理,且用逻辑运算简化及整合标识后多个图像块关系,可以快速准确地进行手势识别,也不需要占用大量的内存资源,大大提高手势识别的效率。

图8为本发明一实施例提供的动态手势识别装置结构示意图,如图8所示,包括:

获取模块,用于根据时间帧的先后顺序获取多个手势图像;

划分模块,用于将每一个手势图像划分为预设个数的图像块;

第一识别模块,用于从每个手势图像的图像块中,识别手势图像块和非手势图像块;

第二识别模块,用于根据相邻时间帧对应的手势图像中手势图像块和非手势图像块的标识值,对相邻时间帧对应的手势图像进行逻辑运算,根据逻辑运算结果识别手势运动方向。

可选地,第一识别模块具体用于:

根据肤色范围区域,在每个手势图像的图像块中确定属于肤色范围区域的图像块;

对每个属于肤色范围区域的图像块进行傅里叶变换,确定该肤色范围区域的图像块的高频分量以及高频分量在对应图像块中的占比,其中高频分量表示图像中灰度变换速率大于预设阈值的图像区域;

若高频分量在对应图像块中的占比小于等于预设的占比阈值,则确定该肤色范围区域的图像块为手势图像块,否则确定为非手势图像块。

可选地,所述的装置还包括:

逻辑运算模块,用于将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第一运算结果值;将当前帧手势图像中手势图像块和非手势图像块的标识与下一帧手势图像中手势图像块和非手势图像块的标识值进行逻辑运算得到第二运算结果值;

所述第二识别模块,用于将所述逻辑运算模块得到的第一运算结果值与第二运算结果值进行比较,识别手势运动方向。

可选地,所述逻辑运算模块具体用于:将当前帧手势图像中手势图像块和非手势图像块的标识值与上一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第一异或运算值;将第一异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将当前帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第一区域值;

将第一异或运算值与第一区域值进行与运算,得到第一运算结果值,若结果值大于0则设为1,否则设为0。

可选地,所述逻辑运算模块具体用于:将当前帧手势图像中手势图像块和非手势图像块的标识值与下一帧手势图像中手势图像块和非手势图像块的标识值进行异或运算,得到第二异或运算值;

将第二异或运算值中每一列的异或运算值相加,若大于0,则将该列的异或运算值设为1,否则将该列的异或运算值设为0;

将下一帧手势图像中每一列图像块的标识值进行相加,若大于0,则将该列区域值设为1,否则将该列区域值设为0,得到第二区域值;

将第二异或运算值与第二区域值进行与运算,得到第二运算结果值,若结果值大于0则设为1,否则设为0。

本发明实施例所述的装置可以上述实施例所示的方法,其实现原理和技术效果不再赘述。

本发明实施例中,上述动态手势识别装置的结构中包括处理器和存储器,所述存储器用于存储支持动态手势识别装置执行上述图1所示实施例中动态手势识别方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。

所述程序包括一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理器调用执行。

本发明实施例还提供了一种计算机存储介质,用于储存动态手势识别装置所用的计算机软件指令,所述计算机软件指令包含了用于执行上述动态手势识别方法为动态手势识别装置所涉及的程序。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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