资源描述
机器学习概述课程设计报告
题目:MATLAB人脸辨认系统
姓 名:**
学 号:**
专 业:**
时 间:/8/7
目 录
一、 课程设计目
二、 设计内容与规定
三、 详细设计
四、 课程设计总结
五、 参照文献
一. 课程设计目
人脸辨认作为一项新兴科学研究项目,有着广泛应用前景,并且随着计算机技术更新发展,它科学研究价值也越发凸显。通过几十年研发探讨,世界各大研究构造研发人员不断努力下,人脸辨认技术一已获得丰硕成果,可在一定限制条件下完毕人脸自动辨认。这些成果获得更增进了人们对人脸辨认这一课题进一步研究。
在电子商务飞速发展今天,人脸辨认系统范畴一局限性以涵括人脸辨认应用范畴,在数字图像解决、视频领域、基于内容检索等方面有着重要应用价值。。
二. 设计内容及规定
1、选取KNN,聚类或SVM办法中一种或其她机器学习办法一种进行课程设计
2、规定能完毕详细辨认任务:如 图像分割、语音辨认、人脸辨认
3、规定辨认对象中有自己生活元素,例如图像中涉及学校图片或语音时本人语音等。
三. 详细设计
YCbCr空间——>灰度图像转换 ——>噪声消除 ——>图像填孔 ——>图像重构 ——>人脸区域拟定 ——>边沿检测
(原图-涉及个人隐私,未呈现原图)
(YCbCr空间转换)
(噪声消除)
(图像填孔)
(图像重构)
(人脸区域拟定)
(涉及个人隐私)
四. 课程设计总结
通过三天学习以及课后学习,我运用SVM算法进行人脸辨认,由于光照强度不同、人脸肤色不同、图片背景不同往往导致每张图片都具备自身特色,将人脸区域从背景、衣着、发型等非人类区域中分割出来。普通使用RGB图片不适合于建立人脸皮肤模型,由于在RGB空间中,使用三基色(r,g,b)表达图片亮度以及颜色。在不同环境下光照条件变化,很难将肤色点从非肤色点中分离出来,如果在RGB图像上进行解决,将产生离散肤色点,图片中间嵌有诸多非肤色点,提高了人脸检测难度,容易产生不可靠肤色分割。解决办法是隔离颜色表达式中亮度信息与色度信息,充分运用色度空间中肤色所示出来聚类性。为此需要创造这样一种色彩空间,这个空间能把R、G、B所代表色度信息与亮度信息分开表达。色彩空间惯用转换颜色模型重要有:YIQ、YCbCr、HSV等。这里,采用YCrCb色彩空间作为报告设计空间。通过颜色转换后大大缩减了人脸搜索范畴,为SVM算法提供更有效办法。本次课程设计,我学会了诸多有用算法,并可以初步实现,理解机器语言过程以及理解MATLAB强大功能。
五. 参照文献
[1] 姚敏.数字图像解决[M].机械工业出版社,:2.
[2] 王爱民,沈兰荪.图像分割研究综述[J].测控技术,,19(5):1-5.
[3] 张德丰.详解MATLAB数字图像解决[M].北京:电子工业出版社,,7:249.
[4] 杨杰.数字图像解决及MATLAB实现[M].北京:电子工业出版社,,2:149-150.
[5] 张洪刚,陈光,郭军编著.图像解决与辨认[M].北京:北京邮电大学出版社,:102-103.
[6] 韩晓军.数字图像解决技术与应用[M].北京:电子工业出版社,,7:38.
[7] 张化光,刘鑫蕊,孙秋野编著.MATLAB/SIMULINK实用教程[M].北京:人民邮电出版社,,3:235.
[8] 何东健.数字图像解决[M].西安:西安电子科技大学出版社,,5:86.
[9] 刘刚.MATLAB数字图像解决[M].北京:机械工业出版社,,5:199-200.
附录:程序
sum=0;
iptsetpref('ImshowBorder','tight')%%%设立图像解决工具箱参数
f=imread('333.jpg');
Ori_Face=f;
copy=f;
img=f;
f=rgb2ycbcr(f);%rgb空间转换为ycbcr空间
f_cb=f(:,:,2);
f_cr=f(:,:,3);
f= (f_cb>=100) & (f_cb<=127) & (f_cr>=138) &(f_cr<=170) ;%皮肤颜色在ycbcr色度空间分布范畴为:100<=cb<=127,138<=cr<=170
figure(1);
imshow(f);
se=strel('square',3);%%构建一种3*3单位矩阵作为构造元素
f=imopen(f,se);%%图片开运算
f=imclose(f,se);%%图片闭运算
figure(2),imshow(f);%%消除噪声
f=imfill(f,'holes');%%%填孔解决
figure(3),imshow(f);
se1=strel('square',8);
f=imerode(f,se1);
f=imdilate(f,se1);
figure(4),imshow(f);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%区域连通
[L,num]=bwlabeln(f,4);设定操作邻域类型为4-领域
for i=1:num;
[r,c]=find(L==i);
r_temp=max(r)-min(r);
c_temp=max(c)-min(c);
temp=size(r);
sum=sum+temp(1);
area_sq=r_temp*c_temp;
area=size(find(L==i),1);
ratio=area/area_sq;
if (r_temp/c_temp<1.54)|(r_temp/c_temp>2.4)|temp(1)<14000|ratio<0.55
%运用脸部宽长比大概上下限(1.54-2.4)来拟定一种人脸范畴.
%脸部区域<14000去掉,普通为手或其她干扰.
%矩形面积area_sq=目的区长度*宽度,目的区面积为area,若area/area_sq<0.55,以为不是人脸区,删除之.
for j=1:temp(1);
L(r(j),c(j))=0;
end
else
continue;
end
end
L=bwperim(L,8);%边沿检测,检测出人脸边沿区域
L=uint8(L);
z=find(L(:)>0);L(z)=255;
figure(5),imshow(L);
L_r=L;L_g=L;L_b=L;
L_rgb=cat(3,L_r,L_g,L_b);%在原图上加框
img1_r=min(L_r+img(:,:,1),255);
img1_g=min(L_g+img(:,:,2),255);
img1_b=min(L_b+img(:,:,3),255);
img1=cat(3,img1_r,img1_g,img1_b);
figure(6),imshow(img1);
展开阅读全文