收藏 分享(赏)

智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc

上传人:dreamzhangning 文档编号:2648969 上传时间:2018-09-24 格式:DOC 页数:52 大小:3.42MB
下载 相关 举报
智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc_第1页
第1页 / 共52页
智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc_第2页
第2页 / 共52页
智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc_第3页
第3页 / 共52页
智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc_第4页
第4页 / 共52页
智能安防系统中人脸识别系统—陈修伍毕业论文最终稿.doc_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、本科毕业论文(设计)题 目: 智能安防系统中人脸识别系统 学 院: 自动化工程学院 专 业: 电子信息科学与技术 班 级: 2009 级 1 班 姓 名: 陈修伍 指导教师: 贺 英 2013 年 6 月 3 日智能安防系统中人脸识别系统Face recognition system in intelligent security system青岛大学本科生毕业论文(设计)摘 要安防系统是实施安全防范控制的重要技术手段,在当前安防需求膨胀的形势下,其在安全技术防范领域的运用也越来越广泛,随着光电信息技术、微电子技术、微计算机技术与视频图像处理技术等的发展,传统的安防系统也正由数字化、网络化,而

2、逐步走向智能化。而实现自动的面部识别对于智能安防系统有着举足轻重的作用,随着 Android的兴起,可以做到移动设备上实现人脸识别技术,这就为智能化安保系统的实现提供了全新的思路。本文的主题就是基于 Android 编程平台,基于 JAVA 编程实现在手机上显示从文件夹中读取的人脸位图,编程实现人脸检测 PCA 算法,实现在人脸图片上用算法自动画出方框标注人脸区域;可设置一张图片中最多检测的人脸个数。关键词 智能安防 Android 人脸识别 JAVA 编程 PCA 算法青岛大学本科生毕业论文(设计)AbstractThe security system is the important te

3、chnical means of security control, in the current security demand expansion of the situation, the security technology field is used more and more widely, With the photoelectric information technology, microelectronics, micro computer technology and deal with video images technology, the traditional

4、security systems are also being used by digital, networked, and gradually move toward intelligent. And the realization of automatic facial recognition has play a decisive role for the intelligent security system, with the rise of Android, can be done on the mobile device to realize the face recognit

5、ion technology, which provides a new approach for the realization of intelligent security system.This paper is based on the platform of Android programming, Java programming bitmap display face read from a folder on the mobile phone based on PCA face detection algorithm, programming, realize automat

6、ic draw the box labeled face region using the algorithm in image face; face detection can be up to set a picture of.Keywords intelligent security Android face recognition JAVA programming PCA algorithm青岛大学本科生毕业论文(设计)I目 录第一章 绪论 .11.1 课题背景 11.2 人脸识别的发展状况 .11.3 本课题研究意义 .21.4 本文的主要内容及结构 .3第二章 研究方案及技术路线

7、.42.1 研究内容 .42.1.1 研究对象 42.1.2 制约识别率的关键问题 42.2 研究方案 .42.2.1 相关人脸识别算法对比 42.2.2 运用程序功能分析 52.2.3 研究方案的确定 62.3 技术路线 .7第三章 图像预处理 .83.1 彩图灰度化 .83.2 直方图均衡化 .93.3 图像平滑滤波 .103.4 边缘检测 .103.5 人脸部位提取 .11第四章 基于 Android 的人脸检测技术原理 134.1 Android 编程平台 .134.1.1 Android 开发平台搭建 .134.1.2 Android 开发简介 134.2 人脸图像获取 .144.2

8、.1 Android 应用程序组件(Activity 简介) 144.2.2 Bitmap 和 Drawable 和 Canvas .174.3 PCA 算法原理分析 .184.3.1 训练阶段 18青岛大学本科生毕业论文(设计)II4.3.2 识别阶段 194.3.3 PCA 算法实现流程 .19第五章 人脸检测 android 系统实现 .215.1 新建工程 .215.2 重要程序段及设置 .235.2.1 应用界面设计程序 235.2.2 界面启动程序 245.2.3 创建包 245.2.4 创建图片 255.2.5 获取人脸图片 255.2.6 人脸的眼部定位 255.2.7 定义图

