多点触摸

2024-09-27

多点触摸(精选4篇)

多点触摸 篇1

1 概述

多点触摸作为一种全新的人机交互方式随着iphone的推出风靡全球。它允许人们直接使用双手作为输入设备控制我们的手机或者电脑, 我们可以使用双指或者多根手指进行复杂的操作, 大家都爱上了这种生动、多样、灵活、自然的交互体验。Google的Android、微软的Windows 7、Window Phone 7以及即将推出的Windows 8都加入了对多点触摸的支持, 多点触摸成为现在最炙手可热的人机交互技术。

2 多点触摸原理

目前我们的电脑或者手机都是通过感应电容触摸屏 (以下简称电容屏) 实现多点触摸的。电容屏的玻璃表面贴有一层透明的特殊金属导电物质, 当手指触碰时触点的电容会发生变化, 从而可以获知触点的位置。电容屏又分为两类, 自电容感应和互电容感应。

1) 自电容感应

自电容感应的感应单元是分立的行和列, 他们分别检测行和列上面的电容变化。如果只有一个触摸点的时候, 行列上面都只有一个电容最大值, 因此可以准确获得触摸的位置。但是当有两个触摸点的时候, 行列上面会有两个电容最大值, 这个时候就会产生“鬼点”现象, 无法准确获得触摸点的位置, 如图1所示。不过由于可以判断出两个手指的运动方向, 所以依然可以进行缩放、平移、旋转等多点手势操作。

2) 互电容感应

互电容感应是目前主流的电容屏技术。由于它对每行每列交叉点都进行单独扫描检测, 所以它可以识别到触摸的具体位置, 没有自电容感应的“鬼点”现象。而且它可以检测到双手10个手指的同时触摸, 也支持其他非手指触摸方式, 如手掌、脸、拳头等, 甚至戴手套也可以, 是最人性化的人机接口方式, 非常适合多手同时进行操作的应用。

当前大部分的触摸设备都是采用互电容感应的方式。设备通过触摸屏采集原始触摸数据, 并将数据按各系统规定的协议进行封装上传至系统, 由系统进行后续的解析、手势识别等计算。

3 多点触摸编程模型

目前主流支持多点触摸的操作系统所采用的多点触摸编程模型基本一致。模型将一个或多个和屏幕接触的手指识别为多点触摸序列的一部分。序列从第一个手指接触屏幕开始, 以最后一个手指离开屏幕为结束。模型通过多点触摸序列跟踪与屏幕接触的手指, 记录手指在屏幕上的位置和接触时间。模型会发送两种类型的事件供应用程序调用。一种是直接将手指的触摸信息包括位置、时间戳、关联视图等作为事件提供给应用程序, 应用程序自己提供处理逻辑对触摸信息进行处理;一种是模型将特定组合的触摸识别为手势提供给应用程序, 应用程序会根据手势以用户直观的方式进行响应。

4 手势实现

多点触摸最大的优势就是用户可以通过手势进行复杂的操作。比如收缩双指距离的手势, 程序的响应就是缩小显示的内容;对轻拂屏幕的手势, 则响应为滚动显示的内容。本文将介绍一些基本手势的c#程序实现, 包括双指旋转、双指放缩、双指平移等以供读者举一反三, 实现更加复杂的手势。

定义触摸信息类, 代码如下。

下面给出判断双指旋转的代码。

下面是判断双指放缩的代码。

5 结束语

该文大致介绍了多点触摸的原理和编程模型, 并给出了一些手势的编程实现。随着iphone的持续畅销, 其他厂家的积极跟进, 多点触摸将继续全球的狂热。广大计算机知识的爱好者可以自己动手实现一些多点触摸的手势操作, 相信会有一定的市场效应。

摘要:多点触摸随着iphone的推出风靡全球, 是当今最炙手可热的人机交互方式。该文对多点触摸的原理和编程模型进行简要的介绍, 并给出了一些触摸手势的C#编程实现。

关键词:多点触摸,手势,C#

参考文献

[1]肖学军, 郑赞.最新多点触摸屏技术介绍[Z].

[2]Iphone应用程序编程指南[B].

[3]Windows Touch编程指南[B].

一种基于球形显示的多点触摸系统 篇2

1 系统构建

1.1 系统结构

一个多点触摸系统主要由显示屏、摄像头、投影仪、红外灯和计算机组成,利用受抑全内反射多点触摸技术(FTIR)开发基于球形显示的多点触摸系统。显示屏选用触摸球幕,由于球幕显示的特殊性,需要一个特殊的球幕镜头对平面影像做相应变换,另外还需要一个反射镜用来通过可见光线反射红外光。

