版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人脸面部特征提取技术的研究2008届计算机科学与技术专业毕业设计(论文)PAGE34PAGE35人脸识别技术(FRT)计算机科学与技术专业毕业设计(论文)PAGEI人脸面部特征提取技术的研究摘要人脸识别技术(FRT)是当今模式识别和人工智能领域的一个重要研究方向。虽然人脸识别的研究已有很长的历史,各种人脸识别的技术也很多,但由于人脸属于复杂模式而且容易受表情、肤色和衣着的影响,目前还没有一种人脸识别技术是公认快速有效的.本文主要讨论了人脸识别技术的一些常用方法,对现有的人脸检测与定位、人脸特征提取、人脸识别的方法进行分析和讨论,最后对人脸识别未来的发展和应用做了展望。关键字:人脸识别,特征定位,特征提取ABSTRACTNowadaysthefacerecognitiontechnology(FRT)isahotissueinthefieldofpatternrecognitionandartificialintelligence.Althoughthisresearchalreadyhasalonghistoryandmanydifferentrecognitionmethodsareproposed,thereisstillnoeffectivemethodwithlowcostandhighprecision.Humanfaceisacomplexpatternandiseasilyaffectedbytheexpression,complexionandclothes.Inthispaper,somegeneralresearcharediscussed,includingmethodsoffacedetectionandlocation,featuresabstraction,andfacerecognition.Thenweanalyzeandforecastthefacerecognition’sapplicationanditsprospects.Keywords:FaceRecognitionTechnology,Facelocation,Featuresabstraction第1章绪论所谓人脸识别,是指对输入的人脸图像或者视频.判断其中是否存在人脸,如果存在人脸,则进一步给出每张人脸的位置、大小和各个主要面部器官的位置信息。并且依据这些信息,进一步提取每张人脸蕴含的身份特征,并将其与已知人脸库中的人脸进行对比,从而识别每张人脸的身份。人脸识别研究涉及的范围广泛,内容涉及模式识别、计算机视觉、图像处理、人工智能等方面。人脸识别还涉及到神经网络等学科,也和人脑的认识程度紧密相关。这诸多因素使得人脸识别成为一项极富挑战性的课题。1.1人脸识别技术的研究意义人脸识别是机器视觉和模式识别领域最富有挑战性的课题之一,同时也具有较为广泛的应用意义。人脸识别技术是一个非常活跃的研究领域,它覆盖了数字图像处理、模式识别、计算机视觉、神经网络、心理学、生理学、数学等诸多学科的内容。如今,虽然在这方面的研究已取得了一些可喜的成果,但是FRT在实用应用中仍面临着很严峻的问题,因为人脸五官的分布是非常相似的,而且人脸本身又是一个柔性物体,表情、姿态或发型、化妆的千变万化都给正确识别带来了相当大的麻烦。如何能正确识别大量的人并满足实时性要求是迫切需要解决的问题。1.2国内外的研究现状人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。我国在这方面也取得了较好的成就,国家863项目“面像检测与识别核心技术”通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。北京科瑞奇技术开发股份有限公司在2002年开发了一种人脸鉴别系统,对人脸图像进行处理,消除了照相机的影响,再对图像进行特征提取和识别。这对于人脸鉴别特别有价值,因为人脸鉴别通常使用正面照,要鉴别的人脸图像是不同时期拍摄的,使用的照相机不一样。系统可以接受时间间隔较长的照片,并能达到较高的识别率,在计算机中库藏2300人的正面照片,每人一张照片,使用相距1--7年、差别比较大的照片去查询,首选率可以达到50%,前20张输出照片中包含有与输入照片为同一人的照片的概率可达70%。美国陆军实验室也是利用vc++开发,通过软件实现的,并且FAR为49%。在美国的进行的公开测试中,FAR,为53%。美国国防部高级研究项目署,利用半自动和全自动算法。这种算法需要人工或自动指出图像中人的两眼的中心坐标,然后进行识别。在机场开展的测试中,系统发出的错误警报太多,国外的一些高校(卡内基梅隆大学(CarnegieMellonUniversity)为首,麻省理工大学(MassachusettsInstituteofTechnology)等,英国的雷丁大学(UniversityofReading))和公司(Visionics公司Facelt人脸识别系统、Viiage的FaceFINDER身份验证系统、LauTech公司Hunter系统、德国的BioID系统等)的工程研究工作也主要放在公安、刑事方面,在考试验证系统的实现方面深入研究并不多。1.3本系统研究内容本系统主要对人脸的检测与定位做了深入研究。在人脸检测部分主要是对图像进行获取和预处理。图像获取主要是获取图像的基本信息,以便对图像的像素进行处理。预处理的包括对图像灰度化,中值滤波,对比度变化以及边缘提取。人脸预处理过程是计算机人脸识别中一个重要过程。人脸图像预处理的好坏对整个系统至关重要,对人脸预处理的研究具有非常重要的意义。特征定位是人脸识别的目的是确定单张人脸在图像中的位置,它通过标记人脸区域来确定和计算人脸的各器官定位。人脸特征检测是检测人脸特征的有无和位置,比如说眼睛、鼻子、鼻孔、嘴巴、嘴唇等的有无和位置。值得指出的是,人脸检测涉及的方法种类繁多(据报告可知,用于人脸检测方法的有150多种),且涉及的知识点较深,并各有特点,所以我们小组将人脸检测与人脸识别区分开来,因为后者只是前者一个简单问题。同时,我们把注意力集中在人脸检测方法上,而没有实现与数据库中的人脸匹配问题。1.4目前研究中存在的问题虽然人类的人脸识别能力很强,,能够记住并辨别上千张不同人脸,可是计算机则困难多了。其表现在:人脸表情丰富;人脸随年龄增长而变化;人脸所成图像受光照、成像角度及成像距离等影响;而且从二维图象重建三维人脸是病态(ill2posed)过程,目前尚没有很好的描述人脸的三维模型。另外,人脸识别还涉及到图象处理、计算机视觉、模式识别以及神经网络等学科,也和人脑的认识程度紧密相关。这诸多因素使得人脸识别成为一项极富挑战性的课题。第2章系统需求分析2.1系统功能需求系统功能主要围绕人脸检测和人脸特征定位进行设计,首先该系统会对图像进行人脸检测,人脸检测主要是对图像进行预处理的过程,预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位。该系统主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来。2.1.1功能划分及描述图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取。肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。图像获取模块:该模块主要是从图片库中获取图片,获取后的图片可以在软件的界面中显示出来以便进行识别。图像预处理模块:图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。该模块中的子模块有如下几个,下面对它们进行概述:中值滤波:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。灰度化:图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化.相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。Sobel提取(边缘提取):采用梯度微分锐化图像,使噪声、条纹等得到增强;对图像中的随机噪声也有一定的平滑作用;标记人脸的边缘,使其边缘显得粗而亮。对比度增强:对比度增强,就是对图像的进一步处理,将对比度再一次拉开。它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。通过改变选用的增强函数的解析表达式就可以得到不同的处理效果。相似度计算:相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。二值化:通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。直方图:直方图是图象处理中一种十分重要的图象分析工具,它描述了一幅图像的灰度级内容,任何一幅直方图都包含了丰富的信息。从数学上来说图像直方图是图像各个灰度值统计特性与图像灰度值的函数,它统计了一幅图像中各个灰度级出现的次数和概率。2.1.2开发环境硬件环境硬件配置原则:具有可靠性,可用性和安全性,具有完善的技术支持。能够满足个人学习和设计需要。运行本软件所需的硬件资源:CPU:800M及以上;内存:128M及以上软件环境系统软件配置原则能够满足该软件的可靠性,可用性和安全性的要求系统软件配置方案①配置有持续工作能力、高稳定性、高度可集成的开放式标准的操作系统,如Windows2000,WindowsNT,UNIX,Linux等。②配备符合ANSI/ISO标准的高级程序设计语言处理软件。如:VisualC++6.0。③熟悉C++高级程序设计语言。2.1.3运行环境(1)硬件环境CPU:800M以上;内存:128M及以上。(2)软件环境可以运行在微软公司近年来所出的各种操作系统。如Windows98、WindowsMe、Windows2000、WindowsNT等。2.2可行性分析在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。2.2.1操作可行性该人脸识别软件需要如下的运行环境:CPU:800M及以上;内存:128M及以上。安装有Windows98、WindowsMe、Windows2000、WindowsNT等操作系统中的其中一种。因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。2.2.2技术可行性图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取。肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。人脸自身变化的挑战:同一个人的人脸图像因为表情、精神状态、健康状况、姿态、整容、年龄变化、意外损伤、化妆、眼镜帽子、头发胡须等变化而发生巨大的变化;外部环境的挑战:光照环境条件、摄像设备、人与摄像设备的距离角度、图像存储质量等,都会使人脸图像发生教大变化。面队这些就要求我们进一步研究基于人脸肤色提取的算法,提高识别精度,,提高识别速度,提高系统的适用性。2.3预处理方案选择2.3.1设计方案原则的选择本应用程序的设计方案原则如下:①采用较为先进的技术力量,保证应用程序在技术上具备一定的优势。②采用成熟的技术,保证应用程序的安全性和可靠性。③应用程序便于扩展和维护,易于技术的更新。④应用程序充分利用现有的资源,尽量减少不必要的再投资。⑤编写的代码必须严谨易读,代码的解释必须清楚明白,为应用程序的再开发提供应尽的责任。2.3.2图像文件格式选择图像采集是在Windows操作系统下开发的,需要了解在此环境下图像的存储、显示等方面的机制。在Windows操作系统中,任何图像格式(如.jpeg格式,.gif格式)在系统中显示之前最终必须转化为位图格式。BMP图像文件格式(位图格式)是微软公司为其Windows环境设置的标准图像格式,在设计的过程中,为了定位和特征提取的方便,我们采用的是BMP格式的图像。2.3.3开发工具选择本次设计所用的开发工具是MicrosoftVisualC++6.0。VisualC++6.0是Microsoft公司推出的一种可视化编程工具。它支持多平台和交叉平台的开发,将各种编程工具如编辑器、连接器、调试器等巧妙的结合在一起,构成一个完美的可视化开发环境。用户无需通过繁杂的编程操作,即可完成Windows下应用程序的编辑、编译、测试和细化等工作。2.3.4算法选择分析本文主要研究的对象是图像预处理模块,该模块分为中值滤波、图像灰度化、相似度计算、二值化每个小模块的实现都有许多相应的算法。下面将本系统采用的算法进行介绍:中值滤波:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。但是如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用中值滤波算法处理。图像灰度化:图像灰度化是将图像变成灰色,本系统中采用加权平均值法来实现图像的灰度化,这样可以获得最合理的灰度图像。肤色相似度计算:相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。二值化:通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。第3章系统的概要设计本章主要介绍系统的结构设计的流程以及系统各模块的功能及相关原理。应用程序的总体结构设计流程图如图3-1所示:图3-1总体结构设计流程图图3-1总体结构设计流程图图像预处理的层次图如图3-2所示:图3-2预处理的层次图人脸定位的层次图如图3-3所示:图3-3人脸定位的层次图3.1各模块功能概述以上是该系统的总体结构设计图以及图像预处理模块的层次图。下面介绍系统中的各模块的具体功能。3.1.1图像获取模块该模块主要是从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。3.1.2人脸区域获取该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。3.1.3图像预处理模块图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。该模块中的子模块有如下几个,下面对它们进行概述:★中值滤波中值滤波将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。从而影响图像的质量。处理噪声的过程称为滤波。滤波可以降低图像的视觉噪声。★灰度化图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化.相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。★对比度增强对比度增强,就是对图像的进一步处理,将对比度再一次拉开。使图象原本模糊的边缘变得清晰。★Sobel边缘提取Sobel提取的优点:采用梯度微分锐化图像,同样使噪声、条纹等得到增强,Soble算子则在一定程度上克服了这个问题:由于引入了平均因素,因而对图像中的随机噪声有一定的平滑作用;由于它是相隔两行或两列之差分,故边缘两侧之元素得到了增强,故边缘显得粗而亮。★相似度计算相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。★二值化二值化的目的是将采集获得的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。这便有利于我们对特征的提取。该设计中采用组内方差和组外方差来实现二值化。3.1.4图像模块定位对候选特征进行筛选时,首先割据颜色信息提出那些伪特征。然后用PCA模板和几何特征确定眼睛和嘴巴。★颜色筛选无论是眼睛还是嘴巴,都位于人脸的非肤色区域。而且眼睛的颜色是黑暗分明,利用这些知道可以淘汰很多候选,减少PCA验证的负担。★双眼的定位把筛选过的特征区域两两配对,再用PCA模扳进行严整,就可以得到真正的双眼大使,PCA严整有时候难以区分眉毛与眼睛,所以还要用一些几何特性进一步筛选,由于假定姿态是正的,双眼必定位于人脸的上半部分,他们的连线是近似水平的,而且他们的中心比眉毛低,运用这些判据,可以区分眉毛和眼睛。★鼻子的定位在确定了眼睛的位置以后,鼻子的位置基本确定,以眼睛的瞳距为1来计算,鼻子到两眼中心的距离为0.7到1。在这附近搜索颜色较深的区域,大致能得到鼻孔的位置(有的侧面图一个鼻孔基本不可见,也就无法检测出来了)。然后在两鼻孔上访一定范围内(鼻孔的距离的1/2左右)找亮度最高的点作为鼻尖。★嘴巴的定位找到双眼之后,可以在它们的下方搜索候选特征区域,寻找非肤色面积较大、近似位于双眼对称的候选作为嘴巴。然后根据先验知识调整嘴巴的大小。第4章系统详细设计本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。4.1系统的运行流程图对图片进行光线补偿、对图片进行光线补偿、将图片变成灰色、实现图片对比度增强,二值化变换等一系列预处理。将处理好的人脸图片进行定位,标出眼睛、鼻尖和嘴巴。启动本系统,进入人脸识别系统界面。点击打开图象,选取所需要的图片图4-1系统流程图4.2图像处理详细设计4.2.1图像灰度化彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化。相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。算法思想灰度化的处理方法主要有3种:最大值法:使RGB的值等于3值中的最大一值,即,式(4.1)最大值法会完成亮度很高的灰度。平均值法:取R,G,B的平均值,即,式(4.2)平均值法会完成比较柔和的灰度。③加权平均值法:根据重要性或其他指标给R,G,B赋予不同的权值,并使RGB的加权值平均,即,式(4.3)其中,,分别为R,G,B的权值。实验和理论推导证明当时,即当,式(4.4)式(4.5)时,能得到最合理的灰度图像。具体实现灰度化功能①在明白了灰度化的原理之后,就可进行编码来实现该功能。在编辑界面中添加一个按钮控件,将其命名为‘灰度化’,并其ID号设为IDC_BTHD,对应文件CFaceDetectDlg.Cpp中的函数OnBthd()实现.②现该模块的核心代码如下://编写就算像素点灰度值的函数intCPreProcess::CalGray1(intblue,intgreen,intred){//利用灰度计算公式intColorGray=(int)((green*59+red*30+blue*11)/100); //将像素值限制在0到255 if(ColorGray<0) { ColorGray=0; } elseif(ColorGray>255) { ColorGray=255; } returnColorGray;}//编写OnBtGray()函数//获取红色分量intColorRed=m_tOriPixelArray[i][j].rgbRed;//获取绿色分量intColorGreen=m_tOriPixelArray[i][j].rgbGreen;//获取蓝色分量intColorBlue=m_tOriPixelArray[i][j].rgbBlue;//调用函数,计算灰度值intcgray=method3->CalGray1(ColorBlue,ColorGreen,ColorRed);//显示灰度图像m_tResPixelArray[i][j].rgbBlue=m_tResPixelArray[i][j].rgbGreen= m_tResPixelArray[i][j].rgbRed=cgray;//重置位图MakeBitMap();}//method3是定义的一个函数指针,定义如下:CPreProcess*method3;//初始化如下method3=newCPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight);图像灰度化效果:图4-2图像灰度化4.2.2灰度变换按照一定的规律修改像素的灰度值,使图像的亮度或者对比度发生改变,使之更易于分辨,达到更好的视觉效果。具体实现功能进行编码来实现该功能:在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为‘灰度化变换’,并其ID号分别设为IDC_SLIDER1,IDC_EDIT1,对应文件CFaceDetectDlg.Cpp中的函数OnReleasedcaptureSlider1()和OnChangeEdit1()实现。打开ClassWizard的MemberVariables标签,给每个控件添加所需的成员变量,参数如下:表4.1空间ID号变量类型变量名范围和大小IDC_SLIDER1CSliderCtrlm_Slider――IDC_EDIT1intm_Gray0~255在滑动条的消息处理函数OnReleasedcaptureSlider1()中设置滑动条的值使它等于文本编辑框的初始值。代码为://设置滑动条的初始值m_Slider.SetPos(m_Gray);//刷新界面UpdateData(true);在滑动条的消息处理函数OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条的值赋给灰度,并将其控制在【0,255】之间。代码为:cgray+=m_Gray; if(cgray<0) { cgray=0; } if(cgray>255) { cgray=255; } m_tResPixelArray[i][j].rgbBlue=m_tResPixelArray[i][j].rgbGreen= m_tResPixelArray[i][j].rgbRed=cgray; }} MakeBitMap(); }//重置位图 MakeBitMap();的主要代码{CClientDCClientDC(pDCShow->GetWindow()); if(m_pResMap!=NULL)deletem_pResMap; m_pResMap=newCBitmap(); m_pResMap->CreateCompatibleBitmap(&ClientDC,m_nWndWidth,m_nWndHeight); CDCdc; dc.CreateCompatibleDC(&ClientDC); dc.SelectObject(m_pResMap); for(inti=0;i<m_nWndHeight;i++) for(intj=0;j<m_nWndWidth;j++) dc.SetPixelV(j,i,RGB(m_tResPixelArray[i][j].rgbRed,m_tResPixelArray[i][j].rgbGreen,m_tResPixelArray[i][j].rgbBlue)); dc.DeleteDC(); MyDraw();}效果图图4-3比较柔和的灰度图像图4-4灰度较强图像4.2.3sobel边缘提取图像边缘:是指图像中象素灰度值有阶跃变化或屋顶状变化的那些象素的集合。图像边缘是一种重要的视觉信息,图像边缘检测是图像处理、图像分析、模式识别、计算机视觉以及人类视觉的基本步骤。其结果的正确性和可靠性将直接影响到机器视觉系统对客观世界的理解。实现边缘检测有很多不同的方法,也一直是图像处理中的研究热点,人们期望找到一种抗噪强、定位准、不漏检、不误检的检测算法。经典的算法[1-2]中主要用梯度算子,最简单的梯度算子是Roberts算子,比较常用的有Prewitt算子和Sobel算子,其中Sobel算子效果较好。算法思想Sobel边缘检测算子使用两个如下有向算子(一个水平的,一个是垂直的),每一个逼近一个偏导数:
式(4.6)然后将的值赋给待求点的灰度值。(2)具体实现Sobel功能首先对整张图片的像素点进行扫描,得到每个像素点的R,G,B,然后计算得到这个像素点的灰度值,// -101// -202// -101col=temp6+2*temp7+temp8-temp1-2*temp2-temp3;式(4.7)// -1-21// 000// 121row=temp3+2*temp5+temp8-temp1-2*temp4-temp6;式(4.8)temp=method3->CalSobel(col,row);式(4.9) //对计算的值进行限制 if(temp<0) { temp=0; } if(temp>255) { temp=255; } //重置像素 m_tResPixelArray[i][j].rgbBlue=m_tResPixelArray[i][j].rgbGreen= m_tResPixelArray[i][j].rgbRed=temp; }} MakeBitMap(); }{CClientDCClientDC(pDCShow->GetWindow()); if(m_pResMap!=NULL)deletem_pResMap; m_pResMap=newCBitmap(); m_pResMap->CreateCompatibleBitmap(&ClientDC,m_nWndWidth,m_nWndHeight); CDCdc; dc.CreateCompatibleDC(&ClientDC); dc.SelectObject(m_pResMap); for(inti=0;i<m_nWndHeight;i++) for(intj=0;j<m_nWndWidth;j++) dc.SetPixelV(j,i,RGB(m_tResPixelArray[i][j].rgbRed,m_tResPixelArray[i][j].rgbGreen,m_tResPixelArray[i][j].rgbBlue)); dc.DeleteDC(); MyDraw();}效果图图4-5sobel边缘提取4.2.4对比度增强(1)进行编码来实现该功能:在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为‘灰度化变换’,并其ID号分别设为IDC_SLIDER2,IDC_EDIT2,对应文件CFaceDetectDlg.Cpp中的函数OnReleasedcaptureSlider2()和OnChangeEdit2()实现。打开ClassWizard的MemberVariables标签,给每个控件添加所需的成员变量,参数如下:表4.2空间ID号变量类型变量名范围和大小IDC_SLIDER1CSliderCtrlm_Slider2――IDC_EDIT1intm_Degree0~255在滑动条的消息处理函数OnReleasedcaptureSlider2()中设置滑动条的值使它等于文本编辑框的初始值。代码为:for(inti=0;i<m_nWndHeight;i++) {for(intj=0;j<m_nWndWidth;j++) {//获取红色分量 intr=m_tResPixelArray[i][j].rgbRed;//获取绿色分量 intg=m_tResPixelArray[i][j].rgbGreen;//获取蓝色分量 intb=m_tResPixelArray[i][j].rgbBlue; //对RGB进行变换 intred=abs((127-r)*m_Degree)/255; intgreen=abs((127-g)*m_Degree)/255; intblue=abs((127-b)*m_Degree)/255; //使颜色对比度更加明显 if(r>127)r+=red; else r-=red; if(g>127) { g+=green; } else g-=green; if(b>127) { b+=blue; } else b-=blue; if(r>255)r=255;if(r<0)r=0;if(g>255)g=255;if(g<0)g=0;if(b>255)b=255;if(b<0)b=0;m_tResPixelArray[i][j].rgbRed=r; m_tResPixelArray[i][j].rgbGreen=g; m_tResPixelArray[i][j].rgbBlue=b; } } MakeBitMap(); UpdateData(true);(2)效果图图4-6原图像图4-6对比度增强后效果图第5章系统综合与测试5.1系统综合人脸识别应用程序采用VisualC++6.0作为开发工具,利用MFC采用面向对象的方法,用C++语言编写程序。将面向对象的编程技术直接应用于图像处理知识,并按功能进行细化,建立通用的类,从而减少了繁琐性,增加代码的可重用性和可移植性,提高了效率。本设计中建立的多层次类结构都是可以修改和维护的。所有的类都是开放的,可以向其中添加新方法以支持新功能,而不会对原有功能构成任何威胁。本设计中建立的多层次类结构都是可以修改和维护的。所有的类都是开放的,可以向其中添加新方法以支持新功能,而不会对原有功能构成任何威胁。5.2结构设计图像预处理设计:表5.1函数功能OnBtGray()图象灰度化CalGray1(int,int,int)计算图象的灰度值OnChangeEdit1()设置滑动条的初始值OnReleasedcaptureSlider()改变灰度变化MakeBitMap()重置位图SetRange()设置滑动条的范围GetPos()得到滑动条的值SetPos()设置滑动条的值OnBUTTONSobel()实现Sobel边缘提取OnCustomdrawSlider1()将滑动条的消息映射给文本框 各成员函数解析函数名称:OnBtGray参数:CSliderCtrlm_Slider灰度滑动条的值intm_Gray编辑框的值返回值:void说明:该函数将编辑框的值映射给滑动条函数名称:CalGray1参数:intBlue待求点像素的蓝色值intGreen待求点像素的绿色值intRed待求点像素的红色值返回值:int待求点的灰度值说明:该函数计算某像素点的灰度值函数名称:OnChangeEdit1参数:CSliderCtrlm_Slider灰度滑动条的值intm_Gray编辑框的值返回值:void说明:该函数将编辑框的值映射给滑动条函数名称:OnReleasedcaptureSlider参数:void返回值:void说明:该函数将编辑框的值映射给滑动条函数名称:MakeBitMap参数:void返回值:void说明:重新设置位图函数名称:SetRange参数:intnMin灰度滑动条的最小值intnMax灰度滑动条的最大值BOOLbRedraw返回值:void说明:设置滑动条的最大最小值,确定滑动条的范围函数名称:GetPos参数:void返回值:void说明:得到滑动条的当前值函数名称:SetPos参数:intnPos设置滑动条的值返回值:void说明:设置滑动条的值函数名称:OnBUTTONSobel参数:void返回值:void说明:设置滑动条的值5.3系统测试测试是为了找出程序的错误。正如测试的规则所确定的一样:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了迄今为止尚未发现的错误的测试。本系统主要由图像处理、人脸定位、特征提取组成,而图像处理对于后面的工作结果好坏起着至关重要的作用,因此从软件开发的最初阶段我们就要对软件进行不断的测试,对图像处理模块中的各个子模块进行测试以便检测经过处理后的图像效果是否达到预期的效果。下面对图像处理模块的测试过程进行描述:图像处理模块:该模块分为、图像变成灰色、对比度变换、实现图像对比度增强、Sboel边缘提取。对该模块进行测试的方法是:采用多张24位的彩色图像来进行逐一测试,看这些图片经过处理后是否达到预期的效果,如图像灰度化模块的检测则需看所测的彩色图片是否变成灰色;而灰度变换就是为了调试图像最适合的灰度级。图像对比度增强是为了将图像的特征一步一步显现出来,在测试的过程中,用含人脸的图片进行检测看是否图像的特征显示出来的是否足够明显。5.3.1测试原则1、应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2、测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。3、程序员应避免检查自己的程序。(注意不是指对程序的调试)4、在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。5、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。6、严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。7、应当对每一个测试结果做全面的检查。8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。知道了测试的目的和测试的原则之后,现在进行软件的具体测试,对软件的功能实现进行详细的测试。第6章总结经过几个月的毕业设计,对我各方面的影响都很大,对此我体会颇多。虽然这次设计成品还存在着很多问题,但我从中学到了不少知识。在开发过程中遇到的问题不计其数,其中最令人感到头痛的是一些不容易注意到的小错误,例如在编写Sobel边缘提取这个按钮的时候,没有考虑到BMP图片的文件格式,所以编写程序得到的效果一直不能达到预想的效果,后来通过请教我们小组做文件存储这方面的成员才发现了这个错误;开发一个大的系统的时候,不管是个人还是团队,必须作好需求分析,建立好数据库,如果需求分析不成功,那到后面是很难做下去的,本系统的开发就遇到这样的情况,以至做了很多无用功,经常全部从新部署。一个好的需求分析报告将给系统带来很大的惊喜,它会很大程度上减少程序员的负担。系统完成在后,发现做事情不但要独立自主的完成任务,也要通过周围的朋友或是网络资料库等获取信息,只有大量的使用周围方便的活资源,而不只依赖与书本上的例子,才能得到更大的进步,做起事情来才有事半功倍的效果。本次毕业设计是针对我们大学四年来所学知识而进行的一次全面性的检验,它涵盖的知识面广,涉及到多个领域,需要我们具有较高的综合知识水平及较强的解决问题的能力。同时也是对我们工作能力,团队合作精神的一次考验。通过这次设计,一方面让我更进一步的熟悉和掌握了C++语言的基本语法以及更深入的了解了算法和VisualC++开发工具的使用。另一方面在动手能力上有了很大的提高,以前学的知识只是“知识”,而现在是将“知识”转化成自身的本领,全面提高了自身解决具体问题的能力。致谢本论文是在黄老师悉心指导下完成的。从论文的选题,文献的查找到实验的设备和设计,黄老师都给予了亲切的指导。在此深深感谢黄老师给予学生学业上的教导和生活上的关怀,老师严谨的治学态度和一丝不苟的工作作风给我极大的影响,不仅使我在静心完成论文的研究工作,而且也将勉励我今后刻苦学习和积极工作。同时本人对未知新理论的兴趣和积极探索,也很多来自于和导师交谈受到的启发。感谢我的父母和同学,他们的鼓励和支持是我踏实求学勤奋钻研的动力。大学四年参考文献[1]陆宗骐,金登男,VisualC++.NET图像处理编程,北京:清华大学出版社,2006.[2]周长发,精通VisualC++图像编程.北京:电子工业出版社,2000[3]徐建华,图象处理与分析.北京:科学出版社,1992[4]陈元琰,VisualC++.NETMFC类库应用详解.北京:科学出版社,2004[5]张翠平,苏光大人脸识别技术综述中国图像图形学报2000年11期[6]向世明,VisualC++数字图像与图形处理.北京:电子工业出版社,2002[7]陈其杰,张桂林。人脸外轮廓线的提取方法。红外与激光工程,2001[8]滕振字,孟祥旭,杨承磊.基于有向图的边界表示模型与重描算法.工程图学学报.2000.1.6.[9]MilanSonka,VaclavHlavac,RogerBoyle,ImageProcessingAnalysisandMachineVision(SECONDEDITION).ThomsonLearningandPTPress,2003[10]CamellHampton、TimPersons、ChrisWyatr、YaochunZhang,SurveyofImageSegmentation1999PAGE36PAGE37目录TOC\o"1-2"\h\z\u第一章总论 1第一节项目背景 1第二节项目概况 2第二章项目建设必要性 5第三章市场分析与建设规模 7第一节汽车市场需求分析 7第二节市场预测 12第三节项目产品市场分析 13第四节建设规模 16第四章场址选择 17第一节场址所在位置现状 17第二节 场址建设条件 17第五章技术方案、设备方案、工程方案 22第一节技术方案 22第二节设备方案 28第三节工程方案 33第六章原材料、燃料供应 38第七章总图布置与公用辅助工程 39第一节总图布置 39第二节公用辅助工程 43HYP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新年活动各地策划方案(3篇)
- 春天景区活动策划方案(3篇)
- 毕业郊游活动策划方案(3篇)
- 河床找坡施工方案(3篇)
- 深化池专项施工方案(3篇)
- 石狮蛋糕活动策划方案(3篇)
- 编发活动策划方案模板(3篇)
- 节气营销设计方案(3篇)
- 蓝天卫士监控施工方案(3篇)
- 赚钱活动创意策划方案(3篇)
- 珙县2026年公开招聘社区专职网格岗(34人)笔试参考题库及答案解析
- 2025-2026学年人教版(2024)二年级数学下册期末综合素养评价卷(二)(含答案)
- 播音系配音课件
- 2026年少先队入队考核通关试题库审定版附答案详解
- 电网企业收入审计制度
- 30-华为蓝血十杰(6版)
- 公众号推文培训
- DBJ50-T-271-2017 城市轨道交通结构检测监测技术标准
- DB2101∕T 0104-2024 住宅物业管理服务规范
- 2025年电工(高级)考试练习题库(1000题)含答案
- 重症肌无力危象患者呼吸道管理的护理查房
评论
0/150
提交评论