ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:82.05KB ,
资源ID:12509067      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12509067.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人脸模式识别系统.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人脸模式识别系统.docx

1、人脸模式识别系统人脸识别系统设计一、 系统的可行性分析与原理设计人脸识别系统现在应用于许多领域中,但是人脸识别技术也是一项近年来兴起的,且不大为人所知的新技术。在我国以及其他国家都有大量的学者正在研究之中,不断的更新人脸识别技术,以便系统的识别准确率达到新的高度。第一节 可行性分析在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。一 技术可行性 图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。在确定脸部区域上,通常使用的方法有肤色提取。肤色提取,则对脸部区域的获取则比较准确,成

2、功率达到95%以上,并且速度快,减少很多工作。图像的亮度变化,由于图像的亮度在不同环境的当中,必然受到不同光线的影响,图像就变得太暗或太亮,我们就要对它的亮度进行调整,主要采取的措施是对图像进行光线补偿。高斯平滑:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。灰度变换:进行灰度处理,我们要保证图像信息尽可能少的丢失。同样在进行灰度变换前,我们也要对图像的信息进行统计,找出一个比较合理的灰度值,才能进行灰度变换。灰度均衡:灰度变换后,就要进行灰度均衡,可以

3、根据灰度分布来进行灰度均衡。对比度增强:将所要处理的区域和周围图像区域进一步拉开他们的对比度,使它们更加明显,主要通过像素的聚集来实现。二 操作可行性该人脸识别软件需要如下的运行环境:CPU:500M及以上;内存:64 M及以上。安装有Windows 98、Windows Me、Windows 2000、Windows NT等操作系统中的其中一种。另还装有摄像头可进行随机拍照和识别。因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。第二节 需求分析一 应用程序的功能需求分析 该软件最主要的功能就是要能识别出人脸,首先该系统需要对通过摄像头拍照而

4、获取到的原始的人脸图片进行一系列处理才可进行下一步的工作,该处理过程也称图像预处理。预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位,只有预处理模块做的好,才可能很好的完成后面的人脸定位和特征提取这两大关键模块。因此本设计中所要完成的主要功能如下所述:图像获取功能:该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。图像预处理功能:该模块主要包括图像光线补偿、图像变成灰色、高斯平滑、均衡直方图、实现图像对比度增强、二值化变换等。人脸定位功能:该模块主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来,以便进行特征

5、提取。特征提取功能:该模块是在定位后的人脸图片中将眼睛、鼻子、嘴巴的特征值提取出来。识别功能:该模块是将从图片中提取的特征值和后台数据库中的值进行比较来完成识别功能。二 开发环境需求分析1、硬件环境(1)硬件配置原则具有可靠性,可用性和安全性,具有完善的技术支持。能够满足个人学习和设计需要。(2)运行本软件所需的硬件资源CPU: 800M及以上;内存: 128M及以上2、软件环境(1)系统软件配置原则 能够满足该软件的可靠性,可用性和安全性的要求(2)系统软件配置方案 配置有持续工作能力、高稳定性、高度可集成的开放式标准的操作系统,如Windows2000,Windows NT,UNIX,Li

6、nux等。 配备符合ANSI/ISO标准的高级程序设计语言处理软件。如:Visual C+ 6.0。 熟悉C+高级程序设计语言。3、 运行环境需求分析(1)、硬件环境CPU:500M及以上;内存:64 M及以上。(2)、软件环境可以运行在微软公司近年来所出的各种操作系统。如Windows 98、Windows Me、Windows 2000、Windows NT等。第三节 预处理方案选择一 设计方案原则的选择本应用程序的设计方案原则如下:1、采用较为先进的技术力量,保证应用程序在技术上具备一定的优势。2、采用成熟的技术,保证应用程序的安全性和可靠性。3、应用程序便于扩展和维护,易于技术的更新。

