[毕业论文]基于matlab的人脸识别系统设计与仿真(含matlab源程序)
基于MATLAB的人脸识别系统设计【毕业作品】
BI YE SHE JI(20 届)基于MATLAB的人脸识别系统设计所在学院专业班级自动化学生姓名学号指导教师职称完成日期年月I摘要MATLAB以强大的科学计算与可视化功能、简单易用、开放式可扩展环境成为当今最优秀的科技应用软件之一,针对不同学科领域都有不同的工具箱支持,使得它在许多科学领域中成为计算机辅助设计和分析、算法研究和应用开发大的基本工具平台。
主成分分析(Principal Component Analysis ,PCA)是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。
人脸的全局表达方式是一种十分有效的人脸识别方法。
它是图像压缩中的一种最优正交变换,在数据空间找一组向量以尽可能解释数据的方差,实现数据的降维,使数据更易处理。
BP神经网络是一种单向传播的多层前向网络,是一种有导师监督学习算法。
它能够实现一种特殊的非线性映射,将输入空间变换到由输出所张成的空间,使得在输出空间的分类问题变得简单易行。
本论文首先对PCA主成分分析方法进行了阐述,然后探讨了BP神经网络的集成识别方法,最后实现了基于MATLAB的人脸识别系统。
关键词:MATLAB,人脸识别,PCA主成分分析,BP神经网络IIAbstractMATLAB with a strong scientific computing and visualization capabilities, easy to use, open and scalable environment to become one of the best scientific and technological applications, has a different toolbox support for different disciplines, making it in many fields of science in computer-aided design and analysis, algorithm research and application development tool platform.The principal component analysis (Principal Component Analysis, the PCA) is the method of statistical analysis of the principal contradiction of a grasp of things, from diverse things, it can parse out the main factors to reveal the nature of things, to simplify complex issues. The global expression of the face is a very effective method of face recognition. It is the image compression in an optimal orthogonal transform , to the extent possible, explain the variance of the data in the data space to find a set of vectors, the dimensionality reduction of the data, make data easier to handle.BP neural network is a one-way transmission of multi-layer forward network, is a mentor supervised learning algorithm. It can achieve a special kind of nonlinear mapping the input space is transformed by the output into the space, makes the classification problem in the output space becomes simple.This paper first described the PCA principal component analysis method, then discusses the integration of BP neural network identification method, the final realization of the face recognition system based on MATLAB.Keywords:MATLAB, face recognition, PCA principal component analysis, BP neural networkIII目录摘要 (II)Abstract (III)目录 (III)第一章绪论 (1)1.1研究背景 (1)1.2国内外研究现状 (3)1.3 论文的主要任务 (4)第二章基于PCA主成分分析的人脸图像特征提取 (6)2.1经典主成分分析方法 (6)2.1.1K-L变换 (6)2.1.2PCA方法 (8)2.2特征脸法 (10)2.3本章小结 (10)第三章基于BP神经网络的人脸特征分类与识别 (12)3.1BP神经网络的算法及实现方法 (12)3.1.1基本BP神经网络的学习算法 (12)3.1.2神经网络综合优化学习训练算法 (14)3.2 BP神经网络的参数 (17)3.2.1隐含层数目的确定 (17)3.2.2选取隐含层内节点数目的方法 (18)3.2.3激活函数的选取 (19)3.3基于动态权值的BP神经网络的集成 (19)3.4集成BP神经网络的训练与识别过程 (20)3.5 本章小结 (21)第四章图像处理的MATLAB实现 (22)4.1与人脸识别相关问题的概述 (22)4.2 人脸识别的实现方法 (22)IV4.2.1 人脸图像的获取 (22)4.2.2 人脸图像预处理 (22)4.2.3 人脸表征 (24)4.2.4关于人脸检测的问题 (25)4.2.5 人脸判定 (26)4.3 本章小结 (27)第五章结论 (28)参考文献 (29)致谢 (31)附录 (32)附录一 (32)附录二 (33)附录三 (34)附录四 (37)V第一章绪论1.1研究背景人脸识别技术是一种基于生理特征的识别技术,通过计算机提取人脸特征,并根据这些特征进行身份识别和验证的一种技术。
基于MATLAB的人脸识别系统研究与实现毕业论文
基于MATLAB的⼈脸识别系统研究与实现毕业论⽂本科⽣毕业论⽂(设计) 题⽬:基于MATLAB的⼈脸识别系统研究与实现毕业设计(论⽂)原创性声明和使⽤授权说明原创性声明本⼈郑重承诺:所呈交的毕业设计(论⽂),是我个⼈在指导教师的指导下进⾏的研究⼯作及取得的成果。
尽我所知,除⽂中特别加以标注和致谢的地⽅外,不包含其他⼈或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历⽽使⽤过的材料。
对本研究提供过帮助和做出过贡献的个⼈或集体,均已在⽂中作了明确的说明并表⽰了谢意。
作者签名:⽇期:指导教师签名:⽇期:使⽤授权说明本⼈完全了解⼤学关于收集、保存、使⽤毕业设计(论⽂)的规定,即:按照学校要求提交毕业设计(论⽂)的印刷本和电⼦版本;学校有权保存毕业设计(论⽂)的印刷本和电⼦版,并提供⽬录检索与阅览服务;学校可以采⽤影印、缩印、数字化或其它复制⼿段保存论⽂;在不以赢利为⽬的前提下,学校可以公布论⽂的部分或全部内容。
作者签名:⽇期:学位论⽂原创性声明本⼈郑重声明:所呈交的论⽂是本⼈在导师的指导下独⽴进⾏研究所取得的研究成果。
除了⽂中特别加以标注引⽤的内容外,本论⽂不包含任何其他个⼈或集体已经发表或撰写的成果作品。
对本⽂的研究做出重要贡献的个⼈和集体,均已在⽂中以明确⽅式标明。
本⼈完全意识到本声明的法律后果由本⼈承担。
作者签名:⽇期:年⽉⽇学位论⽂版权使⽤授权书本学位论⽂作者完全了解学校有关保留、使⽤学位论⽂的规定,同意学校保留并向国家有关部门或机构送交论⽂的复印件和电⼦版,允许论⽂被查阅和借阅。
本⼈授权⼤学可以将本学位论⽂的全部或部分内容编⼊有关数据库进⾏检索,可以采⽤影印、缩印或扫描等复制⼿段保存和汇编本学位论⽂。
涉密论⽂按学校规定处理。
作者签名:⽇期:年⽉⽇导师签名:⽇期:年⽉⽇注意事项1.设计(论⽂)的内容包括:1)封⾯(按教务处制定的标准封⾯格式制作)2)原创性声明3)中⽂摘要(300字左右)、关键词4)外⽂摘要、关键词5)⽬次页(附件不统⼀编⼊)6)论⽂主体部分:引⾔(或绪论)、正⽂、结论7)参考⽂献8)致谢9)附录(对论⽂⽀持必要时)2.论⽂字数要求:理⼯类设计(论⽂)正⽂字数不少于1万字(不包括图纸、程序清单等),⽂科类论⽂正⽂字数不少于1.2万字。
基于matlab的人脸识别系统设计论文
毕业设计 [论文] 题目:基于MATLAB的人脸识别系统设计摘要人脸识别是模式识别和图像处理等学科的一个研究热点,它广泛应用在身份验证、刑侦破案、视频监视、机器人智能化和医学等领域,具有广阔的应用价值和商用价值。
人脸特征作为一种生物特征,与其他生物特征相比,具有有好、直接、方便等特点,因此使用人脸特征进行身份识别更易于被用户所接受。
人脸识别技术在过去的几十年得到了很大的发展,但由于人脸的非刚性、表情多变等因素,使得人脸识别技术在实际应用中面临着巨大的困难。
本文针对近年来国外相关学术论文及研究报告进行学习和分析的基础上,利用图像处理的matlab实现人脸识别方法,这种实现简单且识别准确率高,但其缺点是计算量大,当要识别较多人员时,该方法难以胜任。
利用MATLAB实现了一个集多种预处理方法于一体的通用的人脸图像预处理仿真系统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。
关键词:图像处理, Matlab, 人脸识别, 模式识别ABSTRACTHuman face recognition focuses on pattern recognition ,image proce ssing andother subjects.It is widely used in authentication,investigat ion,video surveillance,intelligent robots,medicine and other areas.Fac erecognition has wide application and business value.Facial feature as abiological characteristic,compared with others is direct,friendly and convenient.Facial featureemployed in authentication are user-friendly.The technology of face recognition in the past few years obtained the very big development, but due to the face of nonrigid, expression and changeablefactors, the face recognition technology in practical ap plication are facing great difficulties. This paper aimed at home and abroad in recent years the relevant papers and researchreports on stud y and on the basis of the analysis, some units within the data sensiti vity places need to enter personnel to carry out limitation design and develop a set of identity verification identification system, the sys tem uses PCA face recognition method, therealization is simple and the accuracy rate of recognition is high,but itsdrawback is that a large amount of calculation, when to identify more staff,this method is diff icult to do.The realization of a set of various pretreatment methods in one of the generic face image preprocessing simulation system based on MATLAB, the system is used as the image preprocessing module can be embedded in a face recognition system, and using the histogram matching gray image to realize the recognition of human face images to determine.Keywords: Imageprocessing , Matlab, Face recognition, Patternrecognition目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1 研究背景 (1)1.2国外研究现状 (2)1.3 人脸图像识别的应用前景 (3)1.4 本文研究的问题 (3)1.5 识别系统构成 (4)1.6 论文的容及组织 (5)2 图像处理的Matlab实现 (6)2.1 Matlab简介 (6)2.2 数字图像处理及过程 (6)2.2.1图像处理的基本操作 (6)2.2.2图像类型的转换 (6)2.2.3图像增强 (6)2.2.4边缘检测 (7)2.3图像处理功能的Matlab实现实例 (7)2.4 本章小结 (10)3 人脸图像识别计算机系统 (11)3.1 引言 (11)3.2系统基本机构 (11)3.3 人脸检测定位算法 (12)3.4 人脸图像的预处理 (16)3.4.1 人脸图像预处理方法 (17)3.5人脸识别 (18)4 实验结果与分析 (25)5 结论 (26)参考文献 (27)致 (28)1 绪论当前,人脸检测越来越受到大家的关注,他作为生物特征识别中一个非常重要的一个分支,已成为计算机视觉与模式识别领域中非常活跃的一个研究领域。
基于MATLAB的人脸识别系统的研究毕业论文
长沙民政职业技术学院毕业实践报告 题目:基于MATLAB 勺人脸识别系统的研扌旨导老师: ______ 谭刚林 ______________________ 系 另寸: 电子信息工程系 __________________ 班 级: ______________ 电子1133 ____________学号:1119013333 1119013334 1119013335 姓 名: 刘盼符思遥樊阳辉类型:2014年5月5日基于MATLAB勺人脸识别系统的研究符思遥、刘盼、樊阳辉指导老师:谭刚林苏宏艮马勇赞【摘要】人脸检测与识别技术是计算机视觉和模式识别等学科的研究热点之一,是进行身份认证最友好直接的手段,在出入境安全检查、内容检索、证件验证、门禁系统等领域都具有十分广泛的应用前景。
多年来,人脸识别技术中的很多问题都被深入地研究,而且大量的算法已经成功应用于人脸识别。
本文在研究了人脸检测和身份识别的关键技术和相关理论的基础上,重点讨论了在光照和背景不同的条件下,彩色静止图像的人脸检测和身份识别问题,它包括基于肤色分割的人脸粗检测、基于人眼检测的几何归一化和基于二维主成分分析法(2DPCA的身份识别。
本文主要工作如下:首先对彩色图像进行光照补偿,其次通过肤色检测获得可能的脸部区域并二值化,再用形态学开闭运算对图像进行滤波处理并通过一定规则确定人脸区域,然后运用水平垂直投影定位人眼坐标以此对人脸进行几何归一化,识别部分运用2DPCA勺图像映射方法对灰度图进行特征匹配,最后输出识别结果并进行语音播报。
实验结果表明,结合肤色和面部几何特征的算法能够对人脸进行较快速和准确的定位,同时2DPCAT法运用于身份识别也能达到较高的识别率。
本毕业设计对实际应用具有一定的参考价值,该系统的操作流程和输入输出方式是以实际应用为出发点,可应用于公安机关证件验证以及日常家庭的自动门禁系统等。
【关键词】人脸检测;肤色分割;人眼检测;2DPCA特征提取1绪论 (1)1.1选题的背景 (1)1.2人脸识别系统 (2)1.3人脸识别的典型方法 (2)2基于YCbCr颜色空间的肤色分割 (3)2.1三种色彩空间 (3)2.1.1 RGB色彩空间 (3)3基于2DPCA特征提取的身份识别 (4)3.1 2DPCA算法实验结果与分析 (5)3.1.1实验用数据库 (5)3.1.2实验结果与分析 (5)3.1.3 结论 (7)4人脸检测与识别系统设计与实现 (7)4.1系统环境 (7)4.2人脸检测与识别系统框图 (7)4.3系统功能模块 (8)4.4实验结果分析 (9)5总结与展望 (10)5.1总结 (10)5.2展望 (10)参考文献 (12)1绪论1.1选题的背景近年来随着计算机技术和互联网的发展,信息技术的安全变得越来越重要,生物特征识别技术得到广泛研究与开发,如人脸识别、指纹识别、掌形识别等。
基于matlab的人脸识别技术
基于matlab 的人脸识别技术论文摘要:随着计算机技术的飞速发展,人脸识别技术逐渐发展壮大起来,并应用到众多领域。
人脸识别是指在人脸检测的基础上针对输入的人脸图像,通过特征提取与特征匹配,找出与人脸库中匹配的人脸图像,从而达到识别效果。
当前主要采取的人脸识别方法有:基于几何特征的方法 ,基于模板的方法和基于模型的方法。
这些方法较适合于人脸信息的验证,即待识别者是否为预先指定的对象。
不足之处在于,需要建立一个拥有庞大人脸信息的训练样本库,因此就降低了输出结果的时效性和准确性。
在应用领域中存在局限性,不适于具有庞大人脸样本训练库的身份鉴别领域。
鉴于种种不足,本文提出了一种基于可变人脸库的快速人脸识别方法,使人脸识别技术适用于更多的行业。
网络信息化时代的一大特征就是身份的数字化和隐性化,如何准确鉴定一个人的身份,保护信息安全是当今信息化时代必须解决的一个关键社会问题。
正在悄然兴起的人脸识别技术正好可以解决这一问题。
关键词:模式识别,K-L 变换,人脸识别,图像处理,matlab,图像增强,边缘检测,图像预处理,灰度直方图,特征提取1.1识别系统构成自动人脸识别系统具有如图所示的一半框架并完成相应功能的任务。
(1)人脸图像的获取:一般来说,图像的获取都是通过摄像头摄取,氮摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。
(2)人脸的检测:人脸检测的任务是判断静态图像中是否存在人脸。
若存在人脸,给出其在图像中的坐标位置,人脸区域大小等信息。
而人脸跟踪需要进一步输出所检测到的人脸位置,大小等状态随时间的连续变化情况。
(3)特征提取通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置(如眼睛,眉毛,鼻子,嘴巴等器官),同时还可以得到这些器官及其面部轮廓的形状信息的描述。
1.人脸特征提取的算法:K-L 变换是图像压缩中的一种最优正交变换,通过它可以把人脸样本从高维空间表示转换到低维空间表示,且由低维空恢复的人脸样本和原人脸样本具有最小的均方误差,从而可用人脸样本在低维空间的变换系数作为对人脸特征的描述。
基于MATLAB的人脸识别源程序
基于MATLA酌人脸识别源程序1•色彩空间转换function [r,g]=rgb_RGB(Ori_Face)R=0ri_Face(:,:,1);G=0ri_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8 型转换成double型G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;row=size(Ori_Face, 1); %行像素column=size(Ori_Face,2); %列像素for i=1:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=mean(rr);r=mean(rrr);ggg=mean(gg);g=mean(ggg); 2•均值和协方差皮肤库\2・jpg');[r2,g2]=rgb_RGB(t2);皮肤库\3・jpg');[r3,g3]=rgb_RGB(t3);皮肤库\4・jpg');[r4,g4]=rgb_RGB(t4);皮肤库\5・jpg');[r5,g5]=rgb_RGB(t5);皮肤库\6・jpg');[r6,g6]=rgb_RGB(t6);皮肤库\7・jpg');[r7,g7]=rgb_RGB(t7);皮肤库\8・jpg');[r8,g8]=rgb_RGB(t8);皮肤库\9・jpg');[r9,g9]=rgb_RGB(t9);皮肤库\10・jpg');[r10,g10]=rgb_RGB(t10); 皮肤库\11・jpg');[r11,g11]=rgb_RGB(t11); 皮肤库\12・jpg');[r12,g12]=rgb_RGB(t12); 皮肤库\13・jpg');[r13,g13]=rgb_RGB(t13); 皮肤库\14・jpg');[r14,g14]=rgb_RGB(t14); 皮肤库\15・jpg');[r15,g15]=rgb_RGB(t15); 皮肤库\16・jpg');[r16,g16]=rgb_RGB(t16); 皮肤库\17・jpg');[r17,g17]=rgb_RGB(t17); 皮肤库\18・jpg');[r18,g18]=rgb_RGB(t18); 皮肤库\19・jpg');[r19,g19]=rgb_RGB(t19); 皮肤库\20・jpg');[r20,g20]=rgb_RGB(t20); 皮肤库\21・jpg');[r21,g21]=rgb_RGB(t21);皮肤库\24・jpg');[r24,g24]=rgb_RGB(t24);皮肤库\25・jpg');[r25,g25]=rgb_RGB(t25);皮肤库\26・jpg');[r26,g26]=rgb_RGB(t26);皮肤库\27・jpg');[r27,g27]=rgb_RGB(t27); r=cat(1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18, r19,r20,r21,r22,r23,r24,r25,r26,r27);g=cat(1,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g1 8,g19,g20,g21,g22,g23,g24,g25,g26,g27);m=mean([r,g])n=cov([r,g])3•求质心function [xmean, ymean] = center(bw)bw=bwfill(bw,'holes');area = bwarea(bw);[m n] =size(bw);bw=double(bw);xmean =0; ymean = 0;for i=1:m,for j=1:n,xmean = xmean + j*bw(i,j);ymean = ymean + i*bw(i,j);end;end;if(area==0)xmean=0;ymean=0;elsexmean = xmean/area;ymean = ymean/area;xmean = round(xmean);ymean = round(ymean);end4.求偏转角度function [theta] = orient(bw,xmean,ymean) [m n] =size(bw); bw=double(bw);a = 0;b = 0;c = 0;for i=1:m,for j=1:n,a = a + (j - xmean)A2 * bw(i,j);b = b + (j - xmean) * (i - ymean) * bw(i,j);c = c + (i - ymean)A2 * bw(i,j);end;end;b = 2 * b;theta = atan(b/(a-c))/2;theta = theta*(180/pi); % 从幅度转换到角度5.找区域边界function [left, right, up, down] = bianjie(A)[m n] = size(A);left = -1;right = -1;up = -1;down = -1;for j=1:n,for i=1:m,if (A(i,j) ~= 0)left = j;break;end;end;if (left ~= -1) break;end;end;for j=n:-1:1,for i=1:m,if (A(i,j) ~= 0)right = j;break;end;end;if (right ~= -1) break; end;end;for i=1:m,for j=1:n,if (A(i,j) ~= 0)up = i;break;end;end;if (up ~= -1) break;end;end;for i=m:-1:1,for j=1:n,if (A(i,j) ~= 0)down = i;break;end;end;if (down ~= -1)break;end;end;6.求起始坐标function newcoord = checklimit(coord,maxval)newcoord = coord;if (newcoord<1)newcoord=1;end;if (newcoord>maxval)newcoord=maxval;end;7•模板匹配function [ccorr, mfit, RectCoord]mobanpipei(mult. frontalmodel,ly,wx,cx, cy, angle) frontalmodel=rgb2gray(frontalmodel);model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小model_rot = imrotate(model_rot,angle,'bilinear'); %旋转模板[l,r,u,d] = bianjie(model_rot); % 求边界坐标bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 选择模板人脸区域[modx,mody] =center(bwmodel_rot); % 求质心[morig, norig] = size(bwmodel_rot);%产生一个覆盖了人脸模板的灰度图像mfit = zeros(size(mult));mfitbw = zeros(size(mult));[limy, limx] = size(mfit);%计算原图像中人脸模板的坐标startx = cx-modx;starty = cy-mody;endx = startx + norig-1;endy = starty + morig-1;startx = checklimit(startx,limx);starty = checklimit(starty,limy);endx = checklimit(endx,limx);endy = checklimit(endy,limy);for i=starty:endy,for j=startx:endx,mfit(i,j) = model_rot(i-starty+1,j-startx+1);end;end;ccorr = corr2(mfit,mult) % 计算相关度[l,r,u,d] = bianjie(bwmodel_rot);sx = startx+l;sy = starty+u;RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标8.主程序clear;[fname,pname]=uigetfile({'*・jpg';'* .bmp';'* ・tif';'* ・gif'},'Please choose a color picture・・・');%返回打开的图片名与图片路径名[u,v]=size(fname);y=fname(v); % 图片格式代表值switch ycase 0errordlg('You Should Load Image File First ・・・','Warning ・・・');case{'g';'G';'p';'P';'f';'F'}; % 图片格式若是JPG/jpg、BMP/bmp、TIF/tif 或者GIF/gif,才打开I=cat(2,pname,fname);Ori_Face=imread(l);subplot(2,3,1),imshow(Ori_Face);otherwiseerrordlg('You Should Load Image File First ・・・','Warning ・・・'); endR=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8 型转换成double型处理G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;m=[ 0・4144,0.3174]; % 均值n=[0・0031,-0・0004;-0・0004,0.0003]; % 方差row=size(Ori_Face,1); % 行像素数column=size(Ori_Face,2); % 列像素数for i=1:rowfor j=1:columnif RGB(i,j)==0rr(i,j)=0;gg(i,j)=0;elserr(i,j)=R1(i,j)/RGB(i,j);% rgb归一化gg(i,j)=G1(i,j)/RGB(i,j);x=[rr(i,j),gg(i,j)];p(i,j)=exp((-0・5)*(x-m)*inv(n)*(x-m)'); % 皮肤概率服从高斯分布endendendsubplot(2,3,2);imshow(p); % 显示皮肤灰度图像low_pass=1/9*ones(3);image_low=filter2(low_pass, p); % 低通滤波去噪声subplot(2,3,3);imshow(image」ow);%自适应阀值程序previousSkin2 = zeros(i,j);changelist =[];for threshold = 0・55:-0.1:0.05two_value = zeros(i,j);two_value(find(image_low>threshold)) = 1;change = sum(sum(two_value - previousSkin2));changelist = [changelist change];previousSkin2 = two_value;end[C, I] = min(changelist);optimalThreshold = (7-1)* 0.1two_value = zeros(i,j);two_value(find(image_low>optimalThreshold))= 1; %二值化subplot(2,3,4);imshow(two_value); % 显示二值图像我的照片人脸模板.jpg'); %读入人脸模板照片FaceCoord=[|;imsourcegray=rgb2gray(Ori_Face); % 将原照片转换为灰度图像[L,N]=bwlabel(two_value,8); % 标注二值图像中连接的部分丄为数据矩阵,N为颗粒的个数for i=1:N,[x,y]=find(bwlabel(two_value)==i); % 寻找矩阵中标号为i 的行和列的下标bwsegment = bwselect(two_value,y,x,8); % 选择出第i 个颗粒numholes = 1-bweuler(bwsegment,4); % 计算此区域的空洞数if (numholes >= 1) % 若此区域至少包含一个洞,则将其选出进行下一步运算RectCoord = -1;[m n] = size(bwsegment);[cx,cy]=center(bwsegment);%求此区域的质心bwnohole=bwfill(bwsegment,'holes'); % 将洞圭寸住(将灰度值赋为1)justface = uint8(double(bwnohole)・* double(imsourcegray));%只在原照片的灰度图像中保留该候选区域angle = orient(bwsegment,cx,cy); %求此区域的偏转角度bw = imrotate(bwsegment, angle, 'bilinear');bw = bwfill(bw,'holes');[l,r,u,d] =bianjie(bw);wx = (r - l +1); % 宽度ly = (d - u + 1); % 高度wratio = ly/wx % 高宽比if ((0 ・8v=wratio)&(wratiov=2))%如果目标区域的高度/宽度比例大于0・8且小于2.0,则将其选出进行下一步运算S=ly*wx; %计算包含此区域矩形的面积A=bwarea(bwsegment); %计算此区域面积if (A/S>0.35)[ccorr,mfit, RectCoord] =mobanpipei(justface,frontalmodel,ly,wx, cx,cy, angle);end if (ccorr>=0.6)mfitbw=(mfit>=1);invbw = xor(mfitbw,ones(size(mfitbw)));source_with_hole = uint8(double(invbw) double(imsourcegray));final_image = uint8(double(source_with_hole) double(mfit));subplot(2,3,5);imshow(final_image); % 显示覆盖了模板脸的灰度图像imsourcegray = final_image;subplot(2,3,6);imshow(Ori_Face); % 显示检测效果图end;if (RectCoord ~= -1)FaceCoord = [FaceCoord; RectCoord];endendendend%在认为是人脸的区域画矩形[numfaces x] = size(FaceCoord);for i=1:numfaces,hd = rectangle('Position',FaceCoord(i,:));set(hd, 'edgecolor', 'y');end人脸检测是人脸识别、人机交互、智能视觉监控等工作的前提。
基于MATLAB的人脸识别源程序
1.色彩空间转换function [r,g]=rgb_RGB(Ori_Face)R=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); %将uint8型转换成double型G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;row=size(Ori_Face,1);%行像素column=size(Ori_Face,2); %列像素for i=1:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=mean(rr);r=mean(rrr);ggg=mean(gg);g=mean(ggg);2.均值和协方差t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1);t2=imread(’D:\matlab\皮肤库\2。
jpg');[r2,g2]=rgb_RGB(t2);t3=imread(’D:\matlab\皮肤库\3。
jpg');[r3,g3]=rgb_RGB(t3); t4=imread(’D:\matlab\皮肤库\4。
jpg');[r4,g4]=rgb_RGB(t4);t5=imread(’D:\matlab\皮肤库\5。
jpg');[r5,g5]=rgb_RGB(t5);t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6);t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7);t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);t9=imread('D:\matlab\皮肤库\9.jpg');[r9,g9]=rgb_RGB(t9);t10=imread('D:\matlab\皮肤库\10。
(完整word版)基于matlab程序实现人脸识别
end
end
(2)人脸的确认程序
functioneye = findeye(bImage,x,y,w,h)
%FINDEYE Summary of this function goes here
% Detailed explanation goes here
part=zeros(h,w);
基于matlab程序实现人脸识别
1.人脸识别流程
1.1.1基本原理
基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。
1.1.2流程图
else
%如果满足条件的矩形区域大于1,则再根据其他信息进行筛选
a=0;
arr1=[];arr2=[];
form=1:size(result,1)
m1=result(m,1);
m2=result(m,2);
m3=result(m,3);
m4=result(m,4);
%得到符合和人脸匹配的数据
ifm1+m3<width && m2+m4<heighth && m3<0.2*width
人脸识别流程图
2.人脸识别程序
(1)人脸和非人脸区域分割程序
functionresult = skin(Y,Cb,Cr)
%SKIN Summary of this function goes here
% Detailed explanation goes herea Nhomakorabea25.39;
《基于MATLAB的人脸识别算法的研究》范文
《基于MATLAB的人脸识别算法的研究》篇一一、引言人脸识别技术是近年来计算机视觉领域研究的热点之一,其应用范围广泛,包括安全监控、身份认证、人机交互等。
MATLAB作为一种强大的数学计算软件,为研究人员提供了丰富的工具和函数,使得人脸识别算法的研究和实现变得更加便捷。
本文将介绍基于MATLAB的人脸识别算法的研究,包括算法原理、实现方法、实验结果及分析等方面。
二、人脸识别算法原理人脸识别算法主要基于计算机视觉和模式识别技术,通过对人脸特征进行提取和匹配,实现身份识别。
常见的人脸识别算法包括特征提取、特征匹配等步骤。
其中,特征提取是关键步骤,需要从人脸图像中提取出有效的特征,如纹理、形状、颜色等。
特征匹配则是将提取出的特征与人脸库中的特征进行比对,找出最匹配的人脸。
三、基于MATLAB的人脸识别算法实现1. 预处理在人脸识别算法的实现中,首先需要对人脸图像进行预处理,包括灰度化、归一化、降噪等操作。
这些操作可以有效地提高图像的质量,为后续的特征提取和匹配提供更好的基础。
2. 特征提取特征提取是人脸识别算法的核心步骤之一。
在MATLAB中,可以使用各种算法进行特征提取,如主成分分析(PCA)、局部二值模式(LBP)、方向梯度直方图(HOG)等。
本文采用PCA 算法进行特征提取,通过降维的方式将高维的人脸图像数据转化为低维的特征向量。
3. 特征匹配特征匹配是将提取出的特征与人脸库中的特征进行比对的过程。
在MATLAB中,可以使用各种相似度度量方法进行特征匹配,如欧氏距离、余弦相似度等。
本文采用欧氏距离作为相似度度量方法,通过计算特征向量之间的欧氏距离来找出最匹配的人脸。
四、实验结果及分析为了验证基于MATLAB的人脸识别算法的有效性,我们进行了多组实验。
实验数据集包括ORL人脸库、Yale人脸库等。
在实验中,我们使用了不同的特征提取和匹配方法,对算法的性能进行了评估。
实验结果表明,基于PCA算法的特征提取方法和欧氏距离相似度度量方法在人脸识别中具有较好的性能。
基于matlab的人脸识别系统设计与仿真毕业设计
(此文档为word格式,下载后您可任意编辑修改!)佳木斯大学毕业论文基于Matlab的人脸识别系统设计与仿真学院信息电子技术专业电子信息工程班级11级1班姓名杨雷指导教师周经国佳木斯大学2015年6月10日摘要人脸识别即指利用分析比对人脸视觉特征信息从而达到身份鉴别效果的计算机技术。
人脸识别是一项当下十分热门的计算机技术的研究领域,该项技术可以人脸明暗侦测,并且自动调整动态曝光补偿,同时对人脸追踪侦测,并自动调整影像放大;这项技术属于生物特征识别技术的一种,是利用生物体(一般指人)本身的生物特征从而达到区分生物体个体的目的。
人脸识别技术目前主要用做身份识别。
由于视频监控的飞速普及,使这项应用迫切的需要一种能实现在用户非配合状态下、远距离的进行快速身份识别的技术,以求能在远距离之下快速识别人员身份,从而实现智能预警的功能。
最佳的选择无疑是人脸识别技术。
采用快速人脸检测识别技术可以从视频监控图象中实时捕获到人脸信息,并与人脸数据库中的已存信息进行实时比对,从而达到快速身份识别的效果。
报告利用MATLAB软件来实现人脸信息检测与识别,利用YCbCr空间以及灰度图像来实现人脸的边缘分割, 将真彩图像转换为灰度图像,并根据肤色在YCbCr色度空间上的分布范围,来设定门限阀值,从而实现人脸区域与非人脸区域的分割,通过图像处理等一系列的操作来剔除干扰因素,再通过长宽比和目标面积等方法在图像中定位出人脸区域,经试验,该方法能够排除面部表情、衣着背景、发型等干扰因素,从而定位出人脸区域。
关键词:Matlab软件;灰度图像;边缘分割;人脸区域AbstractFace recognition especially use comparative analysis face visual feature information for identification of computer technology. Face recognition is a , light and shade can be automatically adjusted dynamically exposure compensation, face tracking detection, automatic adjustment of image magnification; It belongs to the biometric identification technology, it is of organisms (generally refers to a person) individual biological characteristics to distinguish between the organism itself.Face recognition is mainly used for identification. Because of the video monitoring is fast popularization, many of the video monitoring application is an urgent need to a long distance, the user not cooperate condition of rapid identification technology, in order . Face recognition technology is undoubtedly the best choice, the fast face detection technology to monitor in real-time video image search from face, and with real-time than face database, so as to realize rapid identification.Report using MATLAB software to realize face information detection and recognition, using YCbCr space and gray image to realize the face edge segmentation, the true color image is converted to a grayscale image, and according to the color of skin in YCbCr chroma space distribution, to set the threshold threshold, so as to realize the segmentation of face region with the face region, through a series of operations such as image processing to eliminate interference factors, and through such means as aspect ratio and the target area locate the face region in the image, the experiment, this method can eliminate facial expressions, clothes, . Keywords:Matlab;Gray image;edge segmentation;face region目录摘要 (1)ABSTRACT (2)3 第1章绪论 (4)1.1课题的研究背景、目的及意义 (4)1.1.1 课题的研究背景 (4)1.1.2 研究目的及意义 (5)1.2本课题的主要内容 (5)第2章图像处理的MATLAB实现 (6)2.1识别系统构成 (6)2.2人脸图像的读取与显示 (7)2.3图像类型的转换 (7)2.4图像增强 (8)2.5灰度图像平滑与锐化处理..................... 错误!未定义书签。
人脸识别的毕业论文
学号:3081818211题目类型:论文(设计、论文、报告)西安电子科技大学GUILIN UNIVERSITY OF TECHNOLOGY本科毕业设计(论文)题目:人脸检测技术研究及MATLAB实现学院:信息科学与工程学院专业(方向):电子信息工程班级:电信08-2班学生:许文强指导教师:蒋中正2012 年 5 月 20 日摘要人脸检测是当今视觉领域里非常重要和实用的研究课题,它应用于现实生活中的各个领域,如公安、金融、网络安全、物业管理以及考勤等。
基于视频的人脸检测属于动态检测,方法是先提取视频文件的帧,然后再对帧(图像)进行人脸检测,利用肤色特征的检测算法先对图像(帧)进行处理,然后建模,运用适当的算法把人脸检测出来,运用该方法完成了视频之中的的人脸检测。
本文采用MATLAB软件进行仿真,包括实现提取视频文件的帧,对输入图像检测有人脸(如果存在)的位置,大小和位姿,程序运行结果基本实现了上述功能。
关键词:人脸检测;视频检测;肤色特征Research of Face Detection and Implementation of Matlab Student: xu wenqiang Teacher:jiang zhong zhengAbstract:Face detection is very important and practical research topic in the visual field,it is applied to many areas in our lives Such as public security, finance, network security, property management and attendance, Based on the video's face detection is dynamic detection ,The idea is to extract video file frame, then as the image face to detectionUse the skin color characteristics of the detection algorithm , first to do processing testing, Then e appropriate algorithm, the face detection out.By using this method the video to finish face detection. this paper, we also use Matlab software simulationIncluding realize The input image for face detection, Video file frame extraction then That is to make sure that there is an image input face (if present) of location, size and posture of the process.To run the program results basically achieved the functionKey Words:Face Detection;Video Detection;Skin color characteristics目次摘要 (I)Abstract (II)1 绪论 (1)1.1论文的研究历史背景及目的 (1)1.2国内外研究现状 (2)1.3论文的主要内容安排 (3)2 人脸检测及其算法简介 (5)2.1人脸检测介绍 (5)2.2人脸检测的常用方法 (5)2.2.1基于特征的人脸检测方法 (5)2.2.2模块匹配法的人脸检测 (6)2.2.3基于adaboost算法的人脸检测方法 (7)3 基于视频的人脸检测研究及其实现 (8)3.1 MATLAB图像处理工具箱中的视频操作 (8)3.2提取AVI视频文件的帧 (9)3.3对图像进行肤色特征的人脸检测 (11)3.3.1色彩空间及其内容介绍 (11)3.3.2对图像进行预处理 (11)3.3.3对人脸肤色进行建模 (13)3.3.4 检测人脸区域的选定 (14)3.4图像向AVI视频文件的转换 (16)4 人脸检测在MATLAB软件下仿真实现 (18)4.1设计条件 (18)4.2设计流程 (18)4.4.1基于视频的人脸检测的总设计模块图 (18)4.4.2对图像进行人脸检测具体框图 (19)4.3人脸检测的MATLAB实现 (19)4.3.1人脸检测运行结果 (19)4.3.2人脸检测结果分析 (21)5 结论 (22)致谢 (23)参考文献 (24)附录 (25)1 绪论当前,人脸检测越来越受到大家的关注,它作为生物特征识别中一个非常重要的一个分支,已成为计算机视觉与模式识别领域中非常活跃的一个研究领域。
基于matlab的人脸识别
本科生毕业论文(设计)题目基于MATLAB的人脸识别姓名学号院系专业自动化指导教师职称2015年5月15日曲阜师范大学教务处制目录摘要 (1)关键词 (1)Abstract (1)K e y w o r d s (1)1 绪论 (2)1.1 基本介绍与概念 (2)1.2 研发历史与发展现状 (3)1.3 研究背景与意义 (3)2 人脸检测 (4)2.1 检测的具体步骤 (4)2.1 YCbCr空间 (4)2.2 灰度图像转换 (4)2.3 噪声消除 (5)2.4 图像填孔 (5)2.5 图像重构 (5)2.6 边缘检测 (6)2.7 利用规则确定人脸 (6)3 人脸识别 (7)3.1 人脸识别的步骤 (7)3.2 K-L变换原理 (7)3.3 K-L变换 (7)3.4 图像特征脸基底的确立 (8)3.5 图像的识别 (9)4 MATLAB仿真功能的实现 (10)4.1 系统仿真综述 (10)4.2选择预存人脸数据库 (10)4.3 创建预存人脸向量库T (13)4.4 求特征脸空间 (14)4.5人脸识别 (15)4.6 人脸识别结果显示 (16)5 结果分析 (17)6 结论 (18)致谢 (19)参考文献 (19)附录: (20)基于MATLAB的人脸识别自动化专业学生指导老师摘要:人脸识别起始于上个世纪60年代,具有广泛的应用前景,它的工作原理是借由个体的生物特征来确认生物个体,文章利用MATLAB软件实现人脸信息的检测与识别,在输入的图像中寻找人脸区域,把图像分割成两个部分——人脸区域和非人脸区域,之后与设定的人脸库进行特征值比较,辨识出人脸代表的身份。
文章利用YCbCr空间以及二值图像实现人脸边缘分割,用霍特林变换(Kaehunen-Love Transform,K-L)以及主成分分析(Principal Component Analysis,PCA)算法对人脸进行识别对比,并详细介绍了K-L的推导过程,并在MATLAB上对PCA人脸识别算法进行仿真。
《基于MATLAB的人脸识别算法的研究》范文
《基于MATLAB的人脸识别算法的研究》篇一一、引言人脸识别技术是计算机视觉领域的重要分支,随着科技的发展和大数据的普及,其在安全监控、身份认证、智能交互等领域得到了广泛的应用。
本文旨在基于MATLAB平台,研究并分析几种常见的人脸识别算法,并对其性能进行对比与评价。
二、人脸识别算法概述人脸识别算法主要包括基于特征的人脸识别算法和基于深度学习的人脸识别算法两大类。
其中,基于特征的人脸识别算法如主成分分析(PCA)、线性判别分析(LDA)、局部二值模式(LBP)等,通过提取人脸特征进行识别;而基于深度学习的人脸识别算法如卷积神经网络(CNN)等,通过深度学习技术自动提取人脸特征并进行识别。
三、基于MATLAB的人脸识别算法实现1. 数据准备:使用MATLAB的Image Acquisition Toolbox获取人脸图像数据,并进行预处理,包括灰度化、归一化等操作。
2. 特征提取:采用PCA、LDA等算法提取人脸特征。
在MATLAB中,可以利用其内置的函数或编写自定义函数进行特征提取。
3. 分类器设计:根据提取的特征,设计分类器进行人脸识别。
在MATLAB中,可以使用其内置的分类器函数或自行设计分类器。
4. 算法实现:将上述步骤组合起来,实现基于MATLAB的人脸识别算法。
四、常见人脸识别算法的比较与分析1. PCA算法:PCA是一种常用的特征提取方法,能够有效地降低数据的维度,提高识别的速度和准确性。
但PCA算法对光照、表情等因素的敏感性较高,需要结合其他技术进行优化。
2. LDA算法:LDA算法通过最大化类间距离和最小化类内距离来提取特征,具有较好的分类性能。
但LDA算法对样本数量的要求较高,样本数量不足时可能导致性能下降。
3. CNN算法:CNN是一种基于深度学习的人脸识别算法,能够自动提取人脸特征并进行识别。
CNN算法具有较高的准确性和鲁棒性,但需要大量的训练数据和计算资源。
五、实验与结果分析为了验证上述人脸识别算法的性能,我们进行了多组实验。
基于MATLAB的人脸识别源程序文件
1.色彩空间转换function [r,g]=rgb_RGB(Ori_Face)R=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;row=size(Ori_Face,1); % 行像素column=size(Ori_Face,2); % 列像素for i=1:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=mean(rr);r=mean(rrr);ggg=mean(gg);g=mean(ggg);2.均值和协方差t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1);t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2);t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3);t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4);t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5);t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6);t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7);t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);t9=imread('D:\matlab\皮肤库\9.jpg');[r9,g9]=rgb_RGB(t9);t10=imread('D:\matlab\皮肤库\10.jpg');[r10,g10]=rgb_RGB(t10);t11=imread('D:\matlab\皮肤库\11.jpg');[r11,g11]=rgb_RGB(t11);t12=imread('D:\matlab\皮肤库\12.jpg');[r12,g12]=rgb_RGB(t12);t13=imread('D:\matlab\皮肤库\13.jpg');[r13,g13]=rgb_RGB(t13);t14=imread('D:\matlab\皮肤库\14.jpg');[r14,g14]=rgb_RGB(t14);t15=imread('D:\matlab\皮肤库\15.jpg');[r15,g15]=rgb_RGB(t15);t16=imread('D:\matlab\皮肤库t17=imread('D:\matlab\皮肤库\17.jpg');[r17,g17]=rgb_RGB(t17);t18=imread('D:\matlab\皮肤库\18.jpg');[r18,g18]=rgb_RGB(t18);t19=imread('D:\matlab\皮肤库\19.jpg');[r19,g19]=rgb_RGB(t19);t20=imread('D:\matlab\皮肤库\20.jpg');[r20,g20]=rgb_RGB(t20);t21=imread('D:\matlab\皮肤库\21.jpg');[r21,g21]=rgb_RGB(t21);t22=imread('D:\matlab\皮肤库\22.jpg');[r22,g22]=rgb_RGB(t22);t23=imread('D:\matlab\皮肤库\23.jpg');[r23,g23]=rgb_RGB(t23);t24=imread('D:\matlab\皮肤库\24.jpg');[r24,g24]=rgb_RGB(t24);t25=imread('D:\matlab\皮肤库\25.jpg');[r25,g25]=rgb_RGB(t25);t26=imread('D:\matlab\皮肤库\26.jpg');[r26,g26]=rgb_RGB(t26);t27=imread('D:\matlab\皮肤库r=cat(1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15, r16,r17,r18,r19,r20,r21,r22,r23,r24,r25,r26,r27);g=cat(1,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15, g16,g17,g18,g19,g20,g21,g22,g23,g24,g25,g26,g27);m=mean([r,g])n=cov([r,g])3.求质心function [xmean, ymean] = center(bw)bw=bwfill(bw,'holes');area = bwarea(bw);[m n] =size(bw);bw=double(bw);xmean =0; ymean = 0;for i=1:m,for j=1:n,xmean = xmean + j*bw(i,j);ymean = ymean + i*bw(i,j);end;end;if(area==0)xmean=0;ymean=0;elsexmean = xmean/area;ymean = ymean/area;xmean = round(xmean);ymean = round(ymean);end4. 求偏转角度function [theta] = orient(bw,xmean,ymean) [m n] =size(bw);bw=double(bw);a = 0;b = 0;c = 0;for i=1:m,for j=1:n,a = a + (j - xmean)^2 * bw(i,j);b = b + (j - xmean) * (i - ymean) * bw(i,j);c = c + (i - ymean)^2 * bw(i,j);end;end;b = 2 * b;theta = atan(b/(a-c))/2;theta = theta*(180/pi); % 从幅度转换到角度5. 找区域边界function [left, right, up, down] = bianjie(A) [m n] = size(A);left = -1;right = -1;up = -1;down = -1;for j=1:n,for i=1:m,if (A(i,j) ~= 0)left = j;break;end;end;if (left ~= -1) break;end;end;for j=n:-1:1,for i=1:m,if (A(i,j) ~= 0)right = j;break;end;end;if (right ~= -1) break; end;end;for i=1:m,for j=1:n,if (A(i,j) ~= 0)up = i;break;end;end;if (up ~= -1)break;end;end;for i=m:-1:1,for j=1:n,if (A(i,j) ~= 0) down = i;break;end;end;if (down ~= -1)break;end;end;6. 求起始坐标function newcoord = checklimit(coord,maxval)newcoord = coord;if (newcoord<1)newcoord=1;end;if (newcoord>maxval)newcoord=maxval;end;7.模板匹配function [ccorr, mfit, RectCoord] = mobanpipei(mult, frontalmodel,ly,wx,cx, cy, angle)frontalmodel=rgb2gray(frontalmodel);model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小model_rot = imrotate(model_rot,angle,'bilinear'); % 旋转模板[l,r,u,d] = bianjie(model_rot); % 求边界坐标bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 选择模板人脸区域[modx,mody] =center(bwmodel_rot); % 求质心[morig, norig] = size(bwmodel_rot);% 产生一个覆盖了人脸模板的灰度图像mfit = zeros(size(mult));mfitbw = zeros(size(mult));[limy, limx] = size(mfit);% 计算原图像中人脸模板的坐标startx = cx-modx;starty = cy-mody;endx = startx + norig-1;endy = starty + morig-1;startx = checklimit(startx,limx);starty = checklimit(starty,limy);endx = checklimit(endx,limx);endy = checklimit(endy,limy);for i=starty:endy,for j=startx:endx,mfit(i,j) = model_rot(i-starty+1,j-startx+1);end;end;ccorr = corr2(mfit,mult) % 计算相关度[l,r,u,d] = bianjie(bwmodel_rot);sx = startx+l;sy = starty+u;RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标8.主程序clear;[fname,pname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.gif'},' Please choose a color picture...'); % 返回打开的图片名与图片路径名[u,v]=size(fname);y=fname(v); % 图片格式代表值switch ycase 0errordlg('You Should Load Image File First...','Warning...');case{'g';'G';'p';'P';'f';'F'}; % 图片格式若是JPG/jpg、BMP/bmp、TIF/tif或者GIF/gif,才打开I=cat(2,pname,fname);Ori_Face=imread(I);subplot(2,3,1),imshow(Ori_Face);otherwiseerrordlg('You Should Load Image File First...','Warning...');endR=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型处理G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;m=[ 0.4144,0.3174]; % 均值n=[0.0031,-0.0004;-0.0004,0.0003]; % 方差row=size(Ori_Face,1); % 行像素数column=size(Ori_Face,2); % 列像素数for i=1:rowfor j=1:columnif RGB(i,j)==0rr(i,j)=0;gg(i,j)=0;elserr(i,j)=R1(i,j)/RGB(i,j); % rgb归一化 gg(i,j)=G1(i,j)/RGB(i,j);x=[rr(i,j),gg(i,j)];p(i,j)=exp((-0.5)*(x-m)*inv(n)*(x-m)'); % 皮肤概率服从高斯分布endendendsubplot(2,3,2);imshow(p); % 显示皮肤灰度图像low_pass=1/9*ones(3);image_low=filter2(low_pass, p); % 低通滤波去噪声subplot(2,3,3);imshow(image_low);% 自适应阀值程序previousSkin2 = zeros(i,j);changelist = [];for threshold = 0.55:-0.1:0.05two_value = zeros(i,j);two_value(find(image_low>threshold)) = 1;change = sum(sum(two_value - previousSkin2));changelist = [changelist change];previousSkin2 = two_value;end[C, I] = min(changelist);optimalThreshold = (7-I)*0.1two_value = zeros(i,j);two_value(find(image_low>optimalThreshold)) = 1; % 二值化subplot(2,3,4);imshow(two_value); % 显示二值图像frontalmodel=imread('E:\我的照片\人脸模板.jpg'); % 读入人脸模板照片FaceCoord=[];imsourcegray=rgb2gray(Ori_Face); % 将原照片转换为灰度图像[L,N]=bwlabel(two_value,8); % 标注二值图像中连接的部分,L 为数据矩阵,N为颗粒的个数for i=1:N,[x,y]=find(bwlabel(two_value)==i); % 寻找矩阵中标号为i的行和列的下标bwsegment = bwselect(two_value,y,x,8); % 选择出第i个颗粒numholes = 1-bweuler(bwsegment,4); % 计算此区域的空洞数if (numholes >= 1) % 若此区域至少包含一个洞,则将其选出进行下一步运算RectCoord = -1;[m n] = size(bwsegment);[cx,cy]=center(bwsegment); % 求此区域的质心bwnohole=bwfill(bwsegment,'holes'); % 将洞封住(将灰度值赋为1)justface = uint8(double(bwnohole) .* double(imsourcegray)); % 只在原照片的灰度图像中保留该候选区域angle = orient(bwsegment,cx,cy); % 求此区域的偏转角度bw = imrotate(bwsegment, angle, 'bilinear');bw = bwfill(bw,'holes');[l,r,u,d] =bianjie(bw);wx = (r - l +1); % 宽度ly = (d - u + 1); % 高度wratio = ly/wx % 高宽比if ((0.8<=wratio)&(wratio<=2))% 如果目标区域的高度/宽度比例大于0.8且小于2.0,则将其选出进行下一步运算S=ly*wx; % 计算包含此区域矩形的面积A=bwarea(bwsegment); % 计算此区域面积if (A/S>0.35)[ccorr,mfit, RectCoord] = mobanpipei(justface,frontalmodel,ly,wx, cx,cy, angle);endif (ccorr>=0.6)mfitbw=(mfit>=1);invbw = xor(mfitbw,ones(size(mfitbw)));source_with_hole = uint8(double(invbw) .* double(imsourcegray));final_image = uint8(double(source_with_hole) + double(mfit));subplot(2,3,5);imshow(final_image); % 显示覆盖了模板脸的灰度图像imsourcegray = final_image;subplot(2,3,6);imshow(Ori_Face); % 显示检测效果图end;if (RectCoord ~= -1)FaceCoord = [FaceCoord; RectCoord];endendendend% 在认为是人脸的区域画矩形[numfaces x] = size(FaceCoord);for i=1:numfaces,hd = rectangle('Position',FaceCoord(i,:));set(hd, 'edgecolor', 'y');end人脸检测是人脸识别、人机交互、智能视觉监控等工作的前提。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于matlab的人脸识别系统设计与仿真第一章绪论本章提出了本文的研究背景及应用前景。
首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。
1.1 研究背景自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重XX论价值外,也极具实用价值。
在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。
人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。
如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。
同时,进行人脸图像识别研究也具有很大的使用价依。
如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。
现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。
人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。
并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。
使得同一个人,在不同的环境下拍摄所得到的人脸图像不同,有时更会有很大的差别,给识别带来很大难度。
因此在各种干扰条件下实现人脸图像的识别,也就更具有挑战性。
国外对于人脸图像识别的研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,国内也有许多科研机构从事这方而的研究,并己取得许多成果。
1.2 人脸图像识别的应用前景人脸图像识别除了具有重大的理论价值以及极富挑战性外,还其有许多潜在的应用前景,利用人脸图像来进行身份验证,可以不与目标相接触就取得样本图像,而其它的身份验证手段,如指纹、眼睛虹膜等必须通过与目标接触或相当接近来取得样木,在某些场合,这些识别手段就会有不便之处。
就从目前和将来来看,可以预测到人脸图像识别将具有广阔的应用前景,如表1-1中所列举就是其中已经实现或逐步完善的应用。
表1-1 人脸识别的应用1.3 本文研究的问题本文介绍了人脸图像识别中所应用MATLAB对图像进行预处理,应用该工具箱对图像进行经典图像处理,通过实例来应用matlab图像处理功能,对某一特定的人脸图像处理,进而应用到人脸识别系统。
本文在总结分析人脸识别系统中几种常用的图像预处理方法基础上,利用MATLAB实现了一个集多种预处理方法于一体的通用的人脸图像预处理仿真系统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。
其中涉及到图像的选取,脸部定位,特征提取,图像处理和识别几个过程。
1.4 识别系统构成人类似乎具有"与生俱来"的人脸识别能力,赋予计算机同样的能力是人类的梦想之一,这就是所谓的"人脸识别"系统。
假设我们把照相机、摄像头、扫描仪等看作计算机的"眼睛",数字图像可以看作计算机观察到的"影像",那么AFR赋予计算机根据其所"看到"的人脸图片来判断人物身份的能力。
广义的讲,自动人脸识别系统具有如图 1.1所示的一般框架并完成相应功能的任务。
图1.1 人脸识别系统一般框架<1>人脸图像的获取一般来说,图像的获取都是通过摄像头摄取,但摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。
<2>人脸的检测人脸检测的任务是判断静态图像中是否存在人脸。
若存在人脸,给出其在图像中的坐标位置、人脸区域大小等信息。
而人脸跟踪则需要进一步输出所检测到的人脸位置、大小等状态随时间的连续变化情况。
<3>特征提取通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置〔如眼睛、眉毛、鼻子、嘴巴等器官,同时还可以得到这些器官及其面部轮廓的形状信息的描述。
根据人脸特征点检测与标定的结果,通过某些运算得到人脸特征的描述〔这些特征包括:全局特征和局部特征,显式特征和统计特征等。
<4>基于人脸图像比对的身份识别即人脸识别<Face Identification>问题。
通过将输入人脸图像与人脸数据库中的所有已知原型人脸图像计算相似度并对其排序来给出输入人脸的身份信息。
这包括两类识别问题:一类是闭集<Close Set>人脸识别问题,即假定输入的人脸一定是人脸库中的某个个体;另一类是开集<Open Set>识别,即首先要对输入人脸是否在已知人脸库中做出判断,如果是,则给出其身份。
<5>基于人脸图像比对的身份验证即人脸确认<Face Verification>问题。
系统在输入人脸图像的同时输入一个用户宣称的该人脸的身份信息,系统要对该输入人脸图像的身份与宣称的身份是否相符作出判断。
1.5 论文的内容及组织第二章主要介绍人脸识别系统中所用到的仿真软件Matlab,介绍了在人脸图像识别过程中所需要的图像处理技术,包括:一些基本操作、格式转换、图像增强等。
并做了一个Matlab图像处理功能的实例第三章主要始涉三个方面:首先是对人脸识别系统的构成做详细论述;其次就是对人脸识别过程中的关键环节人脸检测、特征提取和图像预处理做详细介绍;最后就是Matlab在人脸识别系统中的具体应用,即人脸图像识别的具体技术,并用Matlab进行仿真试验并得到结果。
第四章是对人脸图像识别体系构架的设计,并给出了人脸识别用到的理论知识即直方图差异对比,并编写matlab代码实现人脸图像识别。
第五章总结了全文的工作并对以后的需要进一步研究的问题进行了展望。
第二章图像处理的Matlab实现2.1 Matlab简介由Math Work公司开发的Matlab语言语法限制不严格,程序设计自由度大,程序的可移植性好。
Matlab还推出了功能强大的适应于图像分析和处理的工具箱,常用的有图像处理工具箱、小波分析工具箱及数字信号处理工具箱。
利用这些工具箱,我们可以很方便的从各个方面对图像的性质进行深入的研究。
Matlab图像处理工具箱支持索引图像、RGB图像、灰度图像、二进制图像并能操作.bmp、.jpg、.tif 等多种图像格式文件。
2.2 数字图像处理及过程图像是人类获取信息、表达信息和传递信息的重要手段。
利用计算机对图像进行去除噪声、增强、复原、分割、提取特征等的理论、方法和技术称为数字图像处理。
数字图像处理技术已经成为信息科学、计算机科学、工程科学、地球科学等诸多方面的学者研究图像的有效工具。
数字图像处理主要包括图像变换、图像增强、图像编码、图像复原、图像重建、图像识别以及图像理解等内容。
2.2.1图像处理的基本操作读取和显示图像可以通过imread<>和imshow<>来实现;图像的输出用imwrite<>函数就可以很方便的把图像输出到硬盘上;另外还可以用imcrop<>、imrisize<>、imrotate<>等来实现图像的裁剪、缩放和旋转等功能。
2.2.2图像类型的转换Matlab支持多种图像类型,但在某些图像操作中,对图像的类型有要求,所以要涉及到对图像类型进行转换。
Matlab7.0图像处理工具箱为我们提供了不同图像类型相互转换的大量函数,如mat2gray<>函数可以将矩阵转换为灰度图像,rgb2gray<>转换RGB图像或颜色映像表为灰度图像。
在类型转换的时候,我们还经常遇到数据类型不匹配的情况,针对这种情况,Matlab7.0工具箱中,也给我们提供了各种数据类型之间的转换函数,如double<>就是把数据转换为双精度类型的函数。
2.2.3图像增强图像增强的目的是为了改善图像的视觉效果,提高图像的清晰度和工艺的适应性,以及便于人与计算机的分析和处理,以满足图像复制或再现的要求。
图像增强的方法分为空域法和频域法两大类,空域法主要是对图像中的各个像素点进行操作;而频域法是在图像的某个变换域内对整个图像进行操作,并修改变换后的系数,如傅立叶变换、DCT变换等的系数,然后再进行反变换,便可得到处理后的图像。
下面以空域增强法的几种方法加以说明。
<1>.灰度变换增强有多种方法可以实现图像的灰度变换,其中最常用的就是直方图变换的方法,即直方图的均衡化。
这种方法是一种使输出图像直方图近似服从均匀分布的变换算法。
Matlab7.0图像处理工具箱中提供了图像直方图均衡化的具体函数histeq<>,同时我们可以用函数imhist<>函数来计算和显示图像的直方图。
<2>.空域滤波增强空域滤波按照空域滤波器的功能又可分为平滑滤波器和锐化滤波器。
平滑滤波器可以用低通滤波实现,目的在于模糊图像或消除噪声;锐化滤波器是用高通滤波来实现,目的在于强调图像被模糊的细节。
在Matlab中,各种滤波方法都是在空间域中通过不同的滤波算子实现,可用fspecial<>函数来创建预定义的滤波算子,然后可以使用imfilter<>或filter2<>函数调用创建好的滤波器对图像进行滤波。
2.2.4边缘检测数字图像的边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分重要的基础,也是图像识别中提取图像特征的一个重要属性。
边缘检测算子可以检查每个像素的邻域并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。
常用的有Sobel算子,Prewitt算子,Roberts算子,Log算子等。
Matlab7.0工具箱中提供的edge<>函数可以进行边缘检测,在其参数里面,可以根据需要选择合适的算子及其参数。
2.3图像处理功能的Matlab实现实例本文通过运用图像处理工具箱的有关函数对一人脸的彩色图像进行处理。
1>图像类型的转换因后面的图像增强,边缘检测都是针对灰度图像进行的,而我们的原图是RGB图像,所以首先我们要对原图类型进行转换。