基于手势识别的幻灯片控制系统的设计论文正文

上传人:仙*** 文档编号:28687394 上传时间:2021-09-07 格式:DOC 页数:50 大小:692KB
收藏 版权申诉 举报 下载
基于手势识别的幻灯片控制系统的设计论文正文_第1页
第1页 / 共50页
基于手势识别的幻灯片控制系统的设计论文正文_第2页
第2页 / 共50页
基于手势识别的幻灯片控制系统的设计论文正文_第3页
第3页 / 共50页
资源描述:

《基于手势识别的幻灯片控制系统的设计论文正文》由会员分享,可在线阅读,更多相关《基于手势识别的幻灯片控制系统的设计论文正文(50页珍藏版)》请在装配图网上搜索。

1、青岛科技大学本科毕业设计(论文)1 绪论 近年来,随着计算机性能的逐步提高和各领域对计算机使用的不断深入,人与计算机的交互活动越来越成为人们日常生活中的一个重要组成部分。而手势交互作为一种新的人机交互方式被越来越多地采用,特别是基于视觉的手势交互,由于其简单、自然、直观等特性已成为手势交互的重要方式之一。人的手势作为人们日常生活中最广泛使用的一种交流方式,手势识别的研究受到了越来越广泛的关注,然而由于手势本身具有的多样性、多义性,以及时间和空间上的差异性等特点,加之人手是复杂的变形体以及视觉本身的不适定性,使手势识别成为一个具有挑战性的多学科交义的研究课题。本论文就是主要围绕手势识别展开,针对

2、手势识别和简单的幻灯片控制系统相结合,及在人机交互中的应用而加以论述。1.1 课题背景及意义 本课题来源于国家973计划项目“混合现实的理论和方法”子课题“虚实混合环境的驱动引擎技术与系统”(编号:2009CB320805)。随着计算机技术的迅猛发展,全世界进入了一个计算机时代。而这一时代的显著特点之一就是提供了一种新型的交互方式,即人机交互(Human-Computer Interaction)。这一新型交互方式的发展经历了分别由键盘和鼠标为主要工具的界面,虽然至今仍是以使用键盘和鼠标为主,但其使用过程中暴露出来的不便捷、不自然,在很大程度上限制了人机交互的进一步发展。所以,为了使计算机朝着

3、高性能、高智能和高可靠性方面发展,我们需要更深度的研究人机交互活动。近几年,随着计算机技术的迅猛发展,研究自然和谐的人机交互技术(HCI)变得异常活跃,同时也取得了可喜的成就。 基于手势识别的交互活动在自然性和易用性上有其独特的优势,这也是该类交互方式成为研究热点的重要原因。而在手势识别中,因手势输入方式的不同也可分为诸多类,其中,以基于视觉的手势识别最为简易且有代表性。所以,如何基于视觉信息对手势进行识别是近来研究人员的关注所在。 手势,是一种普通的肢体语言,指人手或手臂有目的或有意义的运动。作为一种非常重要的交流方式,它不仅是对于口语的补充,其本身也是人类语言发展过程的一部分。也因此,手势

4、在很多方面都有着十分重要的应用。特别是虚拟现实技术的发展,更进一步促进了手势识别的研究。虚拟现实技术作为一种新的人际交互技术,是指利用计算机技术生成虚拟的声音、图像等构成虚拟环境,刺激用户的感官,同时向用户提供三维输入技术,使用户能以日常生活的经验、技能与虚拟环境进行交互。 此外,随着多媒体技术的发展、计算机性能的不断提高,计算机己经具备了处理语音、图形、图像和文字等多种通信媒体的能力,从计算机到用户的通信带宽得到了进一步的提高。所以,未来计算机的发展方向必然是研究新的输入方式,进一步扩大通信带宽,提高计算机的性能,使用户更便捷的与计算机进行交互活动。其中手势识别技术是一种重要的研究内容,以手

5、指的具体形态来标识的手势识别系统已经开始应用在诸多领域。当然,由于研究难度的限制,目前还有很大的空间可以研究。1.2国内外研究现状 基于手势识别的幻灯片控制系统是一个由众多需求引导、涉及多项技术难点、学科综合性强的课题。它不仅包括难点问题的研究,且需要把研究成果在平台上直接表现出来,还涉及到具体的实验验证,所以,研究的综合性很强。从目前的研究背景来看,诸多权威期刊杂志和会议不断涌现出研究相关知识的论文和新的解决方案。1.2.1 现状综述 手势识别的研究目的就是设计实现能够识别人的特定的手势,并以此来传递信息或控制设备的系统。手势识别的研究已经有四十多年的历史。最早的手势识别研究,是基于笔或鼠标

