基于OpenCV与信息融合的手势识别研究
2021-03-13刘馨阳李成博
刘馨阳 李成博
摘 要:针对传统手势识别准确率不高、运算复杂度高的问题,采用YCbCr肤色分割算法与运动检测方法结合,保留手势图像;分类、分层手势图像识别,即通过手指数目m可做判据的,及剩余手势构建手势模型参数Ki;通过模板匹配判别,并比较文章方法与传统Hu不变矩方法的识别效果,该方法可针对预定义的11种手势进行快速、准确的判别,具有较高的准确性和鲁棒性。
关键词:手势识别;图像处理;OpenCV;Hu不变矩;几何特征;肤色分割
中图分类号:TP391.4 文献标识码:A文章编号:2096-4706(2021)15-0116-03
Abstract: Aiming at the problems of low accuracy and high computational complexity of traditional gesture recognition, combines the YCbCr skin color segmentation algorithm and the motion detection method to retain the gesture image; classification and hierarchical recognition of gesture images, that is, the criterion can be made by the number of fingers m, and the remaining gestures construct the gesture model parameter Ki. The result of template matching is judged, and the recognition effect of the method in this paper and the traditional Hu invariant moment method are compared. This method can quickly and accurately distinguish 11 predefined gestures with high accuracy and robustness.
Keywords: gesture recognition; image processing; OpenCV; Hu invariant moment; geometric features; skin color segmentation
0 引 言
近年来,伴随计算机视觉以及机器学习领域的发展,人机交互已经成为人们生活中必不可少的部分,其目的就是实现人与机器自然的交流,相关的研究包括:指纹、人脸、步态、手势等交互技术研究。其中,手势具有自然性、便捷性的特点,所以,手势识别的研究引起了研究者们极大的关注。
手势识别已从借助外界设备的数据手套时代发展到基于机器视觉识别的时代,本文是结合计算机视觉的手势识别探究,其基本过程为:(1)手势分割:将图像中的手部图像分离出来;(2)手势分析:提取手势特征,进而定量表示该手势的特性;(3)手势识别:利用手势参数模型识别判定[1]。
其中步驟2中的特征提取对结果的准确性起着至关重要的作用,为提高手势的识别准确率,许多学者从多角度考虑手势的几何特征,文献[3,4]采用图像的几何矩和多项式矩描述手势特征,利用Hu不变矩的旋转不变性,但是存在数据量大,计算复杂的缺点。本文通过手势图像几何参数建立模型进行手势识别,减少了计算的复杂度。
1 手势分割
通常图像的内容复杂,且包含很多无用信息,所以首先要将图像中的手势图像部分分离出来便于后续分析[2]。手势分割的方法有很多,本文采用的是基于YCbCr的肤色分割算法与基于运动检测方法相结合。
1.1 肤色检测
不同人种的肤色在RGB颜色空间和HSV颜色空间中显示,肤色在前者颜色空间中更为分散[3],将图像从RGB彩色空间转换到HSV色彩空间采用以下公式:
观察不同的人种的H值的直方图可以看出,H值大部分集中于0.045~0.135,据本文测试结果,确定肤色阈值为0.04~0.131。按照下式分割得到二值图像。
1.2 运动分割
肤色分割仅仅只能将图像中的肤色部分分离出来,当图像中出现人脸等肤色时,也会和手势一起被分离出来,为解决上述问题,本文采用以下方法:(1)利用cvAbsDiff()函数计算累计多帧图像之间的绝对差;(2)选取它们的适当倍数作为分离的阈值;(3)将上述方法分离得到的二值图像与肤色分割得到的二值图像进行与运算,进而得到只有手势的图像。
2 手势识别
2.1 手指检测
手势图像中最显著的就是手指,因此,本文进行了手指的数目检测,以初步判定手势分类,即得到手势的二值图像后,进行手指检测,得到手指的个数。具体操作步骤如以下所示:(1)将手势分割后的二值图像进行尺度归一化后进行开运算,得到结构元素为半径为15像素的圆;(2)再利用二值图像与上述得到的掌心图像进行差运算,得到只包含手指部分图像;(3)为去除小区域联通面积及噪声干扰区域,对步骤2图像进行腐蚀运算;(4)连通区域个数即为手指个数。上述方法主要程序为:
import cv2
import numpy as np
in_img=imread(imgSrcPath,1);
resize(in_img,out_img_rsize,dst_img_rsize.size(),0,0,INTER_LINEAR);
kerne=cv2.getStructuringElement(cv2.MORPH_RECT,(15,15));
img_open=cv2.morphologyEx(out_img_rsize,cv2,MORPH_OPEN,kernel);
zhi_img=in_img-img_open;
...
Mat ele=getStructingElement(MORPH_RECT,Size(15,15));
Mat nu_img;
erode(zhi_img,nu_img,ele);
2.2 特征提取
通过手势分割及手指数数目的检测,可以区分仅靠手指数作为唯一特征的手势,例如:无手指伸出(握拳状态)、五个手指全部伸出、只有一个手指伸出的手势。为能够判别更多种类的手势,本文在手势分割及手指数目判别的基础上,提取手势的几何参数,进而实现相同手指数目不同手势的识别。
提取几何特征参数的方法有很多,比如采用Hu特征方法,构建有权重融合的特征距离,将要识别的手势图像与特征参数模型相匹配判定,许多学者验证这种方法的准确度高,但特征参数多,计算复杂[4]。
本文提出在检测手指数目后,计算指间夹角和手型长宽比,对手势进一步分类识别。通常,在手势图形中手指呈现长条状,故而采用最小外接矩替代手指,以每个矩形的重点作为手指的质点,进而量化了手指相关参数,如图1所示,以外接矩形最外侧两个边的所在的直线构建向量、,两向量中间的夹角即为指间夹角θ,接着利用外接矩形,构造整个手势的外接矩形,并计算长宽比,即为手型长宽比。
具体识别过程为:首先,通过连通区域检测得到手势图像中手指个数m,当m=0,1,5时,可以直接判别手势类别中的手势1、手势2、手势3;接着当m=2,3,4时,通过计算指间夹角θ和手形长宽比,进而定义手势模型参数;最终,通过手势模型参数,判定剩余手势类别,即手势4~11。具体手势模型构建方法流程图如图2所示。
本文采用如图3所示的11种手势图像作为识别对象进行实验验证,并且依次编号为:手势1~手势11,其中根据手指个数m的值进行分类,分别为:m=0(手势1)、m=1(手势2)、m=2(手势3、4、5)、m=3(手势6、7、8)、m=4(手势9/10)、m=5(手势11)。实验中15位研究对象在相同环境下做出以下11种手势图形,每种手势采集5次,总共825幅手势图像。
OpenCV是视觉领域中最有力的研究工具之一,本文借助OpenCV视觉库进行图像处理操作[5]。在实验中,分层分阶段实现手势图像的判别。首先,计算手指数目初步分为两类,即手势数m=0,1,5和m=2,3,4,再进一步结合指间夹角θ和手型长宽比参数,与手势模型参数,进行最终判决,手势图像的特征参数如表1所示。
3 实验对比
通过测试,按照本文的算法进行实验,在运用肤色分割和运动检测结合的方法进行手势图像分割后,能够完全正确的检测出手指的数目,故而针对序号为手势1~手势3可以达到百分之百的识别率。在剩余手势类别识别过程中,由于手势形状相似,还不能到达完全正确的识别率。但是由于本文先运用手指个数将手势进行了初步判别,即使进入到手指個数m=2,3,4环节,每种类型下最多不超过3种手势,进而所计算的数据量大大减少。
对比传统基于前四个矩作为Hu矩特征值的模板匹配法,即特征空间为(φ1,φ2,φ3,φ4),接着定义输入手势与模板手势的特征矩距离DM,找到最小的DM值,其对应的手势类型即为判定结果。
对比本文方法与传统的Hu特征方法,前三种手势,本文可以达到100%,而传统方法仅能达到97%,剩余9种手势类别中,使用传统方法识别,识别率在71%~82%,采用本文方法可以达到89%~100%。
4 结 论
本文对基于OpenCV对手势图像的识别方法进行了研究,针对许多学者提出来的复杂特征值的提取及运算,结合简单手势识别需求,进行了方法的改进,减少多余运算,识别更加快速、准确。首先,本文采用基于YCbCr的肤色分割算法与基于运动检测方法相结合,将对于背景及误检测的肤色背景区域去除,保留手势图像;然后,进行分层手势图像识别,即对于通过手指数目就可以做出唯一判据的,直接输出识别结果,剩余手势图形需要构建手势模型,接着,进行模板匹配,进而判别最终结果。本文设计的手势识别方法,可以对上述的11种手势类型进行快速却准确的手势判定,这种方法能够满足一些简单情境下的需求。
参考文献:
[1] 陈鑫,刘振国,张颖.基于Kinect的手部分割混合识别技术 [J].电子器件,2021,44(4):965-968.
[2] 李虹飞,胡满红.采摘机器人SEMG手势识别研究——基于RNN循环神经网络 [J].农机化研究,2022,44(5):212-216.
[3] 李东东,张立民,邓向阳,等.基于多特征融合的动态手势识别 [J].计算机应用与软件,2021,38(8):214-219.
[4] 张辉,邓继周,周经纬,等.基于几何特征的桌面静态手势识别 [J].计算机工程与设计,2020,41(10):2977-2981.
[5] 赵健,张冬泉.基于OpenCV的数字手势识别算法 [J].计算机应用,2013,33(S2):193-196.
作者简介:刘馨阳(1993.10—),女,汉族,内蒙古巴彦淖尔人,助教,硕士研究生,研究方向:图像处理与模式识别;李成博(1994.02—),男,汉族,宁夏吴忠人,本科,研究方向:图像处理。
3777500338293