张瑜 王世东 马艺珊 黄嫒
当前许多科学领域的研究热点,是如何使人机交互变得更加方便高效、操作简单。在人机交互领域中,手势识别技术是关键性技术之一,随着科技的日益更新,它也跟随着科技的发展而发展,一直在保持着变化。
当前,手势识别技术发展非常迅速,已经被广泛应用于虚拟环境、自动捕捉以及多媒体用户界面等诸多领域,起到了很好的效果。随着社会的发展,各种产品都愈加重视用户体验,手势识别可以带给人们更好的体验,因此获得了广泛的应用。基于传感器加速硬件的手势识别技术是一种常用的手势识别技术,但是具有价格昂贵以及可能会影响人体健康等问题,因此一种更加简单、造价低、对人体没影响的手势识别技术成为研究的重点。离线人机交互可以满足这一需求,基于视觉的手势识别技术不需要应用中间媒体,通过手势就可以和机器进行直接的交流,不需要外界设备使其应用非常高效、方便,可以给用户带来非常好的使用体验。
手势识别系统具有多样化的应用场景,有些是动态的、有些是静态的。但目前大多应用是都是静态,因为当前动态手势识别系统还存在一些问题,需要加强研究。
手势识别系统总体设计
在设计方面采用嵌入式平台,具有简单、体积小和成本低等优点,可以降低手势识别系统的成本,提高便携性。
手势识别过程如下:通过摄影机采集各种图像,同时还要对采集的图像进行提前加工,采集手势图像的特征信息,然后将提取到的信息和手势模板库进行配对,确定手势的编号和意义。
V4L2接口
V4L是系统内核中和饰品设备有关的子系统,能够为Linux下的视频驱动提供接口,通过应用这一接口,可使应用程序通过统一的API函数实现对不同设备的操控,降低视频系统开发难度,使维护更加便捷。早期V4L功能不完全、漏洞多,因此进行了重新设计,设计除了Video for Linux 2(V4L2),现在有Linux2.5.X版本。
图像预处理
手势图像去噪
在进行动作视频的收集时,系统可能是移动的,因此获得的手势图像不可避免地会受到干扰,包括外部环境光强度的变化和相机抖动,会造成获取的对象和信息库中的图像存在差异,因此需要对收集到的手势图像进行降噪处理,从而更加准确地进行识别,提高图像识别率。图像中相邻像素的灰度值具有较高的相关性,如果图像是顺滑和自然的,像素相关性越高,反之,则像素相关性越低。基于这一原理,采用加权平均值滤波的方式,能够很好地实现手势图像的降噪。
圖像阈值分割
在获取的视频流图中,需要采集的手势目标灰度值与当前背景的灰度值之间有明显差异,因此一般要应用阈值分割等算法对目标区域进行处理。实际处理过程中,在手势目标与图像背景之间通常会存在一个或多个分割阈值,为了获得更加清晰的手势目标区域图像,需要应用多个阈值元素来进行处理,在获取完整手势信息的前提下,最大程度上抑制噪声。
系统设计与实现
手势识别系统软硬件环境
本文设计的手势识别系统选择Ubuntu系统,采用QTOPIA 2.2.0进行图形界面开发,应用OpenCV2.4.3作为图像识别辅助工具。
ARM开发板为手势识别系统的基本开发环境,64 mm×85 mm液晶触摸屏采用USB2.0接口的摄像头。
基于V4L2的视频采集
V4L2是对V4L的重新设计,在此基础上相当于是一个全新的编程接口。V4L2采集视频数据的过程如下:
系统开启后,进行系统初始化,启动视频设备,并查询视频设备功能,进行视频格式和窗口大小的设置。完成之后申请内存缓冲区,查询设备缓冲区大小和偏移地址,建立内存映射,然后向队列添加缓冲区。之后,开始进行视频采集,获取采集图像,进行视频图像的读取和存储,然后释放内存。最后,关闭视频设备,结束视频采集。
手势识别实验
经过训练之后的10种手势模板及改进后Canny算子可以得到清晰的手势轮廓图像。
当前,手势识别技术在PC端已经获得了广泛应用,但这种技术的问题是实用性和便携性差。通过应用USB摄像头来采集视频信息,提取和识别视频流中的手势,能够提高这一技术的便携性和实用性,为应用手势进行人机交互控制奠定基础。本文进行了在嵌入式系统的基础上实现手势识别的设计,通过对系统进行验证和分析,手势识别系统具有良好的实用性。