MATLAB--数字图像处理 简单人脸识别

举报
海轰Pro 发表于 2021/08/06 00:27:42 2021/08/06
【摘要】 简单人脸识别 思路 找到图像中连通域面积最大的那块连通域。 i=imread('face.jpg'); I=rgb2gray(i); BW=im2bw(I); %利用阈值值变换法将灰度图像转换成二进制图像 figure(1); imshow(BW); %最小化背景 [n1 n2]=size(BW); r=floor(n1/10); %分成10块 行 c=fl...

简单人脸识别

思路
找到图像中连通域面积最大的那块连通域。

i=imread('face.jpg');
I=rgb2gray(i); BW=im2bw(I); %利用阈值值变换法将灰度图像转换成二进制图像
figure(1);
imshow(BW);


%最小化背景
[n1 n2]=size(BW);

r=floor(n1/10); %分成10块  行
c=floor(n2/10);%分成10块  列
x1=1;x2=r;%对应行初始化
s=r*c; %块面积

for i=1:10 y1=1;y2=c;%对应列初始化 for j=1:10 %对四周区域进行处理 if(y2<=c || y2>=9*c) || (x1==1 || x2==r*10) loc=find(BW(x1:x2,y1:y2)==0);%找到一块中像素为0的坐标 结果存在矩阵中 [o p]=size(loc); pr=o*100/s;%黑色像素所占比例 if pr<=100 BW(x1:x2,y1:y2)=0;% 该块变成全黑 end imshow(BW); end %列跳跃 就是移到下一块 y1=y1+c; y2=y2+c; end %行跳跃 也就是移到下一行 x1=x1+r; x2=x2+c;
end
figure(2)
subplot(1,2,1);
imshow(BW)
title('图像处理');
%人脸识别
L=bwlabel(BW,8);%利用bwlabel()函数得到连通域区间
BB=regionprops(L,'BoundingBox');%得到矩形框 去框住每一个连通域

%对每个矩形框进行记录,记录其左上角点,长,宽   然后转换成矩阵形式
BB1=struct2cell(BB);
BB2=cell2mat(BB1);

[s1 s2]=size(BB2);
mx=0;
for k=3:4:s2-1 p=BB2(1,k)*BB2(1,k+1); %连通域矩形面积 %找出最大连通域面积 那块连通域就是我们寻找的人脸了 if p>mx && (BB2(1,k)/BB2(1,k+1))<1.8 mx=p; j=k; end
end
subplot(1,2,2);
title('人脸识别');
imshow(I);
hold on;
%画出人脸区域
rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j)],'EdgeColor','r')

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

结果
在这里插入图片描述

文章来源: haihong.blog.csdn.net,作者:海轰Pro,版权归原作者所有,如需转载,请联系作者。

原文链接:haihong.blog.csdn.net/article/details/102526467

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。