本系统选用直径为70 cm的球幕,球幕下面有一个开口,红外光线经过开口进入球幕。选择将2个红外灯(波长780 nm、功率200 mw的圆形红外灯)安装在触摸球幕下方的开口边缘的内侧,使红外光线能均匀地照射到触摸球幕上。红外摄像头采用感光效果较好的CCD摄像头,由于采集的是红外光,需要安装一个780 nm滤光片滤除可见光,摄像头安装在触摸球幕下方的开口靠中间的位置,使得摄像头能拍到整个球幕。反射镜安装在球幕镜头里面,目的是为了增加投影仪的投射距离。球幕镜头对应设置有反射镜片的反射光通路和透射光通路,反射光通路正对红外摄像头,透射光通路位于投影仪的投射方向上,反射镜能通过其他光线反射红外光。球幕镜头采用宽角度的鱼眼镜头,安装在触摸球幕的正下方,鱼眼镜头的作用是将平面影像做相应的变形,从而能在三维球幕上平滑地显示出来。投影仪的选择主要考虑亮度、投影距离及分辨率,本系统选用1 024×768分辨率、3 000标准光亮度的NEC NP63+投影仪。采用频率为3.3 GHz的Intel酷睿i3系列处理器,4 GB内存和Windows XP sp2操作系统的主机来处理多点触摸系统的软件。

1.2 安装和调试

根据多点触摸系统的硬件结构进行安装和调试,摄像头摆放位置尽量靠近球幕镜头,并且垂直朝上,安装后需保持固定,在使用中不能出现移动或偏移等现象。2个红外灯安装在底盘固定的位置即可,投影机和主机固定在底盘的下方。

系统的调试主要分为测试电源和红外灯、调节投影屏幕、调整红外摄像头的焦距和捕捉范围。接上电源后,红外灯需一直保持常亮状态,调节投影仪可使球幕成像清晰,摄像头要求采集到的画面完整且在中间成像。

2 软件实现及互动应用

系统的硬件搭建完成后,需要完成软件部分的实现。软件部分包括触摸点跟踪模块、手势识别模块和互动应用程序。在具体实现中,需要修改坐标系统使其适用于球形显示并改进相应的算法提高运算速度。

2.1 球幕坐标系统

球幕上显示的内容是二维输入图片经过投影变换得到的,映射关系如图1所示。二维图片的中心位置映射到球幕的顶点(北极),图中任意一点与中心点之间的距离转换为球幕上距离顶点的维度跨度值,球幕上显示的内容为以中心点为圆心的内切圆,图片的四角不会显示出来,最外围一圈(圆周)则压缩成球幕的底点(南极)。

通常多点触摸系统都是用直角坐标系表示信息点,但这对于触摸球幕不太方便。本文把球幕类比为地球[2],用经纬度坐标系可以很容易地表示球幕上的点。为了计算方便,定义经度坐标,数值范围在0~2π之间。从上往下看,角度沿逆时针递增。定义纬度坐标,数值范围在0~π之间,北极为0,赤道为π/2,南极为π。

根据上述定义,假设直角坐标系下任意点P归一化后的坐标为p(x,y),其中,中心点坐标为(0,0),得到p(x,y)与经纬度坐标p(latitude,longitude)的转换关系,其中:

2.2 触点跟踪模块

触摸点跟踪的作用是将摄像头采集到的原始图像信息,经过相应处理得到触点信息,并经TUIO通信协议发送给手势识别模块。目前,国外有很多开源触点跟踪软件,如Touchlib和CCV(Community Core Vision)[3]等,采用计算机图像处理库OpenCV直接处理图像和视频流,从而能够非常准确地检测到触摸点信息,这些信息最后通过TUIO协议发送。本系统使用CCV进行触点跟踪,由于CCV基于平面显示屏,因此需要对CCV进行相应地修改,使其适用于球形显示屏。

CCV是一个开源触点跟踪软件。它需要一个摄像头或者视频来提供数据输入。经过数据处理之后,输出追踪数据(如触点坐标和触点大小等)。CCV能够与各种网络摄像头或视频采集设备协同工作,通过支持TUIO/OSC/XML的应用程序进行数据连接,并且支持包括FTIR、DI、DSI、LLP、LED-LP等在内的多种基于光学的多点触摸硬件方案。

当手指触摸屏幕时,CCV软件能将触点信息检测出来,并在屏幕的相应位置显示白点。但通常情况下,白点的位置与实际触摸的位置不一致,因此必须对坐标位置进行校正,这也是CCV软件运行非常重要的一个步骤。

校准是通过重心坐标的知识来实现,如图2所示。假设△ABC由摄像头采集图像上的点组成,3个顶点坐标分别为A(x1,y1)、B(x2,y2)、C(x3,y3),设α、β、γ为△ABC重心坐标,根据重心坐标定理可得:α+β+γ=1。点P(x,y)为△ABC内任意一点,用重心坐标分量表示为x=αx1+βx2+γx3,y=αy1+βy2+γy3。

