网站大量收购闲置独家精品文档,联系QQ:2885784924

matlab编程--基于肤色分割和匹配的人脸识别.pdf

matlab编程--基于肤色分割和匹配的人脸识别.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
matlab编程--基于肤色分割和匹配的人脸识别

基于肤色分割和匹配的人脸识别 1.将RGB 空间转换为YCbCr 空间: 为了把人脸区域从非人脸区域分割出来,需要使用适合不同肤色和不同光照条件的可 靠的肤色模型。 常用的RGB 表示方法不适合于皮肤模型,在RGB 空间,三基色( r、g、b)不仅代表 颜色,还表示了亮度。由于周围环境光照的改变,亮度可能使人脸的检测变得更加复杂, 在皮肤的分割过程中是不可靠的。为利用肤色在色度空间的聚类性,需要把颜色表达式中 的色度信息与亮度信息分开,将R、G、B 转换为色度与亮度分开的色彩表达空间可以达 到这个目的。颜色空间的转换常用的颜色模型主要有:YCrCb、HSV、YIQ 等。在本文的 实验中选用YCrCb 空间作为肤色分布统计的映射空间,该空间的优点是受亮度变化的影 响较小,而且是两维独立分布,能较好地限制肤色分布区域。 使用函数为:YCBCR = rgb2ycbcr(RGB); 2. 将彩色图像转换为灰度图像,实验证明,不同的肤色具有相同的2D 模型 G(m,V^2)。灰度值对应属于皮肤区域的可能性,同过设定门限,就可以转换为二值图 像,1,0 分别表示皮肤和非皮肤区域。 皮肤颜色在ycbcr 色度空间的分布范围为:100=cb=127,138=cr=170,可以将 彩色图像转换为二值图像: f_cb=f(:,:,2); f_cr=f(:,:,3); f = (f_cb=100) (f_cb=127) (f_cr=138) (f_cr=170) ; figure; imshow(f); 3.转换后不可避免出现了噪声,有背景的噪声影响,以及人的衣服和裤子引起的噪声 点,使用开闭运算的方法消除噪声: se=strel(square,3); f=imopen(f,se); f=imclose(f,se); figure(2),imshow(f); 4.对图像做填孔处理 f=imfill(f,holes); figure(3),imshow(f); 5.对图像进行重构,即利用重构进行开运算,可准确恢复腐蚀后的对象形状. fe=imerode(f,ones(8,7)); fo=imopen(f,ones(8,7)); f=imreconstruct(fe,f); figure(4),imshow(f); 6.相关匹配,实际作用效果不大,可以注释掉. %w=ones(3); %f=imfilter(f,w); %figure(5),imshow(f); % [M,N]=size(f); % f=fft2(f); % w=conj(fft2(w,M,N)); % g=real(ifft2(w.*f)); % gs=gscale(g); % figure,imshow(gs); 7.人脸候选区筛选时,由于头部部分重合,以及头部与其他部分,例如衣服等的连接,对筛选造 成了困难,故应先利用闭运算操作,断开连接,再进行处理. se1=strel(square,8); f=imerode(f,se1); f=imdilate(f,se1); figure(6),imshow(f); 8. 利用人脸候选区筛选,进一步确定人脸区域(判断规则如下): (1)若目标高宽比小于0.8 而大于2.0,则认为不是人脸区域,删除此区域。 (2)区域面积过大或过小,认为不是人脸区,删除此区域。 矩形面积area_sq = 目标区长度*宽度, 目标区面积为area,若area / area_sq 0.6,则 认为不是人脸区域。 其中条件1 限定了要检测的人脸区域的比例大小,排除了一些颜色类似皮肤但长宽不符合 要求的区域。(如颜色与皮肤接近的衣物) 条件2 排除一些不规则但色调和皮肤接近的物体,同时也可排除人体其他的非脸部区域, 如四肢等。 [L,num]=bwlabeln(f,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_temp0.8)|(r_temp/c_temp2)|temp(1)2000|temp(1)200 |ratio0.6 %脸部区域200 的去

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档