数字图像处理技术-基于Matlab的人脸检测_第1页
数字图像处理技术-基于Matlab的人脸检测_第2页
数字图像处理技术-基于Matlab的人脸检测_第3页
数字图像处理技术-基于Matlab的人脸检测_第4页
数字图像处理技术-基于Matlab的人脸检测_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沈阳理工大学数字图像处理课程设计2013-2014第(2)学期理学院实践教学成 绩 评 定 表实践教学项目数字图像处理专 业学生姓名班级学号评语组长签字: 成绩日期 2013-2014第(2)学期理学院实践教学任 务 书学 院专 业学生姓名班级学号实践教学项目数字图像处理实践题目基于Matlab的人脸检测实践教学要求与任务:1 能对选题做理论分析,讨论理论可行性。2能设计一套切实可行的实验方案,能够验证预期达到的效果。4能利用计算机获取数字图像数据。5、能编程实现对数字图像数据进行处理、并能够对数据处理结果进行分析。6、如果数据处理结果不够理想,能够找到问题所在,并提出改进意见。7、能按要求格

2、式撰写课程设计报告。报告要求格式、正确思路清晰、结构完整、实验数据真实、分析结论正确。对课程设计总体方案要进行详细地说明8、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容。9、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。工作计划与进度安排:12周周五14周周一:选题、收集资料14周周一15周周五:撰写开题报告15周周五16周周五:设计、实验、数据分析16周周五17周周四:撰写报告17周周五提交报告。 指导教师:年 月 日专业负责人:年 月 日学院院长:年 月 日摘要人脸识别是一门新兴的科研项目,起始于上个世纪60年代。经过几十年的

3、发展,现已成为一项最有上升潜力的人体特征识别技术。具有广泛的应用前景,它的工作原理是借由的生物特征来确认生物个体,报告利用MATLAB软件实现人脸信息的检测与识别,在输入的整幅图像中寻找人脸区域,把图像分割成两个部分人脸区域和非人脸区域,从而为后续的应用做准备。报告利用YCbCr空间以及二值图像实现人脸边缘分割,将真彩图像转换为YCbCr图像,根据面部肌肤在YCbCr色度空间的分布范围,设定门限阀值,实现人脸区域与非人脸区域的分割,通过膨胀腐蚀等一系列运算剔除干扰因素,再结合长宽比、目标面积等计算方法在图像中分割出人脸区域,经试验,该方法能够排除面部表情、发型、衣着背景等干扰而确定人脸区域。关

4、键词:Matlab程序; YCbCr色度空间; 灰度图像; 人脸检测目录摘要3一、绪论51.1 本文研究的问题51.2 Matlab基本功能介绍6二、人脸识别的设计方案与理论分析72.1 YCbCr色彩空间变换72.2 灰度图像转换72.3 灰度图像噪声消除92.4 灰度图像填孔102.5 灰度图像重构102.6 灰度图像边缘检测112.7 人脸区域确定12三、人脸识别的Matlab实现14四、结论17参考文献18一、绪论早在20世纪六十年代,人脸识别的研究就以经开始起步,到了今天,这项研究已经越发的成熟。根据计算机的发展规模可将其分为三个阶段:在1963年至1991年期间,人脸识别只是作为一

5、种针对事物外形,现象进行识别描述的技术来研究,所针对的人脸图像具有较强的约束条件,比如不提供图像背景或图像背景不会对识别产生干扰,再其次用于研究的图片中人脸部位总是处于任意获得的位置,因此在这一时期人脸识别技术还未受到人们的重视。之后的1991年到1997年期间,借助计算机技术的革新以及各类工程软件的出现,人脸识别技术得到了喷发式的发展。在商业领域上的应用被人们不断的发掘出来,由此诞生了若干具有代表性的人脸识别算法,其中最为著名的便是美国军方的FaceIt系统。1998年至今,电子商务领域,安全领域等方面对人脸识别技术的创新需求越发迫切。人脸识别研究的重点也逐渐倾向于人脸形体,图像亮度等问题。

6、与此同时,人脸识别的商业应用进一步提高,进入21世纪,人脸识别技术的研发硕果越发丰盛,活动图像专家组(MPEG)已将人脸检测算法征集进了人脸识别草案小组的范围之内。清华大学,北京工业大学,中国科学院计算计研究所和自动化研究所等,人脸识别技术已经成为一项世界性的课题受到世人的高度关注,其技术上的创新将会给人们的生活带来方方面面的便利。1.1 本文研究的问题本文介绍了人脸图像识别中所应用MATLAB对图像进行预处理,对图像进行处理,通过实例来应用Matlab图像处理功能,对某一特定的人脸图像处理,进而应用到人脸识别系统。本文在总结分析人脸识别系统中几种常用的图像预处理方法基础上,利用MATLAB实