6、之类的二维输入设备的书写识别。书写也可以看作是一种手势,因为书写其实就是手在二维平面上的手势。尤其在线书写(也称动态书写)识别和动态手势识别是同一问题,都是分析时空运动轨迹。而研究动态手势识别就是针对人拿着激光笔在白板上书写形成的手势进行的。严格意义的手势识别开始于基于跟踪器的手势识别,即通过在手上放置传感器,利用传感器传回的数据来进行的手势识别。典型的装置是数据手套,这种方式能够获得手势的精确数据,对手势做准确地分析。尽管这种基于被动感知方式的手势识别在特定应用场合也能够得到有效的使用,但是由于它的侵犯性和操作复杂性,很难在实际中被广泛使用。所以,研究人员开始逐渐关注主动感知方式的基于视觉的

7、手势识别。基于视觉的手势识别,是指对视频采集设备拍摄到的包含手势的图像序列采用计算机视觉技术来处理,最终识别手势。基于视觉的手势识别在 1992 年左右才出现,因为这时才有了彩色视频采集设备,可以用来实时拍摄手势图像序列。在这之后,基于视觉的手势识别便得到了广泛地关注,研究人员对基于视觉的手势识别做了深入地研究。由于人手变形复杂,手势具有多样性和多义性,视觉问题本身存在各种困难,这些使得研究基于视觉的手势识别极富挑战性。研究人员一开始通过在人手上放置特定颜色的标记来简化问题,但是这种方法不方便用于在实际系统中,因此现在研究的重点是如何实现基于视觉的自由的人机交互。一般在设计实现基于手势识别的交

8、互系统时,首先要根据需求而定义相应的手势集合,实现的系统会根据输入的具体手势实现相应的反应或相应的控制。一般的基于手势识别的交互系统会包含有以下几个部分:手势检测和跟踪;静态手势识别和动态手势识别。手势检测和跟踪就是将手势从采集到的图像或图像序列中检测出来,这是手势识别的第一步,包括手的检测和跟踪。静态手势识别针对从图像中检测并分割出来的手,可以识别出手的手形,而动态手势识别则是通过对图像序列中手势运动的跟踪,得到手的运动轨迹,然后根据手势在时间空间或特征状态空间的运动轨迹来区分不同的动态手势。1.2.2 现状分析目前,基于手势识别的人机交互界面分为操作性和交互性两类:一类是利用手势操作计算机

9、中的虚拟对象;另一类则把手势作为计算机和人类的交流的语言。前者,手势操作的虚拟对象一般是计算机产生的图形,如模拟物体、控制面板设备、机器人的手臂、Windows 操作系统中的窗口等。在操纵这些虚拟对象时,会用到跟踪和识别这两项技术。后者,手势被看成是一个直接的交流手段,如美国的手语识别系统可以把手语翻译成语音,这样对于残疾的朋友尤其有意义。一个完整的基于手势识别的交互系统一般由以下几个部分构成。首先,通过摄像设备获取视频数据流,接着,系统根据手势输入的交互模型检测数据流里是否有预定义的手势出现,如果有,则把该手势从视频信号中分割出来。然后,选择手势模型进行手势分析,分析过程包括特征提取和模型参

10、数估计。在识别阶段,根据模型参数对手势进行分类并根据需要生成手势描述,最后,系统根据生成的描述去做相应的控制或者输出识别结果。所以,手势识别的一般步骤可分为:手势分割;手势建模;手势分析;手势识别。而相关的基于手势识别的交互系统,则再根据自身设计的需求进行下一步的设计即可,也就是再将识别出的结果和相应的控制系统相结合,最终达到利用手势控制设备或者其他系统的效果。其中,对于核心的手势识别部分,从识别技术来看,以往的交互系统主要采用基于人工神经网络(ANN),隐 Markov 模型(HMM)和几何边缘特征等方法。模板匹配技术这是一种最简单的识别技术,它将输入的原始数据与预先存储的模板进行匹配,通过

