APP下载

受抑全内反射技术实现的多点触控装置设计

2014-09-18

电视技术 2014年13期
关键词:亚克力触点手势

黄 靓

(平顶山工业职业技术学院,河南 平顶山 467000)

随着人机交互技术的发展,人们不满足于仅通过传统的输入设备对计算机进行操作,多点触控技术随之在多个行业中迅速发展,极大增强了用户的人机交互体验,受到大众的关注和追捧。

所谓多点触控(Multi-Touch)是采用人机交互技术与硬件设备共同实现的技术,能在没有传统输入设备下进行计算机的人机交互操作。目前多点触控技术以光学式发展最快,便于实现,本文主要研究基于计算机视觉和光学的多点触摸来实现人机交互[1]。

常见的基于光学的多点触摸技术主要分为5类:由Jeff Han开创的FTIR(受抑全内反射多点触摸技术)、微软Surface的Rear-DI(背面散射光多点触摸技术)、由Alex Popovich提出的LLP(激光平面多点触摸技术)、由Nima Motamedi提出的LED-LP(发光二极管平面多点触摸技术)、由Tim Roth提出的DSI(散射光平面多点触摸技术)[2]。经过对5种技术的比较,本装置采用FTIR技术实现。

1 系统设计

1.1 系统原理

FTIR是光学的一种基本现象——全内反射(又称全反射),Jeff Han教授通过该原理,将红外线反射在一块能够产生全内反射效果的亚克力板内部,当用户在亚克力板表面触摸时,光线就会被用户的接触部位反射或折射(通过皮肤),在触摸的地方就会将原本反射在内部的红外线折射回在亚克力板外面架设的红外摄像头,通过对应软件即可检测到对应的信息点[1],如图1所示。

图1 受抑全内反射原理图

1.2 硬件系统设计

本装置采用基于FTIR和计算机视觉技术的硬件结构,主要模块包括红外光源、红外摄像头、显示设备、信息处理设备等。整个系统结构简单,便于组装,成本低廉,具有较强的环境适应性。

1)红外光源。由于本装置采用亚克力板作为投影设备,而多数亚克力板在制造时加强了削弱900 nm以上红外光的能力,同时很多红外摄像头也作了修正,对940 nm以上的红外光不敏感,以减少太阳光的干扰,因此选用的红外光源波长必须在780~940 nm,功率在80 mW以上,在这个范围内红外发光管发出的光最容易被摄像头读取。而且波长越低,敏感度越高,更容易分析压感。本设计采用SFH-485P作为发光器件,波长为880 nm,便于摄像头捕捉。

2)红外摄像头。红外摄像头价格较高,考虑到装置的成本,系统采用对普通摄像头加以改造的方式来实现。装置选用PlayStation 3(PS3 eye)摄像头,不仅可以轻松地去除ICF(红外截止滤镜),且具有较高的帧率(640×480,30 f/s)。

为了过滤干扰的可见光,需在镜头前添加裁剪的滤光片或镜头滤镜。镜头滤镜具有波长唯一性,而且具有只允许单个特定波长通过的特点,考虑到滤光效果,本装置采用镜头滤镜作为滤光片。

3)显示设备。装置可以使用的显示设备有投影仪和液晶显示器。液晶显示器若要使用需进行改造,要去掉显示器外壳,保留LCD板、电路控制板和电源,步骤较为繁琐,其显示范围也受到显示器尺寸的限制,且成本较高。而投影仪具有屏幕尺寸大、功能多、成本低的特点。同时,为形成效果较好的全内反射,对于作为投影面的亚克力板的厚度有一定要求,一般要求在8 cm以上。综合以上考虑,并为了防止手指按压时发生形变,本设计决定选用投影仪配合10 cm的亚克力面板作为显示设备[3]。

4)信息处理设备。本装置选用的软件框架为OPENCV,客户端为CCV,信息处理平台采用Raspberry Pi嵌入式开发板与PC,使用PC辅助进行交叉编译。Raspberry Pi配备一个700 MHz的博通ARM架构BCM2835处理器,256 Mbyte内存,使用SD卡作为存储媒体,支持Linux、Android、RISC OS、BSD等操作系统,并且有USB、HDMI、RJ-45、GPIO等扩展接口,便于开发。

本系统通过在嵌入式Linux系统中运行CCV,实现了Raspberry Pi与PC搭建的交叉编译环境,可以充分利用ARM平台与X86平台的优点,功耗、性能、开发速度都得到保证。由于嵌入式系统资源有限,在X86环境下完成大部分代码的开发,然后借助交叉编译工具生成可以在Raspberry Pi上运行的目标代码和程序。

装置的硬件系统示意图如图2所示。

2 软件系统设计

2.1 软件架构

图2 多点触控装置硬件系统示意图

