手势识别系统设计与开发分析研究 计算机专业

上传人:文*** 文档编号:168049674 上传时间:2022-11-07 格式:DOC 页数:47 大小:2.87MB
收藏 版权申诉 举报 下载
手势识别系统设计与开发分析研究 计算机专业_第1页
第1页 / 共47页
手势识别系统设计与开发分析研究 计算机专业_第2页
第2页 / 共47页
手势识别系统设计与开发分析研究 计算机专业_第3页
第3页 / 共47页
资源描述:

《手势识别系统设计与开发分析研究 计算机专业》由会员分享,可在线阅读,更多相关《手势识别系统设计与开发分析研究 计算机专业(47页珍藏版)》请在装配图网上搜索。

1、摘要随着计算机技术与信息处理技术迅速发展,智能化电子设备逐渐进入到日常的生产和生活中,与此同时,人们对电子设备操作过程的便捷化也提出了新的要求,这也促使计算机进行图像处理的技术也得到了发展。近些年兴起的模式识别技术为操作便捷化提供了新的研究方向和发展平台,其中通过对手势的识别来向电子产品进行命令操作逐渐成为一项新的关键技术。目前,手势识别技术已经逐步应用在AR和汽车辅助驾驶等方面,同时,在人机交互过程中应用手势识别技术还可以提高体验感。所以,研究开发手势识别系统具有一定的学术意义和经济价值。这项技术涉及了包含静态图片识别与分析、视频图像处理及计算机视觉等多方面内容。本文介绍了开发手势识别系统的

2、背景及意义,分析了过程中涉及到的必要步骤及算法。本系统基于C+环境使用OpenCV开源计算机视觉库进行手势识别。本系统通过计算机本地单目摄像头录入手势,分别对动态和静态手势进行识别,并实时显示不同手势所表示的结果。总体上可分为图像采集、图像预处理,特征提取及识别四个模块,具体包括非线性中值滤波、形态学膨胀滤波、HOG特征和SVM分类等步骤。目前系统开发完成,实验结果基本可以实现手势的识别,并显示出结果。关键词:图像处理;手势识别;OpenCV;计算机视觉ABSTRACTWith the rapid development of computer technology and informati

3、on processing technology, intelligent electronic equipment has gradually entered into daily production and life. At the same time, people have put forward new requirements for the convenience of electronic equipment operation process, which also promotes the development of computer image processing

4、technology.The emerging pattern recognition technology in recent years provides a new research direction and development platform for the convenience of operation, among which the command operation of electronic products through gesture recognition has gradually become a new key technology.At presen

5、t, gesture recognition technology has been gradually applied in AR, automobile assisted driving and other aspects. Meanwhile, the application of gesture recognition technology in human-computer interaction can also improve the sense of experience.Therefore, the research and development of gesture re

6、cognition system has certain academic significance and economic value.The technology involves static image recognition and analysis, video image processing and computer vision.This paper introduces the background and significance of developing gesture recognition system, and analyzes the necessary s

7、teps and algorithms involved in the process.This system uses OpenCV open source computer vision library for gesture recognition based on C+ environment.In this system, gestures are recorded by computer local monocular camera, and the dynamic and static gestures are recognized respectively, and the r

8、esults of different gestures are displayed in real time.In general, it can be divided into four modules: image acquisition, image preprocessing, feature extraction and recognition, including nonlinear median filtering, morphological expansion filtering, HOG feature and SVM classification.At present,

9、 the system has been developed, and the experimental results can basically realize gesture recognition and display the results.Key words: Image processing;Gesture recognition;OpenCV;Computer vision目录1 绪论11.1 课题背景及意义11.2 手势识别的发展现状11.3 本文主要内容21.4 本文结构安排22 系统开发平台32.1 OpenCV32.1.1 OpenCV简介32.1.2 OpenCV配

10、置42.2 MFC82.2.1 MFC简介82.2.2 创建一个MFC83 系统相关技术及算法介绍83.1 系统相关技术83.1.1 图像采集技术83.1.2 图像预处理技术93.1.3 肤色检测与分割技术93.1.4 特征提取93.2 系统相关算法103.2.1 HOG特征103.2.2 SVM143.2.3 核函数153.2.4 肤色模型153.2.5 RGB色彩空间模型163.2.6 YCbCr色彩空间模型173.2.7 中值滤波193.2.8 膨胀滤波194 系统设计与实现214.1 系统整体设计224.1.1 手势训练模块234.1.2 手势测试模块275 系统测试与分析285.1

11、系统测试环境285.2 系统界面测试285.2.1 手势注册功能测试285.2.2 手势识别(动态手势)测试315.2.3 图片识别(静态手势)测试345.3 测试问题365.3.1 手势识别(动态手势)问题365.3.2 图片识别(静态手势)问题385.4 测试结论396 总结和展望396.1 本系统优点总结396.2 本论文不足总结406.3 未来工作展望40参考文献42致谢431 绪论1.1 课题背景及意义随着计算机技术的进步和技术革新以及智能化时代的要求,人们不断探寻开发新的、更加便捷的人机交互方式。其中,基于计算机视觉的手势识别技术已成为研究热点之一。手势的检测和识别技术作为一种有着

