多点触摸毕业设计(含外文翻译)_第1页
多点触摸毕业设计(含外文翻译)_第2页
多点触摸毕业设计(含外文翻译)_第3页
多点触摸毕业设计(含外文翻译)_第4页
多点触摸毕业设计(含外文翻译)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要近年来,随着用户对人机交互的友好性和自然性的需求不断增加,兴起了一种新的人机交互技术多点触摸技术。多点触摸技术超越了传统人机交互技术中使用的鼠标和键盘,实现了用户通过手指在传统应用平台上的动作直接与电脑进行对话。它的主要优点是,能够实现同一时间的多用户交互,多触点交互,并且能够对交互的对象进行识别。多点触摸技术较传统的单一触点交互技术更灵活,更友好,更具自然性。本文首先根据GUI Group提供的多点触摸系统开源程序代码完成了多点触摸人机交互系统底层软件的剖析。软件功能主要分为四大部分:图像预处理、触摸点识别、运动跟踪、触点信息的传输。之后在图像预处理步骤中的“图像分割”部分,本文采用了一

2、种基于大津法(OSTU)的自适应阈值分割方法,使系统能够在一定程度上自动完成在变光照条件下由灰度图像到二值图像的转化。其次,考虑到原有特征点跟踪方法算法“KNN(K最近邻分类算法)”的跟踪滞后性这一不足,本文基于“最小距离优先算法”改进出了一种适用于多点触摸系统的更高效的特征点跟踪方法“最小距离触点跟踪算法”,此方法能够更快速的完成对特征点的识别和跟踪。最后,手势识别一直是多点触摸技术研究的主要内容,本文定义了几种基本的手势,并参考相关资料利用ActionScript 3.0编程实现了多点触摸技术的简单应用。实验证明,使用本论文设计的多点触摸底层软件能够正确的检测并跟踪到触点,完成手

3、势的识别和多点触摸的简单应用;并且利用本文改进的“最小距离触点跟踪算法”可以很好的提高触点跟踪速率,特征点跟踪滞后时间缩短。关键词:多点触摸;特征点跟踪;最小距离优先算法;手势定义Study on Methods of Multi-touch Human-computer Interaction Based on Optical Induction AbstractIn recent years, since users demands on nature and friend attributes of computers are increasing, a new human-comput

4、er interaction technology called multi-touch human-computer interaction technology has been brought up.Multi-touch human-computer interaction technology exceeds the mouse and the keyboard used in traditional ways, making it possible for users direct communication with computers through the movements

5、 and gestures of fingers on the traditional application interface. Its main advantages are that it supports multi-consumers and multi-points direct interaction at the same time. Whats more, multi-point touch is able todistinguish interactive object identification. Compared with traditional single-po

6、int touch, it is more flexible, friendlier and more natural for users to use.Firstly, this paper completes the analysis of the ground software of multi-point touch system based on the open source code of multi-point touch system provided by GUI Group. The function of the software is mainly divided i

7、nto four parts: imagepre-processing, the recognition of blobs, movement tracking and the transmission of blob information. In the “image segmentation” step of “imagepre-processing”, this paper uses a self-adaptive threshold method based on the universal OSTU algorithm and makes a contribution to imp

8、rove the effect of the binary image transformed from the grey-scale image in different light condition.Secondly, taking into consideration the disadvantage of track delay caused by original blob tracking algorithm “KNN”, this paper works out a more efficient tracking method named “Nearest Distance B

9、lob Tracking” algorithm based on the universal “Nearest distance Foremost” algorithm. This improved algorithm is capable to complete the blob tracking process more quickly and cut down the delay time. Finally, as the gesture recognition has always been the main research content of multi-point touch

10、technology,this paper gives definitions of several basic gesture models and accomplishes the simple application of multi-point touch using ActionScript 3.0 based on related material. The experiment proves that the ground software of the multi-point touch system designed by this paper can correctly d

11、etect and track points, realizing the identification of gestures and basic multi-point touch application. Meanwhile, the “Nearest Distance Blob Tracking” algorithm improved by this paper succeeds in enhancing the tracking efficiency and the delay time of tracking is obviously decreased. Key Words:Mu

12、lti-touch; Blob tracking; “Nearest Distance Foremost” algorithm; Self-adaptive Threshold; Gesture models目录摘要IAbstractII引言31绪论31.1多点触摸人机交互技术概述31.2多点触摸技术研究背景31.3研究概况3国外研究概况3国内研究概况31.4课题研究意义32多点触摸系统底层软件的架构分析32.1多点触摸系统总体模块32.2图像预处理3灰度变换3平滑去噪3去除背景3图像分割32.3触摸点识别3提取触摸点轮廓3触摸点几何特征数据的获取32.4触摸点的跟踪32.5信息传输33自适应