11、测量两个模板之间的相似度来完成识别任务。基于神经网络的手势识别该方法目前广泛应用于静态手势的识别。神经网络是一种大规模并行处理网络,由许多具有非线性映射能力的神经元组成,神经元之间通过权相连,神经网络能实现复杂的非线性映射,映射关系是通过学习(或训练)得到的,神经网络具有很高的计算速度、很强的容错性和鲁棒性,特别适合用于模式识别。神经网络是一种具有高度非线性的超大规模连续时间动力学系统,它的出现标志着人们智能信息处理能力和模拟人脑智能行为能力的一大飞跃。 基于 HMM 的手势识别对于分析区间内的手势信号,通常采取 HMM 方法进行模型化。该技术在动态手势识别领域一直占有主导地位,然而由于 HM

12、M 拓扑结构的一般性,导致这种模型在分析手语信号时过于复杂,使得 HMM 训练和识别计算量过大,尤其是在连续的 HMM 中,由于需要计算大量的状态概率密度,需要估计的参数个数较多,使得训练及识别的速度相对较慢,因而以往手语识别系统所采用的 HMM 一般为离散 HMM。 基于几何矩的手势识别一幅图像可以被认为是一个二维密度分布,那么与空间位置有关的像素值的几何矩函数,就能够提供该图像的形状信息,例如,图像的总面积、图像矩心的坐标以及图像的方位。这些形状特点能被进一步用于构造特征向量,而这些特征向量在图像的平移、旋转、尺度变化时保持不变。这样就能够通过计算原始图像中的一系列几何矩和标准模板库中的几

13、何矩的点乘距离进行判断。手势识别技术在过去的几年的研究成果中主要使用的是 KL 变换、神经网络方法及几何矩,这些方法在拥有较少图像的图像库中识别率较高,但是对于较大的识别库,它的识别率就比较低,因此有待于研究新的适应性强、实用性好的识别算法。1.3 课题目标及内容1.3.1研究目标本课题的研究目的是对现有的手势识别算法进行综合、改进,并与现有的幻灯片控制技术结合,得到一个以手势变换来控制幻灯片的系统,同时根据得到的系统,设计一个虚拟交互环境,来实现真实世界物体与虚拟环境的互动。本课题旨在完成的任务是在目前现有研究技术的基础上,熟悉掌握相关的手势识别知识,并结合大学日常学习生活中较为常见的一种应

14、用软件幻灯片的有关知识,将幻灯片控制与手势识别结合,做成一种简易的人际交互系统,以此进一步加深对人际交互活动的理解,并能够熟悉相关方面的知识。1.3.2 研究内容本课题主要完成将现有的幻灯片控制函数在手势识别后加以调用,使之产生特定的控制效果。系统首先利用摄像头采集用户的手势信息,然后将采集到的信息储存,加以处理,并提取其中的有用信息,与预定义的手势信息加以匹对,如果匹对成功,则调用相应的手势信息所控制的函数(用以控制幻灯片的),从而实现手势控制幻灯片。由于手势的多义性和复杂性,本课题研究时,将特定的三个手势(静态)作为预定义的手势信息,用三种手势之间产生的六种变换实现不同的幻灯片控制功能。同

15、时将相应的控制函数包含在一个总对话框的按钮的定义中,实现可视化的控制。1.4 论文组织结构论文共分为6章,组织结构如下:第一章:绪论。本章介绍了课题研究背景与意义、国内外研究现状、课题的研究内容和目标。概述了手势识别及其相关技术的发展和分类,并进行了国内外研究现状分析。第二章:主要应用技术。介绍了本系统在实现过程中所涉及到的主要技术,以及这些技术的总体概况、最新研究进展情况。阐述了诸如手势图像的处理、提取、分析(图像Hu矩的计算);SVM技术的应用和OpenCV相关知识。第三章:系统总体结构及功能划分。本章主要介绍系统的总体架构和各个模块的功能划分,对每个具体模块涉及的问题进行了介绍。第四章:

16、手势识别的设计与实现。介绍了系统的设计方式及手势识别模块的具体实现方法。详细阐述了各主要算法的工作原理,及在本系统中的实现方式、注意细节。 第五章:接口模块的设计与实现。本章主要是做一个接口,将手势识别模块与幻灯片控制模块联系在一起,使系统能够通过手势达到控制幻灯片的目标。本章还介绍了MFC窗口的部分知识及其OpenCV窗口的前端显示问题和解决办法。第六章:系统测试。本章主要对系统的功能及性能进行测试。2 背景技术本章主要介绍了在实现手势识别中手势图像采集及处理分析所用到的主要技术,主要包括C+编程技术、MFC(微软基础类)相关知识、OpenCV所涉及的相关知识和支持向量机(SVM)的相关知识

