APP下载

OpenCV在体感遥控中的应用

2012-07-07于小亿

黑龙江工程学院学报 2012年1期
关键词:体感手势遥控

韩 旭,于小亿

(兰州大学 信息科学与工程学院,甘肃 兰州730000)

在体感遥控系统中,对人体手势这个运动目标的图像序列进行分析处理主要由目标检测、目标跟踪、目标识别和目标行为理解组成。目标检测技术是整个手势识别的最底层,运动目标检测是指从视频图像序列中将变化的目标从背景中分割出来。一旦识别出目标,就对目标进行编码,根据编码实现对监控对象的控制。运动目标检测主要包括背景提取、前景检测、判断报警、背景更新等主要步骤。常用的对手势的检测方法有基于运动信息的检测方法:帧差法、光流法和背景减法;基于肤色信息的检测方法[1]。前者不能准确检测出整个手势区域,而后者计算量小,可用于实时处理。目前,体感技术的应用从任天堂、索尼、微软家用游戏机上得到推广。微软最新的Kinect控制器采用彩色摄像头和深度摄像头结合的方法捕捉三维图像信息,获得了很好的识别效果。体感遥控应用前景广阔,将补充传统的人机交互方式。本文设计的体感遥控系统采用Intel的开源函数库OpenCV,直接调用单目摄像头采集视频流,对运动目标进行检测、跟踪和识别。完成体感遥控中发现运动目标并根据运动目标给出控制信息,达到了低成本、具有实时性的要求。本设计中使用运动和肤色相结合的目标识别算法,并给出OpenCV实现此算法的程序流程和实验结果。

1 体感遥控的系统结构与硬件实现

体感遥控的系统结构如图1所示。Webcam摄像头通过USB接口与PC机相连,PC机安装的软件为Windows7操作系统、Microsoft Visual Studio 2010和OpenCV 2.3函数库。通过PC机的串行接口或USB接口,连接红外线发射模块和无线电发射模块,与远端的红外线接收模块和无线电接收模块进行通信,实现对远端控制对象的控制[2-4]。

图1 体感遥控的系统结构

2 OpenCV简介

OpenCV(Open Source Computer Vision Library)是由Intel开发的一种用于数字图像处理和计算机视觉的函数库,OpenCV可以在Windows系统下使用,该函数库源代码是开放的。OpenCV用于实时图像处理,比如说特征检测与跟踪、运动分析、目标分割与识别以及3D重建等。OpenCV提供了帧提取函数和根据图像处理算法编写的标准函数,在具体的视频开发项目中直接调用这些函数。OpenCV中每个函数的命名都以“cv”开始,然后是该函数的行为及目标。例如用来创建图像的函数“cvCreateImage”,载入图像的函数“cvLoadImage”。

OpenCV是为图像处理及计算机视觉在实际工程中的应用而设计的一个类库,其中所有的函数都由于其在实际应用中所实现的不同功能而分属不同的类型。

3 体感遥控器的常用算法

手势定位的方法主要有基于运动检测的方法、肤色检测的方法,并且目前流行于将机器学习的方法加入到手势定位当中[5]。

基于运动检测的方法有:帧差法、背景剪除法、光流法。帧差法是在视频序列中对相邻帧的图像做差来获取运动目标的信息,最直接的相邻两帧帧差和三帧差。三帧差是将第i帧与第i+1帧图像做减得到差分图像D1,i+1帧图像与i+2帧图像做减得到差分图像D2。然后对差分图像平滑滤波,二值化。最后对D1和D2进行二次差分得到更精确的轮廓。背景剪除法是利用背景的参数模型来近似背景图像,当前帧与背景图像进行比较时区别较大的像素块被认为是运动区域,而区别较小的像素块为背景区域。光流法利用视频序列中像素的灰度分布不同体现物体的运动,对运动场进行近似估计来确定各像素的位置变化。其计算量大,不易实现实时目标检测。

近年来由于微处理器的高速发展,基于机器学习的方法也越来越多地在计算机视觉中采用。比较流行的如基于Haar特征的Adaboost算法[6],基于HOG特征的Adaboost算法[7]。Adaboost是一种自适应的Boosting迭代算法,其原理是将弱分类器叠加起来构成强分类器。Haar特征在人脸识别上获得了成功,速度快且误差小。Histograms of Oriented Gradients(HOG)基于方向梯度的直方图的特征,该梯度分布能够很好地描述图像的局部特征。机器学习的方法避免不了计算的时间开销和存储的空间开销,需要与其它方法相结合优化才能达到很好的效果。

