人脸检测详细过程Word文件下载.docx

上传人:b****4 文档编号:16039181 上传时间:2022-11-17 格式:DOCX 页数:8 大小:17.76KB
下载 相关 举报
人脸检测详细过程Word文件下载.docx_第1页
第1页 / 共8页
人脸检测详细过程Word文件下载.docx_第2页
第2页 / 共8页
人脸检测详细过程Word文件下载.docx_第3页
第3页 / 共8页
人脸检测详细过程Word文件下载.docx_第4页
第4页 / 共8页
人脸检测详细过程Word文件下载.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

人脸检测详细过程Word文件下载.docx

《人脸检测详细过程Word文件下载.docx》由会员分享,可在线阅读,更多相关《人脸检测详细过程Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。

人脸检测详细过程Word文件下载.docx

,:

1)));

im=zeros(size(I(:

face=zeros(size(I(:

cb=0.148*I(:

1)-0.291*I(:

2)+0.439*I(:

3)+128;

cr=0.439*I(:

1)-0.368*I(:

2)-0.071*I(:

[w,h]=size(I(:

1));

fori=1:

w

forj=1:

h

if140<

=cr(i,j)&

cr(i,j)<

=165&

140<

=cb(i,j)&

cb(i,j)<

=195&

0.01<

=hue(i,j)&

hue(i,j)<

=0.1

segment(i,j)=1;

else

segment(i,j)=0;

end

end

end

im(:

1)=I(:

1).*segment(:

2)=I(:

2).*segment(:

3)=I(:

3).*segment(:

skin_region=segment;

bw_face=rgb2gray(im);

bw_face=bwboundaries(bw_face);

bw_face_sz=size(bw_face);

fork=1:

bw_face_sz

(1)

bnd=bw_face{k};

rb2=double(max(bnd));

lt2=double(min(bnd));

if(max(rb2-lt2)>

20)

%rectangle('

Position'

[lt2

(2)左列,lt2

(1)上行,rb2

(2)-lt2

(2)宽,rb2

(1)-lt2

(1)高],'

EdgeColor'

'

g'

%画矩形

%rectangle('

[lt2

(2),lt2

(1),rb2

(2)-lt2

(2),rb2

(1)-lt2

(1)],'

j=lt2

(2):

rb2

(2);

M(lt2

(1),j,1)=0;

M(rb2

(1),j,1)=0;

i=lt2

(1):

rb2

(1);

M(i,lt2

(2),1)=0;

M(i,rb2

(2),1)=0;

M(lt2

(1),j,2)=200;

M(rb2

(1),j,2)=200;

M(i,lt2

(2),2)=200;

M(i,rb2

(2),2)=200;

M(lt2

(1),j,3)=140;

M(rb2

(1),j,3)=140;

M(i,lt2

(2),3)=140;

M(i,rb2

(2),3)=140;

aviobj=addframe(aviobj,uint8(M));

end%总循环结束

aviobj=close(aviobj);

mov=aviread('

movie(mov);

functionresult=skin(Y,Cb,Cr)

%参数

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

%根据公式进行计算

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;

result=1;

1functionfacedetection(img_name)

2%读取RGB图像

3I=imread(img_name);

4%转换为灰度图像

5gray=rgb2gray(I);

6%将图像转化为YCbCr颜色空间

7YCbCr=rgb2ycbcr(I);

8%获得图像宽度和高度

9heigth=size(gray,1);

10width=size(gray,2);

11%根据肤色模型将图像二值化

12fori=1:

heigth

13forj=1:

width

14Y=YCbCr(i,j,1);

15Cb=YCbCr(i,j,2);

16Cr=YCbCr(i,j,3);

17if(Y<

80)

18gray(i,j)=0;

19else

20if(skin(Y,Cb,Cr)==1)

21gray(i,j)=255;

22else

23gray(i,j)=0;

24end

25end

26end

27end

28%二值图像形态学处理

29SE=strel('

arbitrary'

eye(5));

30%gray=bwmorph(gray,'

erode'

31%imopen先腐蚀再膨胀

32gray=imopen(gray,SE);

33%imclose先膨胀再腐蚀

34%gray=imclose(gray,SE);

35imshow(gray);

36%取出图片中所有包含白色区域的最小矩形

37[L,num]=bwlabel(gray,8);

38STATS=regionprops(L,'

BoundingBox'

39%存放经过筛选以后得到的所有矩形块

40n=1;

41result=zeros(n,4);

42figure,imshow(I);

43holdon;

44fori=1:

num

45box=STATS(i).BoundingBox;

46x=box

(1);

%矩形坐标x

47y=box

(2);

%矩形坐标y

48w=box(3);

%矩形宽度w

49h=box(4);

%矩形高度h

50%宽度和高度的比例

51ratio=h/w;

52ux=uint8(x);

53uy=uint8(y);

54ifux>

55ux=ux-1;

56end

57ifuy>

58uy=uy-1;

59end

60%可能是人脸区域的矩形应满足以下条件:

61%1、高度和宽度必须都大于20,且矩形面积大于400

62%2、高度和宽度比率应该在范围(0.6,2)内

63%3、函数findeye返回值为1

64ifw<

20||h<

20||w*h<

400

65continue

66elseifratio<

2&

&

ratio>

0.6&

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

67%记录可能为人脸的矩形区域

68result(n,:

)=[uxuywh];

69n=n+1;

70end

71end

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

73ifsize(result,1)==1&

result(1,1)>

0

74rectangle('

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

r'

75else

76%如果满足条件的矩形区域大于1则再根据其他信息进行筛选

77form=1:

size(result,1)

78m1=result(m,1);

79m2=result(m,2);

80m3=result(m,3);

81m4=result(m,4);

82%标记最终的人脸区域

83ifm1+m3<

width&

m2+m4<

heigth

84rectangle('

[m1,m2,m3,m4],'

85end

86end

87end

四、主函数(main.m)

88%清理窗口

89closeall

90clearall

91clc

92%输入图像名字

93img_name=input('

请输入图像名字(图像必须为RGB图像,输入0结束):

'

s'

94%当输入0时结束

95while~strcmp(img_name,'

0'

96%进行人脸识别

97facedetection(img_name);

98img_name=input('

99end

R187G131B68

二、眼睛粗略定位(findeye.m)

1%判断二值图像中是否含有可能是眼睛的块

2%bImage----二值图像

3%x---------矩形左上角顶点X坐标

4%y---------矩形左上角顶点Y坐标

5%w---------矩形宽度

6%h---------矩形长度

7%如果有则返回值eye等于1,否则为0

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

9%根据矩

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

当前位置:首页 > 高中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1