13、阈值33.1大津法33.2自适应阈值主要代码33.3自适应阈值仿真结果34最小距离触点跟踪法34.1KNN算法原理34.1.1 KNN算法的核心程序34.2 KNN算法的不足34.3 最小距离触点跟踪法34.3.1 thresh的意义与确定3最小距离优先算法触点的状态与对应事件的确定3最小距离触点跟踪算法实现的基本步骤3最小距离触点跟踪法的核心代码34.4 最小距离触点算法与KNN算法的比较35简单的手势识别35.1简单的手势定义35.2 移动动作35.3 放大缩小动作35.4 多点触摸应用3结论3参考文献3附录 A 翻译原文3附录 B 翻译的中文3附录 C 最小距离触点追踪程序代码3附录 D

14、 自适应阈值程序代码3在学取得成果3致谢3引言随着科技的发展,计算机已逐渐成为人们工作、生活和休闲娱乐中不可缺少的一部分。与此同时,怎样使机器与人之间的交互更自然,更和谐也成为了当今研究的热点。多点触摸技术作为近几十年来一种新兴的人机交互模式1,完全抛弃了传统的外部硬件交互设备(如鼠标键盘),而是通过人的手指与触摸屏的接触动作向计算机传达特定的信息(如拖拽,点击、放大缩小等)。它能够允许多用户、多点对同一虚拟界面的同时访问,这种交互方式符合人的行为学特点,达到了自然和谐的境界,增强了用户体验,是一次人机交互技术的革命。随着国内外研究工作者的不断深入研究,多点触摸技术已经广为人们所知。并且已经有

15、很多研究机构、企业等有了自己的多点触摸商业产品,如三菱电子的Diamond Touch2,微软的Microsoft surface3等。鉴于多点触摸技术的突出优势,本文基于GUI Group提供的开源多点触摸程序代码,完成了对一个多点触摸系统底层软件的分析与设计。程序能够实现图像滤波、图像分割、目标跟踪等功能从而获取触点信息,并通过TUIO协议将图像信息传递给上层软件,实现多点触摸的应用。在图像分割步骤中,本文使用了一种基于大津法的自适应阈值分割方法,使灰度图像到二值图像的变换效果有了一定的提高。此外,对触点快速准确的跟踪是手势识别的先决条件,也是多点触摸底层软件中非常关键的一环。为了解决多点

16、触摸开源代码(Community Core Vision)中所采用的“KNN”跟踪算法产生的跟踪滞后问题,本文基于“最小距离优先法”的原理,编写了适用于多点触摸系统的“最小距离触点跟踪算法”程序进行触点跟踪,能够在一定程度上提高跟踪效率并减少跟踪滞后时间。1绪论1.1多点触摸人机交互技术概述触摸技术对人们并不陌生,例如日常生活中经常能接触到的触摸技术有银行取款机的触摸屏,医院或图书馆大厅的触控技术电脑,支出触摸屏的手机、MP4、数码相机等。但是这些生活中经常用到的触摸屏大多是单点触摸,也就是说只能识别和支持每次一个手指的触孔、点击。若果有两个以上的点被触碰,系统就不会做出正确的响应。而多点触摸

17、人机交互技术把任务分解成两个部分,一是同时采集多点信号,二是对每路信号的意义进行判断,也就是进行手势的识别,从而实现对多用户多手指在同一时刻的点击碰触动作做出正确的反应。最典型的多点触摸应用便是时下苹果公司成产的iPhone和iPod4。多点触摸技术作为近年来一项新兴的技术,改变了人与信息间的交互方式,增强了用户体验,达到了自然和谐的境界,与人的认知特点和行为学特点相吻合。1.2多点触摸技术研究背景人机交互技术(Human-Computer Interaction Techniques)5是指通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术。它是计算机用户界面设计中的重要内容之一

18、,并与认知学、心理学、人机工程学等学科领域有密切的联系6。人机交互和计算机用户界面刚刚走过基于字符方式的命令语言式界面,目前正处于图形用户界面时代。但是,计算机科学家并不满足于这种现状,他们正积极探索新型风格的人机交互技术。未来人机交互技术的发展趋势是追求多维信息空间和“基于自然交互方式的”的人机交互风格7。图1.1人机交互的媒介物如图1.1所示,随着社会信息化产业的不断发展,人机交互的媒介物在不断发生改变,从鼠标、键盘、游戏手柄、遥控器等与电脑交互到目前流行的多点触控技术支持用户使用手指、手势等直接与电脑进行交互89。1.3研究概况国外研究概况西方国家从上世纪八十年代就开始对多点触摸技术进行

