多点触控手势识别算法的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多点触控手势识别算法的研究
作者:方成艳孔伟青邓秀勤
来源:《软件工程师》2014年第11期
摘要:本文针对当下流行的多点触控设备,对多点触控手势识别算法进行了研究,通过类比计算机中的快捷键设计出了一系列的触控手势,并结合曲线识别算法提出了一种多点触控手势识别算法。实验在当下流行的Android设备上进行,手势检测成功表明了识别算法的有效性。
关键词:多点触控;算法;手势识别
中图分类号:TP391.4 文献标识码:A
1 引言(Introduction)
多点触控技术是一种全新的人机交互技术[1],相对于传统的单点触控技术而言,它能同时检测和识别多个触点的位置和数量,从而提供了功能更加丰富的交互技术[2]。2007年,苹果公司的iPhone手机和微软公司的surface桌面式计算机两款新产品的发布,将多点触控技术引入主流消费品市场[2],让普通用户真正享受这一技术带来的便利。2009年微软发布的操作系统Windows 7提供了对多点触控技术的支持,使多点触控进入人机交互新时代[3]。2011年,搭载谷歌安卓系统的触屏手机进入了主流消费市场,在全球的市场份额首次超过塞班系统,多点触控技术成为主流的触控技术。可以预见,在未来多点触控技术将逐步取代传统的键盘、鼠标,成为人机交互的主流技术。但是,多点触控技术在国内发展的时间短,技术方案尚有欠缺,一些核心技术及专利屏障为多点触控技的进一步发展形成一定的阻碍。触摸精度低,错误率高,手易疲劳性以及由于手势扩展麻烦等问题,这些都在一定程度上制约了基于多点触控的双手交互技术的发展[4]。同时,针对移动设备触摸屏的多点触控手势识别算法十分匮乏,这严重的限制了多点操作的进一步应用。本文针对多点触控技术中手势功能较少,借鉴计算机快捷键(Ctrl+A、Ctrl+V等),设计了一系列新的手势,并利用基于相对高度的曲线特征提取算法进行手势特征提取、识别,在移动设备触摸屏上实现了传统计算机中的相应的快捷键功能,帮助用户更好地从传统计算机到触控设备的过渡。
2 传统触控手势(Traditional touch gestures)
目前的触控手势分为单点和多点两种,单点触摸手势主要有:单击(Tap)、双击(Double Tap)、拖拽(Drag)、轻弹(Fling)、按压(Press)等,多点触摸手势主要有:旋转(Rotate)、捏(Pinch)、展开(Spread)、按压并单击(Press and Tap)、按压并拖拽(Press and Drag),下表列出了这些手势的图示名称和动作描述[5]:
表1 传统触控手势
Tab.1 Traditional touch gestures
从上表来看,相对于传统的单点触控技术而言,多点触控实现的功能更加丰富,但就目前情况而言,手势功能相对较少,并没有完全发挥多点触控的优势。下一节中,本文将对计算机中使用频率较高的快捷键,设计新的触控手势,从而进一步丰富多点触控交互技术,帮助用户逐步摆脱对传统键盘、鼠标的依赖。
3 手势设计(Gesture design)
3.1 计算机中快捷键
用户在使用计算机过程中,不可避免地使用到快捷键,快捷键的使用使工作更加高效、快速、准确地完成,因此快捷键在办公、娱乐、文件管理等方面发挥着巨大作用。计算机中的快捷键很多,且很多快捷键功能并不常用,表2中列出了Windows系统下几个使用频率较高的快捷键。
表2 Windows系统快捷键
Tab.2 Shortcut keys in the windows system
快捷键功能使用说明
Ctrl+A 全选文档操作或文件管理中使用
Ctrl+C 复制文档操作或文件管理中使用
Ctrl+V 粘贴文档操作或文件管理中使用
Ctrl+X 剪切文档操作或文件管理中使用
Delete 删除文档操作或文件管理中使用
Ctrl+Z 撤销文档操作中使用
Ctrl+Y 恢复文档操作中使用
Alt+F4 关闭当前窗口窗口界面中使用
Ctrl+S 保存文档操作中使用
Ctrl+N 新建文档操作中使用
3.2 手势设计原则
为了能更好地帮助用户进行人机交互,触控手势的设计应便于用户理解和使用,为此,设计时应遵循以下原则[6]:
(1)直观性原则:所设计的手势应符合用户的直观印象,如对图片进行“展开(Spread)”操作表示对图片进行放大,对图片进行“捏(Pineh)”操作,表示对图片进行缩小。
(2)实用性原则:所设计的手势功能必须是用户使用频率最高、最常用的功能,以便用户更好地进行人机交互。
(3)简洁性原则:所设计的手势应尽量简洁,做到简单明了,设计的手势不涉及复杂的轨迹,以便用户快速地掌握并使用。
3.3 手势方案设计
根据3.2中的原则,设计手势如表3所示。
表3 本文设计的手势
Tab.3 The gestures designed in the pape
考虑到快捷方式的使用频率,本文暂只设计以上几种手势。
4 手势识别算法设计(The design of the gesture
recognition algorithm)
在触控设备中,所绘手势以二维点集的形式进入设备中,而多点触控手势则表现为多个点集,其中
,i表示第i个触点,本文中i=1,2。
本文中,所设计的多点手势较为简单,识别时可分别对Ai代表的二维曲线进行识别,因此多点触控手势识别可看作多个单点触控手势识别。
特征提取算法
多点触控手势分割成多个单点触控手势后,对于每个单点手势,本文采用基于相对高度的曲线特征提取算法[7]进行曲线特征提取,该算法描述如下:
a.完整手势
b.手势分割
c.手势分割
图1 手势分割
Fig.1 Gesture segmentation
(1)对于开曲线AB:
第一步:求出离曲线的端点连线最远的点P和曲线的相对高度,并存放相对高度在二叉树的根节点。
第二步:不妨设曲线的起点为A、P分曲线为两段。计算曲线AP的相对高度h1,并存放在相应左子树的根节点上。计算曲线BP 的相对高度h2,存放在右子树根节点上。
第三步:if h1
第四步:if h2
(2)对于闭曲线,特征提取算法如下:
第一步:初始化二叉树的根节点为0。
第二步:求出曲线的直径AB、左曲线和右曲线。
第三步:计算左曲线的相对高度,右曲线的相对高度,分别存放在左、右子树的节点。左、右曲线的最高点分左、右曲线成4段。
第四步:对于每一段曲线,如果带有分割前曲线的起点,则相对高度放在其左子树的节点。否则,存放在其右子树的节点。如果相对高度小于某一常数,则终止这段曲线的分割。否则,继续分割曲线,转第四步。
任何一条曲线,经过上述的曲线提取算法后都会转化为一棵二叉树。二叉树的层数由事前设定的相对高度阈值const决定。理论上,如果const取无穷小,那么曲线可以转化为一棵无穷大的二叉树。为了进行比较的方便,按照完全二叉树的次序遍历节点。对于空的节点,添补0。
5 实验及结果分析(Experiments and results
analysis)
5.1 实验平台