17、等。另外,本章还分别介绍了这些技术的研究背景、现状及以后的发展方向。2.1 C+编程技术C+是一种使用非常广泛的计算机编程语言。它是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格。2.1.1 C+的编程原则由于C+本身使用的广泛性和代表性,熟悉继而掌握这门编程语言是十分重要的。C+语言在设计时有一定的原则,可以帮助我们很好的理解和掌握它的编程技术,也同时培养了我们的良好的编程习惯。这些原则主要有: C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。 C+设计成直接的和广泛的支援

18、多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。 C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。 C+设计成尽可能与C兼容,籍此提供一个从C到C+的平滑过渡。 C+避免平台限定或没有普遍用途的特性。 C+不使用会带来额外开销的特性。 C+设计成无需复杂的程序设计环境。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。2.1.2 C+的编程技巧和应用C+在编程中有诸多的设计技巧,可以方便使用者熟悉和掌握。这些技巧都有:使用new和delete进行动态内存分配和释放 运算符

19、new和delete是C+新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点: (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。(2)自动地返回正确的指针类型,不用进行强制指针类型转换。(3)可以用new对分配的对象进行初始化。举例如下:(1)int* p;p=new int10; /分配一个含有10个整数的整形数组delete p; /删除这个数组(2)int* p;p=new int (100);/动态分配一个整数并初始化使用in

20、line内联函数替代宏调用对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)0?(-a):(a), 当使用abs(i+)时,这个宏就会出错。所以在C+中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。使用内联函数只须把inline关键字放在函数返回类型的前面。例如:inline int Add(int a,int b);/声明Add()为内联函数这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行

21、。使用函数重载在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C+中,函数名相同而参数数据类型不同的两个函数被解释为重载。例如:void PutHz(char* str);/在当前位置输出汉字void PutHz(int x,int y,char * str);/在x,y处输入数字使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数数据类型相同,但是函数返回类型不同的两个函数不能重载。用引用(reference)代替指针进行

22、参数传递在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如:void Add(int *a) (*a)+;调用时则使用Add(&x); /其中x为int或可以转化为int的类型,如unsigned int, 但这时候编译器通常会给出warning对于复杂的程序,使用指针容易出错,程序也难以读懂。在C+中,对于上述情况 可以使用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,这就相当于对原有变量进行操作。例如使用引用的函数定义为:void Add(int& a)a+;/a为一个整数的引用调用时使用Add(x);/其中x为int这

23、个函数与使用指针的上一个函数的功能是一样的,然而代码却更为简洁和清晰易懂。使用缺省参数在C+中函数可以使用缺省参数,例如:void PutHzxy(char *str,int x=-1, int y=-1)if(x=-1)x=wherex();if(y=-1)x=wherex();moveto(x,y);PutHx(str);可以有三种方式调用函数PutHzxy(),例如:PutHzxy(C+语言);/使用缺省参数,在当前位置输出PutHzxy(C+语言,10,10);/没有使用缺省参数PutHzxy(C+语言,10);/对y使用缺省参数,指定x的位置通常的情况下,一个函数应该具有尽可能大的灵

24、活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C+的代码中都大量地使用了缺省参数。需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。例如:void PutHzxy(char*str,int x=-1,int y=-1)/正确void PutHzxy(int x=-1,int y=-1,char*str)/错误使用STLSTL(Standard Template Library,标准模板库), STL

25、的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),并包括一些工具类如auto_ptr。几乎所有的代码都采用了模板类和模版函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。#include/ 包含相关的头文件/typedef std:vector intvector;/使用typedef 使代码看起来更简洁int main()intvector vi;for(int i=0;i10,i+)vi.push_back(i);/使用push_back添加元素for(int i=0;ivi.size();i+)std:c

26、outvii(S|U|F)C S = 带符号整数 U = 无符号整数 F =bit_depth(S|U|F)窗口管理的一些函数: 创建并放置一个窗口: cvNamedWindow(win1, CV_WINDOW_AUTOSIZE); cvMoveWindow(win1, 100, 100); / 以屏幕左上角为起点的偏移量读入图像: IplImage* img=0; img=cvLoadImage(fileName);if(!img) printf(Could not load image file: %sn,fileName);显示图像: cvShowImage(win1,img);可显示彩