12、自然性、简洁性和直接性的一种新型的交互方式,是这些交互技术当中倍受重视的研究和应用的技术。近几年来,已经有相当一部分的应用采用了这种手势识别的方式作为跟机器交互的手段。本文讨论一种采用基于单目摄像机的特定颜色模型的背景分离方法和基于关键信息的手势提取方法,用Visual Studio C+和OpenCV进行开发,实现在单摄像机下的手势识别交互系统。1.2 手势识别的发展现状手势识别在计算机科学中是指通过数学算法来识别人类手势。为了获得更好的人机交互体验,计算机需要正确地理解人类手势的含义,并根据预定义的手势指令进行相关操作。手势识别技术通常包括图像采集技术、图像预处理技术、特征提取技术和识别分

13、类技术几个方面。目前手势识别主要有两个研究方向,一是基于计算机视觉,二是基于可穿戴设备。本文是基于计算机视觉开发的的手势识别系统。无论是静态或动态手势,其识别顺序首先需进行图像的获取、手势检测和手势分割,然后进行手势识别。其关键件技术主要为图像处理、手势分析与分割、手势识别三个过程。图像处理是系统把通过计算机单目摄像头采集的视频流进行帧分离处理,从视频流中分离出单一手势图像,并对图像进行滤波、平滑等预处理操作,作为下一阶段的输入量。然后通过检测算法检测输入量中是否含有人类手势,如果检测出手势图像,则进行肤色分割处理,将手势与背景进行分离,得到手势的平面模型,建立手势形状数据库。手势识别阶段采用

14、模板匹配法,将动态手势看成由静态手势图像所组成的序列,然后将待识别的手势模板序列与已知的手势模板序列进行比较,识别出手势。本文是将部分手势转化成所对应的信息。未来可以进一步将手势直接转化成语音,通过对话的方式将信息传递出去。方便聋哑人士与普通人的沟通。另外,汽车行业一如既往的对手势识别保持热情,汽车中的各种仪表可以直接通过手势识别直接控制。而在穿戴设备领域,使用手势识别技术以追踪用户包括睡姿、心率、体脂肪率、总肌肉量、体脂肪量和基础代谢率在内的一系列数据,进而促进穿戴设备的发展。1.3 本文主要内容本文所涉及到的一系列软件开发有效凭借以及完成相应试验平台的建立,使用OpenCV中的一些功能函数

15、及控件对图像和视频流进行手势检测的研究。其中以HOG特征、局部二值模式(LBP)为提取的目标,通过手势检测椭圆模型算法,对图片及视频序列中的手势进行,提取手势轮廓。之后,通过对RGB、YCrCb等颜色空间模型的处理,而后通过非线性中值滤波,形态学膨胀等方式进行降噪滤波以达到皮肤分割的效果。最终通过MFC构建了一个支持多手势的视频和图像处理系统,该系统可以对视频和图像中的多个手势进行实时识别。本文的目的是在大量学习和理解传统的算法之后,将其实现并优化。在阅读了大量的相关文献和搜索了大量的资料后,设计并完成了一套相对方便简洁的手势识别系统。该系统实现了10个手势的动态和静态识别,能够快速识别并显示

16、手势所代表的信息。另外可随时采集并训练新的手势模型。1.4 本文主要研究内容本文整体结构具体可以归结为六个部分,其各个章节的布局如下所示:第一章绪论,针对于手势识别相关研究背景及意义进行了相对较为切实有效的分析,介绍了手势识别研究现状和发展趋势,简要阐述了本文的主要内容以及相应章节的布局。第二章系统开发平台,具体涵盖了开发环境和实验平台的搭建,在手势检测、手势识别算法研究的基础上,借助OpenCV计算机视觉库中的一些函数实现算法和MFC微软基础类库以及Visual Studio 2013开发环境来构建交互界面。第三章系统相关技术及算法介绍,首先介绍了手势识别相关基本原理,其次研究了Hog检测算

17、法的基本原理,同时介绍了相关概念如色彩和伽马归一化、计算图像梯度等。而后阐述SVM分类原理。最后分析RGB、YCbCr等颜色空间模型及中值滤波算法、膨胀滤波算法的原理。第四章系统设计与实现,首先介绍了手势识别的主要流程和设计思路,然后介绍了对应的模块组成及具体功能描述,最后进行软件的实现。第五章系统测试与分析,对本文所设计的系统进行测试,本章主要介绍对系统各功能的测试结果及针对不同测试结果的分析。第六章总结和展望,对本文所描述的研究工作进行总结,并对目前需要进一步改进优化的部分加以说明,同时简单介绍改进之后期望达到的效果。2 系统开发平台本文所开发的系统是基于所进行开发的,相应的开发环境具体涉

18、及到了 ,在此过程当中还应用到了作为系统内部相应的界面库,并且基于相对开源的针对于手势检测以及识别完成了相应的开发。2.1 OpenCV2.1.1 关于的OpenCV概述所谓的具体可以归结为开源形式的计算机视觉库,相应的组合命名可以概括为。在年就已经建立起,如今由提供支持。它是一个跨平台开源计算机视觉库,可以运行在以为代表的多个操作系统上。包括C函数和少量类,同时提供了包含在内等多种语言接口,在图像处理和计算机视觉方面有很多通用算法。提供了机器学习库。该机器学习库侧重于统计方面的模式识别和聚类。除了在视觉相关的任务中,还可以方便地应用与其他的机器学习场合。版本于年发布。的第二个版本是2009年