9、片大小 275.2.8 创建位图及画板 275.3 按钮的设置 .30第六章 研究结果及分析 .32第七章 总结 .347.1 全文总结 .347.2 前景展望 .34参考文献 .36致 谢 .37附 录 .38青岛大学本科生毕业论文(设计)1第一章 绪论1.1 课题背景现在,人们购房时已不仅是追求舒适、温馨的生活环境,而且更加关心居住环境是否具有安全感。对外网络联系系统、社区信息和物业服务的社区网络系统及保障安全的高科技预警监控系统,将是人们衡量小区智能化水平的最基本条件 1。但目前所使用的安防系统主要依赖人的视觉判断,而缺乏对视频内容的智能分析。由此使得安防系统只能完成时间内的视频存储记录

10、,仅可为事后分析提供证据。而其在事前预/报警的缺位,也让保平安的意义大打折扣。随着光电信息技术、微电子技术、微计算机技术与视频图像处理技术等的发展,传统的安防系统也正由数字化、网络化,而逐步走向智能化 1。 智能安防系统结合了先进的现代计算机技术、现代控制技术、现代通信技术、现代图像显示技术实现系统的有机结合,采用国内外先进的监控设备,旨在建立为住户提供一个安全、便捷的生活环境,把本系统建成符合实际需要、经济实用、技术先进、操作方便、可扩展能力强、管理规范的一流的安全防范监控系统 1。就智能化安防系统来说,一个完整的智能安防系统主要包括门禁、报警和监控三大部分。智能化是智能安防与传统安防的最大

11、区别,我国安防产业发展虽然很快,也很普及,但是相对来说比较传统,耗费巨大人力物力。因此,如何才能更加有效和方便地进行安防系统的智能控制是一个迫切需要解决的问题。而Android系统的兴起为为我们提供了一条很好的发展道路。Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟 领导及开发,Android平台具有良好的开放性和出色的性能 2。并且源程序都是免费开源的,基于这个原因我们在智能安防系统中使用Android 平台。Android系统经过最近的发展已经变得非常成熟和稳定,尤其在智能手机上的应用,让我们看到了

12、非常广阔的前景,同时它还有具有以下优点:开放性、不受束缚、丰富的硬件、方便开发、Google应用等。基于上述背景,Android平台的人脸识别技术将在智能安防系统中发挥关键性的作用。由于人脸识别技术具有如下特点:无接触、方便、直观和隐蔽性好,因而受到了国内外众多学者关注与研究。1.2 人脸识别的发展状况人脸识别技术在现在的生活中已经应用到很多领域中,并发挥了重要的作用。人脸青岛大学本科生毕业论文(设计)2识别技术的研究开始于1966年,来源于PRI的Bledsoe 的工作,经过这么长时间的发展,人脸识别技术取得了巨大的进步,每年都有大量的学术论文发表。总体来说,人脸识别研究的历史状况大体划分为

13、三个阶段 3:第一阶段是20世纪50年代到20世纪60年代,基于面部特征的人脸识别是研究的重点,其中的代表人物是Bertillon、Parke 和Allen。Bertillon主要是结合指纹识别技术,并同时使数据库中的一张脸与自己编辑的一个程序语句对应,从而创建起了一个很好的身份识别系统。为了解决人脸识别率问题,Allen提出了一种逼真的摹写给将要识别的人脸,且取得了良好的效果 4。但是Parke 在计算机上第一次完成了Allen的设想,并且首次得到人脸灰度图模型,改模型的质量较高 5。该阶段的识别几乎都是通过人工完成,没有自动识别的功能,这也正是该阶段系统的缺点。第二阶段是20世纪70年代,

14、人脸识别研究进入人机交互式的识别阶段,代表人物为 Goldstion、Harmon和Lesk 。他们表征人脸正面图像用的是脸部正面矢量图像的几何特征,面部特征用21维特征向量来表示,新的识别系统就是在这个基础上建立起来 6。Kaya和Kobayashi表征人脸特征用的是欧氏距离。 T.Kanad基于使用积分投影方法从单幅图像中提取出一组脸部特征向量,设计了一个高速半自动回溯识别系统,再借助于模式判别分析技术来匹配标准人脸,这种系统实现了对人脸识别的实时、快速的处理 7。整体上说,这些方法对操作人员的先验知识有很高的要求,属于半自动化。第三阶段是是实现机器自动识别。尤其是近年来计算机性能和速度的

