基于matlab程序实现人脸识别.doc_第1页
基于matlab程序实现人脸识别.doc_第2页
基于matlab程序实现人脸识别.doc_第3页
基于matlab程序实现人脸识别.doc_第4页
基于matlab程序实现人脸识别.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

基于matlab程序实现人脸识别1.人脸识别流程1.1.1基本原理基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在CbCr子平面上的投影将缩减,与中心区域显著不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。1.1.2流程图人脸识别流程图2. 人脸识别程序(1) 人脸和非人脸区域分割程序function result = skin(Y,Cb,Cr)%SKIN Summary of this function goes here% Detailed explanation goes herea=25.39;b=14.03;ecx=1.60;ecy=2.41;sita=2.53;cx=109.38;cy=152.02;xishu=cos(sita) sin(sita);-sin(sita) cos(sita);%如果亮度大于230,则将长短轴同时扩大为原来的1.1倍if(Y230) a=1.1*a; b=1.1*b;end%根据公式进行计算Cb=double(Cb);Cr=double(Cr);t=(Cb-cx);(Cr-cy);temp=xishu*t;value=(temp(1)-ecx)2/a2+(temp(2)-ecy)2/b2;%大于1则不是肤色,返回0;否则为肤色,返回1if value1 result=0;else result=1;endend(2) 人脸的确认程序function eye = findeye(bImage,x,y,w,h)%FINDEYE Summary of this function goes here% Detailed explanation goes herepart=zeros(h,w);%二值化for i=y:(y+h) for j=x:(x+w) if bImage(i,j)=0 part(i-y+1,j-x+1)=255; else part(i-y+1,j-x+1)=0; end endendL,num=bwlabel(part,8);%如果区域中有两个以上的矩形则认为有眼睛if num2 eye=0;else eye=1;endend(3) 人脸识别主程序clear all;%读入原始图像I=imread(face3.jpg);gray=rgb2gray(I);ycbcr=rgb2ycbcr(I);%将图像转化为YCbCr空间heighth=size(gray,1);%读取图像尺寸width=size(gray,2);for i=1:heighth %利用肤色模型二值化图像 for j=1:width Y=ycbcr(i,j,1); Cb=ycbcr(i,j,2); Cr=ycbcr(i,j,3); if(Y1 ux=ux-1; end if uy1 uy=uy-1; end if w20 | h20| w*h400 %矩形长宽的范围和矩形的面积可自行设定 continue elseif ratio0.6 & findeye(gray,ux,uy,w,h)=1 %根据“三庭五眼”规则高度和宽度比例应该在(0.6,2)内; result(n,:)=ux uy w h; n=n+1; endendif size(result,1)=1 & result(1,1)0 %对可能是人脸的区域进行标记 rectangle(Position,result(1,1),result(1,2),result(1,3),result(1,4),EdgeColor,r);else %如果满足条件的矩形区域大于1,则再根据其他信息进行筛选 a=0; arr1=;arr2=; for m=1:size(result,1) m1=result(m,1); m2=result(m,2); m3=result(m,3); m4=result(m,4); %得到符合和人脸匹配的数据 if m1+m3width & m2+m4heighth & m30.2*width a=a+1; arr1(a)=m3;arr2(a)=m4; %rectangle(Position,m1,m2,m3,m4,EdgeColor,r); end end %得到人脸长度和宽度的最小区域 arr3=;arr3=sort(arr1,ascend); arr4=;arr4=sort(arr2,ascend); %根据得到的数据标定最终的人脸区域 for m=1:size(result,1) m1=result(m,1); m2=result(m,2); m3=result(m,3); m4=result(m,4); %最终标定人脸 if m1+m3width & m2+m4heighth & m30.2*width m3=arr3(1); m4=arr4(1); rectangle(Position,m1,m2,m3,m4,EdgeColor,r); end endend(4)程序说明人脸识别程序主要包含三个程序模块,人脸识别主程序由三部分构成。第一部分:将图像转化为YCbCr颜色空间,根据色彩模型进行图像二值化,二值化图像进行形态学处理、开运算,显示二值图像;第二部分:采用标记方法选取出图中的白色区域,度量区域属性,存放经过筛选以后得到的所有矩形块,筛选特定区域,存储人脸的矩形区域;第三部分:对于所有人脸的矩形区域,如果满足条件的矩形区域大于1则再根据其他信息进行筛选,标记最终的人脸区域。图像分割程序中,利用肤色可以较为精确的将人脸和非人脸区域分割开来,得到较为精确的二值化图像。人脸的确认程序,以存

温馨提示

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

评论

0/150

提交评论