19、10月的OpenCV2.0,主要更新包括C+接口,更容易、更安全的模式,新的函数,对现有实现代码优化等。2012年8月,对的支持由一个非营利组织提供,现在它也集成了对的支持。2014年8月,随着的发布,这个强大的计算机视觉库迎来了全新的纪元。2019年,发布4.0版本。据相关统计,一个人获取的信息大约有 75来自视觉。而图像又是其中最重要的组成部分。在人工智能时代,机器视觉会在人机互动、人脸识别、手势识别等方面得到更广泛的应用。作为图像处理的重要工具之一,它将会在这一领域发挥更加重要的作用。2.1.2 OpenCV配置本文采用的是的配置方法,OpenCV作为开源的软件,直接到官网下载即可,目前

20、官网更新到4.1.0版本,本系统因需要用到控件,故文中采用2.4.9版本。配置过程如下:(1) 安装,打开资源包,解压到相应文件夹。图2-1 OpenCV资源包解压(2) 配置环境变量,将环境变量添加到路径:图2-2 配置环境变量(3) 工程包含(include)目录的配置图2-3 配置工程包含(include)目录(4) 工程库(lib)目录配置图2-4 配置工程库(lib)目录(5) 链接库配置图2-5链接库配置(6) 加入动态链接库将文件夹下所有dll文件复制粘贴到图2-6 动态链接库如图所示,呈现出的模块构成,其具体可以归结为部分,即模块、模块、模块以及模块(包含了相应的基本形式的数据

21、结构以及相关函数)。图2-7 OpenCV模块2.2 MFC2.2.1 MFC简介是微软基础类库的简称,是微软公司实现的一个c+类库,其具体涵盖了众多的句柄封装类以及大量的的内建控件以及相应的组件的封装类。 MFC除了是一个类库以外,还是一个框架,MFC作为一个通用框架,不具备最好的针对性,同时也就丧失了部分灵活性和效率。但的具体封装形式相对较浅,故其相应的效率损失相对较少。利用MFC AppWizard创建Test工程之后将自动生成5个类:CAboutDlg(“关于”对话框类)、CMainFrame(基础框架类)、CTestApp(应用程序类)、CTestDoc(文档类)、CTestView