19、研究了。1983年就曾有科学家将键盘和触控板联系在一起同时操作10,而且在同年贝尔实验室11第一篇关于多点触摸技术的论文,为该技术的兴起打下了基础。1984年,人机交互界面科学家Bill Buxton从人类双手本能的生理功能着手,研究界面操作的实际可行性,最终研发出了一套可以对图像进行操作的多点触摸系统。同年,微软公司也正式开始对多点触控技术进行研究。1991年,Pierre Wellner自主研发出了一张“数码桌子”(Digital Desk)1213发表了相应的论文,详细地介绍了如何采用多个手指和不同的姿势进行交互。1992年,Sun Microsystems14一段假想12年后将出现的新

20、科技的科幻片,其中就有类似多点触摸的技术,这对于该技术的发展也具有高度的启发性。1999年,Alias Wavefront首先推出了一款叫做Portfolio Wall的产品。他采用了大尺寸的触控屏幕,配合滑动与点选择两种手势操作,就能够及时浏览大量的图像与影片。它的概念和操作都很简单,但在当时已经是最接近商品化的研究方案之一了。2001年,多点触摸技术有了巨大进展。在多点触摸技术发展的历程中,除了一些针对图形界面开发的机构依托于高等教育机构开展研究之外,企业和组织等对其界面的交互设计的研究投入也是不容忽视的。其中比较有名的研究机构当属由日本三菱集团投资的三菱电子研究实验室(MERL:Mits

21、ubishi ElectricResearch Laboratories)。该实验室专门针对多点触摸的人机交互界面的研究持续了许多年,而且不断地进行着走产品化的道路。其本身所拥有的几项原型产品专利,也为后来的许多产品设计师、界面设计师、交互设计师等提供了可供参考的技术模式。三菱电子实验室为了解决多人同时操作计算机时的互动问题,进行了一项称为DiamondTouch计划,并最终实现了,该平台支持多个人同时操作并且能够识别每个人的身份。如下图1.2所示。图1.2 Diamond Touch2002年,好莱坞也注意到了这个科技新动向,在少数派报告(Minority Report)这部电影中,主人公用

22、手指控制虚拟屏,如下图1.3所示。“多点触摸”成为了重要的科幻桥段,为多点触摸技术造势不少。图1.3Minority Report2006年,是多点触摸技术发展最重要的一年。Jefferson Y. Han于同年2月在美国TED4大会上向全世界演示了他们的多点触摸装置的实际操作和应用,如下图1.4所示。这也是之后多点触摸产品席卷全球的风潮的开始。这次里程碑式的实际演示,标志着研发重心从硬件技术转向了软件应用。图1.4Jefferson Y. Han对多点触摸技术的演示国内研究概况和西方发达国家比较,国内大部分研究机构、专业院校和高端企业对多点触摸技术的研究投入相对有限。虽然进入21世纪之后,部

23、分发达城市,如北京、广州、上海和深圳等的高等院校已投入了相当规模的资金用于多点触摸技术的研发和平台的搭建,但多点触摸技术的核心仍在西方国家,国内缺少一定的人才和资金,而且目前国内在这方面的市场没有被培养起来,仍然很不完善。但是近几年,随着政府开展的大力扶持科技创新的计划以及多点触摸技术研究的专门论坛的兴起,使开发人员能够更方便的获取行业的最新发展信息。例如北京优爱交互科技有限公司15(HCI中国),是国内最大的人机交互设备供应商,也是国内最早投入研究多点触摸技术并且对该技术产品出售的自主性企业。目前该公司包含有由各种硬件技术构建的多点触摸设备(交互桌、交互墙以及支持不同触摸数量点的触摸薄屏),

24、如下图1.5所示是他们研发的多点触摸吧台。图1.5多点触摸吧台所以,未来将会有更多的人才被吸引到多点触摸交互界面设计的领域中,国内的发展前景将是非常光明的。1.4课题研究意义多点触摸技术作为一种新型的人机交互方式,打破了传统的单点触摸屏技术只能同时响应一个触点、没有从本质上改变交互方式、只是用手指点击代替了鼠标操作、缺乏智能性以及缺少“以用户为中心”的交互自然性和高效性的僵局,让双手自由交互成为了可能16。多点触控技术利用光学和材料学技术,构建了一个能同时检测多个触点的触控平台,使得用户能够运用多个手指同时操作并实现基于手势的人机交互,而且可以让多个用户同时操作实现基于协同手势的交互17。近几

