完整版基于matlab程序实现人脸识别Word文档格式.docx
- 文档编号:20645227
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:12
- 大小:277.48KB
完整版基于matlab程序实现人脸识别Word文档格式.docx
《完整版基于matlab程序实现人脸识别Word文档格式.docx》由会员分享,可在线阅读,更多相关《完整版基于matlab程序实现人脸识别Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
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;
否则为肤色,返回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)第三幅图
人脸标定
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 基于 matlab 程序 实现 识别