22、(视图类)。2.2.2 创建一个MFC文件-新建-项目-MFC应用程序,其余项默认,点击创建。本文命名为“MFCGesture”。点击“解决方案资源管理器”,可以看到CAboutDlg、CMFCGusetureApp(和CMFCGusetureDlg。其中CAboutDlg是应用程序的“关于”对话框类,CMFCGusetureApp是由CDialogEx派生的类,CMFCGusetureDlg是主对话框类,本系统程序运行后显示的主界面即为主对话框。在“资源视图”中可以看到工程MFCGuesture的资源树。点击展开Dialog项,出现两个ID分别为:IDD_ABOUTBOX(“关于”对话框的模

23、板)和IDD_MFCGuesture_DIALOG(主对话框的模板)的对话框模板。ID是资源的唯一标识,本质上是一个无符号整数,一般ID代表的整数值由系统定义。在这之后,可以对系统自动生成的主对话框模板进行编辑、添加控件和函数等操作,或者创建新的对话框模板和所对应的对话框类再进行编辑等操作,最终实现图形界面。3 系统相关技术及算法介绍3.1 系统相关技术3.1.1 图像采集技术对于计算机而言,摄像头扮演着眼睛的角色,是环境图像采集的工具。现有多数手势识别系统中,图像采集可以是从指定文件夹中读入的视频和计算机本地摄像头实时视频流,本文开发的手势识别系统是基于本地摄像头。为实现动态手势识别功能,首

24、先要将摄像头采集的视频转换为单帧图像,这些图像存储到Mat中,然后进行图像处理。本文采用OpenCV开源函数库打开本地摄像头进行图像采集。3.1.2 图像预处理技术预处理是计算机图像处理过程重要的一步。在图像采集时会存在许多干扰因素,导致采集到的图像会存在不同程度的噪声。图像噪声包括外部噪声和内部噪声。由系统外部电磁波干扰等因素引起的噪声称为外部噪声。由光、电的基本性质引起的噪声称为内部噪声。图像后续处理受噪声直接影响,所以在图像使用前,需经过降噪、量化、压缩等处理,减少图像噪声,提高图像质量。OpenCV包含线性滤波(方框滤波、均值滤波、高斯滤波)、非线性滤波(中值滤波、双边滤波)、形态学滤

25、波。经测试,本文采用中值滤波及膨胀滤波。3.1.3 肤色检测与分割技术肤色检测与分割手势轮廓检测的关键一步。在这一处理过程中将采集图像中的手势与背景分离,消除背景对手势的影响,为下一步手势识别过程提供单纯的手势图像,这一操作将影响识别准确率的高低。肤色易因光照强度和不同人之间差异,以及某些摄像头的自动对光功能的影响。为此,需要一种快捷的手段根据现场情况进行调整。本文采用将颜色空间从RGB色彩空间转换到亮度与色度分离的某个颜色空间,然后放弃亮度分量。在双色差或色调饱和度平面上,不同人的肤色区别较小,肤色的不同更多在亮度上而不是色度上。肤色分割后得到的是二值化图像,皮肤部分为白色,其余部分为黑色。

26、在完成图像的预处理之后, 将图像的RGB空间转换成YCrCb空间。 YCbCr颜色空间是一种常用的肤色检测的色彩模型,其中Y代表亮度,Cb代表光源中的蓝色分量,Cr代表光源中的红色分量。3.1.4 特征提取一旦有效获取相应的单独目标手势以后,接下来就需要对其完成切实有效的描述。也就是说针对于相应的关键特性完成相对具有代表性的提取,除此之外,还要将其进行一定的数值化处理,建立起相应特征向量,在一定程度上将手势识别完成对应的数字化建模,便于后期进行切实有效的手势识别。关于静态形式的手势,仅需要针对某一特定时间点完成相应的描述,不难分析出,此状态下的手势特征值不会受限于相应的手势所处的地域环境与位置

27、,几乎完全凭借其相应的姿态来决定。具体可以概括为,不管手势如何变更方位,只要保持其姿态不发生任何变化,与之相对应的特征向量便会保持相对一致。针对于动态手势识别就不那么简单了,从动态的字眼就可以看出其同时兼具时、空二元耦合特性,在此过程中必须将这两方面全部考虑进去才能确保所提取的动态手势切实有效。可以这样理解,一方面要如同于静态手势逐一时间点进行有效识别,与此同时还要对其相应的运动轨迹完成有效的识别工作,并将二者有效融合,即可完成所谓的动态手势识别工作。3.2 系统相关算法当前形式下针对于图像特征提取已经开发出了各式各样的算法,其中也存在一定量的散发针对于相应的几何变换呈现出相对较为良好的适应性

28、,但是在手势识别过程当中还要有效处理好光照变化问题,对此前的算法还要进一步的完善,在一定程度上可以说是相对较为繁琐且艰巨的过程。考虑到这些原因,该手势识别系统是基于手势检测技术,恰巧基本可以实现相应的收拾特征获取任务,在一定程度上能够相对较好的有效解决光照变化所引申出的一系列问题。故可有效凭借的方式切实有效完成相应收拾特征的获取工作,确定手势位置。然后对此区域进行图像采集及识别。完成相应的手势特征获取以后,确保实现相对较为切实有效的手势识别,还需进一步针对于相应的分类器进行不断的模拟与调试,本项研究具体采取的是为,即支持向量机来作为分类器。3.2.1 HOG特征具体所指方向梯度直方图,其在一系

29、列的视觉检测以及相应的图像处理方面已经得到了相对较为广泛的应用,在此过程当中可以实现相应物体的检测以及所对应的特征描述。其具体的运作形式可以归结为有效凭借图形局部区域所对应的梯度方向直方图来实现相应的特征搭建。尤其是在针对于行人进行相关检测当中,并与进行有效组合在一定程度上已经成功应用的众多领域当中。即针对于一副图像,相应的梯度几乎全部集中于其边缘的位置。相应的目标的形态可有效凭借梯度或者相应的边缘方向进行切实有效的描述。存在的优势具体可以归结为:在一定程度上具备一定的几何以及光学不变特性;微量的动作几乎不会对相应的检测效果造成任何形式的干扰,可以理解为允许手部肢体不那么僵持。针对于直方图所呈

30、现出的更大区域:完成相应的归一化,可以将其整体性能有效提升。如图3-3所示,呈现出具体形式的生成流程。检测窗口归一化图像计算梯度对于每个cell块对梯度直方图进行规定权重投影把所有block内的直方图向量一起组合成一个大的HOG特征向量对于每一个重叠的block块内的cell进行对比度归一化 图3-1 关于生成流程其具体的生成流程可以归结为以下几方面:lllllll(1) 规范化以及相应的颜色空间所谓光照的程度会对相应的具体图像色值造成一定的影响,确保将其所呈现出的干扰程度有效压低,要做的第一步就是针对于图像进行相应的归一化处理。在相应的纹理强度当中,所占比重相对较大的部分要属表面曝光,故此类

31、压缩处理方式能使图像对这类变化具有不变性特征,相应的局部阴影以及所对应的光强改变均能得到切实有效的下降。由于在此过程当中相应的颜色信息功效不是很强烈,一般采取的方式是进行相应的灰度处理;(3-1)在这里将相应取为,从而切实保证高光区呈现出相对较低的对比度,反之阴影区相应的对比度则有效提升。该项压缩处理方式在一定程度上确保局部阴影以及相应的光照改变呈现出切实有效的下降趋势。试验结果可知,引入这项步骤呈现出效果几乎不够显著,进而将其忽略。(2) 关于图像梯度的相关求解凭借一维形式的微分算子即对最初的图像进行相应的卷积求解,结果显示相应的方向梯度分别呈现在横纵坐标当中,随后完成相应梯度方向值的有效求

32、解;进行相应的倒数运算在一定程度上不单能可有效获取其轮廓,还可以有效将光照的干扰有效压低。基于表示图像某一通道中(x,y)处的颜色值,其(x,y)处的水平方向梯度记为Gx(x,y),垂直方向梯度记为Gy(x,y),计算式如下:(3-2)则(x,y)处的梯度幅值G(x,y)和梯度方向(x,y)计算公式如下:(3-3)求解的具体方式可以归结为:分别基于以及对应的梯度算子对最初状态的图像完成相应的卷积求解,即可有效得到相应水平以及垂直方向上所对应的梯度分量,进而可以求解出任意像素点所对应的梯度方向与数值。(3) 针对于任意细胞单元进行相应的梯度方向直方图的建立这步的功效在于有效产出相应的编码供所对应

33、的局部图像区域运用,与此同时还能确保图像内部的人体姿态以及相应的外形具备一定相对较弱的敏感性。该单元当中的任意像素点均能够针对于方向形式的直方图进行所谓的投票。其具体凭借加权的形式,也就是说任何的票均夹杂这一定的权值,其相应的大小是基于相应的梯度幅度进行求解的。可以有效凭借其自身或者一系列的函数关系实现相应权值的表示,基于相关测试结果显示:在一定程度上凭借幅值的方式进行表示权值所得到的效果最为良好,除此之外,一系列关于幅值的函数关系,譬如其平方、立方等形式也可以进行相应的权值表示。相应的单元的形状也呈现出多样化的趋势,具体可以归结为:星、矩形等。相应的直方图通道具体均布呈现在以及区间内。针对于

34、相应的人体进行检测时,其中单元格大小呈现出以及像素的时候所对应的检测效果相对最为良好。倘若相应的单元格大小呈现出以及个像素时,造成的差异也不是很明显。因此将相应的图像进行像素单元化处理,也就是说任意的尺寸必须确保像素。现拟凭借进行相应的梯度信息统计工作。其具体步骤可以归结为:首先针对于相应的梯度方向进行区间层面的有效划分,也就是说进一步完成度的块等分,在此过程中任意直方图块均呈现出。如图所示:倘若其相对于梯度方向呈现出的形式,即可将其归纳到相应的第一块,倘若其相对于梯度方向呈现出的形式,便将其归纳到相应的第二块,除此之外,相应的直方图第个执行累加的运算,逐次类推。完成全部形式的加权投影,即可得

35、到与之对应的。图3-2 cell的梯度方向直方图(4) 把细胞单元组合成大的块(block),块内归一化梯度直方图(将细胞单元组合成大的区间)通常情况下,相应的梯度强度在一定程度上会随局部光照以及相应的对比度改变呈现出相对较为剧烈的改变,因此必须进行切实有效的归一化处理。归一化能够进一步地对光照、阴影和边缘进行压缩。本文采取把任意进行相应连通区间的组合,即。也就是说,将一个内全部形式的的特征向量进行有效串接从而获取到此所对应的特征。这部分区间存在一定的重叠性,也就是说:任意的特征会基于相对差异的形式呈现在最终的特征向量当中。如图所示,呈现出以及的关系形式。图3-3 关于以及相应的重叠关系3.2

36、.2 SVM支持向量机(Support Vector Machine, SVM)是由机器学习领域的最大间隔分类算法发展而来的,是一类按监督学习(supervised learning)方式对数据进行二元分类(binary classification)的广义线性分类器(generalized linear classifier),针对于降低最小化实验误差以及相应的最大化几何边缘呈现出相对较为良好的效果,故可以将其归结为最大边缘分类器。其本质在于在相对更高维度的空间内部进行相应的超平面搭建,所谓的决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane),确保