15、提高,所以计算速度和数据处理能力大大增加,用于人脸模式识别的算法取得了很大的突破,提出了多种全自动人脸识别系统 8。除此之外,近年来,在奇异值分解为代表的代数特征方法和基于K-L变换的特征脸方法都获得了突破,同时人工神经网络、小波变换技术等在人脸识别技术研究中也都得到了广泛的应用 14。早在80年代,我国就开始了在人脸自动识别领域的研究。我国许多研究机构、大专院校已经在图像处理和模态分析等方面都取得了丰硕的研究成果,对人脸识别的研究和应用开发工作领域进行了大量的研究。人脸自动识别系统会对人们的生产生活取得巨大的影响,而人脸识别技术也会有着非常广阔的应用前景 15。1.3 本课题研究意义用来实现

16、个人身份信息确认人脸识别技术是基于生物特征识别技术来确定人的脸部特征信息的。与指纹识别技术相比,人脸识别具有不接触性、准确率高、识别速度快等优点,多应用于重要行业和领域,人脸识别技术在民用市场也有很广应用的前景,如:智能门禁、门锁、考勤、手机、数码相机、智能玩具等。人脸识别主要有一下几种应用:1、用于电脑、智能访问控制、网络安全、银行业务、边境控制等领域的身份鉴定。青岛大学本科生毕业论文(设计)32、将随时采集的面部数据与数据库中的数据对比实现身份确认。3、通过视频监控画面捕捉面相,可以快速识别罪犯并跟踪他和确定他的藏身位置 10。近年来,欧美很多发达国家真正把人脸识别技术推进到实用阶段,人脸

17、识别成为了市场的宠儿得到广泛应用从而开启了新的数字化生活方式。可以乐观的预计,在人脸识别时代,智能安防体系将得到全面完善,是智能安防系统走入一个新纪元。1.4 本文的主要内容及结构本论文所完成的任务是基于Android编程平台,在Android手机上实现人脸识别功能。对进入小区的人员身份进行确认,保证小区的人员、财产安全等。本论文在总体结构上共分为7章。第1章绪论, 本章介绍了智能安防系统,Android和人脸识别的背景、意义。第2章研究方案及技术路线,本章主要介绍人脸识别的各种算法、方案和实现的技术路线。第3章图像的获取,本章介绍了Android编程平台的基础知识,人脸图像的获取途径,及初步

18、处理方案。第4章图像预处理,本章介绍了相关图像处理的算法以及实现,其中包括彩色图像的灰度化、灰度图像的直方图均衡化、图像的平滑滤波、边缘检测等。第5章PCA算法及实现,本章介绍了基于Android编程的程序实现。第6章研究结果及分析,本章对研究结果叙述,以及分析。第7章结论,对全文进行总结,并对该课题的前景进行展望。青岛大学本科生毕业论文(设计)4第二章 研究方案及技术路线2.1 研究内容2.1.1 研究对象本文涉及的研究对象是从智能手机存储的图片中的人脸图像,并对人脸图像进行一定算法的处理,以达到相关识别算法的要求,分析出图片中人脸的个数并予以标记,并显示在屏幕上,已达到分辨人脸的效果。同时

19、显示出图片中有多少人脸即人的个数,从而达到分辨人的目的。2.1.2 制约识别率的关键问题人脸识别技术进过长时间的发展,在识别率方面有了很大的改善和提高,但是在相关技术领域仍然面临着问题。主要是在一下几方面表现欠佳:1、 采集设备:人脸的数据图像数据采集时会由于设备的性能和设备的设置,从而使获取的数据变化很大,怎样解决这个问题还值得好好研究。2、 背景及光照的影响:背景的不同关系到识别的准确率,然而光照却是影响人脸识别性能的最关键因素。对这个问题的解决能直接关系着人脸识别应用程序的稳定性,可靠性,准确率。3、 人脸姿态:现今人脸识别实用化进程中的一个瓶颈是人脸姿态问题。以后的研究方向会集中在将不