△A′B′C′为△ABC对应的实际触摸点位置,3个顶点的坐标分别为:A(x1′,y1′)、B(x2′,y2′)、C(x3′,y3′),根据映射关系可以求得P点在△A′B′C′对应点p′(x′,y′)的坐标为:x′=αx1′+βx2′+γx3′,y′=αy1′+βy2′+γy3′。

使用三角网格对坐标进行校正,将两幅图像划分成相同个数的三角形网格,对每一个三角形进行坐标映射。当手指触摸时,通过判断触摸点所落在的三角形内,达到最终校正目的。CCV软件标准校正是在屏幕上生成9×10共90个校准点,呈矩形分布。从左上角的第一个校准点开始从左至右、从上至下开始校正。测试中发现将校准点设成矩形,分布在球形显示屏上的校准效果不理想,必须修改CCV软件,将其校准点成圆形分布。经过校正后,CCV软件开始准确地对触摸点进行跟踪,并点击平滑处理、高通滤波、触点增强等按钮对触点进行处理,最终能正确清晰地得到触点信息。

2.3 手势识别模块

当触点信息被准确地追踪后,通过手势识别程序便可将输入触点轨迹解释为相应的手势命令,再传递给应用程序实现最终交互的功能。本文采用C#语言编写手势识别程序,手势识别程序将以动态链接库形式为应用程序提供交互功能。程序框架中交互元素由IGestureListener类定义,触点信息CursorPoint经过轨迹合成为Trace,再对轨迹分组成Group,Group即为待识别的手势。Group手势信息通过GroupGRManager类进行手势事件订阅,然后通过GestureRecognizer类进行手势识别,识别成功后,将以事件的形式传递给应用程序。

由于触摸球幕坐标体系的特殊性,标准的手势(如移动、旋转、缩放等)需要重新定义。

2.3.1 移动

如图3所示,平面上的移动手势很简单,用一个二维平移矢量V軑就能表示。但是,由于球面坐标系不是标准的笛卡尔坐标系,并且移动轨迹也不是直线,因此二维平移矢量无法表示平移手势。一种简单的表示方法是用四元数表示法,θ为旋转角度,A軑为旋转向量,Q軖为球面矢量,点1到点2的移动动作,即点1绕A軑旋转了θ到达点2。

2.3.2 旋转

平面下的旋转手势可以根据两点之间倾斜角的变化来表示,如图4(a)所示。而球面上却比较复杂,需要根据旋转角度和旋转轴计算出旋转矩阵,然后根据旋转矩阵算出触摸区域的每个点新的坐标位置,如图4(b)所示。

2.3.3 缩放

触摸球面上的缩放手势和平面上类似,都可以根据两点之间距离的变化来表示。但是由于球形显示的有限性,基于球形显示的缩放手势的放大系数必须限制在一定范围内,超过一定的值可能会导致部分影像无法显示。

2.3.4 互动应用

触点跟踪模块和手势识别模块完成后,就可以开发应用程序验证系统的交互功能。目前比较流行的开发语言有C/C++、C#、Flash、Python等,一些比较成熟的多点触摸应用程序都是使用C#开发。不同的开发语言有各自的优势,用户可以根据自己的需要和实际情况自行选择开发语言,本文使用C#开发一些互动应用程序,以展示该系统多触点手势交互的能力,进而从不同方面验证了多点触摸交互系统的特性,例如图片查看器。传统的图片查看器都是通过鼠标和键盘进行操作,但旋转和缩放操作会比较麻烦,这里利用多点触摸的优势,使用C#开发了可支持移动、缩放和旋转操作的基于球形显示的多点触摸图片查看器。通过该程序用户能够用多个手指进行图片操作,验证了标准手势(如移动、旋转和缩放等在球形显示器上的手势识别功能。

本文介绍了一种基于球形显示的多点触摸系统,分别从硬件搭建和软件实现两方面阐述了系统的具体实现过程。在软件实现过程中,针对触摸球幕的特殊性建立了适合球形显示的地理坐标系统,然后对触点跟踪软件CCV进行了修改,使其适用于球形显示。完成了触点跟踪和手势识别模块,选用Flash和C#开发应用程序进行了多点触摸互动应用,显示出多点触摸系统带来的交互性和便捷性。

参考文献

[1]BENKO H,WILSON A D,BALAKRISHNAN R.Sphere:multi-touch interactions on a spherical display[J].UIST,2008,2(3):67-69.

[2]KETTNER S,MADDEN C,ZIEGLER R.Direct rotationalinteraction with a spherical projection creativity and cogni-tion symposium on interaction[C].Systems,Practice andTheory,2004.

多点触摸 篇3

多点电容触摸屏的设计并非轻而易举、唾手可得。严格地讲, 多点电容触摸屏技术还并不是一个完全成熟的技术, 它还是一个处于发展阶段并且不断发展不断完善的技术。对于一个多点电容触摸屏的设计者而言, 在它面前仍然面临着诸多的设计挑战。本文介绍多点电容触摸屏设计有哪些设计挑战, 和如何使用SP方案来帮助设计者面对这些挑战, 使多点电容触摸屏设计比以往更容易。