37、其对相应进行分类的数据呈现出相对较大的间隔。相应的误差与间隔之间也就是所谓的负相关形式。经过不断发展,SVM己经成为了机器学习领域的标准工具之一。我们以二维平面加以分析。如图所示,图中呈现的红方以及蓝圆均为即将进行分类的相关对象,两条蓝线即为相应的超平面,不难分析出,任意点与之间的间距要高于,也就是说即能进行相对较为良好的区分,凭借对的有效调节直至实现任意点间距达到最大化,此刻呈现出最近形式的点即为所谓的支持向量。图3-4 相应的最大间隔分类3.2.3 核函数针对在低维空间呈现出一定的线性不可分的相关特性,如图所示,可有效凭借高维度映射的方式,逐步实现线性可分形式的切实有效转化。图3-5 关于

38、线性转化过程3.2.4 肤色模型肤色特征区别于其他特征,对于彩色图像,肤色是图像中相对聚集和稳定的区域,不会基于人的各类现象的产出而发展改变,呈现出相对较高的鲁棒性,与相应的背景色彩呈现出显著的差异。通过大量的实验研究表明,不同人种的人其皮肤的色调是比较一致的,不同之处具体呈现在灰度。故一般情况下基于相对较为常见的相关肤色模型针对于人脸特征进行有效概括。由于肤色在存在差异的色彩空间中,具有不同的表现形式。本项研究基于当中的椭圆模型进行相应肤色分布的具体描述。所谓的皮肤模型可以归结为:等。通过对相关学者所做的关于皮肤信息统计方面的文献进行切实有效分析可知,倘若实现相应的皮肤信息映射到,则在相应的