27、色或灰度的字节/浮点图像。彩色图像数据认定为BGR顺序. 关闭窗口: cvDestroyWindow(win1);改变窗口尺寸: cvResizeWindow(win1,100,100); / 新的宽/高值(象素点)再介绍一些图像转换的函数:转为灰度或彩色字节图像: cvConvertImage(src, dst, flags=0);src = float/byte grayscale/color imagedst = byte grayscale/color imagelags = CV_CVTIMG_FLIP (flip vertically)CV_CVTIMG_SWAP_RB (swap

28、 the R and B channels)转换彩色图像为灰度图像: 使用OpenCV转换函数: cvCvtColor(cimg,gimg,CV_BGR2GRAY); / cimg - gimg直接转换: for(i=0;iheight;i+) for(j=0;jwidth;j+) gimgAij= (uchar)(cimgAij.b*0.114 + cimgAij.g*0.587 + cimgAij.r*0.299);从视频序列中抓取一帧:OpenCV支持从摄像头或视频文件(AVI)中抓取图像.从摄像头获取初始化: CvCapture*capture=cvCaptureFromCAM(0);

29、/capture from video device #0从视频文件获取初始化: CvCapture* capture = cvCaptureFromAVI(infile.avi);抓取帧: IplImage* img = 0; if(!cvGrabFrame(capture) / 抓取一帧printf(Could not grab a framen7);exit(0);img=cvRetrieveFrame(capture); / 恢复获取的帧图像2.4 支持向量机(SVM)简介支持向量机(Support Vector Machine)简称 SVM,是统计学习理论中较年轻的内容,也是最实用的

30、部分,目前仍处在不断发展阶段。它是Vapnik等人根据统计学习理论提出的一种新的机器学习方法,它以结构风险最小化原则为理论基础,通过适当选择函数子集及该子集中的判别函数使学习机的实际风险达到最小,保证了通过有限训练样本得到的小误差分类器对独立测试集的测试误差仍然最小,得到一个具有最优分类能力和推广泛化能力的学习机。该方法从样本集中选择一组特征子集,使得对于特征子集的划分等价于对整个样本集的分割,这组特征子集称为支持向量(SV)。SV 尽管数量少,但却包含了分类所需的信息。SVM的主要思想可以概括为两点: (1) 它是针对线性可分情况进行分析,对于线性不可分的情况,通过使用非线性映射算法将低维输

31、入空间线性不可分的样本转化为高维特征空间使其线性可分,从而 使得高维特征空间采用线性算法对样本的非线性特征进行线性分析成为可能;(2) 它基于结构风险最小化理论之上在特征空间中建构最优分割超平面,使得学习器得到全局最优化,并且在整个样本空间的期望风险以某个概率满足一定上界。SVM的一般特征主要有:(1)SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略来搜索假设空间,这种方法一般只能获得局部最优解。 (2)SVM通过最大化决策边界的边缘来控制模型的能力。尽管如此,用户必须提供其他

32、参数,如使用核函数类型和引入松弛变量等。 (3)通过对数据中每个分类属性引入一个哑变量,SVM可以应用与分类数据。(4)SVM不仅可以用在二类问题,还可以很好的处理多类问题。2.5 本章小结本章主要介绍了再这次系统的设计中能用到的背景技术的大致情况。如C+编程中的一些技巧和注意的地方;MFC的概况和几个重要的MFC应用;OpenCV的概述及编程中的注意事项;支持向量机(SVM)的简单介绍和一般特征。3 系统总体结构和功能划分本章将详细讲述系统的总体结构,以及系统各模块的功能。3.1 系统总体结构本系统主要完成使用摄像头采集使用者的手势,并将手势加以处理后计算其Hu矩特征,然后根据训练的SVM模

33、型进行预测匹配,同时将手势识别模块与简单的幻灯片控制按钮功能相结合,在匹配成功后,调用相应的函数,控制幻灯片的翻页操作。系统首先要做好一个幻灯片的控制系统(在简单的对话框上添加控制按钮即可完成),再做一个接口将之与手势识别部分结合起来,然后将摄像头采集到的图像信息处理后提取几何矩特征,再将训练好的SVM模型加载进去,加以预测匹配,进行相应的操作。本系统的总体结构如图3-1所示:图3-1 系统总体结构Fig.3-1 System general structure在图3-1中,手势识别主要包括手势图像的获取,提取后图像的预处理(包括灰度化和二值化处理),图像几何矩的提取,SVM模型的训练以及最后

