动态手势识别方法及装置
技术领域
本发明涉及手势识别技术领域,更具体地,涉及一种动态手势识别方法、一种动态手势识别装置。
背景技术
目前,由于使用场景及硬件上的局限,不方便配置大量的交互设备(例如,键盘、鼠标等)进行人机交互。那么手势识别交互技术成为新一代人机交互不可或缺的技术。现有的手势识别交互技术识别结果准确率较低。
因此,需要提供一种新的技术方案,针对上述现有技术中的技术问题进行改进。
发明内容
本发明的一个目的是提供一种用于识别动态手势的新技术方案。
根据本发明的第一方面,提供了一种动态手势识别方法,包括:
获取多个连续帧图像,并根据所述多个连续帧图像生成运动历史图像;
从所述运动历史图像中分割得到手部运动图像;
利用SVM分类器对手部运动图像进行识别,得到动态手势的识别结果。
可选地,根据所述多个连续帧图像生成运动历史图像,包括:
利用帧间差分法对任意相邻两帧图像进行处理,得到运动目标对应的图像;
利用椭圆肤色检测模型去除非肤色的运动目标对应的图像,得到各帧图像中的手部图像;
根据各帧图像中的手部图像生成运动历史图像。
可选地,从所述运动历史图像中分割得到手部运动图像,包括:
从所述运动历史图像中,获取灰度值大于第一预设阈值的像素点集合,并将所述像素点集合组成的图像作为手部运动图像。
可选地,在获取灰度值大于第一预设阈值的第一像素点集合后,所述方法还包括:
从所述像素点集合中去除灰度值大于第二预设阈值的像素点,并将去除后的像素点集合组成的图像作为手部图像,其中,
所述第二预设阈值大于第一预设阈值。
可选地,利用SVM分类器对手部运动图像进行识别,得到动态手势的识别结果,包括:
将手部运动图像中的各像素点的灰度值生成一维数据;
利用特征向量矩阵对所述一维数据进行PCA样本空间处理,得到特征向量,记作为输入数据,其中,所述特征向量矩阵是基于训练样本得到的;
将所述输入数据输入至所述SVM分类器进行识别,得到动态手势的识别结果。
根据本发明的第二方面,提供了一种动态手势识别装置,包括:
运动历史图像生成模块,用于获取多个连续帧图像,并根据所述多个连续帧图像生成运动历史图像;
分割模块,用于从所述运动历史图像中分割得到手部运动图像;
识别模块,用于利用SVM分类器对手部运动图像进行识别,得到动态手势的识别结果。
可选地,所述运动历史图像生成模块进一步用于:
利用帧间差分法对任意相邻两帧图像进行处理,得到运动目标对应的图像;
利用椭圆肤色检测模型去除非肤色的运动目标对应的图像,得到各帧图像中的手部图像;
根据各帧图像中的手部图像生成运动历史图像。
可选地,所述分割模块进一步用于:
从所述运动历史图像中,获取灰度值大于第一预设阈值的像素点集合,并将所述像素点集合组成的图像作为手部运动图像。
可选地,所述识别模块进一步用于:
将手部运动图像中的各像素点的灰度值生成一维数据;
利用特征向量矩阵对所述一维数据进行PCA样本空间处理,得到特征向量,记作为输入数据,其中,所述特征向量矩阵是基于训练样本得到的;
将所述输入数据输入至所述SVM分类器进行识别,得到动态手势的识别结果。
根据本发明的第三方面,提供了一种动态手势识别装置,包括:存储器和处理器,其中,所述存储器存储可执行指令,所述可执行指令控制所述处理器进行操作以执行根据第一方面中的任何一项所述的动态手势识别方法。
本发明的一个实施例的有益效果在于,实现了动态手势的识别结果,并且提高了动态手势识别的准确性。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1是根据本发明一个实施例的动态手势识别方法的处理流程图。
图2是根据本发明一个实施例的动态手势识别装置的结构示意图。
图3示出了根据本发明一个实施例的动态手势识别装置的硬件结构示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<方法>
图1是根据本发明一个实施例的动态手势识别方法的处理流程图。
根据图1所示,该动态手势识别方法至少包括以下步骤:
步骤S1100,获取多个连续帧图像,并根据多个连续帧图像生成运动历史图像。
本发明实施例中,步骤S1100具体包括以下步骤:
步骤S1110,利用帧间差分法对任意相邻两帧图像进行处理,得到运动目标对应的图像。
帧间差分法是一种通过对连续两帧图像做差分运算,以获得运动目标的一种方法,其表达式如下:
其中,D(x,y)为连续两帧图像之间的差分图像,I(t)和I(t-1)分别为t时刻和t-1时刻的图像,T为差分图像二值化时选取的阈值,(x,y)为像素点在图像中的坐标信息,D(x,y)=1对应的像素点为运动目标的像素点,D(x,y)=0对应的像素点为背景图像的像素点。
以包括10帧图像的视频流为例,将第二帧图像和第一帧图像进行帧间差分处理,得到第二帧图像中的运动目标对应的图像。将第三帧图像和第二帧图像进行帧间差分处理,得到第三帧图像中的运动目标对应的图像。按照帧间差分法依次得到第四帧图像、第五帧图像、……第十帧图像中的运动目标对应的图像。
由于各帧图像中运动目标不一定为手部,还可能为其他运动目标。因此,为了能够排除非手部的运动目标的干扰,准确地从各帧图像中的运动目标识别出手部图像,执行步骤S1120,利用椭圆肤色检测模型去除非肤色的运动目标对应的图像,得到各帧图像中的手部图像。
椭圆肤色检测模型的检测原理为:人的肤色在外观上的差异主要是由亮度引起的,在色度空间中,不同人的肤色分布趋于集中在一个较小的区域内。肤色在YCbCr颜色空间的CbCr平面上分布在一个近似的椭圆区域范围内。通过判断一像素点的CbCr值是否落在肤色分布的椭圆区域内来确定其是不是肤色。
本发明实施例中,根据步骤S1110和步骤S1120的处理可以排除非肤色运动目标的干扰,也可以排除具有肤色的静止目标的干扰,得到各帧图像中的手部图像。
t时刻对应的图像中的手部图像的像素点可以利用以下表达式表示,
其中,C(x,y)=1对应的像素点为具有肤色的像素点,B(x,y)=1对应的像素点为具有肤色的运动目标的像素点。
步骤S1130,根据各帧图像中的手部图像生成运动历史图像。
运动历史图像是通过计算时间段内同一位置的像素变化,将运动目标的运动情况以图像亮度的形式表现出来。运动历史图像中每个像素点的灰度值表示了在一组视频序列中该位置像素的最近的运动情况。最后运动的时刻越接近当前帧,该像素点的灰度值越高。
运动历史图像中各像素点的灰度值对应的函数表达式Hτ(x,y,t)如下:
其中,(x,y)为像素点在图像中的坐标信息,t为时刻,τ为持续时间,τ可以为连续帧的帧数n,δ为衰退参数,为上述函数B(x,y)。
步骤S1200,从运动历史图像中分割得到手部运动图像。
本发明实施例中,从运动历史图像中,获取灰度值大于第一预设阈值的像素点集合,并将像素点集合组成的图像作为手部运动图像。其中,第一预设阈值T=τ-n0δ。
为了保证从运动历史图像中分割得到手部运动图像,在获取灰度值大于第一预设阈值的像素点集合后,从像素点集合中去除灰度值大于第二预设阈值的像素点,并将去除后的像素点集合组成的图像作为手部图像。其中,第二预设阈值T′=T+2δ。
例如,首先扫描历史运动图像,获取其中一个H(x,y)>T的像素点,记为h0,h0属于像素点集合。然后判断h0的四邻域的像素点的灰度值是否大于T。如果位于h0左边的像素点h1的灰度值H(x-1,y)>T,可以确定h1也属于该像素点集合。如果位于h0左边的像素点h1的灰度值H(x-1,y)≤T,可以确定h1不属于该像素点集合。如果h1属于该像素点集合,继续判断h1的四邻域的像素点的灰度值是否大于T。按照上述判断过程,搜索到所有灰度值大于第一预设阈值的像素点。然后,从像素点集合中去除灰度值大于第二预设阈值的像素点,并将去除后的像素点集合组成的图像作为手部图像。
步骤S1300,利用SVM分类器对手部运动图像进行识别,得到动态手势的识别结果。
本发明实施例中,动态手势的识别结果至少包括手部的运动方向。
本发明实施例中,SVM分类器的训练过程包括:建立样本库;利用样本库对SVM分类器进行训练,得到分类模型参数,最终得到训练后的SVM分类器。
由于动态手势的识别结果包括多种,本发明实施例的SVM分类器为多个2分类器。以一个例子对多分类器的识别原理进行说明。如果识别结果分为5类:A,B,C,D,E,建立10个2分类器,分别为AB,AC,AD,AE,BC,BD,BE,CD,CE,DE。将输入数据IN0分别采用AB,AC,AD,AE,BC,BD,BE,CD,CE,DE分类器进行识别,得到10个识别结果。如果AB分类器的识别结果为A,那么A得1票。如果AC分类器的识别结果为A,那么A得2票。如果BC分类器的识别结果为B,那么B得1票,按照上述操作依次类推。将所有的识别结果进行计数操作,将得票最高的识别结果作为最终的识别结果。
本发明实施例中,将手部运动图像中的各像素点的灰度值生成一维数据。利用特征向量矩阵对该一维数据进行PCA样本空间处理,得到特征向量,并将该特征向量记作为输入数据,可参见下列公式(1),
Z(i)=UT*X(i)—公式(1),
其中,X(i)为由手部运动图像中各像素点的灰度值组成的n*1的矩阵,U为n*k的特征向量矩阵,Z(i)为特征向量,其中,n为手部运动图像中的像素点的个数。U是利用训练样本得到的,即将由训练样本组成的n*m的矩阵S投影到新的特征空间,降维到k维后得到的矩阵。m为组成训练样本的图像的数量。训练样本中各图像的像素点的数量和手部运动图像的像素点的数量是相同的。然后,将该输入数据输入至SVM分类器进行识别,得到动态手势的识别结果。
例如,将手部运动图像进行归一化处理,得到100*40大小的图像。将归一化后的图像,转化为一维数据,即为4000*1的矩阵,该矩阵中各元素代表对应的像素点的灰度值。基于上述公式(1),利用特征向量矩阵对该一维数据进行PCA样本空间处理,得到特征向量。然后,将该特征向量作为输入数据用SVM分类器进行识别,得到动态手势的识别结果。
<装置>
图2是根据本发明一个实施例的动态手势识别装置的结构示意图。
根据图2所示,该装置至少包括:运动历史图像生成模块210、分割模块220、和识别模块230。
该运动历史图像生成模块210用于获取多个连续帧图像,并根据所述多个连续帧图像生成运动历史图像;
该分割模块220用于从所述运动历史图像中分割得到手部运动图像;
该识别模块230用于利用SVM分类器对手部运动图像进行识别,得到动态手势的识别结果。
在本发明的一个实施例中,运动历史图像生成模块210进一步用于:利用帧间差分法对任意相邻两帧图像进行处理,得到运动目标对应的图像;利用椭圆肤色检测模型去除非肤色的运动目标对应的图像,得到各帧图像中的手部图像;根据各帧图像中的手部图像生成运动历史图像。
在本发明的一个实施例中,分割模块220进一步用于:从运动历史图像中,获取灰度值大于第一预设阈值的像素点集合,并将像素点集合组成的图像作为手部运动图像。
本发明实施例中,分割模块220进一步用于:从像素点集合中去除灰度值大于第二预设阈值的像素点,并将去除后的像素点集合组成的图像作为手部图像,其中,第二预设阈值大于第一预设阈值。
在本发明的一个实施例中,识别模块230进一步用于:将手部运动图像中的各像素点的灰度值生成一维数据;利用特征向量矩阵对该一维数据进行PCA样本空间处理,得到特征向量,并将该特征向量记作为输入数据;将该输入数据输入至SVM分类器进行识别,得到动态手势的识别结果。
图3示出了根据本发明一个实施例的动态手势识别装置的硬件结构示意图。参见图3,该装置至少包括:存储器320和处理器310,其中,存储器320存储可执行指令,可执行指令控制处理器310进行操作以执行上述任何一项的动态手势识别方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。