25、年,自从多点触摸技术的出现以及硬件技术的发展,构建一套廉价的多点触摸平台也变得相对简单。因此这种以人为中心的自然高效的人机交互技术已经在众多领域中得到了推崇18,如个人便携式信息产品、信息家电、公共信息查询、电子游戏、教育、展示、指挥决策中心等。鼠标和图形用户界面是电脑大规模普及的重要原因。但是传统的人机交互是间接的并且是需要识别的一种模式。而建立在多点触摸上的人机交互是自然直观的,流畅的且令人回味的。随着计算机在国民经济各个领域应用深度和广度的全面推进,它与我们日常生活的关系越来越紧密,从而使研究高效的人机交互方式成为必要。世界各国都将人机交互技术作为重点研究的一项关键技术,美国总统信息技术

26、顾问委员会的“21世纪的信息技术报告”中将“人机交互和信息管理”列为新世纪4项重点发展的信息技术(还包括软件、可伸缩信息基础设施、高端计算)之一,它的目标是研制“能听、能说、能理解人类语言的计算机”,并指出“现在美国 40 %以上的家庭拥有计算机,然而,对于大多数美国人来说,计算机仍然难以使用。调查表明,由于不理解计算机正在做什么,用户浪费了12%以上的上机时间。更好的人机交互将使计算机易于使用,并使使用者更愉快,因而可提高生产率。考虑到现在经常使用计算机的人数多,研制这种计算机的回报将非常巨大。微软亚洲研究院从成立一开始,就将新一代人机交互技术作为其主要研究方向。我国国家自然科学基金会、国家

27、重点基础研究发展计划(973)、国家高技术研究发展计划(863)等项目指南中,均将先进的人机交互、虚拟现实技术列为予以特别关注的资助项目19。综上所述,本课题对于多点触摸人机交互技术触摸点检测以及简单手势定义的研究,无论从人机交互技术的发展趋势还是从多点触摸的应用前景上,都具有非常重要的意义。2多点触摸系统底层软件的架构分析本文主要的研究内容是对多点触摸系统的底层软件进行分析,改进与实现,并完成基本的手势定义与编程从而实现多点触摸的应用。2.1多点触摸系统总体模块多点触摸系统有两个关键部分组成:硬件系统与软件算法。硬件系统由光学传感器、红外光源和显示设备组成。硬件系统主要完成触点信号的发生和触

28、点信号的同时采集。软件系统完成触点信号的意义判断,也就是触点信号处理与触点手势识别,并且基于上述识别结果实现与上层软件的沟通和交互应用。系统的总体模块图如图2.1所示。摄像机捕捉的图像图像预处理运动跟踪 信息传输 手势识别用户交互界面图2.1多点触摸系统总体模块图从上面的系统总体模块图2.1可以看出整个系统的软件部分由五个模块组成(用方框标出):图像处理、运动跟踪、信息传输、手势识别和交互界面。其中图像处理、运动跟踪和信息传输部分属于底层软件的内容,而手势识别与交互界面属于上层软件的内容。每个模块都有各自的功能,概括介绍如下:图像预处理模块:对红外摄像机捕捉到的图像进行灰度变换、平滑去噪、去处

29、背景和图像分割等处理,这样就把需要处理的图像从原始画面中分离出来。运动跟踪模块:通过对一系列连续帧的计算和分析,实现对触摸点的跟踪,并获得触摸点的运动状态信息,如位置,加速度等。运动跟踪模块是软件系统中非常重要的一环。信息传输模块:底层软件完成了触点检测与跟踪后,利用TUIO传输协议实现与上层软件的通信,向上层软件发送触点信息数据包以及诸如按下、移动、释放等基本操作事件。手势识别模块:上层软件得到了触摸点的运动状态之后,需要根据这些信息来判断用户在触摸屏上的进行了哪些操作动作,例如点击,旋转等。交互界面模块:显示交互的最终结果,例如图片的移动,放大缩小,点击按钮的变化等视觉效果。2.2图像预处