20、同姿态的人脸统一到一个标准人脸结构,从而提高人脸的识别率。4、 表情问题:人脸表情很是丰富,但是在人脸识别方面会影响数据的采集和提取,这个问题也将对后续的算法处理产生非常大的影响。2.2 研究方案2.2.1 相关人脸识别算法对比现今科技文献中常提及的人脸识别的方法主要有:隐马尔可夫模型的方法、模版匹配的方法 11、几何特征的方法、特征脸方法、基于神经网络的方法等 12。1、基于几何特征:几何特征识别的方法是基于层次聚类思想,用一个几何特征矢量反应人脸,实现人脸识别。可以把人脸器官的形状和与之相对应的几何关系为基础的特征矢量来表示几何特征矢量,通常包括人脸特定两点间的欧氏距离、曲率、角度来反应。

21、青岛大学本科生毕业论文(设计)5人脸器官的关键点分别与不同的积分投影方式产生的波峰波谷相对应。2、基于模版匹配:模板匹配方法是根据人脸轮廓、眼睛、鼻子和嘴巴的轮廓特征或者灰度特征计算结果,手工构造一个标准的人脸模式或者参数化的人脸模式。这个方法大多采用归一化互相关法,直接计算出图像之间的匹配度。3、隐马尔可夫模型: hidden Markov model ,HMM(中译为隐马尔可夫模型)是用于描述信号系统特征的一种常见的统计模型,多用于语音判定。依照一种自然的顺序,即从上到下、从左到右来表征人脸面部特征的分布,这种顺序不会随着人脸在平面和垂直方向上发生旋转而变化,但是实现起来的难度较大。4、基

22、于神经网络识别:基于神经网络的方法是近年来研究的一个主流研究方向。人工神经网络(ANN)的神经元中的一个节点的处理单元(一个模拟人的脑细胞和简化)之间的加权连接拓扑。Cottrell 等人进行人脸识别使用的是级联BP 神经网络方法,对部分受损的人像、光照有所变化的人像,有很好的识别能力,但是神经元数目通常很多,训练时间很长,具有固有缺陷:收敛速度慢、容易陷入局部极小、先验参数多且参数的确定凭经验而定。5、特征脸识别:特征脸法是一种常用的人脸识别方法。这种方法主要是从人脸图像的全局,KL 变换使用的理论,原始空间的一组正交向量,并以此构成新的人脸空间,使所有人脸的均方差最小,达到将为的目的。降维

23、的思想,降低了运算量,此算法多运用于硬件配置相对中低端的手持设备中。但是此算法也存在缺陷:特征脸方法容易受多种因素的干扰导致识别率下降,例如:角度、光照、表情等。通过以上算法的介绍,结合算法的特征还有应用的平台,我们选择PCA算法。因为这样我们可以减少大量的计算过程,从而提高程序运行的效率,因为实现手机上的运行我们更重视考虑到运算量的大小,综合考虑本文的主要算法实现我们采用PCA算法。2.2.2 运用程序功能分析本文应用程序最主要的功能就是要能识别出人脸,首先该系统需要通过 SD 卡中存取的图像而获取到的原始的人脸图片进行一系列处理才可进行下一步的工作,该处理过程也称图像预处理。预处理这个模块

24、在整个人脸识别系统的开发过程中占有很重要的地位,只有预处理模块做的好,才可能很好的完成后面的特征提取这一关键模块。因此本设计中所要完成的主要功能如下所述:图像存取:在手机 SD 卡中建立相关文件夹,用于存取人脸图像,其中包括待识别图像以及相关的数据。图像获取功能:主要是调用 SD 卡中的图像,进入处理程序。图像预处理:主要是对获取的图像进行灰度化、直方图均衡化、平滑滤波、等处理。图像特征的提取:按照 PCA 算法对图像进行特征提取。青岛大学本科生毕业论文(设计)6识别功能:这部分功能主要依据程序设置,对图像里人的眼睛进行标注,从而识别出人脸图像。2.2.3 研究方案的确定通过以上分析本文的研究

