针对面向移动终端的微手势识别需求,本文介绍了一种基于HTML5、Javascript和webRTC框架的移动
移动硬件的普及,使得消费者在日常生活中所使用的应用渐渐集中到移动端上,从而移动互联网应用的开发逐渐成为趋势。而随着移动应用的发展,消费者已经不再满足于点按的交互方式。而当手势识别技术被应用到移动端时, 成本大小和便捷与否就应该被优先考虑[1]-[5]。
从数据的采集方式考虑, 传统的采用数据手套等的方式由于成本较高以及使用时的不便,所以并不适用于移动平台。而Kinect 等三维信息采集设备虽然具有极大的发展前景[1] [6],但就目前来说,并不适合用在移动平台上。由此,本文所介绍的系统只使用移动设备自带的网络摄像头获取视频信息。
当前市场上的移动平台并不统一,仅考虑身边最为常见的就有苹果和安卓这两大系统。这使得开发者有时需要针对不同系统开发不同版本的应用[7]。所以,为了使系统具备跨平台工作的能力,本系统以移动WEB 应用的方式进行实现。它将与运行的移动平台无关,切实解决平台局限性问题。
此外,现有手势识别往往会忽略了对于较小动作手势的识别,这也是本系统所重视的问题之一。
2. 识别流程及关键技术 本文将介绍一种基于web 的微手势识别系统。微手势识别的重点,在于对手指位置信息的确定。手指的外观形态随动作而变,而手掌的外观形态基本处于相似形状,故系统将手分为手指域和手掌域。系统对大量样本进行训练,得到基于Haar 特征的级联分类器。这个分类器可以用来定位视频画面中的手掌位置,即定位到整个手势的位置。然后,系统获取手指的指尖和重心的位置,并通过追踪手指重心的前后位置差异,对手势进行解析。
基于移动web 的微手势识别的流程如图1 所示。首先通过网络摄像头获取手势图像;再使用已经训练完成的分类器,通过objectdetect.js 对获取的图像进行对手掌区域的位置确定;然后根据手掌域位置的确定,获得手指域位置;接着根据YCrCb 颜色空间的肤色模型[8],对图像进行二值化处理,而后再经过一定的形态学处理,去除一定噪声;最后对已分割出的图像,采取微手势识别算法,提取出其中的手掌与手指重心,解析手势信息。
2.1. 图像采集与定位 图像采集基于Google 提出的WebRTC 框架,它基于HTML5 标准,使用Javascript API 来实现对摄像头的调用和浏览器的无插件视频播放。目前的主流浏览器,如Chrome、Opera 以及Firefox 等的最新稳定版本都支持这一标准。
对于网络摄像头所获取的视频信息,系统利用
这里,本文的目标图像为手掌图像,通过对手掌域的定位,获取手势的大致位置。在大致位置(兴趣