30、理对摄像机拍摄到的图像进行的第一步运算就是图像预处理。图像预处理简单地说就是利用计算机对图像进行分析,从而获得所需要的图像效果。在多点触摸系统中,由于图像传感器本身的噪声以及环境光源的干扰,摄像机采集到的图像除了想要的触点信息之外,还有很多噪点和无用的背景,这会对接下来触点检测和手势识别有很大的影响。图像预处理的目的就是对摄像机采集到的图像进行去除噪声和过滤,得到一幅清晰的易于处理的图像,如图2.2。图像预处理有四个主要步骤:灰度变换、平滑去噪、去除背景、图像分割。图2.2从灰度图像到经过所有图像预处理步骤后的图像灰度变换在灰度处理中,要将红外摄像机拍摄的原始彩色图像转换为灰度图像(图2.3)

31、,这个过程叫做灰度变换。进行灰度变化有两个重要原因:第一,去掉图片中没有作用的彩色信息,减少处理数据量。彩色图像信息对于后面的触点检测和分析没有任何的帮助,而且对于数字图像,彩色图像占用的存储空间要比灰度图像大得多,所以图像预处理的第一个环节就是要将彩色图像转换为灰度图像,以保证接下去程序的效率。第二,简化算法。在下面的处理中,分析轮廓和分析形状的算法对于彩色图像的处理要比对于灰度图像的处理复杂得多,所以转化成灰度图像对于简化算法有很大帮助。图2.3灰度图像通过查阅资料将彩色图像转变成灰度图像有一个通用的心理学公式(公式2.1): (2.1)公式中的R、G、B分别代表红、绿、蓝,将0-255的

32、数值按比例对应转换为,公式中的Gray就是计算出的各个像素的灰度值。本文利用OpenCV(Open Source Computer Vision Library开源计算机视觉库)中的函数来实现这一变换:cvCvtColor( mom.getCvImage(), cvImage, CV_RGB2GRAY );其中mom.getCvImage()是输入的源浮点图像即原始图像,cvImage是经过灰度变换后的输出图像,CV_RGB2GRAY表式将彩色图像转化为灰度图像。平滑去噪经过灰度变换之后,多点触摸系统会根据一个设置好的初始阈值将灰度图像转化为二值图像(具体的二值化图像变换过程见),如图2.4。

33、可以看到原始的彩色图像变成了二值图像,不必要的色彩信息被去掉了,但这样还是不能达到要求,因为拍摄到的图像中还存在很多噪声,这是单单进行灰度变换和简单的二值图像变换所不能剔除的。所以在图像与处理步骤中,还有一个很重要的环节就是进行平滑处理。图2.4灰度图像经初始阈值转化成二值图像对图像的平滑操作可以去掉图像噪声,但同时也会使一些重要图像信息的边缘变得模糊,这对后面的轮廓分析会有比较大的影响。所以要选用一种合适的平滑算法,让去掉噪声的同时最大程度的保留图像有用信息。GUI Group采用Open Source Computer Vision Library(简称OpenCV)函数库中的平滑函数来进

34、行平滑变换:cvSmooth( cvImage, cvImageTemp, CV_GAUSSIAN ,value );这句函数的功能是将输入图像cvImage经过高斯模糊(CV_GAUSSIAN表示选用高斯模糊方法)后储存到图像cvImageTemp中,value(在多点触摸硬件平台上手动调节“smooth”的参数值)表示对图像进行核大小为 value2的高斯卷积。高斯模糊方法的中心思想是建立的一个数学模型,通过这个模型来将图像数据进行能量转化,能量低的就排除掉,噪声就是属于低能量部分。经过平滑去噪的处理后,图像中的噪声就被去掉(如图2.5所示),下面就可以进行背景的去除。图2.5二值图像经平

35、滑去噪操作后的图像去除背景在多点触摸系统中,由于硬件上的因素,很难做到屏幕上一点干扰都没有,但是这种干扰和上面平滑去噪操作中提到的图像噪点是不同的。平滑去噪中的图像噪点是由于数字摄像机内部的电气特性和AV线传输信号的过程中叠加在图像上的,通常都是非常小的噪声点。而这里所提到的干扰是多点触摸系统中由于硬件工艺所产生的问题,如硬件设备金属材料的反光投影会经常出现在图像中形成干扰。另外,还有室内室外某些红外光线的干扰。这些都会被摄像机捕捉在画面中,在平滑去噪的操作中不能够将这些干扰完全去掉,但这些干扰会对后面的分析产生很大的影响。图2.6 平滑去噪后的图像图2.7经过去除背景后的图像如图2.6,图中