经典的跟踪方法包括:基于区域的如卡尔曼滤波、基于特征、基于变形模板、基于模型、粒子滤波、Meanshift、Camshift、人工神经网络等方法[8]。手势跟踪常用的Kalman滤波器采用递归的运动方程和观测方程,通过预测方程和更新方程的迭代计算来估计运动系统的状态,其算法已应用于各个领域。粒子滤波是一种非线性、非高斯系统的求解递归估计的滤波方法[9],目前已经广泛应用于诸多领域。基于Meanshift的算法具有实时性、鲁棒性和易用性,是目前流行的目标跟踪算法之一。但是Meanshift算法由于其固定尺度的搜索窗函数影响了跟踪的准确性。在Meanshift算法的基础上,又提出了Camshift(continuously adaptive meanshit)算法,其搜索窗会自动调整大小以适应目标的变形问题。

4 体感遥控器的程序设计

依据前文的算法研究,设计得到如图2所示的体感遥控器的程序流程图。首先读取USB摄像头,获得RGB图像并显示在PC机窗口中。为了减小复杂背景的干扰,适应光照变化的影响,提高前景检测的鲁棒性,引入codebook背景建模的方法。其方法是将像素与编码本进行匹配,来判断编码本的更新。它能够解决像素复杂变化的问题,进而可以鲁棒性地检测出复杂背景下的前景物体。在codebook提取前景的前提下,利用如图3所示的Camshift算法结合Kalman滤波器对人手进行跟踪。然后对Camshift输出的图像进行形态学处理,利用OpenCV的内部函数cvFindContours提取出轮廓特征。最后利用图像特征匹配的方法进行手势识别,本设计采用了计算量较小的空间位置特征。另外由于肤色是人手检测的重要特征之一,可采用肤色进行背景建模。由于RGB空间的准确度受光照的影响比较大,常采用将RGB空间换为HSV空间进行处理,统计每个像素的H值在颜色空间范围内的分布。根据肤色信息,对原图像进行二值化处理,根据阈值处理特点,得到人手区域。最后将codebook模型与肤色模型进行与运算,得到更准确手部区域。

图2 体感遥控器的程序设计流程

图3 Camshift算法流程

5 实验验证

5.1 手势识别的实现

实验采用windows7操作系统,系统的工作环境为CPU i7-640m,内存4G,摄像头为罗技C270 WebCAM,其最大输出分辨率是1280×720,通过USB直接连接PC机。图像的捕获帧率为每秒30帧。图像的捕获采用微软DirectShow外部函数进行视频捕获的相关操作。

实验时,输入为单手手势,尽量保持手掌平行于摄像头成像平面,手掌的背景要尽量简单。跟踪效果如图4所示。对于人手实时平移的4个方向会在命令行CMD窗口显示,如图5所示。

5.2 实验结果

本设计的手势识别方法对复杂背景、人手的平移、旋转、缩放具有一定的鲁棒性。如表1所示,对简单方向运动手势准确率基本在90%以上,可以达到实时性的要求。

表1 复杂背景下单手手式识别率

6 结束语

本文介绍基于OpenCV的体感遥控实现手势图像的采集、提取、识别和跟踪,并利用手势实现目标对象的控制。OpenCV由大量代码经过优化库函数组成,是一种高效且实用的开发工具。该设计由于其较低的计算复杂度和较高的鲁棒性,可应用于视频监控、报警、家电控制、家庭监护和游戏娱乐等领域。该开发平台大大缩短研制周期,具有广泛的应用前景。

[1]张晓宇,彭四伟.基于OpenCV的运动目标识别算法与实现[J].现代电子技术,2009,22:99-101.

[2]刘勇宾,胡国辉.浅议视频的运动形态识别[J].刑事技术,2010,4:52-54.

[3]马桂珍,朱玲赞.段丽.基于OpenCV的视频应用程序的开发方法[J].现代电子技术,2007,4:78-88.

[4]孙统义,李林.基于OpenCV的红外运动目标检测方法及实现[J].信息化研究,2010,36(11):12-16.

[5]张学贺,张学东,丁宁.基于OpenCV的运动目标检测与跟踪[J].辽宁科技大学学报,2010,33(5):490-494.

[6]Yubo WANG,Haizhou AI,Bo WU,et al.Real Time Facial Expression Recognition with Adaboost[J].Pattern Recognition,ICPR,2004.

[7]Chi-Chen,Raxle Wang,Jenn-Jier James Lien.AdaBoost Learning for Human Detection Based on Histograms of Oriented Gradients[J].ACCV 2007,8th Asian Conference on Computer Vision,Tokyo,Japan,2007:18-22.

[8]李培华.序列图像中运动目标跟踪方法[M].北京:科学出版社,2010.

[9]胡士强,敬忠良.粒子滤波原理及其应用[M].北京:科学出版社,2010.

猜你喜欢

体感手势遥控
如何遥控引爆的
体感交互技术在脑卒中康复中的应用
人体体感感知机械手设计与实现
挑战!神秘手势
他是如何遥控引爆的
V字手势的由来
非触控式的体感机械臂交互控制系统研究
胜利的手势
体感语境下的交互行为设计
遥控赛车