25、方案确定为以下几点:熟悉 Java 编程语言为进一步熟悉 Android 编程平台打下基础,初步实现利用 Android手机实现存取和读取文件夹里照片的功能。查阅并重新学习数字图像处理的相关知识,为图像预处理打下坚实的理论基础。学习各种图像处理的算法,然后运行软件编程,通过程序的实际运行效果进行相应的调整、改进。主要预处理步骤如图 2.1:图像预处理层次图。图 像 预 处 理 彩 色 图 像 的 灰 度 化 灰 度 图 像 的 直方 图 均 衡 化 图 像 的 平 滑 滤 波 图 像 的 边 缘 检 测 图像预处理获取标准人脸后,学习人脸识别相关算法,对主要人脸识别算法进行归纳、总结。确定本课

26、题人脸识别算法,并对算法认真研究、理解并写成相应的程序。最终实现人脸识别算法在 Android 平台上的运行,完成本课题要求。图 2.1 图像预处理层次图青岛大学本科生毕业论文(设计)72.3 技术路线由以上分析,技术路线如图 2.2:人脸识别技术路线。图 2.2 人脸识别技术路线青岛大学本科生毕业论文(设计)8第三章 图像预处理由于使用的人脸图像来源于手机存取图像,这些图像在产生、传输和变换会受到种种原因的影响,使得图像产生变差或是退化,而这种变化会使产生的图像与原始景物之间存在某些差异,这些差异一般会使人脸图像的对比度差、人脸边沿模糊、噪声较大等。这些差异对下一步的图片处理带来了极大困难和

27、不便,因此就很有必要对人脸图像进行一些相应的处理,以来改善图像的视觉效果,来提高图像的清晰度,便于提高后期的图像识别识别率,这一过程就是图像的预处理。人脸图像预处理的方法主要有:人脸图像灰度化、人脸图像二值化、人脸图像几何校正、直方图均衡化、人脸图像的滤波、图像锐化、像素平均等 13。3.1 彩图灰度化人脸识别技术的研究不是直接利用原始的彩色图像,一般是采用将彩色图片灰度化之后的灰度图像作为研究对象。这是因为彩色图像包含了太多的人脸的信息,而直接将彩色图像作为研究对象会使处理的过程变得相当的复杂,不利于识别也减缓了算法的运行速率。而灰度图在保留人脸信息量不丢失的情况下,减少了信息总量,为后期的

28、识别算法提供了具体的可行性。把彩色图像进行灰度化,大多采用以下经验公式:(3-1)0.39.50.1GrayRGB具体过程如:图 3.1 彩色图像的灰度变换Android程序实现的主要代码:int color = pix_resultwidth * i + j; int red=Color.red(color);int green=Color.green(color); int blue=Color.blue(color);color = (int) ( (float)red*0.3 + (float)green*0.59 + (float)blue*0.11)图 3.1 彩色图像的灰度变换读

29、取图像数据获取RGB 分量计算像素点灰度值像素点重新赋值得到灰度图青岛大学本科生毕业论文(设计)93.2 直方图均衡化图像直方图是图像像素的灰度值的统计衡量。反应图像的直方图可以是一个很好的总体概述,图像是值得大大的不同情况,如图像中的目标的背景下,分布,也可以计算出的最大和最小灰度值图像,平均灰度值,对比度等。应用到图像的预处理,我们称为直方图均衡化(也被称为校正直方图) ,其基本思想是,每个灰度级组件尽可能均匀地分布在整个图像中的空间中,在直方图中的性能上的理由密集的灰度分布变得均匀分布,从而提高了图像的对比度。另外,直方图均衡化也可以降低干扰的线图像,冲击,更容易地使图像的特征提取,并在