36、除了手的图像之外还有屏幕边缘以及环境中的噪点图像。将手从触摸屏拿下来,后面的干扰图像还是会存在并基本保持不变。所以当把手从触摸屏拿下来之后,使用清屏函数,屏幕被清零了,这样背景中的固定干扰也被移除了。这时再把手放上去,干扰就明显少多了(如图2.7)。图像分割经过上述图像预处理的前三个步骤:灰度转换,平滑去噪和背景去除,实现了将原始图像中的不必要信息去掉,并且将有用的信息增强。在这些步骤之后,就要对图像进行分割,图像分割的主要目标是将图像中要处理的部分与从背景图像等无用信息中分割出来如图2.8。图2.8背景去除后的图像再经过图像分割后得到的图像在经过前三个处理步骤之后,可以看到,手指的图像已经可

37、以比较清楚的和其他部分区分开了,下面要做的就是将手指部分从图像中分割出来。图像分割的方法很多,根据实际的问题,选用比较简单的一种方法:阈值法(threshold)。阈值法就是将图像中像素灰度值大于某个设定值的部分全部设为255,而剩余部分全部设为0。这样一幅灰度图就转变为了一幅二值图像。也就是说一幅图像上只有黑和白两部分,含有信息的部分(手指)就标记为白色,没有信息的部分就标记为黑色,这样也就把手指图像部分分割出来了。前面节已提到过,在灰度变换后,系统已经根据一个初始的阈值将灰度图像转化成二值图像,但那时的二值图像含有很多噪声所以只是粗糙的变化(如图2.4,这里再次引用)。现在要进行的是更精确

38、的二值图像的转化。此过程利用OpenCV函数来实现:cvThreshold( cvImage, cvImageTemp, value, 255, CV_THRESH_BINARY );cvAdaptiveThreshold( cvImage, cvImageTemp, 255, adaptive_method,threshold_type, blockSize, offset);第一个函数是固定阈值转换函数,它的功能是将输入的灰度图像转化成二值图像。其中cvImage为输入图像,cvImageTemp为输出图像,value(可手动调整)为设置的阈值,CV_THRESH_BINARY为阈值类型,

39、255为使用CV_THRESH_BINARY的灰度最大值。变化原则为当cvImage图像中某部分的灰度值大于value时,将这部分图像的灰度值设为255(白);当cvImage图像中某部分的灰度值小于等于value时,将这部分图像的灰度值设为0(黑)。第二个函数为自适应阈值调整函数,它的功能是将输入的灰度图像按照给定的不同参数转化成对应的二值图像。其中cvImage为输入图像,cvImageTemp为输出图像,adaptive_method是自适应阈值算法,255是采用adaptive_method时的灰度最大值,threshold_type为阈值类型,blockSize(可手动调整)是用来计

40、算阈值的像素邻域大小,offset是与阈值算法有关的参数。简单地说,当输入的blockSize发生变化时,函数会根据新的blockSize值计算每个像素点的新阈值TI,当像素点的实际灰度值大于TI时,此像素点的灰度值将被设为255;否则此像素点的灰度值将被设为0。通过图像的分割,可以清晰的看到几个白点(手指)出现在画面上(如图2.8)。在第三节,本文将讨论一种基于大津法的自适应阈值方法,可以大大简化图像预处理的过程。2.3触摸点识别虽然经过图像预处理步骤之后分割出了清晰的手指图案,但光这样是没有办法从中提取出有效的信息的,所以,接下来的两个步骤是:l,对图像中所有图形提取出其外轮廓。2,找到每

41、个图形轮廓的外切矩形,从而计算手指触摸点的信息,如大小,位置,倾斜角的等等。提取触摸点轮廓图2.9提取触摸点轮廓(红色为轮廓)为了得到触点的数据信息,需要对整个图像进行计算分析。分析方法是通过区域轮廓将不同的图形分隔开,如图2.9,轮廓用红色标出。找到了各个图形的轮廓之后,便可以计算出它们的面积,中心等几何特征。提取图形轮廓的方法很多,有些比较复杂。参照了Intel公司一套关于图像处理和计算机视觉方面的开源函数库OpenCV,里面包含了提取图像轮廓算法的函数。主要代码如下:/轮廓提取函数,用来提出特征点的轮廓cvFindContours( inputCopy.getCvImage(), con

42、tour_storage, &contour_list,sizeof(CvContour), retrieve_mode, bUseApproximation ? CV_CHAIN_APPROX_SIMPLE : CV_CHAIN_APPROX_NONE );/将提取的轮廓存放到链表中CvSeq* contour_ptr = contour_list;/对提取的轮廓大小进行筛选,保存符合要求的轮廓while( (contour_ptr != NULL) ) float area = fabs( cvContourArea(contour_ptr, CV_WHOLE_SEQ) );if(

43、 (area > minArea) && (area < maxArea) ) cvSeqBlobs.push_back(contour_ptr);contour_ptr = contour_ptr->h_next;通过上面的代码和cvFindContours函数的使用,便可以找到图像中所有图形的轮廓,将轮廓信息存在cont_list这个链表结构中,接下来就可以对这些轮廓进行分析。值得注意的是,找到轮廓后并没有对他们立即进行处理而是先进行了筛选。程序中把面积像素小于minArea和大于maxArea的轮廓剔除,其中minArea和maxArea是定义的轮廓面积