34、的匹对。获取手势图像是由与PC机相连的摄像头捕捉,其余的工作则主要由计算机完成。而在手势识别这一大的模块,又可细分出很多问题。用摄像头捕捉人的手势,有一个如何获取准确手区域的问题,另外还要对采集到的图像进行预处理,此外光照对于图像获取的影响也很大,如何尽量小的减小其他的干扰也是个问题。我们可以采用转换色彩空间然后灰度化的方法来克服光照的影响,而在各种二值化的方法中,我们选择Ostu的全局自动阈值分割法获取手所在区域,然后采用灰度投影的办法获取准确的手区域。然后就是对于静态图像的处理问题,如何提取有效的图像特征是一个难点,在几种相关的图像描述方法中我们选择矩描述子来提取手区域图像的特征。另外我们

35、对于SVM的训练模型如何使用以及SVM在整个统计最小化理论中如何体现其优势都需要加以研究和掌握。进而需要将手势识别模块嵌入到幻灯片控制模块中。 这需要一个接口,我们通过设置中间变量来传递特征值,实现当图像状态发生改变时调用相应的控制函数。系统的总体流程如图3-2所示:图3-2 系统的流程图Fig.3-2 System flowchart3.2 功能模块设计本系统的设计与实现分为三个模块:幻灯片控制模块,手势识别处理模块和接口模块。其中手势识别处理模块可以再细分为:手图像的预处理、手图像特征的提取、支持向量机(SVM)的训练模型三个子模块。对于各个模块的功能划分,有必要交代一下,以便更清晰的了解

36、和掌握整个系统的设计思路。其中手势识别模块是最为核心的部分。下分的三个子模块:手势的预处理、手势矩特征的提取和训练SVM模型各有分工。手势预处理模块主要是针对图像的获取位置的选取、图像的灰度化及二值化处理,并对相关算法进行的介绍和阐述;手势矩特征的提取模块主要解决图像几何矩特征的有关问题,包括矩的有关概念和Hu矩的相关计算;训练SVM模型模块先介绍一下最优化理论,再阐述SVM的有关应用,以及与本课题设计相关的一些知识。幻灯片控制模块主要介绍一下幻灯片控制函数(主要是针对翻页操作的),以及幻灯片研究方面的知识。接口部分主要解决的就是将两大模块结合起来的问题,如何将手势识别后的值存入变量,并在进行

37、相关手势操作时调用变量,在调用时根据设定的不同情况将调用不同的幻灯片控制函数,从而使幻灯片翻页。3.3 本章小结本章主要介绍了系统设计的总体结构和流程情况,并对各个模块涉及到的问题进行了介绍。对各模块进行了功能划分,并针对不同模块的功能进行了阐述。阐述了各个模块之间的逻辑和功能关系,作为系统设计的框架和基础。4 手势识别的设计和实现本章主要详细阐述系统的核心部分手势识别模块的设计与实现,对相关算法进行了说明和介绍。4.1 手图像的预处理 手势图像的预处理是手势识别的第一步,它处理效果的好坏直接影响到最后手势识别的成功与否。本节主要针对如何得到比较理想的处理效果,准确提取手势图像的特征进行阐述。

38、4.1.1手图像的获取手势识别与其他的图像识别不同。而手势也与其他的图像不同,它没有现成的手势图像库可供使用。我们必须首先建立在各种条件下的手势样本库。手势由摄像头获取,样本库主要包括各种手势分割的黑白图像。具体的手势样本采集步骤主要分为以下两步:(1)可以用两种方法完成样本采集:请几位实验者在数字视频摄像头前做每类样本各个角度的数字手势,编写程序在摄像头获取的实时视频中,每隔一定的帧数(比如 10 帧)保存一帧图像,经过预处理后保存作为样本。在这个过程中控制周围光照强度变化,同时实验者改变手势的角度。另一种方法是程序与样本采集者交互,在实验者做好手势后,操作者通过键盘和样本采集程序交互,实现

39、从实时视频中人工选择样本保存。相比较第一种方法,第二种方法采集样本准确、全面,比如各种光照和各个角度下的手势样本,但是效率不如第一种方法高效。在本文中样本统一归一化为200*240像素大小。 (2)逐个样本检查,去掉不理想的样本,比如采集样本时候手仅有部分在摄像头视野内,或者分割不理想的情况。为方便 Hu 矩程序提取样本特征,把选中的合格样本按一定规律批量命名后保存到相应文件夹。这样就建立起来了一个手势样本库。 下面说明一下如何获取手势图像的准确位置。为了更好的对手的区域进行准确的特征提取,要求尽可能准确的获取手势所在区域,本文采用投影法获取手势所在区域。具体方式是对于预处理后的二值图像,分别