设计挑战

挑战一

如何将由于手指触摸而产生的微小的互电容变化转化成数字信号, 并具有足够的分辨率?一般地讲, 多点触摸是基于互电容感应原理, 而互电容是发射感应条与接受感应条在交叉点处的寄生电容, 这个电容非常小, 通常在0.2~4pF, 而手指触摸而产生的互电容的变化就更小了。对这种微小的互电容变化的检测, 不仅需要有对电容变化高度灵敏的硬件检测电路以实现微弱模拟电量到数字信号的转换, 同时也需要相应的软件来进行控制协调, 以保证在整个触摸屏上的每一点对手指触摸信号有足够高的灵敏度。

挑战二

如何获得足够快的扫描时间?对于一个M行和N列感应条的单点触摸屏, 使用自电容扫描, 仅需要分别扫描M行和N列后就可以根据每一行和每一列信号来进行计算, 来定位手指在触摸屏上的坐标。它扫描感应条的次数是M+N次。当你使用多触点互电容扫描时, 由于必须是行和列的交叉点扫描, 所以它的扫描次数是M×N次扫描交叉点的次数。对于一个10行20列的3.2寸屏, 自电容扫描只需要10+20=30次, 而互电容扫描却要10×20=200次。当触摸屏的尺寸越来越大时, 扫描次数的增加越来越快。为了使用户有比较好的触摸体验, 它需要每秒至少扫屏50次。这就意味着每一个点的扫描加数据处理的时间必须少于100ms, 这样才能保证有足够快的响应时间。而触摸屏的尺寸越大时, 行和列数目就会越多, 这个时间就更短。

挑战三

触摸按键、触摸滑条和触摸板都使用铜箔作为触摸感应器, 但触摸屏基本上都使用ITO (铟锡氧化物) 材料作为触摸感应层。铜箔的电阻率极小, 因而它的电阻几乎可以忽略不计。ITO透明而导电, 但ITO却有比较高的电阻率。通常在触摸屏上ITO的电阻率用方阻来表示, 即一个单位方块的电阻是多少。一般地, ITO的方块电阻从45~350Ω不等, 取决于触摸屏生产厂家的涂层工艺。由于ITO电阻的存在, 使得在触摸屏上的每一个感应条的近端和远端会有3k~30kΩ的电阻, 这个电阻结合每一个感应条上的自电容所产生的RC延迟, 就使感应条的近端和远端会对发射的信号有不同的响应时间或者充放电时间, 进而导致在近端和远端的手指触摸信号有大小的不同。严重的情况, 这种不同可以达到50%以上。如何消除或减少这个差异, 是多点电容触摸屏设计的第三个挑战。虽然选择方阻更低的ITO涂层是减少这个差异最直接的方法, 但通常方阻更低的ITO涂层的厚度会更厚, 导致透明度的下降和成本的增加。对很多终端客户来讲是不可接受的。

挑战四

信噪比 (SNR) 是多点电容触摸屏设计中最重要的指标之一。对一个触摸屏来讲, 有足够大的手指信号是远远不够的。事实上, 触摸屏并非置身于象牙塔内, 在它的周围有诸多的噪声源。比如, 紧贴在它下面的LCD就是一个噪声源, 不同的LCD甚至不同的显示画面, 其噪声的大小和频谱都不一样。尤其是对有些AC Vcomm类型的LCD, 它能够在LCD的表面产生高达15nA/mm2的电流噪声和1V以上的电压噪声。虽然一个ITO的屏蔽层被放在触摸屏的下面的方案被一些设计者所采用, 但屏蔽层的增加, 导致触摸屏厚度的增加和成本的增加, 也一定程度影响了可视性。并非所有的终端客户都可以接受。手机本身的射频信号和外界的电磁波也会对其产生干扰。当采用触摸屏的终端采用外部市电供电时, 通过来自电网和电源适配器可能产生很大的共模噪声。还有使人感到棘手的充电器噪声, 触摸屏及系统本身所产生的噪声如AD转换带来噪声、开关噪声以及电源噪声和ESD测试所使用的8千伏ESD (静电放电) 噪声。在这么一个多噪声的环境中, 如何使触摸屏系统对各种噪声源的噪声有很好的噪声免疫力获得足够高的信噪比是多点电容触摸屏设计的第四个挑战。

挑战五

手指定位精度是多点电容触摸屏设计的第五个挑战。现在的终端客户对手指在触摸屏上的定位精度要求越来越高, 尤其在触摸屏边缘上定位精度。我们知道通常使用质心算法来实施手指的定位计算。然而由于电容触摸屏在边缘上的感应单元的不完整性和手指在边缘上先天地缺失半边的权重信号, 在触摸屏的边缘仍然使用质心算法将带来较大的误差。因此, 改进手指定位的算法, 不仅适用于触摸屏的中间区域, 同时适用于触摸屏的边缘区域使手指触摸的定位更准确是多点电容触摸屏设计必须面对的挑战。

