APP下载

基于历史运动轨迹的自适应手势识别算法

2017-11-01毛礼建盛庆华

关键词:肤色手势手部

毛礼建,盛庆华,李 竹,谢 军

(杭州电子科技大学电子信息学院,浙江 杭州 310018)

基于历史运动轨迹的自适应手势识别算法

毛礼建,盛庆华,李 竹,谢 军

(杭州电子科技大学电子信息学院,浙江 杭州 310018)

针对复杂背景严重影响手势识别准确率的问题,提出了一种基于历史运动轨迹的自适应手势识别算法.首先采用基于H值肤色模型进行肤色侦测,并采用手部分割和自适应检测提取手部,然后对手部进行快速跟踪得到其历史运动轨迹,最后对运动方向进行辨识.实验结果表明,提出的算法复杂度较低,每一帧图像的平均处理时间为21 ms,能实时有效地对手部运动进行追踪,在不同背景下平均准确率高达97.1%,有较好地鲁棒性.

手势识别;肤色模型;自适应检测;历史运动轨迹

0 引 言

随着人们生活品质的提高,将科技概念与生活相结合是目前的发展趋势,其中各种搭配手势互动产品是目前最受欢迎的[1],手势辨识技术被应用在各个不同的领域,智慧电视便是手势辨识应用的产品之一.目前手势互动产品分为穿戴式操控系统和基于视觉操控系统两大类.穿戴式识别系统识别率高,但其输入设备昂贵,并且要求打手势的人穿戴复杂的数据手套,给人带来很多不便.基于视觉的手势识别是利用摄像机采集手势信息并进行识别,不需要辅助设备,是自然的人机交互方式,具有更广阔的应用前景.目前所使用单一彩色摄像机的手势辨识技术中,大部分的背景比较单一[2],而这样的系统在真实场景中识别的鲁棒性受到很大影响,因此研究复杂背景下的手势识别算法具有较高的应用价值,能够给用户提供更大的交互空间[3].

动态手势识别主要包括手部侦测以及运动轨迹辨识两大部分.在手部侦测[4]部分,最常用的方法为基于知识的方法和基于统计的方法.基于知识的方法中最频繁使用的是肤色侦测,计算比较简单,但容易受光照的影响.基于统计的方法中比较常用的是Haar特征,识别准确率高,但需要大量数据训练分类器,运行时间慢.在运动轨迹辨识部分最常用的方法是手掌重心轨迹[5],利用重心的移动来得到整个手部运动轨迹,缺点是重心丢失容易造成误判.针对上述问题,本文提出了基于历史运动轨迹[6]的自适应手势识别算法,算法的复杂度较低,识别速度快,在不同背景下有较高的鲁棒性.

1 基于H(Hue)值的肤色模型

彩色图像从摄像机中读取,用R,G,B三分量的值来表示.而R,G,B三分量之间的相关性很高,直接利用这些分量达不到预期效果,因此需要进行色彩空间的转换.由于肤色在HSV色彩空间具有良好的聚类特性,并且RGB转HSV空间相对容易,因此采用HSV色彩空间.在手势识别中为了使肤色区域能较快地提取出来,肤色模型越简单越好,因此,本文采用了基于H值的肤色模型.

为了获得肤色H值的变化范围,根据94张光照均匀、色彩鲜艳逼真的人像图片中手工裁剪出非重叠的肤色区域的H值分布图,得到代表肤色的H值阈值范围为0.015~0.136.根据实际的情况,不断调节H值,最终选用的H阈值范围为0.028~0.194.根据H阈值得到二值化的肤色图像,如图1所示.

图1 基于H值肤色模型检测结果

2 手部检测

2.1 手部预处理

为了便于自适应手部检测,要对肤色侦测的二值化图像做预处理.手部预处理包括中值滤波和膨胀腐蚀处理.中值滤波是对肤色图像进行平滑处理,消除噪声点.膨胀腐蚀处理将孤立的点去掉,填充目标内的孔,使肤色图像更平滑.手部预处理去掉较小的块,提高了后续处理的效率.

2.2 手部检测

手部预处理之后的图像中包含了除手部以外的其他与肤色相近的物体,因此要去除这些干扰物体.首先对图像提取轮廓,手部轮廓的面积和周长都较大,因此根据轮廓的面积和周长阈值可以排除掉那些小的轮廓,根据实际测试结果,设定的轮廓的面积和周长阈值分别为10 000和500,图像的尺寸为640×480.而脸部是对手部检测最大的干扰,因此需要将人脸去掉,同时也要快速地追踪到手部.

人脸和手部比较显著的区别在于,手部的重心相对于脸部在偏下的位置,手指是五指张开的,如图2所示.根据手部的这些特征,提出了手部分割算法,不仅简单而且有效.手部分割算法如下:

1)对轮廓矩形在h/2(h为轮廓矩形的高度)处以上的部分求和为Sup,h/2处以下的部分求和为Sdown;

2)比较Sup和Sdown的大小,当Sup大于Sdown时,判断该轮廓不是手部轮廓,反之继续进行下一步判断;

3)在h/4处寻找像素值发生跳变点的个数,即统计像素点的值与相邻的像素点的值从黑变白或者从白变黑的点的个数,记为n;

4)经实验测试,n一般在7~9之间,为了避免手部轮廓不完整导致n值变小,因此设定当n的值小于5,判断不是手部轮廓,反之继续进行下一步判断;

5)在h/8处寻找像素值发生跳变点的个数,即统计像素点的值与相邻的像素点的值从黑变白或者从白变黑的点的个数,记为m;

6)经实验测试,m一般在5~7之间,即m与n之间的差值约为2,因此当n-m的值小于3时,判断为手部轮廓;

图2中,手部轮廓矩形(168×176)和脸部轮廓矩形(136×287)大小不相等,为了比较直观,将图片向上调为一致.根据手部分割算法从手部预处理图像中提取到手部图像如图2(c)所示.

图2 手部分割

2.3 自适应检测

从图2中可以看到,手部在整个图像中所占的比重较小,而每次对整张图像进行手部检测不仅会增加手部检测的时间,而且会导致手部检测的准确率下降.针对这一问题,根据手部运动是连续的这一特点,提出了自适应检测算法.本文采用有限状态机的方式来实现,各个状态之间的关系如图3所示.

图3 自适应检测状态图

自适应检测算法图像如图4所示,其过程如下:

1)FC状态是存储前一帧图像(如图4(a)所示分辨率为640×480)检测到的手部轮廓矩形(如图4(c)所示),r.width和r.height为轮廓矩形的宽和高.图4(c)中的白色矩形即为检测到的手部轮廓矩形(97,219,159,197),矩形左上角的点坐标为(97,219),矩形宽和高分别为159和197.此时轮廓矩形存在则进入CJ状态.若轮廓矩形不存在,则进入HT状态;

2)CJ状态是对下一帧采集的图像(640×480)进行裁剪,裁剪的大小和位置即以检测到的手部轮廓矩形的中心将轮廓矩形放大2倍得到的矩形位置和大小(18,121,318,359),如图4(a)中的较大白色矩形所示,预测在下一帧图像中手部在这样的一个矩形区域内,经过CJ之后得到的图像大小如图4(b)所示(分辨率为318×359);

3)HT状态是对输入的图像进行手部检测,即采用手部分割算法进行检测.若从FC状态直接进入HT状态,则HT状态是对采集的图像进行处理,即从图4(a)到图4(c).若未检测到手部,则得到的手部轮廓矩形为(0,0,0,0).若从CJ状态进入HT状态,得到手部轮廓矩形为(80,92,159,202),如图4(d)中的白色矩形.检测完之后进入FC状态,同时进入OI状态;

4)OI状态是将检测到的图像输出,然后进入END状态.

手势识别中每一帧图像都必须经过肤色检测、手部检测,而且系统运行时间主要开销在肤色检测中的色彩空间转换和手部预处理中的中值滤波处.而采用自适应检测的优势在于对输入的RGB图像进行裁剪,图像的尺寸越小,尤其是在这两部分的运行时间会大大缩短,因此裁剪过的图像会大大减少系统的运行时间.另外根据前一帧手部的位置来预测下一帧手部的位置,在特定区域进行手部检测,减少了与肤色相近物体的干扰,提高了手部检测的可靠性.

图4 自适应检测

3 运动检测

3.1 历史运动轨迹

为了获得手部运动的轨迹,采用历史运动轨迹来记录手部的运动.历史运动轨迹是基于时间戳的简单、直观且具有一定鲁棒性的运动分析方法.其原理如下:

(1)

式中,M(x,y)为历史运动图像,s(x,y)为二值化的运动图像,t为当前时间,d为运动持续的最大时间.

为了快速得到历史运动轨迹图像,本文对历史运动轨迹进行了改进,如下:

M(x,y)t=M(x,y)t-1-α+C(x,y)t

(2)

式中,M(x,y)t-1为前一时刻的历史运动图像,M(x,y)t为当前时刻的历史运动图像,α为每帧图像的能量递减值,C(x,y)t为当前运动图像.

选取35张图像进行处理,二值化的非零像素值为255,为保证35张图像都记录在历史运动轨迹图中,故取α为7.

3.2 移动侦测

移动侦测主要是对得到的历史运动轨迹图进行分析,判断出手的运动方向.为了比较快速判断移动方向,本文采用的算法是对图像提取轮廓,根据轮廓的特点进行判断运动方向,判断规则如表1所示.

表1 运动方向判断规则

