基于matlab程序实现人脸识别Word下载.docx

上传人:b****6 文档编号:8607161 上传时间:2023-05-12 格式:DOCX 页数:12 大小:277.58KB
下载 相关 举报
基于matlab程序实现人脸识别Word下载.docx_第1页
第1页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第2页
第2页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第3页
第3页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第4页
第4页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第5页
第5页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第6页
第6页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第7页
第7页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第8页
第8页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第9页
第9页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第10页
第10页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第11页
第11页 / 共12页
基于matlab程序实现人脸识别Word下载.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于matlab程序实现人脸识别Word下载.docx

《基于matlab程序实现人脸识别Word下载.docx》由会员分享,可在线阅读,更多相关《基于matlab程序实现人脸识别Word下载.docx(12页珍藏版)》请在冰点文库上搜索。

基于matlab程序实现人脸识别Word下载.docx

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;

否则为肤色,返回1

ifvalue>

1

result=0;

else

result=1;

(2)人脸的确认程序

functioneye=findeye(bImage,x,y,w,h)

%FINDEYESummaryofthisfunctiongoeshere

part=zeros(h,w);

%二值化

fori=y:

(y+h)

forj=x:

(x+w)

ifbImage(i,j)==0

part(i-y+1,j-x+1)=255;

else

part(i-y+1,j-x+1)=0;

end

[L,num]=bwlabel(part,8);

%如果区域中有两个以上的矩形则认为有眼睛

ifnum<

2

eye=0;

eye=1;

(3)人脸识别主程序

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:

width

Y=ycbcr(i,j,1);

Cb=ycbcr(i,j,2);

Cr=ycbcr(i,j,3);

if(Y<

80)

gray(i,j)=0;

if(skin(Y,Cb,Cr)==1)%根据色彩模型进行图像二值化

gray(i,j)=255;

se=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;

num%开始筛选特定区域

box=stats(i).BoundingBox;

x=box

(1);

%矩形坐标X

y=box

(2);

%矩形坐标Y

w=box(3);

%矩形宽度w

h=box(4);

%矩形高度h

ratio=h/w;

%宽度和高度的比例

ux=uint16(x);

uy=uint8(y);

ifux>

ux=ux-1;

ifuy>

uy=uy-1;

ifw<

20||h<

20||w*h<

400%矩形长宽的范围和矩形的面积可自行设定

continue

elseifratio<

2&

&

ratio>

0.6&

findeye(gray,ux,uy,w,h)==1

%根据“三庭五眼”规则高度和宽度比例应该在(0.6,2)内;

result(n,:

)=[uxuywh];

n=n+1;

ifsize(result,1)==1&

result(1,1)>

0%对可能是人脸的区域进行标记

rectangle('

Position'

[result(1,1),result(1,2),result(1,3),result(1,4)],'

EdgeColor'

'

r'

%如果满足条件的矩形区域大于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

a=a+1;

arr1(a)=m3;

arr2(a)=m4;

%rectangle('

[m1,m2,m3,m4],'

%得到人脸长度和宽度的最小区域

arr3=[];

arr3=sort(arr1,'

ascend'

arr4=[];

arr4=sort(arr2,'

%根据得到的数据标定最终的人脸区域

%最终标定人脸

m3=arr3

(1);

m4=arr4

(1);

(4)程序说明

人脸识别程序主要包含三个程序模块,人脸识别主程序由三部分构成。

第一部分:

将图像转化为YCbCr颜色空间,根据色彩模型进行图像二值化,二值化图像进行形态学处理、开运算,显示二值图像;

第二部分:

采用标记方法选取出图中的白色区域,度量区域属性,存放经过筛选以后得到的所有矩形块,筛选特定区域,存储人脸的矩形区域;

第三部分:

对于所有人脸的矩形区域,如果满足条件的矩形区域大于1则再根据其他信息进行筛选,标记最终的人脸区域。

图像分割程序中,利用肤色可以较为精确的将人脸和非人脸区域分割开来,得到较为精确的二值化图像。

人脸的确认程序,以存储的所有矩形区域作为研究对象,当区域内有眼睛存在时,才认为此区域为人脸区域

3运行结果

(1)第一幅图

原始图像

肤色分割的二值化图像

人脸识别图像

(2)第二幅图

(3)第三幅图

人脸标定

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2