基于嵌入式系统的手势识别

2015-05-15 10:10:48滕岳吕勇毛海波
现代计算机 2015年1期
关键词:手势轮廓嵌入式

滕岳,吕勇,毛海波

(北京信息科技大学仪器科学与光电工程学院,北京 100192)

基于嵌入式系统的手势识别

滕岳,吕勇,毛海波

(北京信息科技大学仪器科学与光电工程学院,北京 100192)

随着嵌入式技术不断普及,小型化、操作自由、交互智能成为新一代人机交互技术的发展趋势,基于嵌入式的手势识别就是其中的一项关键技术。主要是成功将OpenCV移植到嵌入式平台,通过V4L2架构实现USB摄像头的视频采集以及LCD显示,利用OpenCV丰富的视觉库实现色彩空间转换,转换到HSV空间,阈值分割得到二值化图像,最后通过滤波处理、轮廓提取、轮廓树匹配的方法实现手势识别,实践证明通过该方法实现嵌入式系统的手势识别可行。

嵌入式;手势识别;OpenCV;HSV空间;轮廓提取

0 引言

手势识别技术作为人机交互领域的一项关键技术,受到越来越多学者的青睐和学术界的关注,特别是利用摄像头来实现对手势的非接触性捕获,并通过计算机视觉(如OpenCV)对手势进行处理分析识别,完成特定的交互任务。但是随着嵌入式技术的不断发展以及人们对设备小型化需求的不断提高,将手势识别技术移植到嵌入式系统成为时代发展的需要,将OpenCV视觉库应用到嵌入式系统是其中必不可少的一个环节。

基于视觉的手势识别一般可分为手势图像的采集、手势图像的分割、特征提取及手势识别四个步骤[1]。通过肤色分割获取手势的二值图像,然后提取手势轮廓特征是应用最广泛的一种方法。通常对于手势分割和识别是手势识别算法的关键和难点,而对于嵌入式单纯通过C程序编程来实现上述难点,首先代码量会很大,影响嵌入式的运算速度,其次就是高效的视觉库对于提高处理速度有很大的帮助,因此将OpenCV视觉库移植到嵌入式系统是实现快速处理的重中之重。

本文主要通过单摄像头的视频捕获、视觉库的移植以及通过手势分割、轮廓提取、图像匹配等最终实现嵌入式系统的手势识别。

1 由RGB到HSV空间转换

HSV空间转换主要将现实中物体的色彩信息从一个模型转换到另外一个模型,目的就是为了使人们能方便地区分不同的物体,提取出想要的物体信息,其模型类似于六角椎体,这个模型中的颜色参数分别为:色调(H)、饱和度(S)、亮度(V),所以称为HSV,模型如图1所示。

其中色调H是通过角度进行度量,其取值范围为0°~360°,从红色开始按逆时针方向计算,红色为0、绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,品红为300°;饱和度S表示色彩的纯度,其取值范围是0.0~1.0,其值越大表示色彩越纯,其值越低表示色彩越暗淡;亮度V表示色彩的明亮程度,其取值范围是0.0(黑色)~1.0(白色)。

图1 HSV颜色空间模型

RGB颜色空间与HSV颜色空间的转换公式为:

2 视频采集与OpenCV的嵌入式平台移植

在开始手势识别程序编写之前,需要进行一些相关的准备工作,保证手势识别的编写能够像在计算机上一样方便、高效。

2.1 嵌入式平台下视频捕获的实现

基于V4L2的视频捕获主要通过如下流程来实现,包括:打开视频设备、读取设备信息、设置设备当前信息、内存映射、对采集数据的处理、关闭设备。其中这些具体操作主要是通过ioctl()函数完成系统调用来实现。其成功采集图像的效果图如图2所示。

2.2 OpenCV的嵌入式平台移植

本文采用OpenCV 2.3.1开源版本,OpenCV的编译配置工具为cmake-2.8.12.2-linux-i386,cmake是一个跨平台的安装工具,可以用简单的语句来描述所有平台的安装或编译过程,基于Linux的cmake-gui使配置和编译过程更加直观和人性化,Linux下的配置如图3所示。

图2 视频采集

图3 cmake的配置

为了使OpenCV能够支持视频图像压缩、图像编解码等,在编译OpenCV之前需要预先安装支持这些功能的开源软件。包括:

(1)zlib-1.2.7.tar.gz

编译后为OpenCV提供压缩和加压缩之用。

(2)jpegsrc.v7.tar.gz

编译后为OpenCV提供jpeg图像压缩功能。

(3)libpng-1.5.13.tar

编译后为ffmpeg提供png格式文件的功能。

(4)yasm-1.2.0.tar.gz