30、同一时间,提高图像的主观质量的。实践证明,直方图均衡是一种有效的方法,用于图像增强。直方图均衡化就是要建立一个 T 变换,对于连续的图像来说:用变量 R 来代表待增强图像的灰度级。假设 R 被归一化到区间0, 1,且 R=0 代表黑色、R=1 代表白色。之后用一个离散公式并允许像素值在区间0,L-1 。这样我们建立变换:(3-2)()01SR在输入图像中,对于每个像素值 R 产生一个灰度值 S。 满足一下条件:()TR(1) 在区间 上为单值且单调函数()TR01(2)当 时, ()T这样就保证了 的反变换存在,单调的条件就保证了输出图像是从黑到白的顺序,()最后由 S 到 R 的反变换可表示

31、为:(3-3)1()01SS对于离散的数字图像,其方法可以表示为:(3-4)0.5(,)ikLniLA 其中 A 为图像面积,L 为图像灰度级, 表示灰度级为 k 的像素点的总数。kn算法实现流程,如图 3.2 直方图均衡化算法流程:Android中核心代码:Gray=PixelsGrayi; FrequenceGrayGray+; SumGrayi=SumGrayi-1+FrequenceGrayi; SumGrayi=(int)(SumGrayi*255/length); PixelsGrayk = SumGrayPixelsGrayk;图 3.2 直方图均衡化算法流程获取原图像信息统计各

32、灰度级概率密度原图像直方图均衡化返回均衡化的像素点数组青岛大学本科生毕业论文(设计)10return PixelsGray;3.3 图像平滑滤波人脸图像在采集过程中,受到各种因素的干扰,并将收到干扰的信息保留在图像中。为了避免噪声对图像的特征抽取的影响,需要消除噪声,消除噪声的主要方法分为两类:一类是全局处理,包括 Wiener 滤波、Kal-man 滤波等方法。二类是使用局部算法,如均值滤波、中值滤波、梯度倒数加权滤波等经典算法。基于实现方式的简易度,我们采用的是均值滤波的方式。均值滤波就是每一个像素值用其局部邻域内的所有值的平均值来代替,数学公式如下:(3-5)(,)1(,klNhijfl

33、m其中 m 为邻域内像素点的总数。如在像素点 处取 3x3 的邻域,这样得到公式如()ij下:(3-6)1(,)(,)9jikiljhijfl其中值得注意的是邻域 N 控制着滤波程度,对应卷积模板的大尺度会加大滤波能力,但是这样会导致图像细节的损失。设计线性平滑滤波器时,为使得滤波器只有一个峰值要合适的选择滤波权值,并且权值模版在水平和垂直方向上都是对称的,以下就是一个典型 3x3 平滑滤波器的权值模板: 16841线性平滑滤波器过滤掉了高频成分和图像中的锐化细节。如把阶跃变化过渡,平滑成逐渐变化,使得精确定位的能力下降 4。程序中实现的核心代码如下:average=(1/4*datai*wi

34、dth+j+ 1/8*datai*width+j-1+ 1/8*datai*width+j+1+ 1/8*data(i-1)*width+j+ 1/16*data(i-1)*width+j-1+ 1/16*data(i-1)*width+j+1+ 1/8*data(i+1)*width+j+ 1/16*data(i+1)*width+j-1+ 1/16*data(i+1)*width+j+1)/9;filterDatai*width+j=(int)(average) filterDatai=(filterDatai-min)*255/(max-min);青岛大学本科生毕业论文(设计)113.4

35、 边缘检测图像的边缘是图像非常重要的特征因为原始图像中的大部分相当重要的信息保留在了图像的边缘中。为了使得总的数据量减少,同时为后续特征提取的计算量减少,因此使用图像边缘检测技术。提取图像边缘的标准是在灰度图像中灰度值变化剧烈的地方。边缘的衡量常由灰度值的剧烈变化来表示,由此我们想到在数学上,最直观的模型就是微分。在进行微分之前,我们应该对要输入的图像进行噪声消除处理,以来保证图像中的高频成分与原始图像中的一致。比较经典的常用的算法有:差分边缘检测、Roberts 边缘检测算子、Sobel 边缘检测算子、Prewitt 边缘检测算子等。本文就是采用 Sobel 算子进行图像的边缘检测。对于数字

36、图像而言,可以用一阶差分来代替一阶微分。对图像 x, y 两个方向进行差分:(4-7)(,)(,)(1,)xfyfxfy(4-8)求梯度时,对平方和的开方运算,可以用两个分量的绝对值之和来表示。如下公式:(4-9)22(,)(,)(,)+GfxyfxyfxyASobel 算子是一种基于梯度幅值的计算方法,通过对数字图像 f(x ,y)的每一个像素的四邻域点的灰度值的加权差,与邻点的权值大小。先做成加权平均,再微分,再求梯度。具体的算法表达如下:(4-10)(,)(1,)2(,1)(,1)xfyfxyfxyfxy(4-11),()()()ffff根据以上推论,定义 Sobel 算子如下:(4-1

37、2)(,),sxyfxyfxySobel 算子通过这两个模板在图像区域中移动,完成图像中每个像素点与这两个卷积核的卷积运算,其核心是两个 3x3 的卷积和。Sobel 算子的卷积和如下: 10122,0x ySS鉴于算法的复杂度非常大,本文采用库函数实现图像的边缘检测,具体实现核心代码如下:pImgSobelgray = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_16S,1);青岛大学本科生毕业论文(设计)12cvSobel(pImg8uSmooth,pImgSobelgray,0,1,3);3.5 人脸部位提取由于用手机提取照片时,提取的照片中常常含

