




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人脸面部特征提取技术的研究摘 要人脸识别技术(FRT)是当今模式识别和人工智能领域的一个重要研究方向。虽然人脸识别的研究已有很长的历史,各种人脸识别的技术也很多,但由于人脸属于复杂模式而且容易受表情、肤色和衣着的影响, 目前还没有一种人脸识别技术是公认快速有效的本文主要讨论了人脸识别技术的一些常用方法,对现有的人脸检测与定位、人脸特征提取、人脸识别的方法进行分析和讨论,最后对人脸识别未来的发展和应用做了展望。关键字:人脸识别,特征定位,特征提取ABSTRACTNowadays the face recognition technology (FRT) is a hot issue in the
2、 field of pattern recognition and artificial intelligenceAlthough this research already has a long history and many different recognition methods are proposed,there is still no effective method with low cost an d high precisionHuman face is a complex pattern an d is easily affected by the expression
3、,complexion and clothesIn this paper,some general research are discussed,including methods of face detection and location,features abstraction,and face recognitionThen we analyze and forecast the face recognitions application and its prospectsKeywords: Face Recognition Technology, Face location,Feat
4、ures abstraction第1章 绪 论所谓人脸识别,是指对输入的人脸图像或者视频判断其中是否存在人脸,如果存在人脸,则进一步给出每张人脸的位置、大小和各个主要面部器官的位置信息。并且依据这些信息,进一步提取每张人脸蕴含的身份特征,并将其与已知人脸库中的人脸进行对比,从而识别每张人脸的身份。人脸识别研究涉及的范围广泛,内容涉及模式识别、计算机视觉、图像处理、人工智能等方面。人脸识别还涉及到神经网络等学科, 也和人脑的认识程度紧密相关。 这诸多因素使得人脸识别成为一项极富挑战性的课题。1.1人脸识别技术的研究意义人脸识别是机器视觉和模式识别领域最富有挑战性的课题之一,同时也具有较为广泛的应
5、用意义。人脸识别技术是一个非常活跃的研究领域,它覆盖了数字图像处理、模式识别、计算机视觉、神经网络、心理学、生理学、数学等诸多学科的内容。如今,虽然在这方面的研究已取得了一些可喜的成果,但是FRT在实用应用中仍面临着很严峻的问题,因为人脸五官的分布是非常相似的,而且人脸本身又是一个柔性物体,表情、姿态或发型、化妆的千变万化都给正确识别带来了相当大的麻烦。如何能正确识别大量的人并满足实时性要求是迫切需要解决的问题。1.2国内外的研究现状 人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验
6、证、计算机登录系统。我国在这方面也取得了较好的成就,国家863项目“面像检测与识别核心技术”通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。北京科瑞奇技术开发股份有限公司在2002年开发了一种人脸鉴别系统,对人脸图像进行处理,消除了照相机的影响,再对图像进行特征提取和识别。这对于人脸鉴别特别有价值,因为人脸鉴别通常使用正面照,要鉴别的人脸图像是不同时期拍摄的,使用的照相机不一样。系统可以接受时间间隔较长的照片,并能达到较高的识别率,在计算机中库藏2300人的正面照片,每人一张照片,使用相距1-7年、差别比较大的照片去查询,首选率可以达到50%,前20 张
7、输出照片中包含有与输入照片为同一人的照片的概率可达70%。美国陆军实验室也是利用vc+开发,通过软件实现的,并且FAR为49%。在美国的进行的公开测试中,FAR,为53%。美国国防部高级研究项目署,利用半自动和全自动算法。这种算法需要人工或自动指出图像中人的两眼的中心坐标,然后进行识别。在机场开展的测试中,系统发出的错误警报太多,国外的一些高校(卡内基梅隆大学(Carnegie Mellon University)为首,麻省理工大学(Massachusetts Institute of Technology )等,英国的雷丁大学(University of Reading)和公司(Vision
8、ics 公司Facelt 人脸识别系统、Viiage 的FaceFINDER 身份验证系统、Lau Tech 公司Hunter系统、德国的BioID 系统等)的工程研究工作也主要放在公安、刑事方面,在考试验证系统的实现方面深入研究并不多。1.3本系统研究内容本系统主要对人脸的检测与定位做了深入研究。在人脸检测部分主要是对图像进行获取和预处理。图像获取主要是获取图像的基本信息,以便对图像的像素进行处理。预处理的包括对图像灰度化,中值滤波,对比度变化以及边缘提取。人脸预处理过程是计算机人脸识别中一个重要过程。人脸图像预处理的好坏对整个系统至关重要,对人脸预处理的研究具有非常重要的意义。特征定位是人
9、脸识别的目的是确定单张人脸在图像中的位置,它通过标记人脸区域 来确定和计算人脸的各器官定位。人脸特征检测是检测人脸特征的有无和位置,比如说眼睛、鼻子、鼻孔、嘴巴、嘴唇等的有无和位置。值得指出的是,人脸检测涉及的方法种类繁多(据报告可知,用于人脸检测方法的有150多种),且涉及的知识点较深,并各有特点,所以我们小组将人脸检测与人脸识别区分开来,因为后者只是前者一个简单问题。同时,我们把注意力集中在人脸检测方法上,而没有实现与数据库中的人脸匹配问题。1.4目前研究中存在的问题虽然人类的人脸识别能力很强,,能够记住并辨别上千张不同人脸,可是计算机则困难多了。其表现在:人脸表情丰富;人脸随年龄增长而变
10、化;人脸所成图像受光照、成像角度及成像距离等影响;而且从二维图象重建三维人脸是病态( ill2po sed) 过程,目前尚没有很好的描述人脸的三维模型。另外,人脸识别还涉及到图象处理、计算机视觉、模式识别以及神经网络等学科,也和人脑的认识程度紧密相关。这诸多因素使得人脸识别成为一项极富挑战性的课题。第2章 系统需求分析2.1 系统功能需求系统功能主要围绕人脸检测和人脸特征定位进行设计,首先该系统会对图像进行人脸检测,人脸检测主要是对图像进行预处理的过程,预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位。该系统主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来。功能划分及描
11、述图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取。肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。图像获取模块:该模块主要是从图片库中获取图片,获取后的图片可以在软件的界面中显示出来以便进行识别。图像预处理模块:图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。该模块中的子模块有如下几个,下面对它们进行概述:中值滤波:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,
12、因此需要将图片进行平滑操作以此来消除噪声。灰度化:图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。Sobel提取(边缘提取):采用梯度微分锐化图像,使噪声、条纹等得到增强;对图像中的随机噪声也有一定的平滑作用;标记人脸的边缘,使其边缘显得粗而亮。对比度增强:对比度增强,就是对图像的进一步处理,将对比度再一次拉开。它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。通过改变选
13、用的增强函数的解析表达式就可以得到不同的处理效果。相似度计算:相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。二值化:通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。直方图:直方图是图象处理中一种十分重要的图象分析工具,它描述了一幅图像的灰度级内容,任何一幅直方图
14、都包含了丰富的信息。从数学上来说图像直方图是图像各个灰度值统计特性与图像灰度值的函数,它统计了一幅图像中各个灰度级出现的次数和概率。 开发环境硬件环境硬件配置原则:具有可靠性,可用性和安全性,具有完善的技术支持。能够满足个人学习和设计需要。运行本软件所需的硬件资源:CPU: 800M及以上;内存: 128M及以上软件环境系统软件配置原则能够满足该软件的可靠性,可用性和安全性的要求系统软件配置方案 配置有持续工作能力、高稳定性、高度可集成的开放式标准的操作系统,如Windows2000,Windows NT,UNIX,Linux等。 配备符合ANSI/ISO标准的高级程序设计语言处理软件。如:V
15、isual C+ 6.0。 熟悉C+高级程序设计语言。 运行环境(1)硬件环境CPU:800M以上;内存:128 M及以上。(2)软件环境可以运行在微软公司近年来所出的各种操作系统。如Windows 98、Windows Me、Windows 2000、Windows NT等。2.2 可行性分析在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。操作可行性该人脸识别软件需要如下的运行环境:CPU:800M及以上;内存:128 M及以上。安装有Windows 98、Windows Me、Win
16、dows 2000、Windows NT等操作系统中的其中一种。因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。 技术可行性图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取。肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。人脸自身变化的挑战:同一个人的人脸图像因为表情、精神状态、健康状况、姿态、整容、年龄变化、意外损伤、化妆、眼镜帽子、头发胡须等变化而发生巨大的变化;外部环境的挑战:光照环境条件、摄像设备、人与摄像设备的距离角度、图像存储质量等,都会
17、使人脸图像发生教大变化。面队这些就要求我们进一步研究基于人脸肤色提取的算法,提高识别精度,提高识别速度,提高系统的适用性。2.3 预处理方案选择设计方案原则的选择本应用程序的设计方案原则如下:采用较为先进的技术力量,保证应用程序在技术上具备一定的优势。采用成熟的技术,保证应用程序的安全性和可靠性。应用程序便于扩展和维护,易于技术的更新。应用程序充分利用现有的资源,尽量减少不必要的再投资。编写的代码必须严谨易读,代码的解释必须清楚明白,为应用程序的再开发提供应尽的责任。 图像文件格式选择 图像采集是在Windows操作系统下开发的,需要了解在此环境下图像的存储、显示等方面的机制。在Windows
18、操作系统中,任何图像格式(如.jpeg格式,.gif格式)在系统中显示之前最终必须转化为位图格式。BMP图像文件格式(位图格式)是微软公司为其Windows环境设置的标准图像格式,在设计的过程中,为了定位和特征提取的方便,我们采用的是BMP格式的图像。 开发工具选择本次设计所用的开发工具是Microsoft Visual C+ 6.0。 Visual C+ 6.0是Microsoft公司推出的一种可视化编程工具。它支持多平台和交叉平台的开发,将各种编程工具如编辑器、连接器、调试器等巧妙的结合在一起,构成一个完美的可视化开发环境。用户无需通过繁杂的编程操作,即可完成Windows下应用程序的编辑
19、、编译、测试和细化等工作。算法选择分析本文主要研究的对象是图像预处理模块,该模块分为中值滤波、图像灰度化、相似度计算、二值化每个小模块的实现都有许多相应的算法。下面将本系统采用的算法进行介绍:中值滤波:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。但是如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用中值滤波算法处理。图像灰度化:图像灰度化是将图像变成灰色,本系统中采用加权平均值法来实现图像的
20、灰度化,这样可以获得最合理的灰度图像。肤色相似度计算:相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。二值化:通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。第3章 系统的概要设计本章主要介绍系统的结构设计的流程以及系统各模块的功能及相关原理。应用程序的总体结构设
21、计流程图如图31所示:图31总体结构设计流程图图像预处理的层次图如图3-2所示: 图3-2 预处理的层次图人脸定位的层次图如图3-3所示: 图3-3 人脸定位的层次图3.1 各模块功能概述以上是该系统的总体结构设计图以及图像预处理模块的层次图。下面介绍系统中的各模块的具体功能。图像获取模块该模块主要是从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。人脸区域获取该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。图像预处理模块图
22、像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。该模块中的子模块有如下几个,下面对它们进行概述: 中值滤波中值滤波将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。从而影响图像的质量。处理噪声的过程称为滤波。滤波可以降低图像的视觉噪声。 灰度化图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。 对比度增强对比度增强,就是对图像的进一步处理,将
23、对比度再一次拉开。使图象原本模糊的边缘变得清晰。 Sobel边缘提取Sobel提取的优点:采用梯度微分锐化图像,同样使噪声、条纹等得到增强,Soble算子则在一定程度上克服了这个问题:由于引入了平均因素,因而对图像中的随机噪声有一定的平滑作用;由于它是相隔两行或两列之差分,故边缘两侧之元素得到了增强,故边缘显得粗而亮。 相似度计算相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。 二值化二值化的目的是将采集获得的多层
24、次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。这便有利于我们对特征的提取。该设计中采用组内方差和组外方差来实现二值化。图像模块定位对候选特征进行筛选时,首先割据颜色信息提出那些伪特征。然后用PCA模板和几何特征确定眼睛和嘴巴。 颜色筛选无论是眼睛还是嘴巴,都位于人脸的非肤色区域。而且眼睛的颜色是黑暗分明,利用这些知道可以淘汰很多候选,减少PCA验证的负担
25、。 双眼的定位把筛选过的特征区域两两配对,再用PCA模扳进行严整,就可以得到真正的双眼大使,PCA严整有时候难以区分眉毛与眼睛,所以还要用一些几何特性进一步筛选,由于假定姿态是正的,双眼必定位于人脸的上半部分,他们的连线是近似水平的,而且他们的中心比眉毛低,运用这些判据,可以区分眉毛和眼睛。 鼻子的定位在确定了眼睛的位置以后,鼻子的位置基本确定,以眼睛的瞳距为1来计算,鼻子到两眼中心的距离为0.7到1。在这附近搜索颜色较深的区域,大致能得到鼻孔的位置(有的侧面图一个鼻孔基本不可见,也就无法检测出来了)。然后在两鼻孔上访一定范围内(鼻孔的距离的1/2左右)找亮度最高的点作为鼻尖。 嘴巴的定位找到
26、双眼之后,可以在它们的下方搜索候选特征区域,寻找非肤色面积较大、近似位于双眼对称的候选作为嘴巴。然后根据先验知识调整嘴巴的大小。第4章 系统详细设计本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。4.1 系统的运行流程图对图片进行光线补偿、将图片变成灰色、实现图片对比度增强,二值化变换等一系列预处理。将处理好的人脸图片进行定位,标出眼睛、鼻尖和嘴巴。启动本系统,进入人脸识别系统界面。点击打开图象,选取所需要的图片图4-1 系统流程图4.2 图像处理详细设计图像灰度化彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化。相比之下灰度图像在保留了人
27、脸主要特征信息的基础上,减少了总信息量。算法思想 灰度化的处理方法主要有3种:最大值法:使RGB的值等于3值中的最大一值,即, 式(4.1)最大值法会完成亮度很高的灰度。 平均值法:取R,G,B的平均值,即, 式(4.2)平均值法会完成比较柔和的灰度。 加权平均值法:根据重要性或其他指标给R,G,B赋予不同的权值,并使RGB的加权值平均,即, 式(4.3)其中,分别为R,G,B的权值。实验和理论推导证明当 时,即当, 式(4.4) 式(4.5)时,能得到最合理的灰度图像。具体实现灰度化功能 在明白了灰度化的原理之后,就可进行编码来实现该功能。在编辑界面中添加一个按钮控件,将其命名为灰度化,并其
28、ID号设为IDC_BTHD, 对应文件CFaceDetectDlgCpp中的函数OnBthd()实现. 现该模块的核心代码如下:/编写就算像素点灰度值的函数int CPreProcess:CalGray1(int blue,int green,int red)/利用灰度计算公式int ColorGray=(int)(green * 59 + red * 30 + blue * 11) / 100);/将像素值限制在0到255if (ColorGray255)ColorGray=255;return ColorGray;/编写OnBtGray()函数/获取红色分量int ColorRed=m_t
29、OriPixelArrayij.rgbRed;/获取绿色分量int ColorGreen=m_tOriPixelArrayij.rgbGreen;/获取蓝色分量 int ColorBlue=m_tOriPixelArrayij.rgbBlue;/调用函数,计算灰度值int cgray=method3-CalGray1(ColorBlue ,ColorGreen , ColorRed ) ;/显示灰度图像m_tResPixelArrayij.rgbBlue = m_tResPixelArrayij.rgbGreen = m_tResPixelArrayij.rgbRed =cgray;/重置位图
30、MakeBitMap( );/method3是定义的一个函数指针,定义如下:CPreProcess *method3;/初始化如下method3 = new CPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight);图像灰度化效果: 图4-2 图像灰度化4.2.2 灰度变换按照一定的规律修改像素的灰度值,使图像的亮度或者对比度发生改变,使之更易于分辨,达到更好的视觉效果。具体实现功能进行编码来实现该功能:在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为灰度化变换,并其ID号分别设为IDC_SLIDER1, IDC_EDIT1,对应文件C
31、FaceDetectDlgCpp中的函数OnReleasedcaptureSlider1()和OnChangeEdit1()实现。打开ClassWizard的Member Variables标签,给每个控件添加所需的成员变量,参数如下:表4.1 空间ID号变量类型变量名范围和大小IDC_SLIDER1CSliderCtrlm_SliderIDC_EDIT1intm_Gray0255在滑动条的消息处理函数OnReleasedcaptureSlider1()中设置滑动条的值使它等于文本编辑框的初始值。代码为:/设置滑动条的初始值m_Slider.SetPos(m_Gray); /刷新界面Updat
32、eData(true); 在滑动条的消息处理函数OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条的值赋给灰度,并将其控制在【0,255】之间。代码为:cgray+=m_Gray; if (cgray255) cgray=255; m_tResPixelArrayij.rgbBlue = m_tResPixelArrayij.rgbGreen =m_tResPixelArrayij.rgbRed =cgray; MakeBitMap();/重置位图MakeBitMap();的主要代码 CClientDC ClientDC(pDCShow-GetWindow();if
33、(m_pResMap!=NULL) delete m_pResMap;m_pResMap=new CBitmap();m_pResMap-CreateCompatibleBitmap(&ClientDC,m_nWndWidth,m_nWndHeight);CDC dc;dc.CreateCompatibleDC(&ClientDC);dc.SelectObject(m_pResMap);for(int i=0; im_nWndHeight; i+)for(int j=0; jCalSobel(col,row); 式(4.9)/对计算的值进行限制 if (temp255) temp=255; /
34、重置像素 m_tResPixelArrayij.rgbBlue = m_tResPixelArrayij.rgbGreen = m_tResPixelArrayij.rgbRed =temp; MakeBitMap();CClientDC ClientDC(pDCShow-GetWindow();if(m_pResMap!=NULL) delete m_pResMap;m_pResMap=new CBitmap();m_pResMap-CreateCompatibleBitmap(&ClientDC,m_nWndWidth,m_nWndHeight);CDC dc;dc.CreateCompa
35、tibleDC(&ClientDC);dc.SelectObject(m_pResMap);for(int i=0; im_nWndHeight; i+)for(int j=0; jm_nWndWidth; j+)dc.SetPixelV(j,i,RGB(m_tResPixelArrayij.rgbRed,m_tResPixelArrayij.rgbGreen,m_tResPixelArrayij.rgbBlue);dc.DeleteDC();MyDraw();效果图 图4-5 sobel边缘提取 对比度增强(1)进行编码来实现该功能:在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为灰度
36、化变换,并其ID号分别设为IDC_SLIDER2, IDC_EDIT2,对应文件CFaceDetectDlgCpp中的函数OnReleasedcaptureSlider2()和OnChangeEdit2()实现。打开ClassWizard的Member Variables标签,给每个控件添加所需的成员变量,参数如下:表4.2空间ID号变量类型变量名范围和大小IDC_SLIDER1CSliderCtrlm_Slider2IDC_EDIT1intm_Degree0255 在滑动条的消息处理函数OnReleasedcaptureSlider2()中设置滑动条的值使它等于文本编辑框的初始值。代码为:f
37、or (int i=0;im_nWndHeight;i+) for (int j=0;j127)r+=red;else r-=red;if (g127)g+=green;else g-=green;if (b127)b+=blue;elseb-=blue; if (r 255) r = 255; if (r 255) g = 255; if (g 255) b = 255; if (b 0) b = 0; m_tResPixelArrayij.rgbRed=r;m_tResPixelArrayij.rgbGreen=g;m_tResPixelArrayij.rgbBlue=b; MakeBit
38、Map(); UpdateData(true);(2) 效果图图4-6 原图像图4-6 对比度增强后效果图第5章 系统综合与测试5.1 系统综合人脸识别应用程序采用Visual C6.0作为开发工具,利用MFC采用面向对象的方法,用C+语言编写程序。将面向对象的编程技术直接应用于图像处理知识,并按功能进行细化,建立通用的类,从而减少了繁琐性,增加代码的可重用性和可移植性,提高了效率。本设计中建立的多层次类结构都是可以修改和维护的。所有的类都是开放的,可以向其中添加新方法以支持新功能,而不会对原有功能构成任何威胁。本设计中建立的多层次类结构都是可以修改和维护的。所有的类都是开放的,可以向其中添加
39、新方法以支持新功能,而不会对原有功能构成任何威胁。5.2 结构设计图像预处理设计: 表5.1函 数功 能OnBtGray()图象灰度化CalGray1(int,int,int)计算图象的灰度值OnChangeEdit1( )设置滑动条的初始值OnReleasedcaptureSlider( )改变灰度变化MakeBitMap( )重置位图SetRange()设置滑动条的范围GetPos( )得到滑动条的值SetPos()设置滑动条的值OnBUTTONSobel( )实现Sobel边缘提取OnCustomdrawSlider1( )将滑动条的消息映射给文本框各成员函数解析函数名称 : OnBtG
40、ray参数 : CSliderCtrl m_Slider - 灰度滑动条的值 int m_Gray - 编辑框的值返回值 : void说明 : 该函数将编辑框的值映射给滑动条函数名称 : CalGray1参数 : int Blue - 待求点像素的蓝色值 int Green - 待求点像素的绿色值int Red - 待求点像素的红色值返回值 : int - 待求点的灰度值说明 : 该函数计算某像素点的灰度值函数名称 : OnChangeEdit1参数 : CSliderCtrl m_Slider - 灰度滑动条的值 int m_Gray - 编辑框的值返回值 : void说明 : 该函数将编辑
41、框的值映射给滑动条函数名称 : OnReleasedcaptureSlider参数 : void返回值 : void说明 : 该函数将编辑框的值映射给滑动条函数名称 : MakeBitMap参数 : void返回值 : void说明 : 重新设置位图函数名称 : SetRange 参数 : int nMin -灰度滑动条的最小值 int nMax-灰度滑动条的最大值 BOOL bRedraw 返回值 : void说明 : 设置滑动条的最大最小值,确定滑动条的范围函数名称 : GetPos 参数 : void返回值 : void说明 : 得到滑动条的当前值函数名称 : SetPos 参数 : i
42、nt nPos -设置滑动条的值返回值 : void说明 : 设置滑动条的值函数名称 : OnBUTTONSobel 参数 : void返回值 : void说明 : 设置滑动条的值5.3 系统测试测试是为了找出程序的错误。正如测试的规则所确定的一样:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了迄今为止尚未发现的错误的测试。本系统主要由图像处理、人脸定位、特征提取组成,而图像处理对于后面的工作结果好坏起着至关重要的作用,因此从软件开发的最初阶段我们就要对软件进行不断的测试,对图像处理模块中的各个子模块进行测试以便检测经过
43、处理后的图像效果是否达到预期的效果。下面对图像处理模块的测试过程进行描述:图像处理模块 :该模块分为、图像变成灰色、对比度变换、实现图像对比度增强、Sboel边缘提取。对该模块进行测试的方法是:采用多张24位的彩色图像来进行逐一测试,看这些图片经过处理后是否达到预期的效果,如图像灰度化模块的检测则需看所测的彩色图片是否变成灰色;而灰度变换就是为了调试图像最适合的灰度级。图像对比度增强是为了将图像的特征一步一步显现出来,在测试的过程中,用含人脸的图片进行检测看是否图像的特征显示出来的是否足够明显。 测试原则1、应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2、测试用例应由测试输入数
44、据和与之对应的预期输出结果两部分组成。3、程序员应避免检查自己的程序。(注意不是指对程序的调试)4、在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。5、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。6、严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。7、应当对每一个测试结果做全面的检查。8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。知道了测试的目的和测试的原则之后,现在进行软件的具体测试,对软件的功能实现进行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业基地领养动物合同标准文本
- 关于社保补充合同标准文本
- 保洁服务合同8篇
- 传媒公司与公司合同标准文本
- 共同经营投资合同标准文本
- 落实新课程标准的具体措施计划
- 学生兴趣小组活动计划
- 传帮带心得体会【5篇】
- 学校美术课程的课外延伸研究计划
- 班主任如何开展小组合作学习计划
- 儿童行为问题的处理与干预
- 人防车位价格评估报告
- 幼儿园大班音乐《建筑之歌》
- 智能化弱电工程深化设计工作流程
- 四川省2023年中考数学试卷十五套及答案
- 河(湖)巡查记录表
- 创意美术《小青蛙呱呱呱》课件
- 保护性施工方案
- 教科版五年级下册科学3-3《珍惜水资源》
- COSO内部控制整体框架简介
- 初中英语- I'd love to sail across the Pacific.教学课件设计
评论
0/150
提交评论