40、沿垂直方向和水平方向采用投影法,得到手势在x方向和 y 方向的坐标范围(x1 x2),(y1 y2)。如图 4-1(A)是从实时视频中截取的手的 RGB 图像,图 4-1(B)对应的二值化图像,图 4-1(C)通过灰度投影确定的准确手区域,图4-1中标示出了更准确的手区域的范围。图 4-1 采用灰度投影法获取手所在准确的手区域Fig.4-1 Accurate hand region gotten by gray projection由摄像头获取的手势图像会因各种噪声的干扰和影响使图像质量下降。为了抑制噪声和改善图像质量,必要时可对图像进行平滑处理,这可以在空域或频域中进行,在平滑噪声时以不损害

41、图像中边沿和各种细节为准则。对于滤除图像中的噪声,人们已经提出了很多的方法。通常,将数字图像的平滑技术划分为两类:一类是全局处理,即对噪声图像的整体或大的块进行校正以得到平滑的图像,例如在变换域中使用 Wiener 滤波、最小二乘滤波等,使用这些技术需要知道信号和噪声的统计模型,但对于大多数图像而言,人们不知道或不可能用简单的随机过程精确的描述统计模型,而且这些技术计算量也相当大;另一类平滑技术是对噪声图像使用局部算子,当对某一像素进行平滑处理时,仅对它的局部小邻域的一些像素加以运算,其优点是计算效率高,而且可以多个像素并行处理,因此可实现实时或准实时处理。4.1.2 彩色图像的灰度化首先对于

42、色彩空间进行一下介绍。根据计算机色彩理论,对一种颜色而言,在计算机中有着不同的表达方式,这样就形成了各种不同的色彩空间。当然各种色彩空间只不过是颜色在计算机内不同的表达形式而已,每一种色彩空间也都有其各自的产生背景、应用领域等等。主要的色彩空间有:(1)RGB 模式(红、绿、蓝三基色模型)这是一种最直接的方法,即使用红、绿、蓝的亮度值来表示彩色,其大小限定到一定范围。这种约定称为 RGB 模式。RGB 模式是基于自然界中 3 种基色光的混合原理,将红(R)、绿(G)和蓝(B)3 种基色按照从 0 到 255 的亮度值在每个色阶中分配,从而指定其色彩。当不同亮度的基色混合后,便会产生出 256*

43、256*256 种颜色,约为 1670 万种。例如,一种明亮的红色可能 R 值为 246,G 值为 20,B 值为 50。当 3 种基色的亮度值相等时,产生灰色;当 3 种亮度值都是 255 时,产生纯白色;而当所有亮度值都是 0 时,产生纯黑色。当 3 种色光混合生成的颜色一般比原来的颜色亮度值高,所以 RGB 模式产生颜色的方法又被称为色光加色法。(2)HSI 模式这是基于人眼对色彩的观察来定义的一种模式,在此模式中,所有的颜色都用色相或色调、饱和度、亮度三个特性来描述。 色相(H):表示与颜色主波长有关的颜色物理特性。从实验中知道,不同波长的可见光具有不同的颜色。众多波长的光以不同比例混

44、合可以形成各种各样的颜色,但只要波长组成情况一定,那么颜色就确定了。所有色彩(红、橙、黄、绿、青、蓝、紫等)都是表示颜色外貌的属性。它们就是所有的色相,有时色相也称为色调。饱和度(S):饱和度指颜色的强度或纯度,表示色相中灰色成分所占的比例,用 0%-100%(纯色)来表示。亮度(I):亮度是颜色的相对明暗程度,通常用 0% (黑)-100% (白)来度量。(3)CMYK 颜色模式CMYK 颜色模式是一种印刷模式。其中四个字母分别指青(Cyan)、洋红(Magenta)、黄(Yellow)、黑(Black),在印刷中代表四种颜色的油墨。CMYK 模式在本质上与 RGB 模式没有什么区别,只是产

45、生色彩的原理不同,在 RGB 模式中由光源发出的色光混合生成颜色,而在 CMYK 模式中由光线照到有不同比例 C、M、Y、K 油墨的纸上,部分光谱被吸收后,反射到人眼的光产生颜色。由于 C、M、Y、K 在混合成色时,随着 C、M、Y、K 四种成分的增多,反射到人眼的光会越来越少,光线的亮度会越来越低,所有 CMYK 模式产生颜色的方法又被称为色光减色法。(4)Lab 模式Lab 模式的原型是由 CIE 协会在 1931 年制定的一个衡量颜色的标准,在 1976年被重新定义并命名为 CIELab。此模式解决了由于不同的显示器和打印设备所造成的颜色的差异,也就是它不依赖于设备。Lab 颜色是以一个