7、4、应用程序充分利用现有的资源,尽量减少不必要的再投资。5、编写的代码必须严谨易读,代码的解释必须清楚明白,为应用程序的再开发提供应尽的责任。二 图像文件格式选择在设计的过程中,为了定位和特征提取的方便,我们采用的是24位位图。三 开发工具选择本次设计所用的开发工具是Microsoft Visual C+ 6.0。 Visual C+ 6.0是Microsoft公司推出的一种可视化编程工具。它支持多平台和交叉平台的开发,将各种编程工具如编辑器、连接器、调试器等巧妙的结合在一起,构成一个完美的可视化开发环境。用户无需通过繁杂的编程操作,即可完成Windows下应用程序的编辑、编译、测试和细化等工

8、作。四 算法选择分析本文主要研究的对象是图像预处理模块,该模块分为光线补偿、图像灰度化、高斯平滑、图像对比度增强、均衡直方图,每个小模块的实现都有许多相应的算法。下面将本系统采用的算法进行介绍:光线补偿 :由于光线原因,所照的图像可能会存在光线不平衡的情况而造成色彩偏差,为了抵消这种整个图像中存在的色彩偏差,本系统采用的解决方法是:将整个图像中的所有像素的亮度从高到低进行排列,取前5%的像素,然后线性放大,使这些像素的平均亮度达到255。实际上就是调整图片像素的RGB值。图像灰度化:图像灰度化是将图像变成灰色,本系统中采用以下步骤来实现图像的灰度化:彩色转换成灰度、灰度比例变换、灰度线性变换、

9、灰度线性截断、灰度取反。高斯平滑:在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。但是如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用高斯平滑。均衡直方图:使用该模块的目的是通过点运算使输入转换为在每一灰度级上都有相同的像素点数的输出图像。它的实现主要是利用灰度均衡的转换式DB = f (DA)= H(u)du 。(式1)图像对比度增强:为了将图像的特征一步一步显现出来,需要进行图像的对比度增

10、强,它主要通过对图像的灰度值进行统计,对于小于Low则认为是有关的信息,则将它作为黑色处理,对于处于High以上的则认为是一些无关的信息,将它们去掉,而处于两者之间的,则进行对比度增强,将他们在总的灰度值里面的比例作为新的像素信息保存起来。二、 系统结构设计第一部分 系统的概要设计本章主要介绍系统的结构设计的流程以及系统各模块的功能及相关原理。(一) 应用程序的总体结构设计流程图如图31所示:图31总体结构设计流程图用 户从“文件”菜单中选择“打开”选项在弹出的“打开”对话框中选择要打开的位图,点击“确定”,应用程序显示所要打开的位图识别获取脸部区域获取特征参数人脸定位图象预处理显示识别结果(

11、二) 图像预处理的层次图如图3-2所示: 图3-2 预处理的层次图第一节 各模块功能概述以上是该系统的总体结构设计图以及图像预处理模块的层次图。下面介绍系统中的各模块的功能及算法:图像获取模块该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。人脸区域获取 该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。图像预处理模块图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够

12、在图像中明显的表现出来。该模块中的子模块有如下5个,下面对它们进行概述: 光线补偿因为系统得到的图片可能会存在光线不平衡的情况,这会影响我们对特征的提取,同时系统中要用到YcrCB色彩空间,所以有必要对图像进行光线补偿。尽可能将它的特征在图像中表现出来。YcrCB是一种色彩空间,它用于视频系统中,在该色彩空间中,Y分量表示像素的亮度,Cr表示红色分量,Cb表示蓝色分量,通常把Cr和Cb称为色度。YcrCB色彩空间是以演播室质量标准为目标的CC601编码方案中采用的彩色表示模型。灰度变化图像灰度化的过程就是把彩色图像转换为黑白色图像的过程,它也是为了将图像的信息更加具体、简单的表现出来,但是,这