挑战六

多点触摸手势识别和跟踪。多点电容触摸屏就是为了多点触摸和手势识别而设计的。一般使用最多可以识别十个手指的触摸。最常用的手势为一或二个手指的手势。它不仅要能识别单触点的十四种手势 (上、下、左、右、左上、左下、右上、右下、左旋、右旋、单击、双击、点住和抬起) , 而且要能识别双触点的二十七种手势 (双触点上移、双触点下移、双触点左移、双触点右移、双触点左上移、双触点左下移、双触点右上移、双触点右下移、、双触点缩小、双触点放大、双触单击、一触一上移、一触一下移、一触一左移、一触一右移、一触一左上移、一触一左下移、一触一右上移、一触一右下移、一触一左下左拐、一触一右下右拐、一触一右下左拐、一触一右上右拐、一触一Z形移、一触一三角移、一触一正方移和一触一画圆) 。此外, 在多于两个手指触摸时要能实时地跟踪这些手指的移动, 赋予每一个触摸手指的临时识别代码不能搞错。它对手势识别算法的设计和芯片的运算速度都是一个实实在在的挑战。

挑战七

低功耗。任何使用电池供电的移动设备对其每一个功能单元设计的功耗要求都会非常苛刻, 尤其是在当下的低碳时代。多点电容触摸屏作为移动设备中的一个功能单元当然也不会例外。要使多点电容触摸屏在完全激活的情况下功耗小于35mW、在待机的状态下功耗小于100uW并非是一件容易的事。如果一个多点电容触摸屏的设计不能达到这个要求, 将会在激烈的市场竞争中处于不利的境地。

挑战八

防水性能是衡量多点电容触摸屏设计性能的标志性指标。似乎使用互电容扫描的多点电容触摸屏具有天然的防水能力, 它并不构成一个设计挑战。为什么这样认为呢?因为使用自电容扫描的触摸屏, 水滴和手指触摸产生的信号变化的方向是相同的, 要将水滴从手指触摸中分辨出来颇费周折。而互电容扫描的触摸屏水滴和手指触摸产生的信号变化的方向正好是相反的, 因为手指触摸使互电容减少, 水滴却使互电容增加。这就给人这样一个错觉:使用互电容扫描的多点电容触摸屏具有天然的防水能力, 因而不需要采用特别的措施去做防水处理。

真实的情况并非如此简单。当水滴滴到互电容屏上时, 确实不会也没有产生误触发, 但当水滴被擦掉以后再用手指触摸原来的地方就不灵了。运气好的时候, 过一段时间可以恢复到原先的手指触摸灵敏度。我们知道一个合格的产品是不允许这样的情况出现的, 更不会去依赖好运气。事实上, 因水而带来的触摸失效的问题不仅仅指水滴, 它还包括水膜和大片的水。

挑战九

怎样克服来自低档充电器的噪声?尤其是在中国市场, 大量的低档充电器被用户所选用。这类充电器所产生的噪声和其他噪声有两个特别的不同:第一是它的噪声在没有手指触摸时并不呈现出来, 仅当触摸时才显现出来并且非常的强烈, 使得一个有效的触摸变得很不稳定进而变得失效;其次是这个噪声是来自充电器并通过地线传到触摸屏系统的一种共模噪声, 它很难通过普通的硬件滤波来滤掉, 常用的数字滤波对它的滤波效果也不理想。所以必须有一种高级的滤波方法来对付这种低档充电器的噪声。

挑战十

信号的一致性 (SD) 。很多多点电容触摸屏的设计师会遇到这样一个问题, 当他们的设计完成, 样品测试手指触摸信号的强度满足要求。当他们将触摸屏组装进入整机, 甚至准备批量生产时, 一个不大不小的问题会突然出现在他们的面前:使用多点电容触摸屏的手持设备拿在手里时操作正常, 但将它放在桌子上, 触摸功能就不灵了。这就是信号的一致性问题, 或者我们称之为信号的不一致性 (Signal Disparity) , 简称之为SD。它是触摸屏在测试时或者拿在手里时的手指信号幅度和放在桌子上手指触摸信号的幅度不一致造成的。放在桌子上手指触摸信号的幅度会小于在测试时或者拿在手里时的手指信号幅度。当二者的幅度差足够大时, 桌子上手指触摸信号的幅度时不时不能达到和超过手指信号阈值, 一个有效的触摸就不能被捕捉到。这种信号的不一致性在多手指和大手指的情况下会变得非常厉害。因此, 如何解决信号的不一致性问题是多点电容触摸屏的设计第十个挑战。

