预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于matlab程序实现人脸识别1.人脸识别流程1.1。1基本原理基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同.采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。1。1。2流程图人脸识别流程图人脸识别程序人脸和非人脸区域分割程序functionresult=skin(Y,Cb,Cr)%SKINSummaryofthisfunctiongoeshere%Detailedexplanationgoesherea=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(Y〉230)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/a^2+(temp(2)-ecy)^2/b^2;%大于1则不是肤色,返回0;否则为肤色,返回1ifvalue〉1result=0;elseresult=1;endend人脸的确认程序functioneye=findeye(bImage,x,y,w,h)%FINDEYESummaryofthisfunctiongoeshere%Detailedexplanationgoesherepart=zeros(h,w);%二值化fori=y:(y+h)forj=x:(x+w)ifbImage(i,j)==0part(i—y+1,j—x+1)=255;elsepart(i—y+1,j—x+1)=0;endendend[L,num]=bwlabel(part,8);%如果区域中有两个以上的矩形则认为有眼睛ifnum<2eye=0;elseeye=1;endend人脸识别主程序clearall;%读入原始图像I=imread(’face3。jpg');gray=rgb2gray(I);ycbcr=rgb2ycbcr(I);%将图像转化为YCbCr空间heighth=size(gray,1);%读取图像尺寸width=size(gray,2);fori=1:heighth%利用肤色模型二值化图像forj=1:widthY=ycbcr(i,j,1);Cb=ycbcr(i,j,2);Cr=ycbcr(i,j,3);if(Y〈80)gray(i,j)=0;elseif(skin(Y,Cb,Cr)==1)%根据色彩模型进行图像二值化gray(i,j)=255;elsegray(i,j)=0;endendendendse=strel(’arbitrary’,eye(5));%二值图像形态学处理gray=imopen(gray,se);figure;imshow(gray)[L,num]=bwlabel(gray,8);%采用标记方法选出图中的白色区域stats=regionprops(L,’BoundingBox’);%度量区域属性n=1;%存放经过筛选以后得到的所有矩形块result=zeros(n,4);figure,imshow(I);holdon;fori=1:num%开始筛选特定区域box=stats(i)。BoundingBox;x=box(1);%矩形坐标Xy=box(2);%矩形坐标Yw=box(3);%矩形宽度wh=box(4);%矩形高度hratio=h/w;%宽度和高度的比例ux=uint16(x);uy=uint8(y);ifux〉1ux=ux-1;endifuy〉1uy=uy—1;endifw〈20||h<20||w*h〈400%矩形长宽的范围和矩形的面积可自行设定continueelseifratio〈2&&ratio>0.6&&findeye(gray,ux,uy,w,h)==1%根据“三庭五眼"规则高度和宽度比例应该在(0。6,2)内;result(n,:)=[uxuywh];n=n+1;endendifsize(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=[];form=1:size(