本设计将多点触感图像识别跟踪系统的软件分为硬件抽象层、变换层、解析层和Widget层,如图3所示。硬件抽象层用于接收传感器采集到的原始数据,通过红外摄像头采集原始数据,将红外摄像头采集到的图像进行图像校正、灰度变换、背景过滤、平滑去噪和分割目标等处理,从原始图像中得到目标点的位置,在进行触点检测、识别后,将跟踪目标的定位信息发送给变换层;变换层把得到的目标定位信息经过TUIO编码转换为系统坐标;解析层获取由变换层传递的坐标信息,进行TUIO解码,转换为触摸事件和状态,合成运动轨迹,识别用户手势的含义,并触发相应的触摸事件;最后Widget层响应触摸事件和触摸状态,完成一次完整的人机交互[4]。

图3 系统软件模块架构框图

2.2 软件各模块功能

1)摄像头的标定。摄像机标定是将触点的物理坐标转换为相机成像图像坐标的关键步骤,它的目的是确定三维物体的空间坐标系到摄像机图像坐标系的映射关系,其中包括摄像机成像系统内外几何及光学参数的标定和两个或多个摄像机之间相对位置关系的标定。由于本装置仅使用单摄像头,因此只需确定相机的内部和外部参数即可。

为了便于系统实现并保证较高的灵活性,本装置采用基于张正友标定法的手动标定方法,使用的标定棋盘图[5]如图4所示。

图4 手动标定背景定位基准图

装置可以使用OPENCV自带的摄像机标定示例程序,该程序位于“OpenCVsamplesc目录下的calibration.cpp”,程序的输入支持直接从USB摄像机读取图片标定,或者从已经存放于计算机上的图片进行标定。根据本装置选用亚克力板的大小,决定选取9个坐标点定位,使用者根据提示,在屏幕上指定位置按下,直至获取9个定位点的坐标完成标定。通过摄像机坐标与图像坐标的匹配变换,寻找需要的单应性矩阵(Homography),计算单应性矩阵,即可求得投影图像坐标和摄像头图像坐标间的对应关系。检测流程如图5所示。

图5 手动标定检测流程图

2)触点识别。触点识别主要包括触点的图像预处理、边缘检测及轮廓提取,流程如图6所示。

图6 触点识别流程图

(1)触点的初步检测。经过上面的图像标定后,对9个区域的光斑区域进行触点检测,符合条件的光斑被识别为触点,达不到亮度、面积要求的斑点被排除,符合要求的区域被检测为触点对象。

本系统采用基于帧差分的背景消除法。先将背景图像予以滤除,否则大量的计算会使CPU严重超负。由于非红外光几乎都被过滤掉,所以大部分的背景就被硬件删除了,为了获得触点的红外图像,捕捉一个静态的背景图像会删除几乎所有的环境光,这个背景图像会减去其后所有的帧,剩下的这些帧将作为阈值传递给系统,剩下的突起点就是要捕捉的对象,称之为“触点”[6]。

(2)触点的边缘检测。为了准确地识别触点的位置和面积,需要使用边缘检测算法确认并定位。要实现图像的边缘检测,要用离散化梯度逼近函数,根据二维灰度矩阵梯度向量来寻找图像灰度矩阵的灰度跃变位置,然后在图像中将这些位置的点连起来,就构成了所谓的图像边缘。

在实际情况中,理想的灰度阶跃及其线条边缘图像是很少见到的,同时大多数的传感器件具有低频滤波特性,这样会使得阶跃边缘变为斜坡性边缘,其中的强度变化不是瞬间的,而是跨越了一定的距离,因此在边缘检测中首先要进行的是滤波。

本系统采用Canny算法,通过CCV编程实现,系统抗噪性能较好,去噪能力强,但对边缘的过度平滑会造成定位精度降低,精度在可允许范围内。Canny算法流程如图7所示。

图7 边缘检测Canny算法流程图

(3)触点的轮廓提取。在边缘检测后,最后进行触点区域的图像轮廓提取,可以通过OPENCV编写程序实现。轮廓提取的算法非常简单,就是掏空内部点,即:若原图中有一点为黑,且它的8个相邻点都是黑色时(此时该点是内部点),则将该点删除。这里处理的虽然是二值图,但实际上是256级灰度图,不过只用到了0和255两种颜色。

至此,触点的检测工作完成,接下来可以进行触点追踪。

3)触点追踪。由于要进行多触点的跟踪,需确定每个目标的特征、位置、运动方向、速度等信息,对于已经得到的二值图像,采取识别目标特征的方法是不合适的,由于多触点的追踪对实时性要求较高,本系统追踪触点不超过5个,因此选用近年来新研究的CamShift算法。