其他挑战

虽然上面罗列了十个挑战, 但事实上, 多点电容触摸屏的设计还并不仅仅限于这十个挑战。譬如, 为了得到更薄的触摸屏, 一种将ITO感应层直接涂敷在顶层的玻璃上的层叠技术 (简称为Sensor On Lens) 已经开始实施, 这个屏紧贴在LCD屏上, 使得LCD屏上的噪声影响在触摸屏上达到最大。这使多点电容触摸屏的设计面临更为严峻的挑战。

还有, 长时间以来不能在电容触摸屏上使用手写笔一直是电容触摸屏的设计的一个遗憾, 也一直被广大的电容触摸屏用户们耿耿于怀。因为手写笔的笔尖太小, 难以在电容屏上产生足够大的像手指触摸时所产生的耦合电容, 它成为和电阻屏比较最大的先天不足。难道在电容触摸屏上就真的不能使用手写笔吗?难道多点电容触摸屏的设计者对此就真的束手无策了吗?它不仅仅挑战多点电容触摸屏的设计者的技术水平, 更多的是挑战他们的勇气和智慧!

此外, 多点电容触摸屏的设计还要面对触摸屏在使用过程中可能出现的细节问题, 如, 大手指的油炸圈效应;手机上触摸屏打电话时的脸庞的接近和贴近检测。当然, 单芯片、小尺寸、最少的外围元件也是多点电容触摸屏设计方案所必须追求的性能。随着多点电容触摸屏朝着大尺寸屏方向发展, 多点电容触摸屏设计将面对更多新的挑战……

TTSP方案轻松实现多点电容触摸屏的设计

SP是TrueTouch Standard Product的缩写。它是Cypress (赛普拉斯) 为电容触摸屏应用而开发的标准产品。TTSP是基于PSoC并在其中嵌入了专门为多点电容触摸屏而设计的TTUM模块。就像Cypress的PSoC (可编程系统芯片) 一样, 它也是一个数模混合信号处理芯片。TTSP不仅包含了用于检测互电容和自电容的硬件电路模块, 而且包括非常丰富的软件;在它的软件中, 不仅包含用于控制和协调硬件电路工作的程序, 而且包括各种各样的信号处理和多种算法程序, 还有与主控芯片的通信程序和Bootloader程序。对于一个多点电容触摸屏设计而言, 它是一个真正的单芯片解决方案。

1.容易使用

容易使用是TTSP方案的第一个特点。在TTSP方案中它不需要用户写一行代码。仅需要用户通过管脚定义和设置参数或选择参数就可以得到所有需要的代码。它大致可以分为三步完成这些设置。第一步在PSoC Designer的开发平台上通过TTUM模块的Wizard Form设置触摸屏上感应器排和列的数目并且定义排和列上的每一个感应器到SP芯片上可以用作感应器发射或接受的管脚上。这种定义通过鼠标点击感应器在排和列中的序号并拖动鼠标到代表芯片管脚名称的方块上就可完成。见图2。

在X和Y方向的最大分辨率也在此设定。

2.功能完备

TTSP方案最多可提供十个手指的触摸检测, 四个手指的连续跟踪, 最多可以识别单触点的十四种手势和两个手指的二十七种手势。它不仅可以实施互电容扫描, 也可以实施自电容扫描。事实上它还可以实施互电容和自电容的交替扫描, 正是这种交替扫描的使用, 使多点电容触摸屏的性能得到了提升。多点电容触摸屏的防水功能设计和手写笔的实现就是利用了互电容和自电容的交替扫描和选择性扫描。SP允许用户在同一个触摸屏项目中同时使用触摸按键, 这对有些希望使用与触摸屏加分开的触摸按键的手机用户是非常有益的。

⒊性能良好

TTSP方案不仅有足够高的灵敏度来检测手指的触摸, 它也有足够高的灵敏度来检测手写笔的“触摸”和滑动。

结束语

虽然多点电容触摸屏设计有诸多设计挑战, 但使用SP方案可以帮助设计者轻松面对这些挑战, 使多点电容触摸屏设计比以往更容易、更快。

参考文献

[1]周永宏.带多点触控功能的电容式触摸屏方案[J].世界电子元器件, 2008, (4)

[2]郑赞.触摸屏多点触摸技术揭秘[J].电子产品世界, 2008, (11)

多点触摸 篇4

触摸屏作为一种用于人机交互的硬件设备已经越来越多的应用于我们的日常生活。银行自动柜员机、商场服务台、手机甚至电脑, 几乎所有的电子设备中都出现了触摸屏的身影。触摸屏的基本原理就是利用传感器 (电容、电阻感应或红外线) 来跟踪手指的位置, 从而实现控制操作的功能。其具有精确度高, 操作方式自然, 成本比较低廉等优势。但是触摸屏的应用也有局限性, 特别是在进行演示和展览时因受到触摸设备尺寸的限制而无法达到最好的展示效果, 或者因成本限制而无法采用大尺寸显示器和大尺寸触摸屏。另外这种交互方式有赖于触摸设备的支持, 作为一种专用的硬件产品, 其识别点数以及精确程度完全由硬件决定, 其成本与这两方面的性能正比增加, 且其应用范围亦比较局限。[1,2,3]

