资源描述
本 科 生 毕 业 论 文 基于MATLAB的人脸初识别XXX院 系: 电子信息工程学系 专 业: 通信工程 班 级: 学 号: 指导教师: 职称(或学位): 讲师 2011年 4 月原创性声明 本人郑重声明:所呈交的论文(设计),是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文(设计)不含任何其他个人或集体已经发表或撰写过的作品成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。学生签名: 年 月 日 指导声明本人指导的 同学的毕业论文(设计)题目大小、难度适当,且符合该同学所学专业的培养目标的要求。本人在指导过程中,通过网上文献搜索及文献比对等方式,对其毕业论文(设计)内容进行了检查,未发现抄袭现象,特此声明。指导教师签名: 年 月 日目 录1 引言21.1 基本介绍与概念21.2 研发历史与发展现状21.3 研究背景与意义22 设计方案与分析32.1 YCbCr空间32.2 灰度图像转换32.3 噪声消除42.4 图像填孔82.5 图像重构82.6 人脸区域确定92.7 边缘检测113 程序与识别结果124 讨论165 结论16致谢17参考文献171基于MATLAB的人脸初识别XXX(电子信息工程学系 指导老师:XXX)摘要:人脸识别是一门新兴的科研项目,起始于上个世纪60年代。经过几十年的发展,现已成为一项最有上升潜力的人体特征识别技术。具有广泛的应用前景,它的工作原理是借由的生物特征来确认生物个体,报告利用MATLAB软件实现人脸信息的检测与识别,在输入的整幅图像中寻找人脸区域,把图像分割成两个部分人脸区域和非人脸区域,从而为后续的应用作准备。报告利用YCbCr空间以及二值图像实现人脸边缘分割,将真彩图像转换为YCbCr图像,根据面部肌肤在YCbCr色度空间的分布范围,设定门限阀值,实现人脸区域与非人脸区域的分割,通过膨胀腐蚀等一系列运算剔除干扰因素,再结合长宽比、目标面积等计算方法在图像中分割出人脸区域,经试验,该方法能够排除面部表情、发型、衣着背景等干扰而确定人脸区域。关键词:matlab程序; YCbCr空间; 灰度图像; 人脸区域; 边缘检测Abstract:Face recognition is a new research project , Begin in the 1960s,After decades of development,Now it becomes the most potential human characteristics identification technology.It has a broad prospect of application.Its working principle is to confirm individual organisms through the biological characteristics.The article uses the MATLAB software to achieve human facial informations detection and recognition,finding the human facial area in the inputed image,then devide the image into two parts,the face region and non-face region,to prepare for the subsequent application.This report uses YCbCr space and binary image to achieve human facial edge division and convert Truecolor pictures into YCbCr pictures.According to the face skin distribution in the YCbCr Chromaticity space,set threshold threshold to realize the segmentation of human face region and non-face region.Eliminate interference factors through dilation and corrosion operations,then Combine with the aspect ratio calculations and the calculation of the area to segment the face region in the image.Through the test,this method can eliminate facial expressions,hair,clothing background interference to fix the face region.Keywords:matlab; YCbCr space; gray image; face region; edge detection 1 引言1.1 基本介绍与概念人脸识别就是构建一种人脸识别系统的技术,它的功能是对人脸进行定位,同时采集人脸图像,作出预处理,以确定人脸位置1。作为生物特征识别技术的一项发展,在计算机领域中,人脸识别是一门新兴的,借由生物特征来确认生物个体的技术。在这里生物特征以及所对应的识别方法分别是:脸部特征人脸识别、人体掌纹、指纹掌纹识别、指纹识别、视网膜、虹膜视网膜识别、虹膜识别、声音频率语音识别、目标个体体形体形识别、形体动作幅度及力度敲击识别、签字签字识别等1。报告中采用的人脸识别是特指对于给定的一副任意真彩图像,借由一定的图像处理及特定算法对真彩图像进行扫描从中检测出报告需要的人脸,如果是则通过对人类范围进行加框在真彩图像中标示人脸位置2。1.2 研发历史与发展现状早在20世纪六十年代,人脸识别的研究就以经开始起步,到了今天,这项研究已经越发的成熟。根据计算机的发展规模可将其分为三个阶段:在1963年至1991年期间,人脸识别只是作为一种针对事物外形,现象进行识别描述的技术来研究,所针对的人脸图象具有较强的约束条件,比如不提供图像背景或图像背景不会对识别产生干扰,再其次用于研究的图片中人脸部位总是处于任意获得的位置,因此在这一时期人脸识别技术还未受到人们的重视2。之后的1991年到1997年期间,借助计算机技术的革新以及各类工程软件的出现,人脸识别技术得到了喷发式的发展。在商业领域上的应用被人们不断的发掘出来,由此诞生了若干具有代表性的人脸识别算法,其中最为著名的便是美国军方的FaceIt系统3。1998年至今,电子商务领域,安全领域等方面对人脸识别技术的创新需求越发迫切。人脸识别研究的重点也逐渐倾向于人脸形体,图像亮度等问题3。与此同时,人脸识别的商业应用进一步提高,进入21世纪,人脸识别技术的研发硕果越发丰盛,活动图象专家组(MPEG)已将人脸检测算法征集进了人脸识别草案小组的范围之内3。清华大学,北京工业大学,中国科学院计算计研究所和自动化研究所等,人脸识别技术已经成为一项世界性的课题受到世人的高度关注,其技术上的创新将会给人们的生活带来方方面面的便利3。1.3 研究背景与意义人脸识别作为一项新兴的科学研究项目,有着广泛的应用前景,而且随着计算机技术的更新发展,它的科学研究价值也越发凸显3。经过几十年的研发探讨,世界各大研究结构的研发人员的不断努力下,人脸识别技术一已取得丰硕的成果,可在一定限制条件下完成人脸的自动识别。这些成果的取得更促进了人们对人脸识别这一课题的深入研究。人脸识别与其他识别方法相比较,起优势在于所具备的仿生物学流程以及不易被目标人物察觉的隐蔽性。人们观察一项事物的流程是通过眼睛扫描事物形体,并录入脑中,将眼前画面与脑海中的记忆相比较,借由比较结果得出识别判断。人脸识别采用的识别方式正是于此相同,这便是仿生物学流程,而这点正是眼角膜识别、虹膜识别、指纹识别等所不具备的。再来,人脸识别这种方法不会引起人的反感,可在目标人物未察觉时识别完成,只需要可见光就可以完成人脸信息的获取,不同于虹膜识别需要借助红外线采集图像,指纹识别需要依靠电子压力传感器活得指纹,获取时间短,识别精度高4。在电子商务飞速发展的今天,人脸识别系统的范畴一不足以涵括人脸识别的应用范围,在数字图像处理、视频领域、基于内容的检索等方面有着重要的应用价值。作为一项具有最广泛应用前景的人体识别技术,人脸识别将得到越来越多的重视4。2 设计方案与分析2.1 YCbCr空间光照强度的不同、人脸肤色的不同、图片背景的不同往往导致每张图片都具有自身的特色,将人脸区域从背景、衣着、发型等非人类区域中分割出来。一般使用的RGB图片不适合于建立人脸皮肤模型,因为在RGB空间中,使用三基色(r,g,b)表示图片的亮度以及颜色。在不同的环境下光照条件的改变,很难将肤色点从非肤色点中分离出来,如果在RGB图像上进行处理,将产生离散的肤色点,图片中间嵌有很多的非肤色点,提高了人脸检测的难度,容易产生不可靠的肤色分割。解决方法是隔离颜色表达式中的亮度信息与色度信息,充分利用色度空间中肤色所表示出来的聚类性。为此需要创造这样一个色彩空间,这个空间能把R、G、B所代表的色度信息与亮度信息分开表示。色彩空间常用的的转换颜色模型主要有:YIQ、YCbCr、HSV等。这里,采用YCrCb色彩空间作为报告的设计空间5。YCbCr色彩空间一般是在数字视频领域内应用于高品质的视频播放。在这种色彩空间中,用单个分量Y来表示亮度信息,用两个色差分量Cb和Cr来存储彩色信息。其中分量Cb表示蓝色分量和一个参考值的差,分量Cr表示红色分量和一个参考值的差5。RGB转换为YCbCr所用的变换公式是:转换函数是:YCBCR=rgb2ycbcr(RGB)。2.2 灰度图像转换灰度图像就是一个数组描述,通常由一个uint8、uint16或双精度类型表示,是使用一个特殊的图像来表示图片中的所有像素5。这个特殊图像就是灰度,一般表示为图像的最黑暗色到图像的最白亮色。灰度图像不同于黑白图像,黑白图像只有0、1两种取值颜色,而灰度图像的实质是一个数据矩阵I,该矩阵中使用了一定范围内的灰度级来代表图片中的数据,每一个元素对应着图像中的一个像素点,灰度级的取值范围0,2555。(0代表黑色,255代表白色)在数字图像中,不同的肤色在YCbCr彩色空间内呈现不同的聚类分布,分布在很小的范围,其色度上的区别远大于在亮度上的区别,同样的肤色在YCbCr彩色空间中,在不同的光照条件下只有亮度值Y会随之改变。不同的肤色可以具有相同的2D模型G(m,V2)。为此笔者借助设定门限值实现肤色的区分。人体肤色在YCbCr色度空间的灰度范围为:程序如下:sum=0;iptsetpref(ImshowBorder, tight)f=imread(333.jpg);Ori_Face=f;copy=f;img=f;f=rgb2ycbcr(f);f_cb=f(:,:,2);f_cr=f(:,:,3);f= (f_cb=100) & (f_cb=138) &(f_cr=170) ;figure(1);imshow(f);2.3 噪声消除在转换后图片出现了噪声,这里采用开闭运算的方法消除噪声。这里涉及到了形态学描述。膨胀是二值图像的形态操作,具体功能是使图像变得粗长。其举例程序与结果如下:i=imread(9991.jpg);imshow(i);%显示原图se=strel(line,8,6);%创建一个线形结构元素i2=imdilate(i)%显示膨胀结果 图1 膨胀举例图 图2 膨胀结果图数学上,膨胀是作为一种集合运算存在的,是所有结构运算原点位置组合成的集合,这里指定A为i,B为i2,则A被B膨胀定义为:其中A与B的某些部位将会产生重合。腐蚀同样二值图像的形态操作,具体作用是将图像变得细小,如同膨胀操作,腐蚀的大小与程度取决于事先所设定的结构元素6。举例程序与结果如下:i=imread(3212.jpg);%载入图片imshow(i);%显示图片se=strel(line,5,3);%生成线形结构元素i2=imerode(i,se);%用线形结构元素来进行腐蚀操作imshow(i2)%显示腐蚀结果图3 腐蚀举例图图4 腐蚀结果图在数学定义上,腐蚀与膨胀相类似,A指代为,B指代为i2,A被B腐蚀记为AB,定义为:A被B腐蚀是所有结构元素的原点位置的集合,其中平移的B与A的背景并不叠加。开启运算就是将膨胀与腐蚀通过各种方式进行整合的运算,其间使用相同的结构元素。在数字图像处理中的作用通常是起到平滑图像轮廓,消除图像边缘毛刺,截断狭窄的山谷6。举例程序与结果如下:i=imread(9991.jpg);imshow(i)%显示原图se=strel(square,3);%定义方形结构元素i2=imopen(i,se);%进行开运算imshow(i2)图5 开运算举例图 图6 开运算结果图开启运算就是对图像进行先腐蚀,后膨胀的操作,运算定义为:闭合运算同样能平滑图像边缘,与开启运算相反,它一般能融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙6。举例程序与结果如下:i=imread(9991.jpg);imshow(i)%显示原图se=strel(square,9);%定义方形结构元素i2=imclose(i,se);%进行闭运算imshow(i2)图7 闭运算举例图图8 闭运算结果图闭运算是对原图像做先膨胀,后腐蚀的操作,闭合运算定义为:2.4 图像填孔图像的填孔处理是将一些不必要的小孔填充掉,使得图像更加简单,易于处理6。其小孔是指较亮像素包围的暗像素区。标记一副图像为m,该图像的边缘部分的值为fm,其余部分的值为0:则图像填孔处理结果为:。调用程序为:g=imfill(f,holes)2.5 图像重构在形态学中,腐蚀通常会除去小的对象,而随后的膨胀往往会还原所保留对象的形状,然而,这种还原的精度取决于形状和结构元素之间的相似性。在这里,采用重构做开运算,用于恢复图片之后的对象形状7。图像重构是数字图像处理的重要组成部分,其工作原理是以选定图像的图像特征对标记图像进行一系列的膨胀运算,通过运算对选定图像中的重要部分起到强调作用。标记图像的峰值作为膨胀运算的起始点,结果重复的膨胀过程,以图像的像素值稳定作为终止8。举例程序与结果如下:i=imread(999.jpg);%载入图片,作为掩模图片imshow(i)fe=imerode(i,ones(5,1);%用线形结构元素为5行1列的全1矩阵进行腐蚀操作fo=imopen(i,ones(5,1);%用线形元素做开运算fobr=imreconstruct(fe,i);%使用线形元素由重构做开运算,fe为标记图像imshow(fobr)图9 重构举例图图10重构结果图使用结构元素B对由重构做开运算在数学上的定义为:对图像的再处理为:se=strel(square,8);f=imerode(f,se);f=imdilate(f,se);figure(6),imshow(f);2.6 人脸区域确定在录入的真彩图片中,人脸的最大长度(指在图片中的距离)为2.00厘米,宽度在1.3厘米左右浮动。如果只是简单的对人脸的长度,宽度进行限定,通过阈值进行排除,所得到的程序是不能适用到图片上的所有部位。对此,可使用长宽比,借由比值来第一步限定人脸区域。在长宽比限定的基础上,可以对剩余的物体进行第二步骤,在录入的RGB图片中,人脸的大小是有一定限制的,在得到的灰度图像上,人脸的灰度维数通过多次的设定修改,最终限定在14000一下,凡大于这个数值的问题均归类到非人脸区域。如果图片中的物体,它的长宽比符合条件,维数符合条件,但是它的边缘轮廓有内陷外凸,拉长变形等奇怪的形状,一样是不属于人脸的范畴。对此,笔者对物体矩形面积与实际面积的比例设定一个阈值,借由这个阈值进行最终的人脸区域确定。人脸区域的确定方法如下:(1)在输入的真彩照片中,人脸的长宽比例应在1.54到2.4之间,凡不在此范围内的均认为是非人脸区域,删除之。(2)在符合上述条件下,若目标区域面积过大,则认定为非人脸区域,删除。经测算,在二值图像中,人脸维数应小于14000.(3)人脸部位的矩形面积设定area_sq=人脸区域长度*宽度,人脸实际面积设定area,当area/area_sq值小于0.55,则认定该部位不是人脸区域。其中:条件1排除了图片中与人脸肤色相近但长宽不符合要求的区域,依据比例大小限定了人脸区域。条件2剔除了比例相同但面积不符合的区域,第二次对图片进行划分,赛选。条件3借助最大面积和实际面积的比值,将一些色调相近但形状不规则的背景,四肢等部位去除。具体程序如下:L,num=bwlabeln(f,4);%设定操作类型4-领域,返回在f图像中标记得到的连通域数目numfor i=1:num;r,c=find(L=i);%返回矩阵X中非零元素的行和列的索引r_temp=max(r)-min(r);%计算长度c_temp=max(c)-min(c);%计算宽度temp=size(r);%计算数组r的每一维大小赋值给temp文件sum=sum+temp(1);area_sq=r_temp*c_temp;%计算矩形面积area=size(find(L=i),1);%目标区面积ratio=area/area_sq;%将结果赋值于ratio if (r_temp/c_temp2.4)|temp(1)14000|ratio=100) & (f_cb=138) &(f_cr=170) ;%皮肤颜色在ycbcr色度空间的分布范围为:100=cb=127,138=cr=170figure(1); imshow(f);se=strel(square,3);%构建一个3*3单位矩阵作为结构元素f=imopen(f,se);%图片开运算f=imclose(f,se);%图片闭运算figure(2),imshow(f);%消除噪声f=imfill(f,holes);%填孔处理figure(3),imshow(f);se1=strel(square,8);f=imerode(f,se1);f=imdilate(f,se1);figure(4),imshow(f);%区域连通L,num=bwlabeln(f,4);设定操作的邻域类型为4-领域for i=1:num; r,c=find(L=i); r_temp=max(r)-min(r); c_temp=max(c)-min(c); temp=size(r); sum=sum+temp(1); area_sq=r_temp*c_temp; area=size(find(L=i),1); ratio=area/area_sq; if (r_temp/c_temp2.4)|temp(1)14000|ratio0.55 %利用脸部宽长比的大概上下限(1.54-2.4)来确定一个人脸范围. %脸部区域14000的去掉,一般为手或其他干扰. %矩形面积area_sq=目标区长度*宽度,目标区面积为area,若area/area_sq0);L(z)=255;figure(5),imshow(L);L_r=L;L_g=L;L_b=L;L_rgb=cat(3,L_r,L_g,L_b);%在原图上加框img1_r=min(L_r+img(:,:,1),255);img1_g=min(L_g+img(:,:,2),255);img1_b=min(L_b+img(:,:,3),255);img1=cat(3,img1_r,img1_g,img1_b);figure(6),imshow(img1);图13 YCbCr空间转换图14 噪声消除图15 图像填孔图16 图像重构图16 人脸区域的确定图17 最终结果图4 讨论人脸识别容易受光照条件、面部表情、背景等影响,为此,笔者在第一步就将RGB空间转换为YCbCr空间,剔除光照因素,转换灰度图像剔除背景因素,之后的填孔重构等一系列动作则把面部表情等影响排除,只留下笔者要的脸型。再之后通过测量、计算一步步的限定长宽比、目标面积的范围限定来剔除干扰区域,从而确定脸部区域。最后利用边缘检测给予识别出来的脸部加框,实验结束。从结果上看,笔者使用的方法是有一定的局限性。首先,图片所拍摄下的人脸必须是正对着摄像机镜头,对于俯视,侧视的拍摄并识别人脸,在目前看来仍然是一个世界性的研究课题。其次,如结果图左起第一位所示,笔者所使用的方法不能有效的将人脸锁骨部分在图片中剔除,因为当真彩图片转换为YCbCr空间时人脸的下颚和脖颈,锁骨部分是默认为不具有层次感的,直接作为一张灰度图片存储到计算机中进行后续处理,这是笔者还需改进的地方。5 结论笔者对基于matlab人脸识别技术从理论和实践上分别给予了浅层次的探讨和一定的研究。在对国内外文献大量阅读的基础上,对基于matlab的人脸初识别做了详细的综述。深入研究了对人脸识别的一系列流程。主要取得以下成果:(1)在Windows7系统下用matlab数学软件实现了人脸图像识别。(2)对图像的预处理上,使用了转换YCbCr空间、灰度空间、填孔重构。(3)采用剔除法将不符合条件的面积剔除掉,效果很好。这里实现的是一种基于肤色分割和匹配的人脸识别,实验中采用的图片取自数码相机,从结果看被拍者的脸型、发型、面部表情、着装背景等都不能对人脸造成影响。致谢:此次论文的完成,首先要感谢笔者的论文指导老师翁亚滨女士,在怀孕在身的情况下,报告的选题,方案设定,关键部位的技术指导,翁老师全程对笔者进行讲解,修正。特别是她的认真负责,严谨,对工作的高标准要求,让笔者从老师的身上学到了很多。再者感谢大学四年期间教导过笔者的老师,一直陪伴在笔者身边的同学,是他们的支持与鼓励帮助笔者完成今天的这份报告,向他们致以万分的感谢。参考文献:1 姚敏数字图像处理M机械工业出版社,2006:22 王爱民,沈兰荪图像分割研究综述J测控技术,2000,19(5):1-53 张德丰详解MATLAB数字图像处理M北京:电子工业出版社,2010,7:249 4 杨杰数字图像处理及MATLAB实现M北京:电子工业出版社,2010,2:149-1505 张洪刚,陈光,郭军编著图像处理与识别M北京:北京邮电大学出版社,2006:102-103 6 韩晓军数字图像处理技术与应用M北京:电子工业出版社,2009,7:387 张化光,刘鑫蕊,孙秋野编著MATLAB/SIMULINK实用教程M北京:人民邮电出版社,2009,3:2358 何东健数字图像处理M西安:西安电子科技大学出版社,2008,5:86 9 刘刚MATLAB数字图像处理M北京:机械工业出版社,2010,5:199-20017
展开阅读全文