7、现了一个集多种预处理方法于一体的基于肤色的人脸图像预处理仿真系统。 1.2 Matlab基本功能介绍图像是人类获取信息、表达信息和传递信息的重要手段。利用计算机对图像进行去除噪声、增强、复原、分割、提取特征等的理论、方法和技术称为数字图像处理。数字图像处理技术已经成为信息科学、计算机科学、工程科学、地球科学等诸多方面的学者研究图像的有效工具。数字图像处理主要包括图像变换、图像增强、图像编码、图像复原、图像重建、图像识别以及图像理解等内容。1、图像处理的基本操作读取和显示图像可以通过imread()和imshow()来实现;图像的输出用imwrite()函数就可以很方便的把图像输出到硬盘上;另外

8、还可以用imcrop()、imrisize()、imrotate()等来实现图像的裁剪、缩放和旋转等功能。2、图像类型的转换Matlab支持多种图像类型,但在某些图像操作中,对图像的类型有要求,所以要涉及到对图像类型进行转换。Matlab7.0图像处理工具箱为我们提供了不同图像类型相互转换的大量函数,如mat2gray()函数可以将矩阵转换为灰度图像,rgb2gray()转换RGB图像或颜色映像表为灰度图像。在类型转换的时候,我们还经常遇到数据类型不匹配的情况,针对这种情况,Matlab7.0工具箱中,也给我们提供了各种数据类型之间的转换函数,如double()就是把数据转换为双精度类型的函数

9、。3、边缘检测数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属性。边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。常用的有Sobel算子,Prewitt算子,Roberts算子,Log算子等。Matlab7.0工具箱中提供的edge()函数可以进行边缘检测,在其参数里面,可以根据需要选择合适的算子及其参数。二、人脸识别的设计方案与理论分析2.1 YCbCr色彩空间变换光照强度的不同、人脸肤色的不同、图片背景的不同往往导致每张图片都具有自身的特色,将

10、人脸区域从背景、衣着、发型等非人类区域中分割出来。一般使用的RGB图片不适合于建立人脸皮肤模型,因为在RGB空间中,使用三基色(红绿蓝)表示图片的亮度以及颜色。在不同的环境下光照条件的改变,很难将肤色点从非肤色点中分离出来,如果在RGB图像上进行处理,将产生离散的肤色点,图片中间嵌有很多的非肤色点,提高了人脸检测的难度,容易产生不可靠的肤色分割。解决方法是隔离颜色表达式中的亮度信息与色度信息,充分利用色度空间中肤色所表示出来的聚类性。为此需要创造这样一个色彩空间,这个空间能把R、G、B所代表的色度信息与亮度信息分开表示。色彩空间常用的转换颜色模型主要有:YIQ、YCbCr、HSV等。这里,采用

11、YCbCr色彩空间作为报告的设计空间。YCbCr色彩空间一般是在数字视频领域内应用于高品质的视频播放。在这种色彩空间中,用单个分量Y来表示亮度信息,用两个色差分量Cb和Cr来存储彩色信息。其中分量Cb表示蓝色分量和一个参考值的差,分量Cr表示红色分量和一个参考值的差。RGB转换为YCbCr所用的变换公式是:Matlab的转换函数是:YCBCR=rgb2ycbcr(RGB)。2.2 灰度图像转换灰度图像就是一个数组描述,通常由一个uint8、uint16或双精度类型表示,是使用一个特殊的图像来表示图片中的所有像素。这个特殊图像就是灰度,一般表示为图像的最黑暗色到图像的最白亮色。灰度图像不同于黑白

12、图像,黑白图像只有0、1两种取值颜色,而灰度图像的实质是一个数据矩阵,该矩阵中使用了一定范围内的灰度级来代表图片中的数据,每一个元素对应着图像中的一个像素点,灰度级的取值范围0,255。(0代表黑色,255代表白色)。在数字图像中,不同的肤色在YCbCr彩色空间内呈现不同的聚类分布,分布在很小的范围,其色度上的区别远大于在亮度上的区别,同样的肤色在YCbCr彩色空间中,在不同的光照条件下只有亮度值Y会随之改变。不同的肤色可以具有相同的2D模型G(m,V2)。为此借助设定门限值实现肤色的区分。本文,我们用图2.1为例进行试验: 图2.1 实验原图图 图2.2 经YCbCr二值化后的图像由于人体肤