编译后成为X.264视频编码器的汇编编译器。

(5)x264-snapshot-20120718-2245-stable.tar.bz2

为ffmpeg提供H.264视频编码,其可通过部分支持硬解码的显卡来播放,从而降低了CPU的负载并提高画面的流畅度。

(6)Xcode-1.3.2.tar.gz

编译后为FFmpeg提供生成FFpneg和MPEG-4的视频编译解码器。

(7)ffmpeg-0.11.1.tar.gz

为OpenCV增加FFmpeg功能,使其处理图像和视频时更加方便和效率[1]。

2.3 OpenCV移植问题分析

在编译配置上述软件时可能会遇到一些问题,如果遇到类似于libOpenCV_core.so:undefined reference to clock_gettime、_TIFFerrorHandler等问题时,一般需要修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread-lrt,WITH_TIFF:BOOL= NO,改成OFF,重新编译即可消除错误。当所有都编译完成后还要注意一下OpenCV库的路径,一般要将编译出来的库放到对应的交叉编译器的lib里面,否则会有库加载失败的错误。

3 静态手势识别

手势识别分为静态手势和动态手势,静态手势是通过静态的手型来传递信息,动态的手势不但通过手型,还通过运动轨迹来传递信息。动态手势研究起来复杂,本文仅针对静态的手势,提出基于肤色的有效提取方法,再经过阈值化,和形态学变换,得到手的轮廓,最后采用轮廓匹配的方法,得到识别结果。在各种光线下进行反复测试,调整系统参数,实验表明,这种方案是可行的,并且获得了良好的效果。

3.1 手势图像预处理

由于摄像头采集到的图像仅仅是图像的原始形态,如果直接用原始图像进行手势识别必然会影响识别效果。因此需要对采集的图像进行预处理,包括HSV空间转换、平滑处理、阈值分割等。进行图像预处理的关键一步就是肤色检测与分割,而HSV颜色空间与YCrCb颜色空间是目前肤色检测与分割中常用的两种颜色空间。本文采用的是HSV颜色空间。

此外,图像信号在产生、传输过程中,不可避免地会常常受到各种噪声的干扰,因此,现实中的图像都是带有噪声的图像,一般在对图像进行图像分割、特征提取之前都会进行平滑处理。噪声并不限于人眼所能看得见的失真和变形,有些噪声只有进行图像处理时才可以发现。图像中常见的噪声主要有加性噪声、乘性噪声和量化噪声等。由于图像的能量主要集中在低频部分,而噪声所在的频段主要在高频段,因此通常采用低通滤波的方法消除噪声。

平滑处理是一项简单且使用频率很高的图像处理方法。目前OpenCV可以提供五种不同的平滑操作方法,每种方法都有自己的特点与局限,而且所有操作都是由cvSmooth()函数来实现,它可以将用户所期望的平滑方式作为参数,进行平滑处理。经过反复验证,本文采用双边滤波方式(CV_BILATERAL),平滑处理前后的图像对比如图4和图5所示。

图4 平滑处理前

图5 平滑处理后

3.2 手势特征提取

由于在预处理阶段,已经通过阈值分割和Canny算子获取了目标手势的边缘,接下来只需对处理过的图像进行轮廓提取即可,本文对于轮廓的提取采用的是基于OpenCV的cvFindContours()函数,通过对该函数的设置返回了检测到的最大两个轮廓,然后通过对两个轮廓的比较得到了最感兴趣的轮廓,图6和图7为未经过Canny算子和经过Canny算子的两张对比图。

图6 未经Canny算子得到的轮廓

图7 经过Canny算子得到的轮廓

3.3 轮廓模板匹配

轮廓模板匹配是比较获得的目标轮廓与模板的特征相似程度,为了能够提高识别准确度,再获得手势轮廓后,对手势轮廓做了多边形拟合处理,通过cvApproxPoly()和cvDrawContours()两个函数得到了拟合后多边形轮廓图像。

常用的轮廓匹配方法有三类:几何直方图法、轮廓树法、不变矩匹配法。基于OpenCV视觉库的轮廓树法高效有效,在OpenCV中通过cvCreateContourTree()构造轮廓树,通过cvMatchContourTrees()进行轮廓树的匹配,具体过程是从轮廓树根开始逐层计算相似度,若相似度小于阈值则中断。

本文选取了六种手势作为实验的手势库,如图8所示,其中手势的来源为实际拍摄。

图8 本文选取的六种手势

识别流程图如图9所示。

4 实验与结果

在此次试验中,找了两位实验者在摄像头前轮流打手势,两位实验者依次对六种手势进行测试,每种手势交替打二十次,然后得出每种手势正确的识别次数,计算出识别率,对整体得出平均识别率,具体识别情况如表1所示。

