2021—2022学年第一学期寒假学习记录21
2022.01.21,今天是服务外包竞赛:随便拿个奖队的项目进行的第二十一天,今天根据项目要求继续学习matlab数字图像处理
人脸识别作为一项新兴的科学研究项目,有着广泛的应用前景,而且随着计算机技术的 更新发展,它的科学研究价值也越发凸显。经过几十年的研发探讨,世界各大研究结构的研 发人员的不断努力下,人脸识别技术一已取得丰硕的成果,可在一定限制条件下完成人脸的 自动识别。这些成果的取得更促进了人们对人脸识别这一课题的深入研究。 在电子商务飞速发展的今天,人脸识别系统的范畴一不足以涵括人脸识别的应用范围, 在数字图像处理、视频领域、基于内容的检索等方面有着重要的应用价值。。 二. 设计的内容及要求 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].机械工业出版社,2006:2. [2] 王爱民,沈兰荪.图像分割研究综述[J].测控技术,2000,19(5):1-5. [3] 张德丰.详解 MATLAB 数字图像处理[M].北京:电子工业出版社,2010,7:249. [4] 杨杰.数字图像处理及 MATLAB 实现[M].北京:电子工业出版社,2010,2:149-150. [5] 张洪刚,陈光,郭军编著.图像处理与识别[M].北京:北京邮电大学出版社,2006: 102-103. [6] 韩晓军.数字图像处理技术与应用[M].北京:电子工业出版社,2009,7:38. [7] 张化光,刘鑫蕊,孙秋野编著.MATLAB/SIMULINK 实用教程[M].北京:人民邮电出 版社,2009,3:235. [8] 何东健.数字图像处理[M].西安:西安电子科技大学出版社,2008,5:86. [9] 刘刚.MATLAB 数字图像处理[M].北京:机械工业出版社,2010,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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!