44、的最小值和最大值。这样做的目的是去掉一些前面没有处理掉的噪声信号,为下面的进一步处理作保证。观察图2.9,触点的轮廓都是一些不太规则的多边形,要想从这些不规则的多边形中提取触点的几何特征有些困难,但是可以通过找到这些轮廓的外切矩形来获得每个点的几何信息。对于规则的矩形进行处理分析就变得容易多了。同样,利用了OpenCV中封装好的函数cvMinAreaRect2()。命令语句如下:box = cvMinAreaRect2( cvSeqBlobsi );其中box就是每个轮廓的外切矩形,下图2.10为找到轮廓外切矩形之后的图像,外切矩形轮廓用绿色标出。2.10获取轮廓的外切矩形(绿色标出)触摸点几

45、何特征数据的获取触点的几何信息可以通过将每个触点的轮廓的外切矩形来获得。需要获取的触点信息有:外切矩形轮廓中心,外切矩形宽度、高度和面积,外切矩形倾斜角度,触点中心坐标等。这些几何数据是下面进行手势识别的基础。主要代码如下:blobsi.angleBoundingRect.x = box.center.x; /定义外界矩形中心横坐标xblobsi.angleBoundingRect.y = box.center.y; /定义外接矩形中心纵坐标yblobsi.angleBoundingRect.width = box.size.height;/矩形边界的宽度=外接矩形的高度blobsi.angl

46、eBoundingRect.height = box.size.width;/矩形边界的高度=外接矩形的宽度blobsi.angle = box.angle;/倾斜角度blobsi.area = fabs(area);/触点面积blobsi.length = cvArcLength(cvSeqBlobsi);/触点轮廓的长度blobsi.centroid.x= (int) (myMoments->m10 / myMoments->m00);/触点的中心横坐标blobsi.centroid.y = (int) (myMoments->m01 / myMoments->m0

47、0);/触点中心的纵坐标2.4触摸点的跟踪在多点触摸系统中对触摸点的运动跟踪是非常重要的一个步骤,能不能正确的对触摸点进行跟踪,是实现触摸动作判断的前提条件。要对触摸点进行跟踪,分为两个步骤:识别和跟踪。识别就是要把触摸点从环境背景以及噪声信号等中识别出来,并且要把每个触摸点同其他的触摸点区分开来。识别在前面触摸点识别的步骤中已经完成。跟踪就是要在一段时间内的序列帧中找到指定触摸点的运动轨迹,并且能够计算该触摸点的运动状态,如移动的方向和速度等。在多点触摸系统中触点的跟踪是非常关键的一个步骤,因为能否正确的跟踪接触点是对触点动作判断的先决条件。运动跟踪模块的总体流程如下图2.11所示。原始图像

48、图像预处理触摸点识别触摸点跟踪运动信息图2.11 触摸点运动跟踪流程图经过触摸点跟踪之后,就可以建立新一帧出现的触点和上一帧出现的触点之间的联系并判断出触点的状态。本文有关跟踪算法的讨论与实现详见第三部分。2.5信息传输经过图像预处理,触摸点识别、运动跟踪三个步骤之后,将会获得触点的运动信息,如位置、加速度等,并且可以判断出触点的三个基本状态:消失的点、已存在的点和新出现的点;与之对应的三个基本事件为:弹起、移动和点击。需要注意的是这些工作的完成是在底层软件中实现的,而手势识别和交互界面是通过上层软件来执行的。所以要想完成多点触摸系统工作的整个过程,就需要建立底层软件和上层软件的通信连接,信息

49、传输模块就充当这一桥梁。本文使用TUIO协议将通过图像处理所获得的触点信息传递给上层的应用软件,实现多点触摸的应用。TUIO是一套简单且通用的,特别为满足可感知桌面用户界面需要所设计的协议,该协议是目前多点触摸技术底层软件和上层应用软件之间的标准通信协议。TUIO能够传递交互表面的抽象描述信息,包括触摸事件和触摸物体的状态。它把从跟踪应用程序如计算机视觉技术中得到的控制数据进行编码然后将其传送给具有解码这种协议能力的客户端。因为TUIO协议本身是基于OSC(Open Sound Control)的,所以TUIO协议可以看作是OSC数据的一种标准化实现,可以用于所有支持该协议的设备上。TUIO协