38、有丰富的背景信息,这就为后续的识别步骤带来了困难。本文将通过编程实现检测函数,对人脸部位进行检测,并将人脸部位保存为图像存储下来供后面识别,这样就减少了背景对识别的影响。检测图像中的人脸,利用库函数 vHaarDetectObjects( ),函数原型如下:CvSeq*cvHaarDetectObjects(constCvArr*image, CvHaarClassifierCascade*cascade, CvMemStorage* storage, double scale_factor=1.1, int min_neighbors=3, int flags=0, CvSize min_s

39、ize=cvSize(0,0) );青岛大学本科生毕业论文(设计)13第四章 基于 Android 的人脸检测技术原理4.1 Android 编程平台4.1.1 Android 开发平台搭建本文 android 开发平台是在 Windows 环境下搭建的,具体方法步骤如下:在 Oracle 官方网站上可以免费下载最新的 JDK 安装程序包,网址为:http:/.下载完成后打开,按照默认路径安装 JDK 软件包。点开开始菜单,在 CMD 命令窗口输入 java -version 命令检查是否成功安装程序包。若成功安装会显示出JDK 版本号等相关信息。下一步就是配置环境变量:在系统环境变量里添加

40、PATH 变量,内容为 JDK 安装目录中 bin 文件夹下,并同时增加 CLASSPATH 变量,内容为 JDK 安装目录中 lib 和 demo 的路径。是用;来做分隔符的。登陆 Android 官方网站 http:/,下载最新版本的 SDK 安装包,也可下载以往版本的 SDK 安装包。下载完成后解压,不需要安装。但是要同样需要配置环境变量。将 SDK 解压后的目录下的 tools 目录的绝对路径添加到系统 Path 中,然后同样用 DOS CMD 命令 android h 检查是否安装成功。登陆 Eclipse 官方网站 http:/www.eclipse.org,下载适用版本的 Ecl

41、ipse。将下载完成的Eclipse 安装包解压硬盘。双击 eclipse.exe 打开 eclipse 软件,在 Help-Install New Software,安装 ADT。完成后重启,在 Widows-Preferences 下选择 android-Browse 添加android SDK 路径,单击 OK 完成。这样 android 开发环境基本搭建完成。Android 开发环境搭建好了就可已进行 android应用程序的开发了。4.1.2 Android 开发简介Android 平台是在 Linux 2.6.25 版本的基础上改造的,提供了各种的函数库和应用程序的完整框架。And

42、roid 大体上分为 4 层:Linux 内核,程序库,应用程序框架以及应用程序。具体参看图 4.1:Android 平台架构图。青岛大学本科生毕业论文(设计)14应用程序是包括 Android 平台配置的一套应用程序集,以及用户基于 Android 平台的应用程序框架,使用 Java 语言自行开发的程序。应用程序框架:开发者可以完成使用与那些内核应用程序相同的,用于简化和重用应用程序的组件的框架。通过应用程序,用户自定义的程序可以执行用户程序之外的预设功能,这样可以极大的减少用户程序的额外工作量。系统开发库:Android 定义了一套 C/C+ 库供 Android 平台的其他组件使用。这些