非接触式 (touchless) 交互技术则无需硬件触摸设备, 本质上属于增强现实技术应用的范畴。由于其主要依赖标定物的识别和跟踪技术, 属于图像识别和处理的范畴, 因此只需一个视频采集设备 (普通摄像头或者红外摄像头) 在一定的光照条件下, 可搭配任何尺寸的显示设备。其成本低廉, 技术部署方式简单, 非常适合搭建交互演示平台, 可用于教学、展览等。[4]

本文提出了一种采用颜色识别技术实现非接触式交互操作的方法, 该方法包括使用颜色聚类跟踪手指位置以及根据多个手指相对位置的变化识别对应手势的算法。[5]

2、HSV色彩空间

HSV色彩空间具有视觉一致性, 完整性, 紧凑性和自然性, 大多数人认为HSV能更好地描述颜色联系, 同时也不会提高计算上的复杂度。使用HSV色彩空间描述颜色并进行聚类分析, 更接近于人类真实的视觉感知, 因此也被本算法所采用。

2.1 RGB色彩空间到HSV色彩空间的转换

图像采集设备获取的图片通常是由用RGB色彩空间描述的像素组成, 它们的值 (R, G, B) 是在0到255之间的整数。设max等于R, G和B中的最大者。设min等于这些值中的最小者, 则从RGB色彩空间向HSV色彩空间转换的方法为:

公式 (1) RGB颜色值到HSV颜色值的换算

这里的H∈[0, 360) 是角度的色相角, 而S, V∈[0, 255]是饱和度和色调, 三者和色彩空间的关系可由下面的圆柱图表示。[6]

2.2 使用HSV颜色空间的图像特征描述方式

采用三维数组存储整张图片所包含的颜色信息, 数组中每个单元的下标表示HSV的三个分量的值, 而这个单元的值则等于此颜色值在计算时的权重。

2.3 HSV色彩空间中的色彩分类算法

在特征物标定时计算区域内颜色的平均值, 阈值通过特征物范围内的像素的颜色与平均颜色相比较而得出, 同时和特征物的其他信息一起存储, 区域内的HSV颜色平均值实际上就是所有权重不为0的颜色值的加权平均数, H、S和V值分别计算平均数后, 再转换为HSV颜色空间中的值, 即为平均颜色。[7]

3、算法的实现及优化

3.1 特征物标定与训练

特征物的标定过程是将特征物的颜色特征值输入算法的过程。现提供一种可能的实现方法供参考:将特征物展示在相机前, 用户手动指定一个范围, 这个范围可以尽量大, 但不宜超过特征物的大小。程序会记录当前的这张图像, 以及用户指定的特征物的位置和大小。之后遍历这张图像, 将不在特征物范围内的像素标记为无效, 这样, 一个特征物实际上就被确定了出来。

对特征物进行训练的过程实际上就是求解一定范围内颜色的平均值的过程。现提供一种实现方法, 除了计算平均的颜色外还提供一个阈值, 这两者共同构成了判断一个像素是否属于一个特征物的标准。计算平均值的过程实际上是计算一定范围内构成颜色的H、S、V值的加权平均数, 遍历特征物范围内的像素, HSV相同的单元出现次数越多, 其值的权值越高。阈值则是距离平均值最远的单元的HSV值与平均值的差值。试验发现阈值取值为计算值的1.5-2倍时可以取得比较好的效果。

3.2 搜索边界推断

处理相机捕获的图像所需的运算量较大, 容易产生性能瓶颈, 进而影响实际帧率。算法对这部分进行了优化, 在处理每一帧图像前, 首先根据上一帧有效图像, 推测特征物可能出现的位置范围, 并首先在这个范围中搜索, 减少了为命中特征物所进行的迭代次数, 进而加速了图像的处理。具体做法如下:

首先判断上一帧图像中是否包含任何特征物, 如果没有, 则将搜索区域直接设置为整幅图像;如果包含特征物, 则会根据特征物的位置以及边界大小计算出如下参数:

DX为特征物的位置的X坐标的变化量, 这个变化量是与这之前的特征物的位置的X坐标做比较后得出的。DY亦然。

最终实际搜索区域的大小如下图所示, 其中的系数则是根据实际情况, 进行试验后得出的。下面给出一组参考值:DX的影响系数在DX大于零时为0.25, 小于0时为4, DY亦然;特征物 (marker) 高度的影响系数为1/3, 其宽度亦然。