CamShift算法,即“Continuously Apative Mean-Shift”算法,是一种运动跟踪算法,它主要通过视频图像中运动物体的颜色信息来达到跟踪的目的。利用目标的颜色特征在图像中找到运动目标的位置和大小,在下一帧中,用目标当前的位置和大小初始化搜索窗口,重复这个过程就可以实现对目标的连续跟踪。在每次搜寻前,将搜索窗口的初始值设置为运动目标当前的位置和大小,由于搜索窗口就在运动目标可能出现的区域附近进行搜寻,这样即可节省大量的搜寻时间,使其具有良好的实时性。同时,CamShift算法是通过颜色匹配找到运动目标,在目标运动的过程中,颜色信息变化不大,所以它具有良好的鲁棒性[7-8]。CamShift算法流程如图8所示。

图8 触点跟踪CamShift算法流程图

4)手势识别。使用者与计算机进行交互操作需要通过定义触摸手势来完成,经过之前一系列的步骤,系统提取出Blob,进行跟踪后,记录Blob的运动轨迹,并进行分析,同定义的手势进行比较,并返回相应的处理操作,通过Widget层完成与用户的交互。

手势被定义为在两点之间的动作,手势的识别过程包括3个阶段:意图检测、手势划分、命令映射。本装置使用OPENCV中的内置库代码完成手势识别功能,实现放缩、旋转、平移、压感等操作。

(1)样本采集:初始化摄像头,然后通过逐帧图像进行肤色检测,然后将检测出的样本保存到图像文件中。

(2)样本训练:运用样本采集到的图像样本进行训练,提示训练成功。

(3)手势识别:从摄像头采集图片进行手势识别,首先用一定大小的矩形模糊地定位到手势大概区域,然后进行识别,并把识别的结果显示在窗口上。

(4)命令手势:从摄像头中取得图像并进行手势命令的识别,识别的依据是通过最初坐标与最终坐标的相对值进行的,对一个序列进行识别。

(5)手势定位:把要识别的图片输入到数据中,然后检测出手的位置。再用矩形对此图片的手势进行定位,并对此手势大概表达的含义(即要表达哪个数字)进行识别,识别是基于已有的图像进行匹配,最后输出结果。

Widget层通过TUIO协议向上层客户端发送事件,完成用户的反馈。

3 系统测试及改进

利用本系统架构搭建的测试平台,使用Raspberry Pi和X86主机进行交叉编译,将代码编译后在目标系统执行,经测试发现,嵌入式平台运行稳定,多点触摸跟踪识别率较高,能正确识别手指,但定位精度有待改进,这与本系统采用的9点手动标定有关,适当增加标定点数可提高定位精度。软件功能准确,能够实现对触点的可靠跟踪,嵌入式平台运算速度可满足5点以下追踪需求。测试图如图9所示。

图9 CCV客户端手指追踪测试图(截图)

同时发现,环境光对追踪速度和准确度影响较大,需要环境光照相对稳定的空间,后续将采取加厚兼容层并改变触点亮度和面积阈值的方法予以改进。

综上所述,本系统的软硬件都较好地实现了光学多点触感图像识别跟踪的要求,系统成本低、性能稳定、可靠性高,达到了预期效果。后续将完善手势模型、增加种类及增强手势的识别,便于用户使用。

[1]HAN J Y.Low cost multi-touch sensing through frustrated total internal reflection[C]//Proc.the 18th Annual ACM Symposium on User Interface Software and Technology.Seattle,USA:ACM Press,2005:115-118.

[2]Natural user interface[EB/OL].[2013-08-10].http://nuigroup.com/go/lite.

[3]BUXTON B.Sketching user experiences:getting the design right and the right design[M].San Francisco:Margan Kaufmann,2007.

[4]陈拴拴,廖海洋.光学多点触摸交互式桌面系统的设计与实现[EB/OL].[2013-08-10].http://www.paper.edu.cn/releasepaper/content/2012 04-125.

[5]马颂德,张正友.计算机视觉—理论与算法基础[M].北京:科学出版社,1998.

[6]李刚,邱尚斌,林凌,等.基于背景差法和帧间差法的运动目标检测方法[J].仪器仪表学报,2006,27(8):961-964.

[7]CANNY J.A computational App roach to edge detection[J].IEEE Trans.PAM I,1986,8(6):679-698.

[8]Wikipedia.Camshift[EB/OL].[2013-08-10].http://fr.wikipedia.org/wiki/Camshift.

猜你喜欢

亚克力触点手势
中国人民大学新闻学院教授 林升栋:将消费者触点思维融入广告媒体计划
无穷远有多远
亚克力材料雕塑创作研究
航空电转换器的损伤原因分析及修理
挑战!神秘手势
接触器辅助触点接触电阻产生原因分析
会走路的杯子
V字手势的由来
胜利的手势
探究水体巨型亚克力玻璃安装施工技术