43、功能通过 Android 应用程序框架提供给开发者,开发者不能直接使用这些库 14。Linux 内核:Android 的核心系统服务依赖于 Linux2.6 内核,如内存管理、进程管理、驱动模型等。Linux 内核也同时作为硬件和软件栈之间的抽象层 14。4.2 人脸图像获取4.2.1 Android 应用程序组件(Activity 简介)在 android 中,Activity 拥有四种基本状态,即 Active/Running 状态、Paused 状态、Stopped 状态、Killed 状态。图 4.1 Android 平台架构图青岛大学本科生毕业论文(设计)15(1) Active/R

44、unning 状态,一个新 Activity 启动入栈后就会自动处于栈的最顶端,它被显示在屏幕的最前端,此时它处于能被用户交互和用户可见的激活状态 15。(2) Paused 状态,当 Activity 处于后台运行时或被其他的覆盖时,他并没有被退出程序实质上还是在运行态,此时它依然与处在窗口管理器中,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点只是不能与用户交互。(3) Stopped 状态就是 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时的状态。(4) Killed 状态,Activity 被系统回收或者没有被启动时。 Android 管理 Act

45、ivity 的方式是通过一种 Activity 栈来实现的,一个 Activity 的实际的状态定义了它在堆栈中的位置。处在栈的顶端的是处于前台的 Activity,当前台的 Activity 因异常或其它原因被 Killed 时,处于栈第二层的 Activity 将被激活顺序移动到栈顶。当新 Activity 启动入栈时,新 Activity 会取代当前 Activity,原来处于栈顶的Activity 被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换 3。如图 4.2 所示是 Activity 的状态转换图:Android 程序员只可以决定启动一个新的

46、 Activity,但不能手动的,借助外部因素的结束一个 Actity。每个 Activity 都有自己的生命周期,而 Activity 的生命周期统一交给系统管理。如图 4-3:Activity 生命周期示意图。图 4.2 Activity 的状态转换图青岛大学本科生毕业论文(设计)16Android 平台定义了一种称为 Intent(意向)的异步消息,该消息用于激活Activity、Service 和 Broadcast Receiver 组件。具体用法如下:Intent intent=new Intent();Intent.setClass(FaceDetectorActivity.th

47、is,Resgistered.class);startActivity(intent);图 4.3 Activity 生命周期示意图青岛大学本科生毕业论文(设计)174.2.2 Bitmap 和 Drawable 和 CanvasDrawable就是一个可以在上面作画的对象,可能是BitmapDrawable (一张位图) ,也可能是ShapeDrawable(一个图形) ,还有可能是LayerDrawable(一个图层) ,创建的可画对象要根据画图的需求来确定。Bitmap 位图,用于图的处理。它是 android 系统中图像处理的最重要类之一。用它可以显示图像文件的信息,进行图像的剪切、旋

48、转、缩放等操作,并可以指定格式保存图像文件。从资源中获得 bitmap 对象,两个方法:通过 bitmapfactory,来完成或者通过BitmapDrawable(inputStream i).getBitmap() 来完成。1、从资源中获取BitmapJava代码 Resources res = getResources(); Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon); 2. 获取位图的信息要获取常常要先获取Bitmap,位图信息包括:位图大小、像素、density、透明度、颜色格式等,在Bitmap中使

49、用Bitmap.Config定义RGB颜色格式,仅包括4种格式:ALPHA_8、ARGB_4444 、 ARGB_8888、RGB_565 。 ;Bitmap通过提供compress( )接口来压缩图片,但是在AndroidSAK只支持两种格式的图片压缩:PNG、 JPG格式。3. 显示位图可以使用核心类Canvas 显示位图,通过 Canvas类的 drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas。当然,也可以通过 BitmapDrawable将位图显示到View中。常用显示代码如下:ImageView iv = (ImageView) findViewById(R.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报