39、二维空间中呈现出类椭圆形式的分布状况。一旦可以得到相应的椭圆,在有效凭借接下来获取到的坐标进行相应的区域位置判别,也就是在椭圆内部还是外部,倘若落在其内部的话,即可将其判别为相应的皮肤,否则即为所谓的像素点。确保相应的亮度不对所谓的肤色聚类造成一定的干扰,在当中针对于相应色度执行一系列的非线性变换,完成光影相对较高的区域剔除,也就是所谓关于的极值,在进行一系列非线性变换当中,凭借有效代表相应的中轴线,相应肤色区域的具体宽度可凭借进行有效表示。也就是将其全部转化到当中,再依次进行关于平面的有效投影,故通过相应采样得到的相关点集,依次进行相应的投影以及相应的变换。图3-6 关于椭圆模型的相关坐标(

40、3-4)(3-5)3.2.5 RGB色彩空间模型RGB 色彩空间是人们最常用到的颜色模型。于年选取了红,绿,蓝这几种单色作为相应的基本色,也就是所谓的色彩空间。在一定程度上可以基于三基色实现任何色彩的体现与表示,这是当今时代下最为常用的色彩表示方式。也可以有效凭借三基色进行相应光量的有效表示,其中红色(波长=700.0nm),绿色(波长=546.1nm),蓝色(波长=435.8nm)组成的坐标系为 RGB 色系坐标系。图像的颜色一般都用 RGB 坐标系来表示。在针对于手势识别相关研究过程当中,一般情况下摄像头所采集到的各种形式图像都是来源于相应的色彩空间,需要注意的是不能直接对其进行相应的肤色

41、分割。这是因为其三基色之间存在相对较为突出的相关性,倘若进行任意分量保持相对独立的形式进行处理,可以说要比登天还难,在此过程中其对光照要求相当严格,其所带来的干扰也尤为突出,故在进行目标手势肤色分割的过程当中,几乎没有采取的现象。图3-7 关于色彩空间相关坐标系在 RGB 模型中,手势表现出来的颜色受到关照的影响,但对同一点来说,在不同的亮度条件下其对应的值是成比例的:(3-6)(3-7)可以归结为相应的光照几乎不会影响同一点的色彩情况,仅仅局限于亮度存在差异。 RGB 颜色空间可以直接通过线性变换,转化为灰度图像:3.2.6 YCbCr色彩空间模型具体可以归结为由进行有效变换所得到的。其中代

42、表相应的亮度,、Cr 分别代表光源中的红色分量与蓝色分量。通过非线性分段而得到的的亮度以及色度所对应的采样比率分别为,在一定程度上基本能够满足于肉眼对色度变化的敏感程度明显低于亮度变化的性质,与此同时相关色彩的求解相对较为简便、相应的亮度以及色度分量可有效进行分离、具备相对较为良好的聚类性等特征被认为是很出色的肤色空间模型。经过对文献的调研,在人们的大量实验后,通过统计的方法来确定肤色的参数,人手肤色在YCbCr空间中的范围Cb(105,127),Cr(137,162),当像素点属于此范围时,我们就认为它是皮肤像素点。其转换公式为:(3-8)相关实验结果显示,基于相关模型,以及分量呈现出一定的

43、相关性,但需要注意的是与之间没有所谓的相关性,当亮度存在差异的形势下以及均能呈现出相对较为出色色聚类效果。而且基于到空间的转化基本可以称之为线性变换,从而可以忽视的干扰,从而有效降低冗余通道的数量。这就实现了相应的维度降低操作。如图3-8所示,呈现出肤色关于平面相应的投影。图3-8关于肤色在平面上相应的投影经查阅文献及实验,本文首先将采集到图像转换到YCrCb空间,再对其进行手势分割以得到想要的目标手势。相比于RGB和HSV,YCrCb空间计算量远远小于前两种,同时对人体肤色的聚类效果最佳,受光线变化干扰也最小。接下来的一章将进一步介绍基于肤色聚类分割的具体呈现形式,此处不再赘述。3.2.7

44、中值滤波肤色分割之后,我们还需对图像进行一定的平滑度处理。在一定程度上又可归结为模糊,通常情况下凭借其进行有效降噪,其本质在于针对于相应的图像进行平滑化,从而有效降低其内部的噪点存在。在本文所涉及的手势识别当中,所谓的图像平滑处理的最根本原因在于尽可能最大限度降低一系列的冗余信息,便于后续的手势轮廓分割以及相关特征的有效获取,与此同时致使相应的计算量有效下降。中值、双边以及相应的高斯滤波是相对较为常见的几种平滑滤波方式。中值滤波可以归结为相对较为典型的非线性技术,其具体的原理是有效凭借像素点灰度中值进行有效近似等价替代,其功效在于有效剔除相应的造成,与此同时还能切实有效保证一系列边缘细节不会被

45、破坏。基于实验进行分析,相应的中值滤波对去除图片噪声特别理想。相比于其他平滑方法,其在一定程度上能够有效克服一系列相对较为常见的线性滤波器,譬如最小均方、方框、均值滤波等造成的一系列细节模糊问题,与此同时能够有效降低脉冲干扰以及相应的扫描噪声,还能切实有效保证一系列边缘细节不会被破坏。除此之外,相应的算法相对较为便捷实用。故本文所涉到的手势识别系统有效凭借中值滤波的方式完成相应的噪音剔除。(3-9)。其中f(x,y)、g(x,y)分别表示中值滤波处理前、后的图像,W是模板,通常为3*3或者2*2,本文采用3*3。3.2.8 膨胀滤波形态学(morphology)是生物学的一个分支,图像处理中的