13、样做也将会丢失图像信息。因此,尽可能在转化的过程中用简单的方式表现图像复杂的信息。高斯平滑处理高斯平滑将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。从而影响图像的质量。处理噪声的过程称为平滑。平滑可以降低图像的视觉噪声,同时出去图像中的高频部分后,那些本来不明显的低频成分更容易识别。平滑可以通过卷积来实现。经过卷积平滑后的水平投影后,二值化提供了较好的图像效果。对比度增强对比度增强,就是对图像的进一步处理,将对比度再一次拉开。它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对

14、像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。通过改变选用的增强函数的解析表达式就可以得到不同的处理效果。二值化二值化的目的是将采集获得的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。这便有利于我们对特征的提取。该设计中采用组内方差和组外方差来实现二值化。直方图均衡直方图均衡化的目的是使一输入图像转换为在每一灰度级上都有相同的象素点数

15、,它的处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,它的研究思路是:通过直方图变换式来进行直方图的均衡处理,直方图变换式是但是直方图均衡化存在着两个缺点: 1)变换后图像的灰度级减少,某些细节消失; 2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。人脸定位模块人脸定位是将典型的脸部特征(如眼睛,鼻尖,嘴唇等等)标记出来,在本系统中,定位的特征是眼睛,鼻尖和嘴巴三个。由于眼睛具有对称性,因此可以很快就能标记出来,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛标记好,鼻子和嘴巴也能相应的标记出来。特征提取模块特征提取按以下4个步骤进

16、行:(1)、提取两只眼睛的距离(2)、眼睛的倾角度(3)、眼睛、嘴巴的重心(4)、用一个矩形标出每一个特征在特征提取完之后将会得到相应的特征值以便存入后台数据库。 识别模块该模块通过与库存中的特征向量进行比较,找出与特征最相近的参数,再对该参数进一步分析。如果分析在我们所确认的范围内,我们就认为该人就是我们所要找的。然后从库存中提取出该人相关的信息,并显示出来。如果库存中没有,则给出提示是否对存库作为样本。第二部分 系统的详细设计本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。第一节 系统的运行流程图图6-1 系统的运行流程图输入 第二节 图像处理详细设计

17、一 位图详细设计1 设备无关位图(DIB)VC+没有提供使用十分方便的DIB绘制方法,只好自己去创建一个实用的DIB类了。本系统中建立了一个专门的类DIB来处理设备无关位图,表41列出了对位图的操作函数。函 数功 能ClearMemory()释放内存CopyHandle()拷贝内存块LoadDIB()加载位图信息ReadDIBFile()读取位图文件信息LightingCompensate()进行光线补偿PixelOffset()修正像素值PaintDIBTrue()绘制DIB对象GetColorNumber()获取颜色总数GetHeight()获取DIB高度GetWidth()获取DIB宽度

18、GetSize()获取图像数据缓冲区中的字节数GetBitCount()获取颜色位数GetBiBitCount()获取字节数 表61 Dib类的部分功能二 图像点处理详细设计图像点运算是一种既简单又重要的技术,它能让用户改变图像数据占据的灰度范围,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰度值决定相应的输出像素点的灰度值,点运算与局部运算的差别在于:后者每个输出像素的灰度值由对应输入像素的一个领域内几个像素的灰度值决定。所以,点运算不可以改变图像内的空间关系。点运算可以按照预定的方式改变一幅图的灰度直方图。除了灰度级的改变是根据某种特定的灰度变换函数进行之外,点运算可以看