13、色在YCbCr色度空间的灰度范围为:进行如下处理:Sum=0;iptsetpref (ImshowBorder, tight)f=imread(d:/jiuge.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);imwrite(f,d:/jiuge2.jpg, jpg)运行结果如图2.2。2.3 灰度图像噪声消除在转换后图片出现了噪声,这里采用开闭运算的方法消除噪声。这里涉及到了形态

14、学描述。腐蚀是二值图像的形态操作,具体作用是将图像变得细小,腐蚀的大小与程度取决于事先所设定的结构元素。程序与结果如下:i=imread( d:/jiuge2.jpg);%载入图片imshow(i);%显示图片se=strel(line,5,3);%生成线形结构元素i2=imerode(i,se);%用线形结构元素来进行腐蚀操作imshow(i2)%显示腐蚀结果运行结果如图2.3。图2.3 经腐蚀处理后的图像开启运算就是将膨胀与腐蚀通过各种方式进行整合的运算,其间使用相同的结构元素。在数字图像处理中的作用通常是起到平滑图像轮廓,消除图像边缘毛刺,截断狭窄的山谷。举例程序与结果如下:i=imre

15、ad( d:/jiuge2.jpg);imshow(i)%显示原图se=strel(square,3);%定义方形结构元素i2=imopen(i,se);%进行开运算imshow(i2) 运行结果如图2.4。 图2.4 经开启运算后的图像 图2.5 经闭合运算后的图像闭合运算同样能平滑图像边缘,与开启运算相反,它一般能融合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。程序如下:i=imread( d:/jiuge2.jpg);imshow(i)%显示原图se=strel(square,9);%定义方形结构元素i2=imclose(i,se);%进行闭运算imshow(i2) 运行结果如图2

16、.5。2.4 灰度图像填孔图像的填孔处理是将一些不必要的小孔填充掉,使得图像更加简单,易于处理。其小孔是指较亮像素包围的暗像素区。标记一副图像为m,该图像的边缘部分的值为fm,其余部分的值为0:调用程序为:g=imfill(f,holes)2.5 灰度图像重构在形态学中,腐蚀通常会除去小的对象,而随后的膨胀往往会还原所保留对象的形状,然而,这种还原的精度取决于形状和结构元素之间的相似性。在这里,采用重构做开运算,用于恢复图片之后的对象形状。图像重构是数字图像处理的重要组成部分,其工作原理是以选定图像的图像特征对标记图像进行一系列的膨胀运算,通过运算对选定图像中的重要部分起到强调作用。标记图像的

17、峰值作为膨胀运算的起始点,结果重复的膨胀过程,以图像的像素值稳定作为终止。程序与结果如下:i=imread( d:/jiuge2.jpg);%载入图片,作为掩模图片imshow(i)fe=imerode(i,ones(5,1);%用线形结构元素进行腐蚀操作fo=imopen(i,ones(5,1);%用线形元素做开运算fobr=imreconstruct(fe,i);%使用线形元素由重构做开运算imshow(fobr)se=strel(square,8);f=imerode(f,se);f=imdilate(f,se);imshow(f); 运行结果如图2.6 图2.6 图像重构 图2.7 对

18、二值化后图像的边缘检测2.6 灰度图像边缘检测对于一副图像,人们所需要提取图片与背景的分界线就是边缘。不断变化的灰度值产了边缘,边缘存在两个不相同的灰度区域之间。边缘检测是一种提取边缘点集的算法,使用Matlab自带的边缘增强算子,将图像的边缘部分加以突出,通过定义图像边缘以及设定阀值最终提取阀值。使用函数bwperim提取包含在图像f中的对象的边界,其语法格式为:bw=bwperim(A,conn)其中A为输入的二值图像;conn为二位图像的领域类别,取值4或8(决定于希望的是4连接还是8连接,一般默认为8)。程序如下:i=imread(d:/jiuge2.jpg);%装入图片, bw=im

19、2bw(i);%变换为二值图像f=bwperim(bw);%提取周长imshow(f)%显示结果运行的结果如图2.7。2.7 人脸区域确定在录入的真彩图片中,人脸的最大长度(指在图片中的距离)为2.00厘米,宽度在1.3厘米左右浮动。如果只是简单的对人脸的长度,宽度进行限定,通过阈值进行排除,所得到的程序是不能适用到图片上的所有部位。对此,可使用长宽比,借由比值来第一步限定人脸区域。在长宽比限定的基础上,可以对剩余的物体进行第二步骤,在录入的RGB图片中,人脸的大小是有一定限制的,在得到的灰度图像上,人脸的灰度维数通过多次的设定修改,最终限定在1400一下,凡大于这个数值的问题均归类到非人脸区

20、域。如果图片中的物体,它的长宽比符合条件,维数符合条件,但是它的边缘轮廓有内陷外凸,拉长变形等奇怪的形状,一样是不属于人脸的范畴。对此,笔者对物体矩形面积与实际面积的比例设定一个阈值,借由这个阈值进行最终的人脸区域确定。人脸区域的确定方法如下:(1)在输入的真彩照片中,人脸的长宽比例应在0.75到1.75之间,凡不在此范围内的均认为是非人脸区域,删除之。(2)在符合上述条件下,若目标区域面积过大,则认定为非人脸区域,删除。经测算,在二值图像中,人脸维数应小于1400.(3)人脸部位的矩形面积设定area_sq=人脸区域长度*宽度,人脸实际面积设定area,当area/area_sq值小于0.6

21、5,则认定该部位不是人脸区域。条件1排除了图片中与人脸肤色相近但长宽不符合要求的区域。条件2剔除了比例相同但面积不符合的区域,第二次对图片进行划分,赛选。条件3借助最大和实际面积的比值,将色调相近的四肢等部位去除。具体程序如下:L,num=bwlabeln(f,4);for 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_tem

22、p;%计算矩形面积area=size(find(L=i),1);%目标区面积ratio=area/area_sq;%将结果赋值于ratioif (r_temp/c_temp1.75)|temp(1)1400|ratio=100) & (f_cb=138) &(f_cr=170) ;figure(1);imshow(f);se=strel(square,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

23、,se1);f=imdilate(f,se1);figure(4),imshow(f);L,num=bwlabeln(f,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_temp1.4)|temp(1)1400|ratio0);L(z)=255;figure(5),imsho