在不同情况下此方法的优化效果也有所不同;如果图像中不包含任何一个特征物, 那么搜索范围就是整幅图, 没有任何优化的效果, 如果特征物出现的个数少于定义的个数, 则视情况可能扫描多余的范围。只有在特征物出现的个数与定义相同时, 才能达到最好的效果。在实际试验过程中, 当特征物没有出现在相机视野中时, 帧数一度会下降到正常情况的一半 (大约10帧左右) , 针对这种情况, 算法进行了额外的优化, 假如在一定的时间内没有搜索到特征物, 对此帧的处理将被强制结束。这种方法使得算法在处理无特征物的图像时会进行丢弃处理, 从而人为地将帧数提高, 但是随之而来的副作用会使正常处理特征物的过程受到影响, 具体的解决方法则是在用插值算法, 人为补充丢失的数据。

3.3 插值

通过图像分析得到的点通常比较离散, 一方面是因为相机帧率较低 (每秒30帧左右) , 另一方面是并非每一帧都可以得到正确的数据, 实际测试时, 每秒钟得到的正确的点的坐标在10个左右, 如果直接将这些点的变化反映在用户界面上, 则会造成操作的不连贯, 降低用户体验。因此算法在最后输出点的坐标时采用了插值算法, 通常情况下线性插值已经可以满足要求, 但给人的感觉比较迟滞, 因此实际实现的过程中使用了四次抛物线插值。

3.4 多点手势实现

对于一点的操作, 实际上相当于鼠标, 使用一个特征物模拟鼠标移动。对于鼠标移进移出的操作较容易模拟, 但是点击操作 (包括单击, 右击以及双击) 就无法完成。这就是非接触式多点触摸相比触摸屏的劣势。无法使用通用的操作方式, 实际上仍有其他的选择, 在为人认同的更自然的操作手势出现之前, 我们采用了一种折衷的办法, 标识在一定范围内停留一定时间即认为是点击操作。

而对于两点及两点以上手势, 则与触摸屏技术中定义的通用手势无异。[8,9,10]

4、结语

算法采用近似色彩聚类的方式, 通过计算手指上佩戴的彩色指套的几何形心的位置, 实现跟踪手指移动, 识别简单手势, 进而操作用户界面中的交互元素。

算法简单, 易于理解和改进, 同时也给出了一些优化性能的方法, 在实际demo的测试中有不俗的表现。但算法也有缺陷, 首先对光照条件比较敏感, 因HSV颜色空间比较接近人眼识别颜色的方式, 在不同光照条件下, 物体反光所呈现的明暗变化较大, 对算法速度影响非常明显, 因而其应用范围也仅限于室内, 必要时候需要使用灯具补光, 亦或者重新训练特征物;其次, 复杂的背景容易产生干扰, 当背景中出现和特征物相似的颜色, 根据位置的不同, 算法有可能产生错误的结果, 因此试验采用了白色的墙面作为背景, 这种条件在室内的演示环境中亦容易得到。

作者认为非接触 (touchless) 与触摸屏技术可说是互为补充, 表面上看两种方式所不同的仅仅是输入方式而已, 前者通过图像采编系统, 后者通过通过各种传感器。但细究之下, 两者又有相当大的差异。其一, 手势的处理方式不同, touchless无法处理“接触-离开”一类的操作, 这却是触摸屏中的主要操作方式。扩展性方面, touchless在扩展性上更具优势, 可以添加一些传感器扩展其维度 (如红外线景深量测) , 由于空间不受限, 其应用的范围更为广大。而在操作的体验和精确度方面, touchless则稍显不足, 缺少触感亦无操作实体的反馈, 因而不适用于需要较精确且细致的操作。

参考文献

[1]董士海.人机交互的进展及面临的挑战[J].计算机辅助设计与图形学学报.2004-16 (1) :1-13.

[2]陈大炜.基于光学感应的大尺寸多点独摸控制技术[J].电子产品世界, 2009-9:56-5.

[3]夏守玉, 姜维, 刘克东.浅谈触摸屏多点触摸技术及应用[J].电视工程, 2009-4:37-37.

[4]卢如西.空间三维非接触式多点触摸系统的设计与实现[J].硅谷, 2010-1:7-9.

[5]齐婷, 王锋.基于视觉的多点触摸基本技术实现方法[J].计算机技术与发展, 2009-19 (10) :138-140.

[6]http://en.wikipedia.org/wiki/HSL_and_HSV (EB/OL) .Wikipedia.

[7]韩轩.基于颜色和空间特征的图像检索技术研究[D].厦门大学.2008.

[8]凌云翔, 张国华, 李锐, 叶挺.基于多点触摸的自然手势识别方法研究[J].国防科技大学学报, 2010-1:127-132.

[9]尹乾毅.多点触摸手势设计的发展[J].企业导报, 2011-1:282-283.

上一篇:特殊待遇下一篇:千篇一律