基于嵌入式系统的手势识别的设计与实现
2020-11-11王飞
王 飞
(浙江大学昆山创新中心,江苏 昆山215300)
0 引言
如何使人机之间的交互变得高效简单,逐渐成为众多科学领域研究的热点,作为人机交互领域的手势识别技术也在不断发生变化。当前手势识别应用较为广泛,主要应用于虚拟环境、手语、多媒体用户界面以及机械手抓取等众多领域。国内外对于手势识别技术都作了大量的研究工作,例如国外Huang创建了手语识别系统并使用3D神经网络方法识别15种手势,国内北京交通大学的王松林通过kinect设备实现了动静手势的识别,并实现了对外部设备的控制[1]。
随着人类生活水平的不断提高,越来越注重用户体验,而基于传感器加速硬件的手势识别需要借助一些硬件设备完成操作。此类设备造价高、佩戴不方便,并且需要在特定的场合进行使用,同时也存在卫生问题。因此,非接触式人机交互也变得越来越重要,基于视觉信息的手势识别,无需中间媒体且只需通过人的手势动作完成人机之间的通信。由于没有外在设备,使得手势识别便捷有效,也为用户带来了全新的交互体验和自由度。同时,大多数手势识别系统应用场景较为固定,存在识别系统无法移动等问题[2]。
1 手势识别系统总体设计
为了解决手势识别系统造价高、便携性差等缺点,结合嵌入式平台可裁剪、体积小及造价低等优点,提出了基于嵌入式平台的手势识别系统,结合OpenCV计算机视觉库,采用模板匹配方法识别出手势数字,通过触摸屏显示识别手势数字,并标注出手势图像。最后通过实验可知,该设计系统具有较好的实用性和有效性。
设计系统由ARM开发板、USB摄像头以及LCD触摸屏组成。手势识别流程为:通过摄像头采集图像,对采集图像进行预处理并提取手势图像特征信息,匹配手势模板库判断手势识别结果,显示识别手势的数字并标注运动手势目标。完整的手势识别流程如图1所示。
图1 手势识别流程图Fig.1 Flow chart of gesture recognition
2 图像预处理
2.1 手势图像去噪
在采集手势视频流的过程中,由于此系统具有可移动性等特点,所获取的手势图像难免受到光线强弱变化以及镜头抖动等外界环境的干扰,使得图像特征信息的对比度产生变化。因此,需要对获取的手势图像进行去燥处理,提高图像识别率[3]。
图像中相邻像素点的灰度值具有较高的相关性。对于平滑、自然的图像,像素间的距离越近,像素相关性越高;反之,像素相关性越低。权重均值滤波根据以上特点,采用加权公式对不同距离的像素赋予不同的权重,使相关性较高的像素具有较大的权重,相关性较低的像素具有较小的权重,从而形成非线性的权重均值滤波,更好地保护图像细节。
通过对图2(a)~图2(c)进行对比分析,采用效果较好的加权均值滤波法去除手势图像噪声,其效果如图2所示。
图2 图像滤波对比图Fig.2 Contrast figure of image filtering
2.2 图像阈值分割
由于视频流图像中所要采集的手势目标灰度值与当前环境背景的灰度值具有较大差异,对于此类图像通常采用阈值分割相关算法能够较好地分割出所需目标区域。在阈值分割的过程中,由于手势目标和图像背景之间存在一个或多个分割阈值,因此需要设置多个阈值元素来获取手势目标区域。
对图3相关分割算法进行研究,通过图3(a)和图3(b)可知,手势图像大部分的特征信息得到保留,但也丢失了手指和手掌等部分特征信息,产生了大量的干扰噪声。而采用图3(c)方法不仅能够获取完整的手势特征信息,而且抑制了大量噪声[4-6]。
图3 图像分割对比图Fig.3 Contrast figure of image segmentation
3 手势特征提取
基于嵌入式系统的手势识别系统在获取手势特征信息时,手势图像所处环境背景十分复杂,经过手势图像预处理后,消除了噪声、增强了特征信息,为后续从复杂背景中提取手势特征信息奠定了良好的基础。由于单个手势图像包含大量的特征信息,在提取手势特征时,需要对形状、角度、方向及轮廓等一些指定手势特征信息做处理分析,进而提高识别速度和识别率。
在20世纪70年代,由M.K.Hu所提出的Hu距具有方向、位置以及大小的不变性。其中Hu距的相关变换如下[7]:
(1)比例变换
(1)
归一化处理后为:
(2)
(2)反射变换
(3)
(3)平移变换
(4)
(4)旋转变换
变换后的距为:
(xsinθ+ycosθ)qf(x,y)。
(5)
(cosθ)(q+r-s)Mp+q-s,r+s。
(6)
4 手势运动目标检测
运动目标检测的目的是把手势识别系统视频流中的运动手势从背景中提取出来。当前,运动目标检测分为静态和动态两种背景[8-10]。由于设计的手势识别系统采用的摄像头为固定安装,因此采用静态背景下的差分相乘法实现目标检测。
在采集手势图像时,所获取的手势图像难免会受到外部因素的干扰,比如光照强度、视频流噪声等,由于诸多因素的影响导致差分后的图像包含众多不为零的像素点,这些伪目标点会被错误地认为是运动目标。同时,检测运动目标时也会存在两幅图像运动目标相重合的区域。因此,采用帧间差分相乘算法可以有效解决噪声及光照等因素的影响,并增强目标边缘的对比度,提高手势图像中运动目标边缘信息的准确度。其算法实现如下:
从视频流中获取4副相邻帧图像,其中f1(x,y),f2(x,y),f3(x,y),f4(x,y)为4副帧图像,G(x,y)为差分后图像:
F1(x,y)= |f1(x,y)-f3(x,y)| ,
(7)
F2(x,y)= |f2(x,y)-f4(x,y)| 。
(8)
由式(7)和式(8)可得:
G(x,y)=F1(x,y)×F2(x,y) 。
(9)
算法原理如图4所示,每帧图像都具有一个阶跃边缘信号,从上往下依次运动,图像位置都在发生变化,其中采用差分相加方法时,信号中间产生了较大值,其位也发生了偏移;而差分相乘方法,则有效地解决了位置偏移的问题。4帧图像经过帧间差分相乘算法后,通过是否出现高峰判断出手势图像中运动目标存在与否,出现高峰则存在运动目标,否则无目标出现。
图4 差分相乘原理图Fig.4 Difference multiplication principle diagram
5 系统设计与实现
5.1 手势识别系统软硬件环境介绍
本文设计的手势识别系统软件开发环境采用Ubuntu系统,图形界面开发工具采用Qtopia2.2.0,并结合第三方开源计算机视觉库OpenCV2.4.3作为图像识别的辅助工具,软件关系如图5所示。
图5 系统软件关系图Fig.5 System software diagram
手势识别系统硬件开发环境为ARM开发板,CPU处理器Samsung s3c2440,主频400 MHz;64 M SDRAM内存;64 mm×85 mm LCD触摸屏,采用USB2.0接口的摄像头,硬件关系如图6所示。
图6 系统硬件关系图Fig.6 System hardware diagram
5.2 基于V4L2的视频采集
V4L2(Video for Linux two)是对V4L重新设计所得到的一种编程接口。通过V4L2接口采集不同类型图片和视频等数据,此接口具有较强的灵活性和扩展性。获得动态视频采集数据可使用mmap映射的方式,通过rcad获得静态图片数据。使用内核ioctl函数控制硬件设备,采用mmap对内存映射,能够极大增加硬件与内核之间的通信效率。V4L2采集视频数据流程如图7所示。
图7 V4L2视频采集流程图Fig.7 V4L2 the flow chart of video acquisition
5.3 手势识别实验
经过训练之后的10种手势模板及改进后Canny算子得到的手势轮廓图像如图8和图9所示。
图8 10个手势模板Fig.8 10 gesture templates
图9 10个手势轮廓Fig.9 10 gesture contours
不同背景下手势识别和手势检测效果如图10和图11所示。
图10 简单背景下手势效果图Fig.10 Gesture effect in simple background
图11 复杂背景下手势效果图Fig.11 Gesture effect in complex background
为了验证手势识别系统的有效性和实用性,对1 000张手势样本进行检测,获取了不同背景下10种手势的识别率,如表1所示。
表1 不同背景下10种手势识别率Tab.1 10 kinds of gesture recognition rate under different background
不同的背景识别率也不同,在简单背景下识别率较高,在复杂背景下识别率有所降低。不同的光照强度和每种手势的相似性都会引起手势识别的最终效果。在复杂背景下对手势特征进行提取时,会影响手势的Hu距值,导致与模板之间的Hu距值相差较大,影响整个系统的识别率。简单背景下对图像处理时,各种手势图像的特征值及质量较为稳定,因此手势系统识别率较高。
6 结束语
目前,已有众多的手势识别技术应用在PC机上,但仍存在较大的局限性,便携性和实用性较差。因此,本文基于现有的手势识别技术基础之上,利用嵌入式系统和图像处理技术相结合的方法,实现了基于嵌入式的手势识别系统。通过USB摄像头采集视频流,并对视频流中的手势处理,识别出手势结果,为后续人机交互控制奠定了基础。最后对整个手势识别系统进行验证分析,整个系统具有实时性和有效性。