人脸识别系统毕业论文.docx
- 文档编号:1237768
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:28
- 大小:1.40MB
人脸识别系统毕业论文.docx
《人脸识别系统毕业论文.docx》由会员分享,可在线阅读,更多相关《人脸识别系统毕业论文.docx(28页珍藏版)》请在冰点文库上搜索。
人脸识别系统毕业论文
人脸识别系统毕业论文
第一节课题背景
一课题的来源
随着安全入口控制和金融贸易方面应用需要的快速增长,生物统计识别技术得到了新的重视。
目前,微电子和视觉系统方面取得的新进展,使该领域中高性能自动识别技术的实现代价降低到了可以接受的程度。
而人脸识别是所有的生物识别方法中应用最广泛的技术之一,人脸识别技术是一项近年来兴起的,但不大为人所知的新技术。
人们更多的是在电影中看到这种技术的神奇应用:
警察将偷拍到的嫌疑犯的脸部照片,输入到电脑中,与警方数据库中的资料进行比对,并找出该嫌犯的详细资料和犯罪记录。
这并非虚构的情节。
在国外,人脸识别技术早已被大量使用在国家重要部门以及军警等安防部门。
在国,对于人脸识别技术的研究始于上世纪90年代,目前主要应用在公安、金融、网络安全、物业管理以及考勤等领域。
二人脸识别技术的研究意义
1、富有挑战性的课题
2、面部关键特征定位及人脸2D形状检测技术
3、面部感知系统的重要容
基于视觉通道信息的面部感知系统,包括人脸检测和跟踪、面部特征定位、面部识别、人脸归类(年龄、种族、性别等的判别)、表情识别、唇读等分系统,如图1-1所式,可以看出,继人脸检测和跟追之后,面部特征定位通常是面部感知的一个必备环节,是后续工作的基础,具有重要的意义。
尽管人脸识别不能说是其他面部感知模块的必备功能,但是,可以肯定的是,利用已知的身份信息,结合特定人的先验知识,可以提高表情分析、唇读和语音识别、手势识别乃至手写体识别的可靠性。
而计算机对使用者身份确认的最直接的应用就是基于特定使用者的环境设置:
如使用者的个性化工作环境,信息的共享和隐私保护等等。
图1-1面部感知系统结构图
第二章系统的需求分析与方案选择
人脸识别系统现在应用于许多领域中,但是人脸识别技术也是一项近年来兴起的,且不大为人所知的新技术。
在我国以及其他国家都有大量的学者正在研究之中,不断的更新人脸识别技术,以便系统的识别准确率达到新的高度。
第一节可行性分析
在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。
一技术可行性
图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。
在确定脸部区域上,通常使用的方法有肤色提取。
肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。
图像的亮度变化,由于图像的亮度在不同环境的当中,必然受到不同光线的影响,图像就变得太暗或太亮,我们就要对它的亮度进行调整,主要采取的措施是对图像进行光线补偿。
高斯平滑:
在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。
灰度变换:
进行灰度处理,我们要保证图像信息尽可能少的丢失。
同样在进行灰度变换前,我们也要对图像的信息进行统计,找出一个比较合理的灰度值,才能进行灰度变换。
灰度均衡:
灰度变换后,就要进行灰度均衡,可以根据灰度分布来进行灰度均衡。
对比度增强:
将所要处理的区域和周围图像区域进一步拉开他们的对比度,使它们更加明显,主要通过像素的聚集来实现。
二操作可行性
该人脸识别软件需要如下的运行环境:
CPU:
500M及以上;存:
64M及以上。
安装有Windows98、WindowsMe、Windows2000、WindowsNT等操作系统中的其中一种。
另还装有摄像头可进行随机拍照和识别。
因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。
第二节需求分析
一应用程序的功能需求分析
该软件最主要的功能就是要能识别出人脸,首先该系统需要对通过摄像头拍照而获取到的原始的人脸图片进行一系列处理才可进行下一步的工作,该处理过程也称图像预处理。
预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位,只有预处理模块做的好,才可能很好的完成后面的人脸定位和特征提取这两大关键模块。
因此本设计中所要完成的主要功能如下所述:
图像获取功能:
该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。
图像预处理功能:
该模块主要包括图像光线补偿、图像变成灰色、高斯平滑、均衡直方图、实现图像对比度增强、二值化变换等。
人脸定位功能:
该模块主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来,以便进行特征提取。
特征提取功能:
该模块是在定位后的人脸图片中将眼睛、鼻子、嘴巴的特征值提取出来。
识别功能:
该模块是将从图片中提取的特征值和后台数据库中的值进行比较来完成识别功能。
第三章系统的概要设计
本章主要介绍系统的结构设计的流程以及系统各模块的功能及相关原理。
(一)应用程序的总体结构设计流程图如图3-1所示:
图3-1总体结构设计流程图
(二)图像预处理的层次图如图3-2所示:
图3-2预处理的层次图
第一节各模块功能概述
以上是该系统的总体结构设计图以及图像预处理模块的层次图。
下面介绍系统中的各模块的功能及算法:
图像获取模块
该模块主要是从摄像头拍照后进行获取图片,也可以从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。
人脸区域获取
该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。
这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。
图像预处理模块
图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。
该模块中的子模块有如下5个,下面对它们进行概述:
·光线补偿[3]
因为系统得到的图片可能会存在光线不平衡的情况,这会影响我们对特征的提取,同时系统中要用到YcrCB色彩空间,所以有必要对图像进行光线补偿。
尽可能将它的特征在图像中表现出来。
YcrCB是一种色彩空间,它用于视频系统中,在该色彩空间中,Y分量表示像素的亮度,Cr表示红色分量,Cb表示蓝色分量,通常把Cr和Cb称为色度。
YcrCB色彩空间是以演播室质量标准为目标的CC601编码方案中采用的彩色表示模型。
·灰度变化[4]
图像灰度化的过程就是把彩色图像转换为黑白色图像的过程,它也是为了将图像的信息更加具体、简单的表现出来,但是,这样做也将会丢失图像信息。
因此,尽可能在转化的过程中用简单的方式表现图像复杂的信息。
·高斯平滑处理[5]
高斯平滑将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。
从而影响图像的质量。
处理噪声的过程称为平滑。
平滑可以降低图像的视觉噪声,同时出去图像中的高频部分后,那些本来不明显的低频成分更容易识别。
平滑可以通过卷积来实现。
经过卷积平滑后的水平投影后,二值化提供了较好的图像效果。
·对比度增强[6]
对比度增强,就是对图像的进一步处理,将对比度再一次拉开。
它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。
通过改变选用的增强函数的解析表达式就可以得到不同的处理效果。
·二值化[7]
二值化的目的是将采集获得的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。
二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。
这便有利于我们对特征的提取。
该设计中采用组方差和组外方差来实现二值化。
·直方图均衡[8]
直方图均衡化的目的是使一输入图像转换为在每一灰度级上都有相同的象素点数,它的处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度围的均匀分布,它的研究思路是:
通过直方图变换式来进行直方图的均衡处理,直方图变换式是
但是直方图均衡化存在着两个缺点:
1)变换后图像的灰度级减少,某些细节消失;
2)某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。
人脸定位模块
人脸定位是将典型的脸部特征(如眼睛,鼻尖,嘴唇等等)标记出来,在本系统中,定位的特征是眼睛,鼻尖和嘴巴三个。
由于眼睛具有对称性,因此可以很快就能标记出来,而鼻子是在眼睛下面,且嘴巴在鼻子下面,所以只要眼睛标记好,鼻子和嘴巴也能相应的标记出来。
特征提取模块
特征提取按以下4个步骤进行:
(1)、提取两只眼睛的距离
(2)、眼睛的倾角度
(3)、眼睛、嘴巴的重心
(4)、用一个矩形标出每一个特征
在特征提取完之后将会得到相应的特征值以便存入后台数据库。
识别模块
该模块通过与库存中的特征向量进行比较,找出与特征最相近的参数,再对该参数进一步分析。
如果分析在我们所确认的围,我们就认为该人就是我们所要找的。
然后从库存中提取出该人相关的信息,并显示出来。
如果库存中没有,则给出提示是否对存库作为样本。
第四章系统的详细设计
本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。
第一节系统的运行流程图
图6-1系统的运行流程图
第二节图像处理详细设计
一位图详细设计
1设备无关位图(DIB)
VC++没有提供使用十分方便的DIB绘制方法,只好自己去创建一个实用的DIB类了。
本系统中建立了一个专门的类DIB来处理设备无关位图,表4-1列出了对位图的操作函数。
函数
功能
ClearMemory()
释放存
CopyHandle()
拷贝存块
LoadDIB()
加载位图信息
ReadDIBFile()
读取位图文件信息
LightingCompensate()
进行光线补偿
PixelOffset()
修正像素值
PaintDIBTrue()
绘制DIB对象
GetColorNumber()
获取颜色总数
GetHeight()
获取DIB高度
GetWidth()
获取DIB宽度
GetSize()
获取图像数据缓冲区中的字节数
GetBitCount()
获取颜色位数
GetBiBitCount()
获取字节数
表6-1Dib类的部分功能
二图像点处理详细设计
图像点运算是一种既简单又重要的技术,它能让用户改变图像数据占据的灰度围,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰度值决定相应的输出像素点的灰度值,点运算与局部运算的差别在于:
后者每个输出像素的灰度值由对应输入像素的一个领域几个像素的灰度值决定。
所以,点运算不可以改变图像的空间关系。
点运算可以按照预定的方式改变一幅图的灰度直方图。
除了灰度级的改变是根据某种特定的灰度变换函数进行之外,点运算可以看作是“从像素到像素”的复制操作。
如果输入图像为A(x,y),输出图像为B(x,y),则点运算可表示为:
B(x,y)=f[A(x,y)](式2)
其中函数f(D)被称为灰度变换(GrayScaleTransformation,GST)函数,它描述了输入灰度值和输出灰度值之间的转换关系,一旦灰度变换函数确定,该点运算就完全被确定下来了。
点运算有时又称为对比度增强、对比度拉伸或灰度变换,它是图像数字化软件和图像显示软件的重要组成部分。
下面将对本设计解决各图像点处理模块运用进行到的理论和编程实现进行详细讲述。
1、光线补偿
(1)算法思想:
光线补偿的想法的提出主要是考虑到肤色等色彩信息经常受到光源颜色、图像采集设备的色彩偏差等因素的影响,而在整体上偏离本质色彩而向某一方向移动,即我们通常所说的色彩偏冷、偏暖、照片偏黄、便蓝等等。
这种现象在艺术照片中更为常见。
所以AnilK.Jain等提出,为了抵消这种整个图像中存在着的色彩偏差,我们将整个图像中所有像素亮度(是经过了非线形r-校正后的亮度)从高到低进行排列,取前5%的像素,如果这些像素的数目足够多(例如,大于100),我们就将它们的亮度作为“参考白”(ReferenceWhite),也即将它们的色彩的R、G、B分量值都调整为255。
整幅图像的其他像素点的色彩值也都按这一调整尺度进行交换。
(2)具体实现光线补偿功能:
明白了光线补偿这功能的算法及思想,就可以编码实现其功能了,实现过程如下:
①、编辑菜单IDR_MAINFRAM,先在其中添加一菜单项,将其命名为“预处理”,并在其属性栏中将其设为“弹出”菜单,点击预处理该菜单项将会弹出一个新的子菜单,此时把该子菜单命名为“光线补偿”,并把其ID设为ID_READY_LIGHTINGCONPENSATE,对应文件FaceDetectView.Cpp中的函数ReadyLightingconpensate()实现,并在voidCFaceDetectView:
:
OnReadyLightingconpensate()中添加如下代码:
hDIBTemp=gDib.CopyHandle(hDIB);
gDib.LightingCompensate(hDIB);
GlobalUnlock(hDIB);
Invalidate();
光线补偿功能实质上是用上段代码中的LightingCompensate()函数来进行实现。
函数LightingCompensate()是类DIB的一个成员函数。
其核心代码如下所述:
//下面的循环对图像进行光线补偿
for(i=0;i for(intj=0;j { //获取像素偏移 lOffset=this->PixelOffset(i,j,wBytesPerLine); //得到蓝色分量 *(lpData+lOffset)=colorb; //绿色分量 colorb=*(lpData+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; } ②光线补偿的效果图如下所示: 图4-1原图 图4-2光线补偿效果图 2、图像灰度化 (1)算法思想 ①彩色转换成灰度 将彩色图像转化为灰阶图像常采用如下的经验式: gray=0.39×R+0.50×G+0.11×B(式3) 其中,gray为灰度值,R、G、B分别为红色、绿色和蓝色分量值。 ②灰度比例变换 灰度比例变换是把原像素的灰度乘以一个缩放因子,并最后截至[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;如果原像素的灰度大于b,则该像素的灰度等于d。 (2)具体实现灰度化功能 在明白了灰度化的原理之后,就可进行编码来实现该功能。 ①编辑菜单IDR_MAINFRAM,先在其中添加一菜单项,将其命名为”图像灰度化”,并将其ID号设为ID_READY_SCALE,对应文件FaceDetectView.Cpp中的函数ReadyLightingconpensate()实现. ②现该模块的核心代码如下: 获取蓝色分量 ColorB=*(lpData+lOffset); 获取绿色分量 ColorG=*(lpData+lOffset+1); 获取红色分量 ColorR=*(lpData+lOffset+2); 计算灰度值 gray=(ColorG*50+ColorR*39+ColorB*11)/100; 显示灰度图像 *(lpData+lOffset)=gray; *(lpData+lOffset+1)=gray; *(lpData+lOffset+2)=gray; 其中lpData是图片数据区,lOffset是图片像素的偏移,gray是图像的灰度值 ③图像灰度化效果图: 图4-3图像灰度化效果图 3、高斯平滑 (1)算法思想 在介绍高斯平滑前,先介绍模板操作。 模板操作是数字图像处理中经常用到的一种运算方法,图像的平滑、锐化以及细化、边缘检测都要用到模板操作。 例如: 有一种常见的平滑算法是将原图中一个像素的灰度值和它周围邻近八个像素的灰度值相加,然后求得的平均值(除以9)作为新图中该像素的灰度值,用如下方法来表示该操作: 111 1/9 11·1 111 上式类似于矩阵,我们通常称之为模板。 中间的黑点表示该元素中心元素,即该个元素是要进行处理的元素。 如果模板是: 1·11 1/9111 111 则该操作应该描述为: 将原图中一个像素的灰度值和它右下邻近的8个像素的灰度值相加,然后将求得的平均值9(除以9)作为新图中该像素的灰度值。 如果模板为2., 1 则表示将自身灰度值的2倍加下边的元素灰度值作为新值,而2则表示将自身 1. 灰度值加上边元素灰度值的2倍作为新灰度值。 通常模板不允许移出边界,所以处理后的图像会比原图小,例如: 当模板是1.0原图灰度值矩阵是11111 0222222 33333 44444 时,经过模板操作后的图像为5555- 8888- 11111111- ----- “-”表示边界上无法进行模板操作的点,一般的做法是复制原图的灰度值,不再进行任何其他的处理。 模板操作实现了一种领域运算,即某个像素点的结果不仅和本像素灰度有关,而且和其领域点的值有关。 下面对平滑的用途和解决方法进行详细介绍。 在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量。 处理噪声点的过程称之为平滑,平滑可以降低图像的视觉噪声,同时除去图像中的高频部分后,那些本来不明显的低频成分更容易识别。 而噪声点一般是孤 立的点,噪声点的像素灰度与它们的近邻像素有显著的区别,即灰度变化总在这附近有突变高频。 平滑可用卷积来实现,平滑的频率截止点由卷积核的大小及卷积系数决定。 用于平滑滤波的卷积核叫做低通过滤波器,低通过滤波器具有如下的特征: 1卷积核的行、列数为奇数,通常为3×3的矩阵;2卷积系数以中心点为中心对称分布;3所有的卷积系数都为正数;4距离中心较远的卷积系数的值较小或保持不变;5卷积后的结果不改变图像的亮度。 经过卷积平滑后给随后的水平投影、二值化提供了较好的图像效果。 水平投影的曲线显得比较平滑,二值化后的图像孤立点比较少。 以下是几个常用的卷积核: 1/91/91/91/101/101/101/162/161/16 1/91/91/91/101/51/102/164/162/16 1/91/91/91/101/101/101/162/161/16 LP1LP2LP3 通常的处理是: 将中心点周围八个点的像素值乘于各自矩阵相应的系数后相加得到一个值,然后将这个值乘上中心点的系数,中心点的像素值赋为得到的最后值。 一般来说,不同的噪声有各自针对性的卷积算法。 本文使用的卷积算法是高斯卷积核,亦即上面卷积核的LP3。 高斯卷积是通过采样2维高斯函数得到的。 高斯平滑算法的优点是平滑后图像的失真少,算法更具备通用性,能去除不同的噪声干扰。 需要注意的是: 在平滑处理时,图像边界点无法处理,因此循环围应设定在图像边界。 (2)具体实现高斯平滑功能 知道高斯平滑原理之后,可进行编码将其实现: 1编辑菜单IDR_MAINFRAM,在菜单“预处理”中添加一子菜单项,命名为“高斯平滑”并将其ID设为ID_READY_Template。 2在类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+=Gray[m][n]*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(sum<0) sum=0; 如果大于255,强制赋值为255 if(sum>255) sum=255; HeightTemplate[i][j]=sum; 3高斯平滑效果图: 见下图4-4 图4-4高斯平滑效果图 4、灰度均衡 (1)算法思想 灰度均衡也称直方图均衡,目的是通过点运算使输入转换为在每一灰度级上都有相同的像素点数的输出图像(即输出的直方图是平的)。 这对于在进行图像比较或分割之前将图像转化为一级的格式是十分有效的。 按照图像的概率密度函数(PDF,归一化带单位面积的直方图)的定义: P(x)= *H(x)(式5) 其中H(x)为直方图,A0为图像的面积,设转换前图像的概率密度函数为 Pr(r),转换后图像的概率密度函数为Ps(S),转换函数为s=f(r),由概率论知识,我们可以得到: Ps(S)=Pr(r)* (式6) 这样,如果想使转换后图像的概率密度函数为1(即直方图是平的)则必须满足: Pr(r)= (式4-5) 等式两边积分,得: S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 识别 系统 毕业论文