46、亮度分量 L 及两个颜色分量 a 和 b 来表示颜色的。其中 L 的取值范围是 0-100,a 分量代表由绿色到红色的光谱变化,而 b 分量代表由蓝色到黄色的光谱变化,a 和 b 的取值范围均为-120-120。Lab 模式所包含的颜色范围最广,能够包含所有的 RGB 和 CMYK 模式中的颜色。CMYK 模式所包含的颜色最少,有些在屏幕上看到的颜色在印刷品上却无法实现。(5)YCbCr 模式YCbCr 色彩空间是一种从 RGB 空间非线性转换而来的颜色空间,其已经广泛用于视频图像压缩标准中(比如,MPEG,JPEG),它充分考虑了色彩组成时 RGB 三色的重要因素,亮度信息包含在成份中,色度

47、信息包含在 Cb 和 Cr中,因此可以轻松的去掉亮度信息。本设计中首先把 RGB 空间的手势图像变换到YCbCr 空间,然后利用 Cb 和 Cr 通道图像进行下一步处理。目的就是利用 YCbCr色彩空间亮度和色度可以分离的性质来克服一定程度的光照干扰。 (6)灰度(Grayscale)模式灰度模式可以使用多达 256 级灰度来表现图像,使图像的过渡更平滑细腻。灰度图像的每个像素有一个 0(黑色)到 255(白色)之间的亮度值。灰度值也可以用黑色油墨覆盖的百分比来表示(0%等于白色,100%等于黑色)。使用黑色或灰度扫描仪产生的图像常以灰度显示。下面介绍由RGB模式到灰度模式的转换。常规的RGB

48、空间图像直接灰度化是采用RGB空间到YCbCr空间转换后的Y通道图像,具体转换见下面的公式。因为 Y 通道图像包含的亮度信息,所以其受光照影响很大。但是我们需要灰度化的图像对一定强度的光照有抗干扰能力,即受光照的影响尽量小,所以把图像由 RGB 空间变换到 YCbCr 空间,以利用该色彩空间亮度和色度可以分离的性质。具体做法是:首先把 RGB 色彩图像转换为YCbCr 色彩空间,然后利用其中的 Cb 或者 Cr 通道图像来进行二值化分割,在有一定光照下比单纯的利用 RGB 直接灰度化图像效果要好。实验效果证实,两个色差通道具有更好的分割效果,如图 4-2 所示,分别是一定光照强度下 RGB 彩

49、色图像转换到 YCbCr 空间后的 Y 通道(也就是直接灰度化)图像、Cb 通道图像、Cr 通道图像的分别进行二值化的效果图。图 4-2 一定光照强度下 Y 通道 Cb 通道 Cr 通道二值化图像Fig.4-2 Binary image of Y,Cb,Cr channel respectively under certain intensity illumination4.1.3 以最大类间方差(Ostu)法进行图像二值化 根据图像处理的目标要求,需要把多灰度级的图像变成只有两个灰度级的图像,即对图像进行二值化。图像的二值化其实是对灰度图像的阈值运算。阈值运算就是把感兴趣的目标像素作为前景像

50、素,其余部分作为背景像素。设图像 f (x, y)的灰度值范围在a,b,二值化的阈值设为t (a t b),则二值化处理的一般公式为:其中g(x, y) 是二值图像,选择不同的门限值 t ,将会产生不同的二值图像 g(x, y) ,为了获得正确的分割,常常需要基于某种准则选择最佳的门限值t 。如果仅仅依靠像素本身的属性来决定t ,就称为基于像素属性的门限方法;若由每个像素邻域的局部特性来决定t ,就称为基于邻域的门限方法。当考虑只用一个门限值去分割整体一幅图像时就称为全局门限技术。而若将一幅图像先划分为若干个子图像,以后分别确定每个子图像的门限值,则称为局部门限技术。下面分别讨论几种确定门限的常用方法: p-参数法当预先知道对象物在图像中所占的面积比率时,将灰度直方图中面积比率为p%的点作为阈值,这种方法称为 p-参数法。但在实际中,己知对象所占的面积比率的状况非常少见,通常都是按照一定的规律推算出来的。例如在书画作品中,文字部分所占的面积比率一般情况下是可以估计出来的,这时用这种方法来处理是比较有效

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!