基于matlab的简单人脸识别程序代码.docx
- 文档编号:236049
- 上传时间:2022-10-07
- 格式:DOCX
- 页数:3
- 大小:220.43KB
基于matlab的简单人脸识别程序代码.docx
《基于matlab的简单人脸识别程序代码.docx》由会员分享,可在线阅读,更多相关《基于matlab的简单人脸识别程序代码.docx(3页珍藏版)》请在冰豆网上搜索。
基于matlab的简单人脸识别实例
简介
人脸识别特指利用分析比较人脸视觉特征信息进行身份鉴别的计算机技术。
人脸识别是一项热门的计算机技术研究领域,在生活中许多领域都有着重要应
用。
内容
这里通过对人脸图像打上网格,对区域块图像做二值分析,通过像素比例来
做处理。
进而得到人脸区域。
代码
%Bylyqmath
%DLUTSchoolofMathematicalSciences
%BLOG:
clc;clearall;closeall;
%载入图像
Img=imread('face.jpg');
ifndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
BW=im2bw(I,graythresh(I));%二值化
figure;
subplot(2,2,1);imshow(Img);
title('原图像','FontWeight','Bold');
subplot(2,2,2);imshow(Img);
title('网格标记图像','FontWeight','Bold');
holdon;
[xt,yt]=meshgrid(round(linspace(1,size(I,1),10)),...
round(linspace(1,size(I,2),10)));
mesh(yt,xt,zeros(size(xt)),'FaceColor',...
'None','LineWidth',3,...
'EdgeColor','r');
subplot(2,2,3);imshow(BW);
title('二值图像','FontWeight','Bold');
[n1,n2]=size(BW);
r=floor(n1/10);%分成10块,行
c=floor(n2/10);%分成10块,列
x1=1;x2=r;%对应行初始化
s=r*c;%块面积
fori=1:
10
y1=1;y2=c;%对应列初始化
forj=1:
10
if(y2<=c||y2>=9*c)||(x1==1||x2==r*10)
%如果是在四周区域
loc=find(BW(x1:
x2,y1:
y2)==0);
[p,q]=size(loc);
pr=p/s*100;%黑色像素所占的比例数
ifpr<=100
BW(x1:
x2,y1:
y2)=0;
end
end
y1=y1+c;%列跳跃
y2=y2+c;%列跳跃
end
x1=x1+r;%行跳跃
x2=x2+r;%行跳跃
end
[L,num]=bwlabel(BW,8);%区域标记
stats=regionprops(L,'BoundingBox');%得到包围矩形框
Bd=cat(1,stats.BoundingBox);
[s1,s2]=size(Bd);
mx=0;
fork=1:
s1
p=Bd(k,3)*Bd(k,4);%宽*高
ifp>mx&&(Bd(k,3)/Bd(k,4))<1.8
%如果满足面积块大,而且宽/高<1.8
mx=p;
j=k;
end
end
subplot(2,2,4);imshow(I);holdon;
rectangle('Position',Bd(j,:
),...
'EdgeColor','r','LineWidth',3);
title('标记图像','FontWeight','Bold');
结果:
结论
通过对人脸图像做二值化,统计像素比例信息。
得到人脸识别结果。
当然,
这种方式处理并不稳定,但基于图像网格分析做处理,进而得到分析结果也是一
种经典的处理方式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 简单 识别 程序代码