46、形态学具体可以归结为数学形态学,其实质在于格论以及相应的拓扑学层面的图像分析。简而言之,所谓的形态学操可以归结为基于相应形状的图像处理。在一定程度上为相应的图像形态学变换营造了相对较为快捷的函数以及开发环境。最基本的形式可以归结为两类,即膨胀以及腐蚀。本文采用膨胀进行滤波。膨胀(dilate)又称为作图像加粗,也可以称之为局部最大峰值的求解。基于数学视角出发,所谓的膨胀即为将图像(与核进行卷积计算。核的形状以及大小几乎不受任何限制,它具备一定的单独形式进行定义的相关参考点,也就是所谓的锚点。通常情况下,核具体表现为相对较小其中心部位存在一定的参考点的实心圆或者正方形。可以将其当做相应的模板甚至

47、是掩码。相应的膨胀操作在一定程度上能够针对于噪音以及阴影等干扰所进行分割的各个部分完成相应切实有效的融合。如图所示,有效凭借膨胀可以进行局部最大峰值的求解。核与图形发生卷积,即进行核覆盖区域所对应的的像素点的最峰值的求解,并将其赋给相应的参考像素,便可将相应的高亮区域逐步扩大。(p188)图3-9 膨胀滤波膨胀的数学表达式如下(3-10)4 系统设计与实现凭借着计算机以及图像处理技术发展势头迅猛提升,相应的计算机视觉等方面也在迅速发展,手势识别作为人机交互的一种方式,也迎来了新的发展机遇。通过前期调研发现,手势识别技术已应用在多个领域,如日常生活视频直播或者拍照过程中,结合用户的手势(如点赞、

48、比心),实时显示相应的特效,丰富交互体验。智能驾驶过程中将手势识别应用到驾驶辅助系统,使用手势控制车内的各种功能,一定程度上解放双眼,将更多的注意力放在道路上,提升驾车安全性。同时还包括百度AI开放平台提供的在线手势识别服务等。这些均反映着手势识别技术的火热。开始打开摄像头采集图像图像预处理结束肤色检测图像分割手势识别特征提取本文设计的手势识别系统可以归结为顺序结构,相应的系统流程如下图4-1所示图4-1 手势识别流程图下面对系统中三个重要模块进行介绍:(1) 图像采集模块基于本地形式的摄像头,完成相应的视频图像的切实有效采集,呈现出空间视频流的形式进而为手势识别输入奠定一定的基础,并将采集到

49、个各项数据有效储存到当中,为接下来的输入做好充分准备。(2) 图像预处理模块凭借图片的有效缩放,进而将后期的相关计算量有效压低,在此过程当中有效剔除相应的图片噪音,为接下来的相应处理提供相对较为便捷的条件。这部分具体涵盖了灰度变换、空间转化以及相应的平滑处理等。(3) 匹配识别模块该模块是手势识别系统需要实现的目标功能,也是本系统最重要的模块。在对图像进行一系列的处理后,有效获取到相应手势图像具体形式的特征值,接下来与事先设定好的模板特征值完成切实有效的对比以及归类,进而有效寻找出所对应的手势信息,譬如手型所代表的数字。然而在动态识别当中,系统内部会进行实时的信息采集,并完成相应的处理工作。4

50、.1 系统整体设计根据前期的需求分析和调研,本文设计的整体系统结构如下图所示:手势样本采集开始手势训练模块图像预处理待识别手势采集图像预处理手势分割手势特征提取手势分割手势测试模块训练手势模板手势特征提取提取手势模板手势判定输出结果结束图4-2 手势识别程序流程图4.1.1 手势训练模块在开始训练手势之前,需要用户打开电脑自带的摄像头提供视频流。void CMFCGuestureDlg:OnBnClickedOpencap()/打开摄像头m_Cap.open(0);if (!m_Cap.isOpened()MessageBox(摄像头打开失败);return;但是MFC的picture con

51、trol控件中的图像格式与OpenCV的图像格式不尽相同,因此需要将OpenCV得到的视频流通过CvvImage开源图像处理库进行转变处理。处理完以后摄像头所得到的图像就会被显示在控件中。void CMFCGuestureDlg:regniseHand(string path_img)imagesRegnise = imread(path_img.c_str();/imagelist0.c_str()Mat incp = imagesRegnise.clone();srcCvvImg.CopyOf(&(IplImage)imagesRegnise);/绘制图像到控件srcCvvImg.Draw

52、ToHDC(m_HDCImg, &m_RectImg);resize(incp, incp, Size(HogWIDTH, HogHEIGHT);hand = handPreprocess(incp);if (1.0*countNonZero(hand) / (incp.cols*incp.rows) 0.23)int regResult = mySvmClassifier-svmPredict(incp);CString str;str.Format(%d, regResult);SetDlgItemText(IDC_EDIT2, str);sprintf_s(buffer, %d, reg

53、Result);putText(imagesRegnise, buffer, Point(incp.cols / 2, incp.rows / 2), FONT_HERSHEY_SIMPLEX, 1.5, Scalar(0, 0, 255), 2);srcCvvImg.CopyOf(&(IplImage)imagesRegnise);/绘制图像到控件srcCvvImg.DrawToHDC(m_HDCImg, &m_RectImg);srcCvvImg.CopyOf(&(IplImage)hand);/绘制图像到控件srcCvvImg.DrawToHDC(m_HDCImg2, &m_RectIm

54、g2);elseMessageBox(没有检测到手势);在本系统中,为降低识别失败率及程序复杂度,我直接定义并设置了检测区域的位置。int WIDTH = m_src.cols;int HEIGHT = m_src.rows;capRt = cv:Rect(1 * WIDTH / 3 - 1, 1 * HEIGHT / 3 - 1, WIDTH / 2, HEIGHT / 2);采集手势如图所示图4-3 手势采集void CMFCGuestureDlg:OnBnClickedReg()/注册手势类别CString str;GetDlgItem(IDC_EDIT1)-GetWindowText(

55、str);regingInt = atoi(str);regBool = false;sprintf_s(buffer, ./Data/%d, regingInt);if (_access(buffer, 0)=0)sprintf_s(buffer, 手势%d已注册,如需重新注册请先删除对应类别文件夹, regingInt);MessageBox(buffer);regingInt = -1;return;CreateDirectory(buffer, NULL);regBool = true;regNum = 0;图像采集完毕后,存入指定文件夹下。如例子中注册手势1,则存入D:2019毕设v

56、s13programhandGuestureMFCGuestureData1。保存如图所示图4-4 手势采集保存形式本系统手势预处理将计算机摄像头采集到的的RGB色彩空间转换为YCrCb空间,再利用椭圆皮肤模型进行皮肤检测与分离。Mat CMFCGuestureDlg:handPreprocess(Mat& src) ycrcb_image;Mat output_mask = Mat:zeros(Size(src.cols,src.rows), CV_8UC1); for (int j = 0; j src. /如果该落在皮肤模型椭圆区域内,该点就是皮肤像素点output_mask.at(j,

57、 i) = 255;dilate(output_mask, output_mask, element);/膨胀,参数1:输入图片,参数2:输出图片,参数3:卷积核medianBlur(output_mask, output_mask, 3);/中值滤波,morphologyEx(output_mask, output_mask, MORPH_CLOSE, element2);/形态学运算函数return output_mask;输出如图所示图4-5 手势预处理采集并处理完图像后,进行手势模型的训练void CMFCGuestureDlg:OnBnClickedButton3()/训练模型cha

58、r* path_ = ./Data/;readDir(path_, imagelist, labelName);mySvmClassifier = new svmGuesture(imagelist.size(), HogWIDTH, HogHEIGHT);/新建的手势识别的类svmGuesture,这个类在另外的文件if (_access(./model.xml,0)=0)mySvmClassifier-svm.load(./model.xml);return;int flag = mySvmClassifier-loadData(imagelist);if (flag=-1)Message

59、Box(not Found image files);flag = mySvmClassifier-svmTrain();if (flag = -1)MessageBox(train model error);MessageBox(training model done);4.1.2 手势测试模块系统必须先通过手势检测模块来画出手势轮廓与皮肤区域。此系统中的手势检测功能就是通过OpenCV手势识别库,在特定区域提取手势特征。本系统手势识别模块包括了动态识别和静态识别。具体方法将在第五章叙述。启动手势识别功能代码如下:void CMFCGuestureDlg:OnBnClickedButton2

60、()/手势识别if (_access(./model.xml,0)!=0)MessageBox(请先训练模型);return;startRegnise = true;5 系统测试与分析在系统运行和测试阶段,通过对系统功能逐个进行测试,验证系统是否达到了预期的设计要求。5.1 系统测试环境在本文的测试中,系统的运行环境为英特尔 Core i7-8750H 2.20GHz 六核处理器和16GB内存配置的电脑,操作系统为win10,开发环境采用Visual Studio 2013,开发语言为C+。5.2 系统界面测试5.2.1 手势注册功能测试系统界面如图5-1所示图5-1 手势识别系统界面考虑需要

61、一只手注册,一只手操作,我将注册区域调整到画面左下方。以注册手势0为例。图5-2 注册手势“0”void CMFCGuestureDlg:OnTimer(UINT_PTR nIDEvent)/时间响应函数m_Cap m_src;rectangle(m_src, capRt, Scalar(255, 0, 0), 2);srcCvvImg.CopyOf(&(IplImage)m_src);/绘制图像到控件srcCvvImg.DrawToHDC(m_HDCImg, &m_RectImg);frameCounter+;if (regBool | startRegnise)hand = handPre

62、process(m_src(capRt);/ 皮肤检测判断是否为手势if (regBool & regNum=0)/Mat hand = handPreprocess(m_src(capRt);if (regingInt = 1)thresh_ = 0.24; else thresh_ = 0.3;if (frameCounter % 3 = 0 & 1.0*countNonZero(hand) / (capRt.width*capRt.height) thresh_)sprintf_s(buffer, ./Data/%d/%d_%d.jpg, regingInt, frameCounter, regNum);

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