其中,sd为取轮廓矩形h/2以上部分求和,sd则与之相反,sl为取轮廓矩形w/2以左的部分求和,sr则与之相反.移动方向运动结果如图5所示,对于左右运动,由于镜像原理可得实际运动方向与历史运动轨迹图像相反.

图5 运动轨迹检测

4 实验结果与分析

4.1 PC端实验环境

本文采用单一摄像头在PC上实现了自适应手势识别,并在不同环境下进行系统测试.其中个人电脑的配置为:Windows7 32位操作系统,Intel(R)Core(TM)i5-4590S处理器,4G内存,Intel(R) HD Graphics 4600核心显卡.摄像头采用的是罗技的C270网络摄像头,其配置为:照片分辨率300万像素,视频分辨率1 280×720,白平衡、曝光均为自动,采用USB2.0接口.在笔记本电脑上采用的Microsoft Visual Studio 2010的开发环境,用C语言编写手势识别算法,采用OpenCV2.4.9,实验中输入图像尺寸的大小为640×480,摄像机以48帧/s的速率采集图像.

4.2 实验结果分析

选取10位测试者进行测试,在测试之前每位测试者需要接受培训,熟悉整个过程并摆出正确的手势.每位测试者在背景一、背景二、背景三下做向上、向下、向左、向右移动各10次,总共是1 200次,不同背景如图6所示.

图6 不同背景

测试结果如表2所示,随着光线变暗以及背景的复杂,识别的准确率稍有下降,但在不同背景下的平均准确率高达97.1%,可见本文算法有较高的鲁棒性.

10位测试者在3种不同背景下做移动方向侦测,如表2所示.从表2可以看出,向上、向下、向左、向右移动的平均准确率在96.0%以上.其中在移动检测中某个使用者的准确率较低的原因是手部运动的过快或者过慢.另外向上和向右移动比较适合大家的用手习惯,准确率比向下和向左稍微高一点.总准确率达97.1%,可见本文算法对移动方向侦测有较高的识别率.

表2 移动方向测试准确率 %

图7 系统运行时间图

对运行时间进行测试,在各个部分起始以及结束的地方加入计时函数,即可计算出各部分的运行时间,测试结果如图7所示.可以看到,色彩空间转换的运行时间为6 ms,肤色检测的运行时间为2 ms,手部预处理的运行时间为6 ms,手部检测的运行时间是3 ms,历史运动轨迹检测的运行时间为3 ms,移动检测运行时间为1 ms,因此系统的运行的总时间为21 ms,而摄像头每采集一张图像的时间为47 ms,达到实时性要求.

4.3 实验结果比较

4.3.1 手部检测算法比较

人手检测部分采用的是基于特征的检测方法,而相关的研究算法有很多,手部检测算法比较结果如表3所示.其中文献[7]的基于肤色和轮廓检测的方法采用基于肤色分割和八邻域搜索法得到手势轮廓,利用不变矩提取轮廓特征进行匹配;文献[8]的模板匹配方法采用基于Hausdorff距离的模板匹配进行手势识别;文献[9]的基于背景更新的支持向量机方法先对背景更新提取前景,然后采用支持向量机对前景图像直方图进行训练来实现手势的检测.

表3 手部检测算法比较结果

4种方法优缺点如下:基于肤色和轮廓检测算法比较简单,背景较为简单的环境下检测率高,但易受肤色相近物体或者手形相近的干扰,影响识别的准确率;模板匹配算法采用基于距离的映射图作为模板变换参数,使测试的结果更加稳健,但在复杂背景下,其检测率下降,容易受光照因素的影响;基于背景更新的支持向量机能适应背景的变化,克服了光照的影响,但当背景中出现多个运动物体时,用前景直方图来描述手势整体特征会受形状类似物体的干扰,影响其准确率;本文采用的方法先用肤色模型得到感兴趣区域,根据手部特征检测人手,为了减少搜索的范围以及提高运算速度,采用了自适应检测算法,计算简单,准确率较高,能适应不同背景,鲁棒性好,缺点是受光照影响.

4.3.2 运动轨迹检测算法比较

运动追踪采用的是基于历史运动轨迹检测,而关于追踪相关的研究有很多,本文选取比较常用的追踪算法进行比较分析,如表4所示.重心追踪算法根据手掌坐标移动角度来判断移动的方向;CAMShift算法是根据Meanshift算法的迭代来追踪手部的运动;粒子滤波算法采用重采样和重要性采样方法对手部进行追踪;基于梯度的移动检测方法采用的是历史运动图像中各点的梯度方向来获得总的运动趋势;本文采用的是根据历史轮廓图来判断手势移动的方向.

表4 运动检测算法比较结果