19、作是“从像素到像素”的复制操作。如果输入图像为A(x,y),输出图像为B(x,y),则点运算可表示为: B(x,y) = fA(x,y) (式2)其中函数f(D)被称为灰度变换(Gray Scale Transformation ,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系,一旦灰度变换函数确定,该点运算就完全被确定下来了。点运算有时又称为对比度增强、对比度拉伸或灰度变换,它是图像数字化软件和图像显示软件的重要组成部分。下面将对本设计解决各图像点处理模块运用进行到的理论和编程实现进行详细讲述。1、光线补偿(1)算法思想:光线补偿的想法的提出主要是考虑到肤色等色彩信息经常受到光源

20、颜色、图像采集设备的色彩偏差等因素的影响,而在整体上偏离本质色彩而向某一方向移动,即我们通常所说的色彩偏冷、偏暖、照片偏黄、便蓝等等。这种现象在艺术照片中更为常见。所以Anil K.Jain等提出,为了抵消这种整个图像中存在着的色彩偏差,我们将整个图像中所有像素亮度(是经过了非线形r-校正后的亮度)从高到低进行排列,取前5%的像素,如果这些像素的数目足够多(例如,大于100),我们就将它们的亮度作为“参考白”(Reference White),也即将它们的色彩的R、G、B分量值都调整为255。整幅图像的其他像素点的色彩值也都按这一调整尺度进行交换。 (2) 具体实现光线补偿功能: 明白了光线补

21、偿这功能的算法及思想,就可以编码实现其功能了,实现过程如下:、 编辑菜单IDR_MAINFRAM,先在其中添加一菜单项,将其命名为“预处理”,并在其属性栏中将其设为“弹出”菜单,点击预处理该菜单项将会弹出一个新的子菜单,此时把该子菜单命名为“光线补偿”,并把其ID设为ID_READY_LIGHTINGCONPENSATE,对应文件FaceDetectViewCpp中的函数ReadyLightingconpensate()实现,并在void CFaceDetectView: OnReadyLightingconpensate()中添加如下代码:hDIBTemp = gDib.CopyHandle

22、(hDIB);gDib.LightingCompensate(hDIB);GlobalUnlock(hDIB);Invalidate();光线补偿功能实质上是用上段代码中的LightingCompensate()函数来进行实现。函数LightingCompensate()是类DIB的一个成员函数。其核心代码如下所述: /下面的循环对图像进行光线补偿 for(i =0;iheight;i+) for(int j=0;jPixelOffset(i,j,wBytesPerLine); /得到蓝色分量 *(lpData+lOffset) = colorb; /绿色分量 colorb = *(lpDat

23、a+lOffset+1); colorb *=co; if(colorb 255) colorb = 255; *(lpData+lOffset+1) = colorb; /红色分量 colorb = *(lpData+lOffset+2); colorb *=co; if(colorb 255) colorb = 255; *(lpData+lOffset+2) = colorb; 2、 图像灰度化(1)算法思想 彩色转换成灰度 将彩色图像转化为灰阶图像常采用如下的经验式: gray0.39R0.50G0.11B(式3)其中,gray为灰度值,R、G、B分别为红色、绿色和蓝色分量值。 灰度比

24、例变换灰度比例变换是把原像素的灰度乘以一个缩放因子,并最后截至0,255。 灰度线性变换当图像由于成像时曝光不足或曝光过度,会产生对比度不足的弊病,从而使图像中的细节分辨不清。将图像灰度进行线性扩展,常能显著地改善图像的外观。灰度线性变换的计算式为: g = (式4)f,其他式中,f是原像素的灰度,g为变换后的灰度。该变换把属于a,b的灰度级变换至灰度区间c,d,而没有在a,b区间的原像素灰度将保持不变。这里a,b,c,d,f,g均为0,255之间的整数值。可见,a被映射为c,b被映射为d。 灰度线性截断 灰度线性截断的思想是:如果原像素的灰度小于a,则该像素的灰度等于c;如果原像素的灰度大于

25、b,则该像素的灰度等于d。(2)具体实现灰度化功能在明白了灰度化的原理之后,就可进行编码来实现该功能。 编辑菜单IDR_MAINFRAM,先在其中添加一菜单项,将其命名为”图像灰度化”,并将其ID号设为ID_READY_SCALE, 对应文件FaceDetectViewCpp中的函数ReadyLightingconpensate()实现. 现该模块的核心代码如下:获取蓝色分量 ColorB=*(lpData + lOffset); 获取绿色分量 ColorG=*(lpData + lOffset+1); 获取红色分量 ColorR=*(lpData + lOffset+2); 计算灰度值 gr

26、ay = (ColorG*50+ColorR*39+ColorB*11)/100; 显示灰度图像 *(lpData + lOffset)=gray ; *(lpData + lOffset+1)=gray ; *(lpData + lOffset+2)=gray ;其中lpData是图片数据区,lOffset是图片像素的偏移,gray 是图像的灰度值3、高斯平滑(1) 算法思想 在介绍高斯平滑前,先介绍模板操作。模板操作是数字图像处理中经常用到的一种运算方法,图像的平滑、锐化以及细化、边缘检测都要用到模板操作。例如:有一种常见的平滑算法是将原图中一个像素的灰度值和它周围邻近八个像素的灰度值相加

27、,然后求得的平均值(除以9)作为新图中该像素的灰度值。在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量。处理噪声点的过程称之为平滑,平滑可以降低图像的视觉噪声,同时除去图像中的高频部分后,那些本来不明显的低频成分更容易识别。而噪声点一般是孤立的点,噪声点的像素灰度与它们的近邻像素有显著的区别,即灰度变化总在这附近有突变高频。平滑可用卷积来实现,平滑的频率截止点由卷积核的大小及卷积系数决定。用于平滑滤波的卷积核叫做低通过滤波器,低通过滤波器具有如下的特征:1卷积核的行、列数为奇数,通常为33的矩阵;2

28、卷积系数以中心点为中心对称分布;3所有的卷积系数都为正数;4距离中心较远的卷积系数的值较小或保持不变;5卷积后的结果不改变图像的亮度。经过卷积平滑后给随后的水平投影、二值化提供了较好的图像效果。水平投影的曲线显得比较平滑,二值化后的图像孤立点比较少。以下是几个常用的卷积核:1/9 1/9 1/9 1/10 1/10 1/10 1/16 2/16 1/161/9 1/9 1/9 1/10 1/5 1/10 2/16 4/16 2/161/9 1/9 1/9 1/10 1/10 1/10 1/16 2/16 1/16L P1 LP2 LP3通常的处理是:将中心点周围八个点的像素值乘于各自矩阵相应的

29、系数后相加得到一个值,然后将这个值乘上中心点的系数,中心点的像素值赋为得到的最后值。一般来说,不同的噪声有各自针对性的卷积算法。本文使用的卷积算法是高斯卷积核,亦即上面卷积核的LP3。高斯卷积是通过采样2维高斯函数得到的。高斯平滑算法的优点是平滑后图像的失真少,算法更具备通用性,能去除不同的噪声干扰。需要注意的是:在平滑处理时,图像边界点无法处理,因此循环范围应设定在图像边界内。(2) 具体实现高斯平滑功能知道高斯平滑原理之后,可进行编码将其实现:1 编辑菜单IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名为“高斯平滑”并将其ID设为ID_READY_Template。2 在类

30、CFaceDetectView中添加“高斯平滑”菜单项的事件处理程序,其代码如下: /进行模板操作 Template(tem ,3,3, xishu); Invalidate(TRUE); 其中tem是模板参数,xishu是模板系数;Template()函数是实现高斯平滑的主要函数,其核心代码是: for(m=i-(tem_h-1)/2);m=i+(tem_h-1)/2);m+) for(n=j-(tem_w-1)/2);n=j+(tem_w-1)/2);n+) 注: 将以点(i,j)为中心,与模板大小相同的范围内的象素与模板对用位置的系数进行相乘并线形叠加 sum+=Graymn* tem(m-i+(tem_h-1)/2)*tem_w+n-j+(tem_w-1)/2); 将结果乘上总的模板系数 sum=(int)sum*xishu; 计算绝对值 sum = fabs(sum); 如果小于0,强制赋值为0 if(sum255) sum=255; HeightTemplateij = sum;4、灰度均衡

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1