- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 的去
您可能关注的文档
最近下载
- 宁波大学2019-2020学年《实验心理学》期末考试试卷(B卷)含参考答案.docx
- 高空吊篮安全技术规范最新版.docx VIP
- 护理礼仪期末考试试题.docx VIP
- 2023年北京市第一次普通高中学业水平合格性考试政治试题及答案.docx VIP
- 街道人大工委议政代表会制度工作推进情况汇报.docx VIP
- 高二下学期期中生物试题(含答案) (2).pdf VIP
- 《解剖学基础》课件——上肢骨及其连接.pptx VIP
- IT项目经理年终述职PPT.pptx
- 装配式干式地暖模块系统应用技术规程.pdf VIP
- 2022年广东白云学院数据科学与大数据技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
文档评论(0)