法律状态公告日
法律状态信息
法律状态
2020-08-18
授权
授权
2018-07-13
实质审查的生效 IPC(主分类):G06K9/00 申请日:20171220
实质审查的生效
2018-06-15
公开
公开
技术领域
本发明涉及图像处理与分析技术领域,具体涉及一种基于特征协方差矩阵的动态手势识别方法。
背景技术
基于视觉的手势识别在人机交互、机器人控制、虚拟现实等领域具有极其重要的作用,因此其在计算机视觉领域受到了广泛的关注。一般而言,手势可以分为两种类型:静态手势与动态手势。静态手势识别主要是从单幅图像中识别手的姿态,因此其在很大程度上受限于实际的应用场景。与静态手势相比,动态手势包含了手的运动过程,能够传递更多的信息。此外,动态手势一般在移动的环境中进行采集,使得动态手势识别具有更加广泛的应用场景。
根据采集手势的相机类型,动态手势可以分为二维或三维动态手势。在二维动态手势识别中,传统的RGB相机被用来采集一系列手势图片序列。与二维相机相比,深度相机能提供手势的深度信息,对背景扰乱以及光照变化等复杂环境具有更好的鲁棒性。因此,三维动态手势识别广泛地使用RGB-D相机作为手势采集设备。然而,在一些对成本要求较高的应用场景传统的RGB相机比RGB-D相机更有优势。
目前,主流的动态手势识别方法包括机器学习与模板匹配。对二维动态手势识别而言,一个完整的手势可以用各种各样的特征来表示,这些特征都是从人的手部区域提取而来。经典的机器学习方法,例如HMM、KNN等生成模型以及ANN、SVM等判别模型都可以被用来对手势进行分类。然而,这些模型的鲁棒性面临三个方面的挑战:(1)需要正确地分割出人手以便获取手的形状以及轮廓;(2)需要精确地跟踪人手以便获取手的运动轨迹;(3)HMM与ANN等模型的训练过程很复杂且需要大量的训练样本。基于模板匹配的二维动态手势识别方法首先从手势视频中提取一系列视频描述子,然后直接将这些提取的视频描述子与模板手势的视频描述子进行匹配。然而,这些视频描述子大多数来自人体行为识别领域,对动态手势识别而言它们并不能达到最优的性能。一个重要的原因是动态手势持续时间一般较短,能够提取的视频描述子较少,不能充分地对动态手势进行描述。其它原因包括提取特征的过程比较耗时以及当模板库较大时的匹配效率问题。
对三维动态手势识别而言,一方面,动态手势可以用深度视频序列来表示。这样就可以从深度视频中提取特征并用机器学习或模板匹配的方法对手势进行分类。另一方面,动态手势也可以用手部关节点的运动序列来表示。这些手部关节点能够提供手的形状、运动以及方向等特征。然而,到目前为止,很少有研究基于手的关节特征来实现动态手势识别。
由此可见,当前动态手势识别领域已有的算法仍有很多不足之处,尤其是二维动态手势识别中的手的跟踪、模型训练以及模板匹配效率问题。此外,如何利用手的关节特征进行三维动态手势识别也是一个值得研究的课题。
发明内容
本发明的目的是为了解决现有技术中的上述缺陷,提供一种基于特征协方差矩阵的动态手势识别方法,利用手的关节特征实现三维动态手势识别,从而为二维与三维动态手势识别提供了一个统一的框架,提高二维动态手势识别中手的跟踪与匹配效率问题。
本发明的目的可以通过采取如下技术方案达到:
一种基于特征协方差矩阵的动态手势识别方法,所述的动态手势识别方法包括下列步骤:
S1、利用肤色信息与金字塔LK光流算法跟踪RGB视频序列中的二维手势,从而获取每帧中手部区域的FAST角点;或者使用英特尔的RealSense F200相机捕获3D动态手势,从而获取每帧中人手的关节点在相机坐标系中的三维位置;
S2、对于每个RGB图像帧,提取能在接下来的两帧中被稳定跟踪的手部区域的FAST角点,并为每个FAST角点计算一个8维的特征向量,从而获取二维动态手势的局部运动模式;对于每个深度图像帧,估计手部关节点在3D空间中的位置,并为每个手部关节点计算一个10维的特特征向量,从而获取三维动态手势的局部运动模式;
S3、将一个动态手势序列分为若干个子序列,对二维动态手势计算每个子序列中的所有的8维特征向量或对三维动态手势计算每个子序列中的所有的10维特征向量;分别计算每个子序列和整个序列中的特征向量集合的对数协方差矩阵;将所有的对数协方差矩阵的上三角部分连接起来构成一个列向量,从而获得整个二维或三维动态手势的一个特征协方差矩阵描述子;
S4、计算训练集中的每个动态手势的特征协方差矩阵描述子,并训练一个SVM分类器对动态手势进行分类;对于每个待测试的动态手势,首先计算其特征协方差矩阵描述子,然后用已训练的SVM分类器对其进行分类。
进一步地,所述的步骤S1中利用肤色信息与金字塔LK光流算法跟踪RGB视频序列中的二维手势,从而获取每帧中手部区域的FAST角点的过程如下:
S101、在第一帧中利用已训练好的人手检测器获取一个包含整个手部区域的矩形框;
S102、对该矩形框内的图像进行肤色分割,并选取最大的连通域作为粗略的手部区域;
S103、在分割出来的粗略的手部区域中提取FAST角点,并利用金字塔LK光流算法计算上述FAST角点的光流矢量;
S104、利用步骤S103中得到的光流矢量计算所有FAST角点的平均位移矢量,并将该平均位移矢量作为人手的位移矢量;
S105、根据手的位移矢量移动该帧中的矩形框到下一帧中,从而实现了对人手的跟踪;
S106、利用步骤S103中得到的光流矢量计算所有FAST角点的平均移动距离,除去移动距离小于平均移动距离的FAST角点,并且保存剩余的FAST角点;
S107、重复步骤S102~步骤S106,从而获取每帧中手部区域的FAST角点。
进一步地,所述的步骤S1中使用英特尔的RealSense F200相机捕获3D动态手势,从而获取每帧中人手的关节点在相机坐标系中的三维位置的过程如下:
使用英特尔的RealSense F200自带的SDK实时地获取人手的三维骨架信息,其中,该三维骨架信息由22个手部的关节点构成。
进一步地,所述的步骤S2中对于每个RGB图像帧,提取能在接下来的两帧中被稳定跟踪的手部区域的FAST角点,并为每个FAST角点计算一个8维的特征向量,从而获取二维动态手势的局部运动模式的过程如下:
S211、使用金字塔LK光流算法对每帧中的手部区域的FAST角点进行跟踪,并且提取能在接下来的两帧中被稳定跟踪的手部区域的FAST角点;
S212、对步骤S211中的每个FAST角点,使用公式(1)计算一个8维的特征向量:
f(x,y,t):=[x,y,t,It,u,v,ut,vt]T>
其中,x与y分别表示某FAST角点在图像中的横坐标与纵坐标,t表示该FAST角点所在的帧的索引,
进一步地,所述的步骤S2中为每个RGB图像帧中的每个手部关节点计算一个10维的特特征向量,从而获取三维动态手势的局部运动模式的过程如下:
S221、使用RealSense F200自带的SDK实时地获取人手的三维骨架信息,并保存每帧中手部关节点的三维坐标;
S222、对每帧中的每个关节点,使用公式(2)计算一个10维的特征向量:
f(x,y,z,t):=[x,y,z,t,u,v,w,ut,vt,wt]T>
其中,(x,y,z,t)表示某关节点的时空坐标,(u,v,w)分别表示该关节点沿X轴、Y轴与Z轴的位移,(ut,vt,wt)分别表示(u,v,w)对时间的一阶偏导数。
进一步地,所述的步骤S3的过程如下:
S301、在时间维度上对一个动态手势序列进行层级划分;在第l级,将原手势序列均匀地分为2l-1个子序列,每个子序列的长度为T/2l-1,T为整个手势序列的长度,记第l级中的第i个子序列为Sli;
S302、计算Sli中所有的特征向量,上述特征向量构成一个集合:Fli={fln,n=1,...,Nli},其中Nli表示Sli中特征向量的个数;
S303、使用公式(3)计算Fli中特征向量的协方差矩阵:
其中,
S304、使用公式(4)对协方差矩阵Cli进行特征分解:
Cli=VliDliVliT>
其中,Cli中的列向量为Cli的正交的特征向量;Dli为对角矩阵,其对角元素为Cli的非负的特征值;
S305、使用公式(5)计算对数协方差矩阵:
其中,
S306、提取log(Cli)的上三角部分,并展开成一个列向量ΔU.Tri.li;将所有的ΔU.Tri.li连接起来构成一个大的列向量:
进一步地,所述的步骤S4的过程如下:
S401、采集一个包含特定类别的动态手势数据库作为训练集;
S402、计算训练集中的每个动态手势的特征协方差矩阵描述子;
S403、使用提取的特征协方差矩阵描述子作为输入向量训练一个SVM分类器对动态手势进行分类;
S404、对于每个待测试的动态手势,首先计算其特征协方差矩阵描述子,然后用已训练的SVM分类器对其进行分类。
本发明相对于现有技术具有如下的优点及效果:
1)本发明提出的一种基于特征协方差矩阵的动态手势识别方法,为二维与三维动态手势识别提供了一个统一的框架;
2)对二维动态手势识别而言,只需对连续三帧中手部区域的FAST角点进行精确地跟踪,而不需要对整个人手进行精确地跟踪,这样大大降低了跟踪的要求,实现起来更加容易;
3)对三维动态手势识别而言,使用RealSense F200自带的SDK实时地获取人手的三维骨架信息,并获取每帧中手部关节点的三维坐标,能够对手势进行鲁棒地跟踪;
4)对数协方差矩阵描述子为整个手势序列提供了一个紧凑的表示,大大提高了SVM模型的训练效率和整个手势识别系统的效率。
附图说明
图1是本发明中基于特征协方差矩阵的动态手势识别方法的流程步骤图;
图2是二维动态手势跟踪的效果图;
图3是RealSense F200捕获的手部22关节点的示意图;
图4是对一个动态手势进行2级时间层级划分的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1至图4所示,本实施例提供一种基于特征协方差矩阵的动态手势识别方法,解决二维动态手势识别中手的跟踪与匹配效率问题,利用手的关节特征实现三维动态手势识别,为二维动态手势识别与三维动态手势识别提供一个统一个框架,包括以下四个步骤:
S1、利用肤色信息与金字塔LK光流算法跟踪RGB视频序列中的二维手势,从而获取每帧中手部区域的FAST角点;或者使用英特尔的RealSense F200相机捕获3D动态手势,从而获取每帧中人手的关节点在相机坐标系中的三维位置;
其中,在步骤S1中利用肤色信息与金字塔LK光流算法跟踪RGB视频序列中的二维手势,从而获取每帧中手部区域的FAST角点的具体过程包括以下步骤:
S101、在第一帧中利用已训练好的人手检测器获取一个包含整个手部区域的矩形框,该矩形框的面积比整个手部区域的面积稍大,当手掌相对于相机的距离增大时也能确保手的大部分区域落在矩形框内;
S102、对该矩形框内的图像进行肤色分割,并选取最大的连通域作为粗略的手部区域;
S103、在分割出来的粗略的手部区域中提取FAST角点,并利用金字塔LK光流算法计算上述FAST角点的光流矢量;
S104、利用步骤S103中得到的光流矢量计算所有FAST角点的平均位移矢量,并将该平均位移矢量作为手的位移矢量;
S105、根据手的位移矢量移动该帧中的矩形框到下一帧中,从而实现了对人手的跟踪;
S106、利用步骤S103中得到的光流矢量计算所有FAST角点的平均移动距离,除去那些移动距离小于平均移动距离的FAST角点(这些FAST一般位于背景区域上),并且保存剩余的FAST角点(这些FAST角点基本上都位于人的手部区域);
S107、重复步骤S102~步骤S106,从而获取每帧中手部区域的FAST角点。
其中,在步骤S1中使用英特尔的RealSense F200相机捕获3D动态手势,从而获取每帧中人手的关节点在相机坐标系中的三维位置的具体过程如下:
使用英特尔的RealSense F200自带的SDK实时地获取人手的三维骨架信息,其中,该三维骨架信息由22个手部的关节点构成。
S2、对于每个RGB图像帧,提取那些能在接下来的两帧中被稳定跟踪的手部区域的FAST角点,并为每个FAST角点计算一个8维的特征向量,从而获取二维动态手势的局部运动模式;或者为每个RGB图像帧的每个手部关节点计算一个10维的特特征向量,从而获取三维动态手势的局部运动模式。
其中,在步骤S2中对于每个RGB图像帧,提取那些能在接下来的两帧中被稳定跟踪的手部区域的FAST角点,并为每个FAST角点计算一个8维的特征向量,从而获取二维动态手势的局部运动模式的具体过程包括以下步骤:
S211、使用金字塔LK光流算法对每帧中的手部区域的FAST角点进行跟踪,并且提取那些能在接下来的两帧中被稳定跟踪的手部区域的FAST角点(即在接下来的两帧中都位于手部区域的FAST角点);
S212、对步骤S211、中的每个FAST角点,使用公式(1)计算一个8维的特征向量:
f(x,y,t):=[x,y,t,It,u,v,ut,vt]T>
其中,x与y分别表示某FAST角点在图像中的横坐标与纵坐标,t表示该FAST角点所在的帧的索引(即该FAST角点的时间坐标),
其中,在步骤S2中为每个RGB图像帧中的每个手部关节点计算一个10维的特特征向量,从而获取三维动态手势的局部运动模式的具体过程包括以下步骤:
S221、使用RealSense F200自带的SDK实时地获取人手的三维骨架信息,并保存每帧中手部关节点的三维坐标;
S222、对每帧中的每个关节点,使用公式(2)计算一个10维的特征向量:
f(x,y,z,t):=[x,y,z,t,u,v,w,ut,vt,wt]T>
其中,(x,y,z,t)表示某关节点的时空坐标,(u,v,w)分别表示该关节点沿X轴、Y轴与Z轴的位移,(ut,vt,wt)分别表示(u,v,w)对时间的一阶偏导数。
S3、将一个动态手势序列分为若干个子序列,计算每个子序列中的所有的8维特征向量(二维动态手势)或所有的10维特征向量(三维动态手势);分别计算每个子序列和整个序列中的特征向量集合的对数协方差矩阵;将所有的对数协方差矩阵的上三角部分连接起来构成一个列向量,从而获得整个二维或三维动态手势的一个紧凑的描述子(特征协方差矩阵描述子);
其中,步骤S3的具体过程包括以下子步骤:
S301、在时间维度上对一个动态手势序列进行层级划分;在第l级,将原手势序列均匀地分为2l-1个子序列,每个子序列的长度为T/2l-1(T为整个手势序列的长度);记第l级中的第i个子序列为Sli;
S302、使用步骤S2中的方法计算Sli中所有的特征向量,这些特征向量构成一个集合:Fli={fln,n=1,...,Nli},其中Nli表示Sli中特征向量的个数;
S303、使用公式(3)计算Fli中特征向量的协方差矩阵:
其中,
S304、使用公式(4)对协方差矩阵Cli进行特征分解:
Cli=VliDliVliT>
其中,Cli中的列向量为Cli的正交的特征向量;Dli为对角矩阵,其对角元素为Cli的非负的特征值;
S305、使用公式(5)计算对数协方差矩阵:
其中,
S306、提取log(Cli)的上三角部分,并展开成一个列向量ΔU.Tri.li;将所有的ΔU.Tri.li连接起来构成一个大的列向量:
其中L为总的时间层级数;将f作为整个动态手势的特征协方差矩阵描述子。
S4、计算训练集中的每个动态手势的特征协方差矩阵描述子,并训练一个SVM分类器对动态手势进行分类;对于每个待测试的动态手势,首先计算其特征协方差矩阵描述子,然后用已训练的SVM分类器对其进行分类。
其中,步骤S4的具体过程包括以下子步骤:
S401、采集一个包含特定类别的动态手势数据库作为训练集;
S402、计算训练集中的每个动态手势的特征协方差矩阵描述子;
S403、使用提取的特征协方差矩阵描述子作为输入向量训练一个SVM分类器对动态手势进行分类;
S404、对于每个待测试的动态手势,首先计算其特征协方差矩阵描述子,然后用已训练的SVM分类器对其进行分类。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
机译: 一种用于检测至少一个运动物体在检测区域内的运动路径的方法,一种使用这种识别方法的手势识别系统的过程以及一种用于执行这种识别方法的设备
机译: 动态手势识别方法和装置,手势对话控制方法和装置
机译: 动态手势识别方法和装置,手势对话控制方法和装置