图9 识别流程图

表1 静态手势识别结果

5 结语

手势识别作为一种人性化的人机交互方式,将其应用于嵌入式平台适应时代的快速发展和人们对于方便而小型化的人机交互平台的需求显得很重要。本文针对手势识别简单搭建了一个嵌入式系统交互平台,并将将OpenCV计算机视觉库应用于嵌入式平台,实现了由按键控制的高效快速的手势识别。经过实验证明将OpenCV移植到嵌入式平台可行,将其用于数字图像处理方便高效,运用手势的轮廓树匹配方法进行手势匹配,实现静态手势识别可靠可行。

[1] 梁喜军.基于ARM嵌入式平台的视觉手势识别技术研究[D].兰州:兰州理工大学,2014

[2] 张运德.手势识别技术的研究及应用[D].安徽:安徽大学,2013

[3] 赵健,张冬泉.基于OpenCV的数字手势识别算法[J].计算机应用,2013(S2):193~196

[4] 任彧,顾成成.基于HOG特征和SVM的手势识别[J].科技通报,2011(02):211~214

[5] 雷海龙,杨胜,刘红新.融合图像轮廓矩和傅立叶描叙子的手势识别[J].微电子学与计算机,2011(04):103~106

[6] 徐成,马翌伦,刘彦.一种基于嵌入式系统实时交互的手势识别方法[J].计算机应用研究,2011(07):2782~2785

[7] Feng Zhi-quan,Yang Bo,Lv Na,etc.A Hand Gesture-Based Interactive Model to Choose One From Many[J].计算机辅助制造:英文版,2012(01):12~14

[8] YANG Shuai,PREMARATNE Prashan,VIAL Peter.Hand Gesture Recognition:Anover VIEW[A].IEEE Beijing Section.Proceedingsof 2013 5th IEEE International Conference on Broadband Network&Multimedia Technology[C].Beijing:IEEE Beijing Section,2013:7

[9] Bobo Zeng,Guijin Wang,Xing-gang Lin.Department of Electronic Engineering.A Hand Gesture Based Interactive Presentation System Utilizing Heterogeneous Cameras[J].清华大学学报:自然科学版(英文版),2012(03):329~336

[10] 陈冰超,李永刚.基于计算机视觉技术的手势识别方法[J].现代计算机:专业版,2014(26):62~64

[11] 林水强,吴亚东,余芳,杨永华.姿势序列有限状态机动作识别方法[J].计算机辅助设计与图形学学报,2014(09):1403~1411

[12] 武霞,张崎,许艳旭.手势识别研究发展现状综述[J].电子科技,2013(06):171~174

Gesture Recognition Based on Embedded System

TENG Yue,LV Yong,MAO Hai-Bo
(School of Instrumentation Science&Optoelectronic Engineering,Beijing Information Science&Technology University,Beijing 100192)

With the growing popularity of embedded technology,miniaturization,operation freedom and interactive intelligence has become the development trend of the next generation of human-computer interaction technology,gesture recognition technology based on embedded system is one of the key technologies.Ports OpenCV to the embedded platform successfully.Through V4L2 architecture enables USB camera video capture and LCD display,uses OpenCV rich visual library achieves color space conversion,the conversion to HSV space,obtains threshold to binary image.Through the filtering process,contour extraction,contour tree matching method to achieve the gesture recognition,experience proves the feasibility of the embedded systems gesture recognition method.

Embedded;Gesture Recognition;OpenCV;HSV Space;Contour Extraction

1007-1423(2015)01-0053-05

10.3969/j.issn.1007-1423.2015.01.013

滕岳(1988-),男,河北沧州人,在读硕士研究生,研究方向为光电检测技术

吕勇(1971-),男,安徽芜湖人,博士,教授,研究方向为光电检测及精密测试

2014-11-28

2014-12-08

北京信息科技大学本科生培养-大学生科研训练项目资助(No.PXM2014_014224_000079)、专业建设-光信息科学与技术项目资助(No.PXM2014_014224_000066)、大学生科技创新计划

毛海波(1992-),男,辽宁朝阳人,在读本科,研究方向为光电应用技术

猜你喜欢
手势轮廓嵌入式
轮廓错觉
基于实时轮廓误差估算的数控系统轮廓控制
挑战!神秘手势
V字手势的由来
搭建基于Qt的嵌入式开发平台
胜利的手势
嵌入式软PLC在电镀生产流程控制系统中的应用
电镀与环保(2016年3期)2017-01-20 08:15:32
在线学习机制下的Snake轮廓跟踪
计算机工程(2015年4期)2015-07-05 08:27:39
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
自动化博览(2014年4期)2014-02-28 22:31:15