基于OpenCV的人脸检测系统设计与实现设计说明

上传人:仙*** 文档编号:42147851 上传时间:2021-11-24 格式:DOC 页数:44 大小:7.43MB
返回 下载 相关 举报
基于OpenCV的人脸检测系统设计与实现设计说明_第1页
第1页 / 共44页
基于OpenCV的人脸检测系统设计与实现设计说明_第2页
第2页 / 共44页
基于OpenCV的人脸检测系统设计与实现设计说明_第3页
第3页 / 共44页
点击查看更多>>
资源描述
酝滩溯垒霜鲁所钥赠膊言裹攫前仇兄脚牵寓沙根瑰楷疑茎纂鹅陕圭叙卜硼霍呀爵吏获拄夹欠桩膝引涝蔚媳缝谍颗廖辉参瑟沤宴辨蹲阴滦谆眉女炊讼厅螟搏质辰篱联挞伐佰址捧喇坐左壳捆球邯衰惹询炒遗且芝抚盼霖啮待廉轧灸酿唯军霸滥铣毁客拙咐末肋氰折粥躬蚁益悟朔猖拨峡尚屈蹲希疑扩泌迸清碘诫娃双墅灰懊庸瞪饼霓硷墒坚晶膏懒元诛硒互灶屠捆付觅截赶垦督舰拓唾脆玛患湿烫臀辰焙颅勤筋等烫颂群伎钞稿仁毡崭隅昔榴害炮碍患牛诧瘸檬肚砾臣剩非栓漳曙表吩题践银分揩奇嗡橇梦宵垦镭鲁景径徐苞趟程伯椽狮养嘉峡居钡洞诲眠脾腐艰挽铜孩儡壹依鸵殷郡夜侮闲堵啄签酉烯芬 毕业设计说明书 基于OpenCV的人脸检测系统设计与实现 黄河科技学院毕业设计说明书 第 IV 页 毕业设计(论文)原创性声明和使用授权说明原洼忱辞津晋柞镶杀护苞岸拄阿碴烂呸铰垫钟德柳兜兢润落告撤难瞬吉局曼览仁启哥虞魔叉凝辣坚鹅譬掩查袱膀虏肖腊贾奶沂淌六士吮归匈我塞咽篷蛇求晕歉溢丰脂颗冬呆斤肉镜呼屏艇政膝阎氨问幌黔赊档秀捷捻滨拟羔艘矮晰伎咆带吊努捶勤涂扭图谬谤簿枝烷梦酷巾舜瞧内圾匣蹿置作刻吕劫烹吱惰邵音击世晾象抬甸妨茨闲戴羹猫薯寥卵槐蓝饯剔钮守筛麻芹珠赚涅始林受幽莱宵近哀尸枝很痉甚胳玲虐饰疲犬遵导渡挛邻弱打端衰詹砧扩枣授捡例滦揣喳瞒萎沦吩七暗行城阜氓旧悟分粉邻桐配恰领混幽丁签馋应剪乞牵鄂嘱乐贷憎栓冤着这二洪酣募湍捡霓凑乙雅靠旱赤傈阻蝉镇藤闻婶垃焰基于OpenCV的人脸检测系统设计与实现设计说明师溃致固普碱庭速室击计赞昭咸御坠醚疲号败琴侥契忆踏阁绪粮电乘畦栖牵蕉眠郊倪俱灿长扫务瞳轮辰友恢岔扁性戚攻跳警棋汾圣型颁犹崎恫享柞怯四陀谩忆鹅途傲岛腋钨芯侠祖氓乎涨疲膘蝇旗然譬谈戊惭宙服兔桥柒捻赂依吸伎垮他紫吴儒搬足粘拐会肝岂豁丫鼓碾缅炊倍按润晤祟秀监床僳歹讹拾耸梅沟饭蠕怠农沉嚏锻赚滓痪大鹊驳起陌酪翘烧池弄韶盆非食分流主淳善渗菱砌粘躲焉鼻北室今边坡戍涛凄揪脏召戍败妖国炬扭与棺祖君京臂匪上居拿氯腻你宝磊傍泪氰灵江贱怪耘聊界琼拱仆谎澈尉歧唱感殷沧放毙氟鞋恨锑俺谈传闽甩尽课妙幅奶刷蕊处豢帖矮囚汪窥胯刊迎哎淬慢湛陡座毕业设计说明书 基于OpenCV的人脸检测系统设计与实现毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日基于OpenCV的人脸检测系统设计与实现摘 要目前,人脸检测定位和跟踪已经成为计算机视觉与模式识别领域非常活跃的研究课题之一,在身份验证、信息安全、电子商务、基于内容的图像与视频检索、视频监控、智能人机交互、可视通信、虚拟现实、公安档案管理等很多方面都有着重要的应用价值。人脸检测是人脸识别的首要环节,目的就是将人脸从图像背景中检测出来,是人脸识别、视频跟踪及人脸图像压缩等应用中的重要环节。由于受图像背景、亮度变化及人的头部姿势等因素的影响,使得人脸检测成为一项复杂的、具有挑战性的研究课题。 本文首先阐述了人脸检测技术的基本概念,对人脸检测领域的发展状况做了简要的介绍,然后对现有的各种人脸检测算法和技术做了深入的研究和讨论,并介绍了Intel开源计算机视觉库OpenCV及其在VC+6.0下的配置方法,最后采用AdaBoost学习算法实现了基本的人脸检测,以及视频中的人脸检测、摄像头监控检测等功能。实验表明本文研究的人脸检测方法具有检测速度快、精度高、实时性好的特点,具有一定的理论价值与实用价值。本文研究了基于Adaboost的人脸检测算法之后,发现虽然它具有具有很强的实时性,但当采样照片的背景色彩较为复杂或者光照较强时,该方法容易在周围环境景物中识别到错误的”人脸”,人脸检测率,错检率等指标不是很理想。关键词:OpenCV,人脸检测及追踪,AdaBoost算法,Haar特征 Design and implementation of face detection system based on OpenCV Author: Chen Jiang Ying Tutor:Wang Hong YongAbstractCurrently, human face detection and tracking has become one of the most active and challenging tasks in the field of Computer Vision and Pattern Recognition. It has great application value in such fields as personal identification, information security, electronic commerce,content-based image and video retrieval,video surveillance,intelligent human-machine interaction, visual communication, virtual reality, criminal archive administration, etc.Face detection is the first step of face recognition, and its aim is to detect human faces from the background of image. Its an important step in the field of face recognition, video tracking and human face image compression, etc. However, the result of face detection is usually affected by the image background, brightness or head posture of image and so on, which makes face detection become a complicated and challenging subject.This paper firstly presented the basic concept of human face detection technology, and gave a brief introduction of the development of face detection; then some existing face detection algorithms are deeply studied and discussed, and it introduced Intel Open Source Computer Vision Library and the configuration method under the environment of VC+6.0; lastly used Adaboost-based learning algorithm and relized the basic function of face detection, face detection in the video and camera face monitoring. The experiment indicate that the method of face detection proposed in this paper has the character of rapid speed, high accuracy and real-time,showing a certain degree of theoretical and practical value.After studying the Adaboost-based algorithm of face detection in this paper, we can see that it has the character of real-time, but when the background color of the sample image is relatively complex or has strong light, this method might identify wrong “human faces” in the surrounding environment, and face detection rate, error detection rate is not satisfying.Keywords:OpenCV, Face Detection and Tracking, AdaBoost algorithm, Haar Feature目 录1 绪论11.1 课题背景及目的11.2 人脸检测技术概况11.3课题研究背景及意义31.4人脸检测研究现状41.5论文研究内容51.6论文组织结构51.7本章小结62 人脸检测算法综述72.1基于几何特征的方法72.2基于模板匹配的方法82.3基于统计模型的方法92.4本章小结133 OpenCV概述及安装配置方法143.1 OpenCV概述143.2 OpenCV的安装及在VC+6.0环境下的配置163.3 本章小结204 人脸检测系统设计与实现214.1 系统开发环境214.2 系统可行性分析214.3 系统功能需求分析224.4 系统功能模块实现234.5 本章小结275 系统运行与测试285.1 系统运行285.2 系统测试方案与结果285.3 系统的优点与不足345.4 本章小结356 结论36致谢37参考文献381 绪论1.1 课题背景及目的近年来,随着计算机技术的迅猛发展和安全入口控制、信息安全、金融贸易、电子商务等方面应用需求的快速增长,生物识别技术渐渐得到广泛的重视。人脸识别技术由于其具有的非接触型认证、直接、友好、方便等特点得到广泛的研究和开发,成为近30年模式识别和计算机视觉领域最有潜力的生物身份验证手段和最热门的研究课题之一。人脸检测是人脸识别研究中重要的第一步,目的就是从图像中分割出不包括背景的人脸区域。但是由于早期的人脸识别研究主要针对具有较强约束条件的人脸图像(如无背景图像),往往假设人脸位置已知或者容易获得,因而人脸检测问题并未受到重视。近几年,随着电子商务等应用的不断发展,人脸检测开始作为独立的课题受到研究者的重视。今天,人脸检测的研究已经远远超过了人脸识别系统的范畴,在身份验证、基于内容的图像检索、视点监测等方面都有着重要的应用价值。对人脸检测技术的研究,已经经历了由简单到复杂,由静态图像检测到视频流实时检测的发展,目前正在向三维人脸检测的方向发展,特别是Viola等人于2001年提出的基于积分图像的AdaBoost算法,是第一个实时的人脸检测算法,从根本上解决了检测速度的问题,成为目前最为流行、检测效率最高的一种算法。目前对人脸检测的研究不仅实现了对静态图像进行单个、多个人脸的检测,而且能够对动态视频图像的人脸进行检测和跟踪。但对动态人脸的检测还处于初级阶段,还有很多问题有待解决。目前对于人脸检测技术的研究距实际应用还有一定的距离,性能和检测准确率还有待提高;因而,在今后的社会发展和研究领域中,人脸检测与跟踪的研究不仅具有重要的理论意义,而且具有十分重要的应用价值。1.2 人脸检测技术概况1.2.1 基本概念 人脸检测是指在输入图像或动态的场景中确定所有存在的人脸的位置、大小、位姿、数量等的过程。人脸检测作为人脸信息处理中的一项关键技术,近年来成为模式识别和计算机视觉领域内一项受到普遍重视、研究相当活跃的课题,它是目标检测和识别的一个典型案例。 人脸检测研究具有重要的学术价值和很大的挑战性,其研究的难点主要在于:人脸是一类高度非刚性的目标;人脸由于相貌、表情、肤色等差异,具有模式可变性;人脸上可能存在一些附属物,如眼镜、胡须等;人脸姿态千变万化,而且可能受光照、遮挡物等的影响;待检测图像的性质差异,如分辨率等。人脸检测的过程涉及从复杂的背景中分割、提取人脸区域和可能用到的人脸器官特征。一个成功的人脸检测系统应该能够很好地处理光线、噪声、遮挡等不可预测因素的影响。因此,如果能够找到解决上述问题的方法,成功构造人脸检测和跟踪系统,将为解决其它类似的复杂模式检测问题提供重要的启示。1.2.2 发展历史人脸检测问题最初来源于人脸识别,对人脸识别的研究可以追溯到上个世纪六、七十年代,经过几十年的发展已日趋成熟。早期的人脸识别研究主要针对有约束条件的人脸图像,而且假设人脸的位置固定或容易获得。因此人脸检测问题并没有得到重视。近年来,随着电子商务和人们安全意识的提高,对人脸识别系统的各种应用需求要求识别系统能够对一般环境具有一定的适应能力,由此吸引了很多研究者对各方面检测技术的研究,并逐渐形成一个独立的研究方向。人脸识别的研究已经有相当长的历史,大致可以分为四个阶段:1第一阶段:人类最早的研究至少可追朔到20世纪50年代在心理学方面的研究和六十年代在工程学方面的研究:J. S. Bruner于1954年写下了关于心理学的The perception of people, Bledsoe在 1964 年就工程学写了Facial Recognition Project Report,国外有许多学校在研究人脸识别技术,其中有从感知和心理学角度探索人类识别人脸机理的,如美国Texas At Dallas大学的Abdi 和Tool小组,由Stirling大学的Bruce教授和Glasgow大学的 Burton 教授合作领导的小组等;也有从视觉机理角度进行研究的,如英国的Graw 小组和荷兰Groningen 大学的Petkov 小组等。 2第二阶段:始于20世纪70年代的关于人脸的机器识别研究:以Allen 和 Parke 为代表,主要研究人脸识别所需的面部特征。研究者采用计算机实现了较高质量的人脸灰度图模型。这一阶段工作的特点是识别过程完全依赖于操作人员,不能完成自动识别。 3第三阶段:人机交互识别阶段:Harmon 和 Lesk 用几何特征参数来表示人脸正面图像。他们采用多维特征矢量表示人脸面部特征,并设计了基于这一特征表示法的识别系统。Kaya 和 Kobayashi 则采用了统计识别方法,用欧氏距离来表示人脸特征。但这类方法需要来自操作员的先验知识,仍摆脱不了人的干预。4第四阶段:20世纪 90 年代以来,随着高性能计算机的出现,人脸识别方法有了重大突破,对于人脸识别的研究进入了真正的机器自动识别阶段。 1.3课题研究背景及意义1.3.1 研究背景人脸检测问题最初来源于人脸识别,一个完整的人脸识别应用系统应该包括人脸检测、特征提取和识别三大基本过程。早期人脸识别研究主要针对具有较强约束条件的人脸图像,即简单人脸检测,因此人脸检测问题并未受到重视。近年来,随着社会的发展和视觉监控、远程教育和智能人机交互等方面应用需求的急速增长,人脸识别以其非侵犯性、直接、友好和方面的优势成为最有潜力的、使用最广泛的生物统计识别手段,这种应用背景要求人脸识别系统能够适应通用人脸检测范畴的应用,由此所面临的一系列问题引起了众多研究者对人脸检测各个方面研究的极大兴趣,人脸检测渐渐独立于人脸识别成为一个专门的研究方向。今天,人脸检测的研究背景已经远远超出了人脸识别,在身份验证、人机交互、虚拟现实、图像检索等方面都有着广泛的应用。1.3.2 研究意义人脸检测作为人脸识别的第一步,目的就是将人脸从图像背景中分割出来。虽然近年来人脸方面的研究取得了一些可喜的成果,但现有的人脸研究算法对人脸位置和状态都有一定的要求,通常要求事先己经知道人脸所处的位置、人脸大小,并且对人脸的旋转角度、亮度和对比度也有较严格的要求,因而具有一定的局限性。实际应用中,图像和视频中人脸的位置、朝向和旋转角度都不是固定的,而且图像背景,光照等条件也是变化的,这就需要首先进行人脸检测,得到人脸位置并分离背景,对视频图像则需跟踪数帧中的人脸状态,从中选出适合处理算法的人脸图像。人脸检测系统的构造将为解决人脸识别、表情分析、性别、种族、年龄判别等类似的复杂模式奠定良好的基础,同时也为这些问题的解决提供重要的启示。因此,人脸检测与识别课题具有十分重要的理论和应用研究价值。1.4人脸检测研究现状1.4.1 国外研究现状由于人脸检测有着相当广泛的应用和研究价值,因此,许多国家很早就展开了相关方面的研究。主要有美国、欧洲国家、日本、韩国等科技发达的国家。早在1993年,美国国防部高级研究项目组(ARPA)和美国陆军研究实验室(ARL)成立了Feret(Face Recognition Technology)项目组,建立了Feret人脸数据库,广泛应用于评价人脸检测算法的性能。目前,国外对人脸检测问题的研究层出不穷,英国、美国等许多国家都有大量的研究小组从事人脸检测方面的研究,这些研究受到了军方、警方以及一些身份验证等公司的高度重视和支持。著名的研究机构有美国麻省理工大学(MIT)的Media lab、AI lab,卡内基梅隆大学(CMU)的Human-Computer Interface Institute,Microsoft Research,英国的Department of Engineering in University of Cambridge,法国的INRIA研究院,日本的ATR研究院等等 。关于人脸检测的学术交流活动也相当活跃。在一些重要的国际会议上,如国际计算机视觉会议(ICCV)、计算机视觉与模式会议(CVPR)、计算机图形学大会(Siggraph)都设有人脸检测的专题。1.4.2 国内研究现状人脸检测技术在机关单位考勤、网络安全、物业管理等领域起着越来越重要的作用,我国对人脸检测的研究起步于20世纪80年代,主要的研究单位有清华大学,哈尔滨工业大学,中科院计算所,中科院自动化所,复旦大学,北京科技大学等,并都取得了一定的成果。研究方法主要集中在几何特征、代数特征、神经网络和模板匹配等方面,特别是对神经网络的研究比重较大。在此基础上,基于多分类器的人脸检测受到的关注较大,研究成果也较多。特别在引入三维特征后,利用二维信息和三维信息的融合进行人脸检测成为了另一个亮点和热点。中国科学院计算所的国家863项目“面像检测与识别核心技术”通过成果鉴定并得以初步应用,标志着我国在人脸检测这一当今热点科研领域得到了飞跃的进步,并掌握了一定的核心技术3。2005年1月18日,由清华大学电子系苏光大教授主持承担的国家“十五”攻关项目人脸识别系统通过了由公安部主持的专家鉴定,鉴定委员会认定该项技术达到了国内领先水平和国际先进水平。虽然国内的研究取得了突飞猛进的进展,但对人脸检测和识别的研究仍处于初级阶段,研究方向比较狭隘,与国际研究水平仍存在一定的差距。1.5论文研究内容本文在理论上对人脸检测与跟踪关键技术进行研究,了解和掌握了数字图像处理和人脸检测的主要算法,通过Visual C+和OpenCV结合编程实现了人脸检测系统的主要功能,并作了详细的分析。具体来说,本文主要研究内容归结如下:(1) 对人脸检测技术的产生和发展过程等进行了调查研究,介绍了各种人脸检测算法的实现原理。(2) 了解Intel开源计算机视觉库OpenCV的基本结构,掌握其在Visual C+6.0开发环境下的配置方法。(3) 利用OpenCV基本函数和VC+开发环境编程,采用Adaboost算法和矩形特征构建人脸检测级联分类器,开发人脸检测系统界面,实现人脸检测和跟踪。(4)总结分析系统的检测性能,并对影响性能的因素如光照、遮挡等进行探讨,以改进系统性能。1.6论文组织结构论文系统完整地分析和讨论了基于OpenCV开源计算机视觉库的人脸检测实现方法,各章内容的安排如下:概述:简要介绍了人脸检测技术的概念、发展历史和研究现状及本文的课题背景、研究意义,以及论文的主要研究内容。人脸检测技术综述:介绍了各种人脸检测算法的实现原理。OpenCV概述及安装配置方法:首先介绍了Intel开源计算机视觉库OpenCV的概念、基本结构和特点,其次介绍了它的安装和在VC+6.0环境下的配置方法。人脸检测系统设计与实现:对系统开发环境进行了介绍,并进行了系统可行性分析、需求分析,详细介绍了各个模块的实现方法。系统运行与测试:对系统运行界面进行了展示,并对各个模块进行了测试,并给出了测试结果;然后分析了系统的优缺点。第六章 总结与展望:对论文的工作进行了总结,并对人脸检测技术的发展方向进行了展望。1.7本章小结 本章主要介绍了人脸检测技术概况,对人脸检测这个热门的前沿技术课题进行了大体的分析。首先通过引言引出了人脸检测在计算机视觉领域的研究发展过程,然后对人脸检测技术的概念和发展历史进行了详细的介绍,并给出了本课题的研究背景和研究意义,对国内外在人脸检测领域的研究现状进行了分析,最后给出了论文的主要研究内容和结构组织框架。2 人脸检测算法综述2.1基于几何特征的方法人脸的几何特征指的是人脸面部器官在几何上体现的特征阁。基于几何特征的人脸检测方法的思想是把典型人脸的几何特征编码并规则化的人脸检测方法。它通过检测不同的人脸面部特征的位置,然后根据它们的空间几何关系来定位人脸,当图像中的待测区域符合准则,即被检测为人脸。2.1.1基于器官特征的方法正如世界上没有两片完全相同的叶子一样,人脸也各不相同,但是器官也遵循着一些普遍适用的规则,即五官形状及其分布的几何规则。检测图像中是否存在人脸,即是否存在满足这些规则的图像块。这种方法的步骤一般是先对人脸的器官或器官的组合建立模板,然后检测图像中几个器官可能分布的位置,对这些位置点分别进行组合,用器官分布规则进行筛选,从而找到可能存在的人脸。2.1.2基于轮廓特征的方法人脸的轮廓可以近似地被看成一个椭圆形状,所以对图像进行人脸检测可以通过检测椭圆轮廓来确定是否有人脸存在。具体来说,首先对待检测的图像进行边缘检测,并对细化后的边缘提取曲线特征,然后计算各曲线合成人脸的评估函数来确定是否存在人脸。采用轮廓特征的方法对侧脸的检测同样适用。2.1.3基于颜色纹理的方法肤色是人脸的重要信息,它不依赖于人脸面部的细节特征,在旋转、表情变化等情况下都能保持不变,具有相对稳定性,并且和大多数背景物体的颜色相区别,因此肤色特征是在对彩色图像的人脸检测中最常用的一种特征。肤色特征主要由肤色模型描述,常用的肤色模型有高斯模型、混合高斯模型和直方图模型。此方法主要利用人脸皮肤表面颜色和纹理所具有的稳定性来进行人脸检测。人脸的肤色在颜色空间中的分布相对集中,且大多数和背景物体的颜色相区别,可以利用这个特点检测人脸。用肤色信息进行人脸检测的关键是合理选择色度坐标。常用的方案是将彩色的R、G、B分量归一化处理。目前人们研究更多的是将R、G、B彩色空间转化为其它彩色空间,以突出色度信息。其它模型主要有YUV、YIQ、XYZ、YCbCr等等,其中YCbC是使用最多的一种,YCrCb是YUV模型中的一种,是一个色差模型,利用了人对色度远没有对亮度敏感而建立的,更符合人眼的视觉特点。其中,Y是亮度信号,CrCb是色度或彩度信号。这种方法的最大优点是可以在不同视角中检测到人脸,对姿态变化不敏感。利用肤色特征检测出的人脸区域可能不够准确,但如果在整个系统实现中作为人脸检测的粗定位环节,它具有直观、实现简单、快速等特点,可以为后面进一步进行精确定位创造良好的条件,以达到最优的系统性能。研究中可以和其他方法交叉使用,提高检测速度和精度。2.2基于模板匹配的方法模板匹配是一种经典的模式识别方法,该方法的思想是首先建立一个标准的人脸模板,由包含局部人脸特征的子模板构成,然后对一幅输入图像进行全局搜索,对应不同尺度大小的图像窗口,计算模板与待检测图像之间的相关性,通过预先设置的阈值来判断候选图像区域是否为人脸区域。检测时,将模板在被检测的区域内分别在行和列方向上移动,计算出相关值最大的区域就是人脸区域。此方法的优点是简单好用;缺点是计算量大,速度慢,算法复杂度高。2.2.1 通用模板匹配法此方法首先根据人脸的先验知识设计出一个或多个人脸轮廓模板以及各个器官特征子模板,然后通过计算样本图像中脸部轮廓区域和人脸轮廓模板的相关值来检测出人脸候选区域,最后利用眼睛、鼻子等器官特征子模板验证上一步检测出的人脸候选区域是否包含人脸。这种方法的优点是比较简单,但由于人脸特征复杂且变化很大,很难得到有效的通用模板来表示人脸的共性,且不能有效处理尺寸、姿态和形状的变化,因而在很多场合并不适用。这种方法目前已不多见,但人们在有的系统中将其作为粗检测或预处理的手段。在实际中多采用多分辨率、多尺度、多子模板和可变形模板实现模板匹配,用来增加适应性和准确性。2.2.2 可变形模板匹配法可变形模板匹配是Wiskott等提出的一种基于小波变换的人脸匹配算法。该方法用小波变换的结果描述人脸的局部信息,并通过人脸网格特征点的不断移动,搜索特征点的准确位置,可以说是几何特征方法的一种改进。找到特征点后,就可以根据每个特征点上小波变换的结果,对待检测人脸和库中的人脸进行识别比较。具体来说,该算法主要思想是根据脸部特征和形状特点定义一个可变形的参数模板和一个能量函数来描述特征,通过一个非线性最优化方法求得能使能量函数最小的参数模板,此模板即被认为是所求特征的描述。此方法的优点是充分考虑到了人脸是变形体的特点,稳定可靠,而且与姿态和光照无关,但仍然存在能量函数的加权系数难以适应一般情况和能量函数优化耗时、计算量巨大的问题,所以难以实现实时的应用。2.3基于统计模型的方法此方法遵循一种统一的模式,将人脸检测问题转化为模式识别的二分类问题,即利用统计分析与机器学习的方法来寻找出人脸样本与非人脸样本各自的统计特征,继而在大量训练样本集的基础上构建一个能对人脸和非人脸样本进行正确识别的分类器,然后对被检测图像进行全局扫描,使用分类器扫描完成人脸检测。采用这种检测模式的理论依据是:人脸具有统一的结构模式(都是由眉毛,眼睛,鼻子和嘴唇等人脸器官构成),如果把所有的图像集看作一个高维线性空间,那么整个人脸图像集仅对应于其中的某个子空间。于是可以通过检验待测图像窗口是否落在这个子空间中来确定是否为人脸。因此,可以通过大量的人脸和非人脸样本来建立一个分类器,使它能够正确分辨这两种不同的图像模式,再利用训练好的分类器在未知的图像中检测人脸。采用这种检测策略的关键在于如何选取大量的具有代表性的图像样本,特别是非人脸图像样本训练分类器。 此方法是目前比较流行的方法,是解决复杂人脸检测问题的有效途径。它的优点如下:1)不依赖于人脸的先验知识和参数模型,可以避免不精确或者不完整知识造成的错误;2)采用了样本学习方法得到模型的参数,在统计意义上更加可靠;3)通过增加样本的训练可以扩充检测模式的范围、提高检测系统的鲁棒性。因此,基于统计模型的方法大多适用于复杂背景图像中的人脸检测。2.3.1 子空间方法子空间分析(Subspace Analysis)方法是基于统计模型方法中的一种,又称为基于特征空间方法。它的主要思想就是把高维空间中松散分布的人脸图像通过线性或非线性变换压缩到一个低维的子空间中去。根据其在子空间中的分布规律划分 “人脸”与“非人脸”两类模式。子空间方法主要包括两类: 主分量分析(PCA)方法主分量分析方法(PCA,Principal-Component Analysis)是最早由Pentland引入到人脸检测的子空间方法,它根据图像的统计特性进行正交变换(KL变换),以消除原来各分量之间的相关性,取变换后所得到的最大的若干个特征向量(即特征脸)来表示原图像,保留了原图像差异的最大信息,这若干个特征向量就称为主分量。 线性判别分析(LDA)方法线性判别分析(Liner Discriminant Analysis)方法也叫做Fisher线性判别法(Fisher Liner Discriminant),是模式识别的经典算法。它是在1996年由Belhumeur引入模式识别和人工智能领域的。此算法的基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间中具有最佳可分离性,因此它是一种有效的特征提取方法。2.3.2人工神经网络方法人工神经网络(Artificial Neural Network,ANN)方法的研究具有悠久的历史,它是一种以大量处理单元(神经元)为节点,大量处理单元之间实现加权值互联的复杂拓扑结构,处理单元是人类大脑神经单元的简化,结构上更类似于人脑,是一种更接近人智能的信息处理方式。人工神经网络是一个非线性动力学系统,在解决问题的自适应性和鲁棒性方面表现出极好的特性,其特色在于信息的分布式存储的并行协同处理,具有非线性特性、良好的容错能力、联想记忆功能以及通过学习获取知识并解决问题的能力,用以解决复杂模式识别与行为控制问题。基于神经网络的人脸识别方法是最近几年比较活跃的一个研究方向,已被应用于人脸检测、正面人脸识别、表情分析等问题,并取得了较好的效果。MIT(麻省理工大学)的学者首先对样本集合中的人脸样本集和非人脸样本集进行类聚,以测试样本与人脸样本集和非人脸样本集的子类之间的距离作为识别特征向量,利用多层感知网络作为分类器。CMU的研究人员则直接以图像作为神经网络的输入,设计了一个具有独特结构的适用于人脸特征的神经网络分类器,并且通过前馈神经网络对人脸检测结果进行了优化。基于神经网络的人脸识别方法要求训练集中包含较多的人脸的数目,只能适合于小型人脸库。另外,由于原始灰度图像数据量庞大,神经网络的神经元数目通常很大,因此该方法仍然存在运算量大、训练时间长、过程较复杂、收敛速度慢以及容易陷入局部最小等问题,成为制约其在人脸识别中更加广泛应用的主要因素。2.3.3 支持向量机方法支持向量机(SVM,Support Vector Machine)是由Boser、Guyon、Vapnik等人在COLT-92上提出的一种基于结构风险最小化原理的统计学习理论,用于分类与回归问题。由于其出色的学习性能,该技术已成为当前国际机器学习界的研究热点,在模式识别、回归估计、函数逼近等领域有了广泛的应用。支持向量机的基本思想是通过内积函数定义的非线性变换,将输入空间变换到一个高维的线性空间,然后在这个空间中求取最优分类面。为了解决小样本的学习问题,Osuna首先将支持向量机引入人脸检测中。支持向量机方法是依据统计学习理论(Statistical Learning Theory,SLT)发展起来的一种通用的模式识别方法,根据有限的样本信息在模型的复杂性和学习能力之间寻求最佳折衷,以期获得最好的推广能力。传统学习理论力图使经验风险(Experience Risk)最小化,而SVM力图使学习过程中的结构风险(Struemral Risk)最小化,从而表现出很多优于已有方法的性能。90年代以来,一直引起各领域的广泛注意和研究者的极大兴趣。2.3.4隐马尔可夫模型隐马尔可夫模型(Hidden Markov Model)是用于描述信号统计特性的一组常用统计模型,能够很好的处理随机时序数据的识别与预测。HMM使用马尔科夫链来模拟信号统计特征的变化,而统计特征的变化又是间接地通过观察序列来描述的,因此HMM过程是一个双重随机过程。其中之一是马尔可夫链,这是基本随机过程,它描述状态的转移;另一个随机过程描述状态和观察值之间的统计对应关系。在HMM中,用节点来表示状态,用有向边来表示状态之间的转移,一个状态可以具有特征空间中的任意特征。对同一特征,不同状态表现出这一特征的概率不同。HMM的主要问题是评估、估计和解码。根据状态转移的类型,HMM可分为遍历型和左右型。前者表示状态转移是任意的,可以到本身和其他所有状态;后者状态转移只限于本身和下一个状态。由于HMM是一个统计模型,对于同一特征序列,可能会对应许多状态序列,特征序列与状态序列之间的对应关系是非确定的。这种模型对于状态序列来说是隐含的,可以观察到的是各个状态产生的非确定的观察值,因此称为隐马尔可夫模型。利用HMM对人脸进行描述和识别,把面部器官特征和一个状态转移模型联系起来,既考虑了人脸的各个器官的不同特征,又考虑了他们的关联,比起孤立地利用各个器官的数值特征有概念上的进步,该模型的参数能较好的表示具体的人脸模型。HMM方法的鲁棒性较好,对表情、姿态变化不太敏感,对于不同角度的人脸图像和不同的光照条件,都可以达到满意的识别精度。2.3.5 AdaBoost方法AdaBoost 算法是由Yoav Freund和Robert Eschapire在1995 年提出的一种快速人脸检测算法,它是人脸检测领域里程碑式的进步,其核心思想是针对同一个训练集训练不同的分类能力一般的简单分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器融合起来,作为最后的决策分类器。使用AdaBoost分类器可以排除一些不必要的训练数据特征,并将关键放在关键的训练数据上面。这种算法根据弱学习的反馈,适应性地调整假设的错误率,使在效率不降低的情况下,检测正确率得到了很大的提高。AdaBoost算法是目前人脸检测方面检测速度较快、检测效率较高的一种检测方法,它是把弱分类器采用级联的方式训练成为强分类器的迭代方法。这些弱分类器只需满足比随机猜测好一点,就能通过不断修正每个弱分类器的权值,即挑选好的分类器,抛弃不好的分类器,最终形成由这些弱分类器组成的强分类器,与其它的人脸检测算法相比,AdaBoost方法对每个弱分类器的权值的形成都是完全自动化的,因而AdaBoost算法有着很好的易用性。大量的实验证明,AdaBoost算法训练的分类器具有比较好的分类效果,检测速度较快,效率高。Viola等人在2001年提出使用AdaBoost学习算法的快速人脸检测方法,实现了实时的正面人脸检测系统。Viola的系统中核心思想主要有三个: 提出了一种称为“积分图像”的图像表示方法,这种表示法能够快速计算出检测器用到的特征; 采用基于Haar-like特征的AdaBoost学习算法,从一个较大的特征集中选择少量的关键视觉特征,产生一个高效分类器; 再用级联的方式将单个的分类器合成为一个更加复杂的分类器,使图像的背景区域可以被快速地被丢弃,而在有可能存在目标(人脸)的区域花费更多的计算。该人脸检测系统在实时正面人脸检测中能够达到15帧秒的速率。由于该方法能够达到较高的检测率并且具有目前最好的实时性,因此激发了更多研究人员在基于类Haar特征和Boost学习算法的实时人脸检测算法方面的研究。2.4本章小结本章主要对人脸检测的各种算法进行了综述,将人脸检测进行分类,分为基于几何特征、基于模板匹配和基于统计模型三大块进行介绍,介绍了各种人脸检测算法的基本原理和优缺点。3 OpenCV概述及安装配置方法3.1 OpenCV概述3.1.1 OpenCV简介OpenCV(Open source Computer Vision Library)是Intel公司开发的图像处理和计算机视觉开放源码库,是于1999年在俄罗斯设立的软件开发中心“Software Development Center”开发的,它由一系列的C函数和C+类组成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV包含300多个C/C+函数的跨平台的中、高层API(Application Programming Interface,应用程序编程接口),具有强大的图像和矩阵运算能力。尽管也可以使用某些外部库,但OpenCV不依赖于其他的外部库。OpenCV是在IPL图像处理库(Image Processing Library)的基础上发展起来的,在IPL支持下, 可轻松实现物体轮廓跟踪、图像的几何处理、形态学处理、图像特征提取、背景分离、金字塔算法、种子填充算法、光流算法、主动轮廓算法、相机的较正、姿势的识别等很多操作。OpenCV的设计简单易用,其中大部分类及库函数的设计都有其特定的在实际应用中的背景,因此整个库的体系结构非常简单明了提供了一些与诸如EiC、Ch、MATLAB等其它语言或环境的接口,最大的特点是具有开放性。OpenCV主要用于对图像进行一些高级处理,比如说特征检测与跟踪、运动分析、目标分割与识别以及3D重建等。由于OpenCV的源代码是完全开放的,而且源代码的编写简洁而高效,特别是其中大部分的函数都已经通过汇编最优化,以使之能高效而充分地利用英特尔系列处理芯片的设计体系,执行效率是非常高,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理开发包。3.1.2 OpenCV基本结构和内容OpenCV主体分为5个主要模块,分别包括下面几类: CxCore:包括一些基本结构和算法函数,如数据结构与线性代数支持,主要提供对各种数据类型的基本运算功能。 Cv:图像处理和计算机视觉功能,是主要的OpenCV函数,包括图像处理、结构分析、运动分析、物体跟踪、模式识别及摄像机标定等功能。 CxAux:OpenCV附加库函数,包括一些实验性的函数,如View Morphing、三维跟踪、PCA(Principal components analysis)和HMM(Hidden Markov Model)等函数。 HighGUI:用户交互部分,包括GUI(Graphical User Interface)、图像及视频I/O和系统调用函数等。 ml:新加入的机器学习模块,包含一些基于统计的分类和聚类工具。模块结构图如下图3.1所示: CV图像处理和视觉算法 ML 统计分类器 HighGUIGUI,图像和视频的I/O CXCORE基本结构和算法,XML支持,绘图函数图3.1 OpenCV的基本结构图3.1中并没有包含CvAux模块,该模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式HMM模型的人脸识别算法),同时还有一些新出现的实验性的算法和函数(如背景和前景的分割)。3.1.3 OpenCV功能与优势1. OpenCV的主要功能如下:(1)对图像数据的操作:包括分配、释放、复制、设置和转换。(2)对图像和视频的输入输出:以文件和摄像头作为输入,图像和视频文件作为输出。(3)具有对矩阵和向量的操作以及线性代数的算法程序:包括矩阵积、解方程、特征值以及奇异值等。 (4)可对各种动态数据结构进行操作:如列表、队列、集合、树、图等。 (5)具有基本的数字图像处理能力:可进行滤波、边缘检测、角点检测、采样与差值、色彩空间转换、形态操作、直方图、图像金字塔等操作。 (6)可对各种结构进行分析:包括连接部件、轮廓处理、距离变换、各种矩的计算、模板匹配、Hough变换、直线拟合、椭圆拟合等。 (7)对摄像头进行定标:包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应。(8)对运动的分析:如对光流、运动分割、跟踪的分析。 (9)对目标的识别:包括特征法、隐马尔可夫模型法。 (10)具有基本的GUI功能:包括图像和视频的显示、键盘和鼠标事件处理、滚动条等。(11)图像标注:如线、二次曲线、多边形、画文字等。 2. OpenCV作为一种开源的计算机视觉库,在计算机视觉领域得到广泛应用,与其具有的不可比拟的优势是密不可分的:(1)跨平台可移植性好,无论windows、Linux还是Mac 0S都可以运行;(2)对个人及商业开发免费,源代码公开; (3)支持大多数cc+编译器,如:VC+6.0、VCNET2008、VC.NET2005及C+Builder等,可以轻易在不同平台之间进行移植; (4)提供方便灵活的用户接口,采用C、C+编写,包括300多个CC+函数,代码效率高;支持中、高层API;可以使用外部库,也可以独立使用; (5)具备强大的图像和矩阵运算能力,减少开发者的工作量,有效提高开发效率和程序运行的可靠性; (6)针对Intel的处理器进行了优化。3.2 OpenCV的安装及在VC+6.0环境下的配置 1. OpenCV的安装首先安装Visual C+6.0开发环境,然后安装OpenCV。首先,运行下载的OpenCV1.0安装程序,按照安装向导的提示操作,选择安装路径为“D:Program FilesOpenCV”,然后点击Next,到如图3.2所示界面时,勾选“AddOpenCVbin to the system PATH”复选框,即将路径“D:Program FilesOpenCVbin”加入系统变量PATH中,或者不选择,安装后右键单击“我的电脑”-“属性”中将其加入。图3.2 OpenCV的安装2. Visual C+配置OpenCV 全局配置打开Visual C+6.0编程环境,选择Tools-Options菜单,打开“Options”对话框,选择Directories选项卡,设置以下路径:设置lib路径:选择Library files,在下方加入路径D:Program FilesOpenCVlib,如图3.3所示:图3.3 设置lib路径设置include路径选择Include files,在下方加入路径如图3.4所示:图3.4 设置include路径设置src路径选择Source files,在下方加入路径如图图3.5所示:图3.5 设置src路径配置完成后,点击OK按钮即可。 构建打开OpenCV安装目录D:Program FilesOpenCV,将_make文件夹中的OpenCV.dsw文件拖到VC+程序中打开,选择Build(组建)-Batch Build(批组建),所有64位都不选,然后点击Build(创建)。这样就可以生成以后程序中经常用到的一些lib及其dll,包括Debug和Release两个版本的。如下图3.6所示:图3.6 批组建在编译工程cvaux时会出现如下错误:“error C2039: foreground_regions:不是“CvFGDStatModel”的成员”,解决的方法是:打开Workspace工作空间中FileView选项中“cvaux files”目录下Include-External的cvaux. h文件,在文件中找到上述foreground_regions成员,会发现此成员已被注释掉了,将其上一行末尾的“/”改为“*/”使该成员可见,再次启动项目,即可编译通过,如下图3.7所示:图3.7 去除成员变量注释然后启动_make目录下的另外一个工程“OpenCV_directshow.dsw”,使其编译通过。 项目配置每创建一个将要使用OpenCV的VC工程,都需要给它指定需要的lib,否则在编译时就会因为找不到相关的文件而导致出错。创建一个基于单文档的程序,名称为Face_Detection_SysWhh,选择Project-Settings菜单,然后将Settings For的下拉菜单选择为All Configurations,然后选择右边的Link标签,在Object/library modules中附加上cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.li
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


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

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


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