重心追踪算法根据手掌质心坐标来进行追踪,能快速追踪手掌重心,减少了追踪的计算量,但手部移动方向用坐标点来描述轨迹,手部连续追踪结果不准确,重心坐标点丢失人手整体信息,背景复杂时准确率会下降;CAMShift算法在背景复杂的情况下,能比较准确地进行跟踪,但其计算量大,运行时间较慢;粒子滤波算法受光照影响较小,但受肤色的影响导致粒子位置错误估计,粒子数目较多,计算比较复杂,运行时间也较慢;基于梯度的移动检测方法计算方法简单,但是,由于手势的非刚性,获得不规则的运动历史图导致根据梯度向量来判断运动方向出现误判;本文采用的是对历史运动图像提取矩形轮廓,根据轮廓特点来判断手势的运动方向,完整保留了手部信息,有效检测人手运动的起始帧,识别的准确率为97.1%,在不同背景下有较高的识别率和较好的鲁棒性.

5 结束语

本文提出的基于历史运动轨迹的自适应手势识别算法解决了传统算法在复杂背景下识别率低的问题,有效地提高了手部检测的速度和准确度,且有较好的鲁棒性.算法可以移植到移动终端上,大大增强了人机交互,对于移动终端上手势识别系统的开发具有指导意义.但是光照对本文算法带来了一定的影响,造成一定程度上的误判.并且由于移动终端上人们常用的手势习惯是上下左右对终端进行操控,因此本文主要只研究了上下左右的手势识别.后续将针对去光照和增加多方向手势识别做进一步研究.

[1] 张凯.融合深度数据的人机交互手势识别研究[D].武汉:华中师范大学,2013.

[2] 贺顾一.复杂背景下基于视觉的动态手势识别研究[D].上海:华东师范大学,2008.

[3] RANSALU S, KUMARAWADU S. A robust vision-based hand gesture recognition system for appliance control in smart homes[C]//Signal Processing, Communication and Computing (ICSPCC), 2012 IEEE International Conference on. IEEE, 2012:760-763.

[4] 于义雪.手部检测及运动跟踪算法研究[D].哈尔滨:哈尔滨工程大学,2013.

[5] MAZUMDAR D, TALUKDAR A K, SARMA K K. Gloved and free hand tracking based hand gesture recognition[C]//Emerging Trends and Applications in Computer Science (ICETACS), 2013 1st International Conference on. IEEE, 2013:197-202.

[6] 张彩红,刘恒,吕金刚.一种基于信息融合与运动域分割的手势运动方向识别方法[J].西南科技大学学报,2012,27(1):44-47.

[7] 汪镜秋.基于肤色分割的嵌入式手势识别算法研究[D].北京:北京理工大学,2015.

[8] 杨学文,冯志全,黄忠柱,等.结合手势主方向和类-Hausdorff距离的手势识别[J].计算机辅助设计与图形学学报,2016,28(1):75-81.

[9] YANG D, LIM J K, CHOI Y. Early childhood education by hand gesture recognition using a smartphone based robot[C]//Robot and Human Interactive Communication, 2014 RO-MAN: The 23rd IEEE International Symposium on. IEEE, 2014:987-992.

AdaptiveGestureRecognitionAlgorithmBasedonMotionHistoryImage

MAO Lijian, SHENG Qinghua, LI Zhu, XIE Jun

(SchoolofElectronicInformation,HangzhouDianziUniversity,HangzhouZhejiang310018,China)

Currently human-computer interaction(HCI) is the hottest topic, and hand gesture recognition is the key technology of HCI. Due to the effect of complex background, an adaptive hand gesture recognition algorithm based on motion history image is proposed. Firstly, a skin color model using H threshold is utilized to detect skin color regions like hands, and using hand segmentation and adaptive hand detection to detect hand. Then a simple and fast motion history image is developed to record the trajectory of hand-movement. Finally, the motion history is used to classify the motion direction. Experiment results show that this algorithm is simple, and the average processing time is 21 ms per frame, meeting the real-time tracking. The accuracy of recognition is as high as 97.1% in average, showing the strong robustness. These demonstrated the feasibility of the proposed algorithm.

hand gesture recognition; skin color model; adaptive detection; history motion image

TP391.4

A

1001-9146(2017)05-0026-07

2016-12-26

国家自然科学基金资助项目(61302134)

毛礼建(1993-),男,浙江玉环人,硕士研究生,计算机视觉与深度学习.通信作者:盛庆华副教授,E-mail:sheng7@hdu.edu.cn.

10.13954/j.cnki.hdu.2017.05.006

猜你喜欢

肤色手势手部
手部皮肤软组织缺损修复的皮瓣选择
肤色(外一首)
Conversation in a house
人的肤色为什么不同
为什么人有不同的肤色?
挑战!神秘手势
V字手势的由来
胜利的手势
皮瓣修复手部皮肤软组织缺损的临床应用
发生于手部的硬下疳一例