24、w(L);BW=im2bw(L);M = bwlabel(BW,8);BB = regionprops(M, BoundingBox);BB1=struct2cell(BB);BB2=cell2mat(BB1);s1 s2=size(BB2);mx=0;for k=3:4:s2-1 p=BB2(1,k)*BB2(1,k+1); if pmx & (BB2(1,k)/BB2(1,k+1)1.8 mx=p; j=k; endendfigure(6),imshow(L);rectangle(Position,BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1),Edge

25、Color,g )figure(7),imshow(img);hold on;rectangle(Position,BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1),EdgeColor,g )这些程序的每次处理都是在上一个处理步骤的基础上,连成一个完整的程序,检测出头像后就会显示出头像的边缘,然后通过计算,在人脸的周围绘制出一个矩形框,并显示在原图上。以下是经过仿真得到的结果:figure(7)为人脸识别结果,可见,该方案的识别效果良好,可以识别出人脸的位置。 figure(1) figure(2) figure(3) figure(4) figure(5)

26、figure(6)figure(7)(人脸识别结果)四、结论人脸识别容易受光照条件、面部表情、背景等影响,为此,在第一步就将RGB空间转换为YCbCr空间,剔除光照因素,转换灰度图像剔除背景因素,之后的填孔重构等一系列动作则把面部表情等影响排除,只留下符合要求的脸型。再之后通过测量、计算一步步的限定长宽比、目标面积的范围限定来剔除干扰区域,从而确定脸部区域。最后利用边缘检测给予识别出来的脸部加框,实验结束。从结果上看,本文使用的方法是有一定的局限性。首先,图片所拍摄下的人脸必须是正对着摄像机镜头,对于俯视,侧视的拍摄并识别人脸,在目前看来仍然是一个世界性的研究课题。其次,如结果图左起第一位所示

27、,笔者所使用的方法不能有效的将人脸锁骨部分在图片中剔除,因为当真彩图片转换为YCbCr空间时人脸的下颚和脖颈,锁骨部分是默认为不具有层次感的,直接作为一张灰度图片存储到计算机中进行后续处理,这是还需改进的地方,所以最好用于识别穿高领的人脸,就像本文所选的图片。对基于Matlab人脸识别技术从理论和实践上分别给予了浅层次的探讨和一定的研究。在对国内外文献大量阅读的基础上,对基于Matlab的人脸初识别做了详细的综述。深入研究了对人脸识别的一系列流程。得到以下结果:(1)在Windows8.1系统下用Matlab数学软件实现了人脸图像识别。(2)对图像的预处理上,使用了转换YCbCr空间、灰度空间、填孔重构。(3)采用剔除法将不符合条件的面积剔除掉,效果很好。这里实现的是一种基于肤色分割和匹配的人脸识

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论