50、议定义了两类主要的消息,即set消息和alive消息。其中,set消息用于目标对象特定状态,如位置、姿态或其他任何可以识别状态的通讯;alive消息则用于通过系列的sessionID来标识当前目标对象。TUIO使用下面的格式来进行数据通讯:/tuio/profileNameset sessionIDparameterList/tuio/profileNamealivelist ofactive sessionIDs/tuio/profileNamefseq int32其中的profileName代表定义好的常用可感知用户界面配置,该配置定义了set消息中目标对象的状态数据格式,比如常用的2D

51、Profile:/tuio/2Dobj set s i x y a X Y A m r/tuio/2Dcur set s x y X Y m/tuio/2Dblb set s x y a w h f X Y A m r格式中每一位字母符号所代表的意义见表2.1TUIO协议格式说明。表2.1 TUIO协议格式说明sSession ID (temporary object ID)int32iClass ID (e.g. marker ID)int32x, y, z Positionfloat32, range 0.1a, b, c Anglefloat32, range 0.2PIw, h, d

52、Dimensionfloat32, range 0.1f, vArea, Volumefloat32, range 0.1X, Y ,Z Velocity vector (motion speed & direction)float32A, B, C Rotation velocity vector (rotation speed & direction)float32mMotion accelerationfloat32rRotation accelerationfloat32PFree parametertype defined by OSC message header3

53、自适应阈值虽然经过第二节阐述的图像预处理步骤后,手指的轮廓点已经比较清晰的出现在图像中。但是从灰度图像到最终的二值图像转化之间还需要平滑去噪,背景去除步骤,在这些步骤中需要人根据实际的条件实时调整参数的大小,使用起来并不是很方便。所以本文根据Ryan Dibble等人提出的“大津法”编写了自适应阈值程序,即不需要人工调整参数,系统可以在一定程度上自动完成在不同光照情况下由灰度图像到二值图像间的转化。3.1大津法大津法的主要思想如下:对于图像Image,记T为前景与背景的分割阈值,当图像某一部分的灰度值大于T时,将其划分为前景;当图像某一部分的灰度值小于等于T时,将其划分为背景。设背景点数占图像

54、比例为W1,背景的平均灰度为U1。图像的总平均灰度为:(3.1)其中i代表从0-255之间某一个灰度值,Pi 代表灰度值i所占整个图像灰度的概率。从最小灰度值到最大灰度值遍历T,当T使得值(3.2)最大时T即为分割的最佳阈值。对大津法可作如下理解:该式实际上就是类间方差值,阈值T分割出的前景和背景两部分构成整幅图像,背景灰度平均值U1,概率为W1,总均值为UT,根据方差的定义既是该式的分母。因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大,当部分目标错为背景或者部分背景分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。同时在这个公式中的分母加

55、入约束条件。根据数学的知识可以知道当W1越小时,分母的值越小,fangcha的值就越大。也就是说在类间方差最大的情况下,如果满足背景比例尽量大而前景比例尽量小,这时的分割效果最好,能够很好排除细小噪声的影响。3.2自适应阈值主要代码自适应阈值程序的主要代码如下:void otsu(IplImage* A, IplImage* B) /大津法函数long N = hei * wid; /图像总的像素int h256;double p256,u256,w256;for(int i = 0; i < 256; i+) hi = 0; pi = 0; ui = 0; wi = 0;for(int

56、 i2 = 0; i2 < hei; i2+) /计算图像灰度直方图for(int j = 0; j < wid; j+) for(int k = 0; k < 256; k+) if(uchar*)(A->imageData + A->widthStep*i2)j = k) hk+; for( int i3 = 0; i3 < 256; i3+) /计算每一灰度的概率 pi3 = hi3 / double(N);int T = 0;double uT,fangcha;double fangcha_max= 0;for(int k = 0; k < 256; k+) uT = 0; for(int i = 0; i <= k; i+) uk += i*pi; /计算背景平均灰度 wk += pi; /计算背景点所占整幅图像的概率 for(int i2 = 0; i2 < 256; i2+) uT += i2*pi2; fangcha = (uT*wk - uk)*(uT*wk - uk) / (wk*(1-wk); /计算fangcha大小 if(fangcha > fangcha_ma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论