基于肤色和眼睛定位的人脸检测算法——MATLAB实现.doc

基于肤色和眼睛定位的人脸检测算法——MATLAB实现.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本文提出了一种基于肤色信息和眼睛粗略定位的人脸检测算法。该算法先对Anil K.Jain 的Cb、Cr椭圆聚类方法进行了改进,用改进的算法进行肤色提取,经过肤色区域的分析,对人脸区域进行预检测,确定人脸可能区域,然后再根据眼睛的粗略定位进一步确定人脸区域。一、肤色分析(skin.m) Anil K.Jain提出的基于YCbCr颜色空间的肤色模型,根据当前点的Cb Cr值判断是否为肤色。 1% Anil K.Jain提出的基于YCbCr颜色空间的肤色模型 2% 根据当前点的Cb Cr值判断是否为肤色 3function result = skin(Y,Cb,Cr) 4% 参数 5 a = 25.39; 6 b = 14.03; 7ecx = 1.60; 8ecy = 2.41; 9sita = 2.53; 10cx = 109.38; 11cy = 152.02; 12xishu = [cos(sita) sin(sita);-sin(sita) cos(sita)]; 13% 如果亮度大于230,则将长短轴同时扩大为原来的1.1倍 14if(Y 230) 15 a = 1.1*a; 16 b = 1.1*b; 17end 18% 根据公式进行计算 19Cb = double(Cb); 20Cr = double(Cr); 21t = [(Cb-cx);(Cr-cy)]; 22temp = xishu*t; 23value = (temp(1) - ecx)^2/a^2 + (temp(2) - ecy)^2/b^2; 24% 大于1则不是肤色,返回0;否则为肤色,返回1 25if value 1 26result = 0; 27else 28result = 1; 29end 二、眼睛粗略定位(findeye.m) 30% 判断二值图像中是否含有可能是眼睛的块 31% bImage----二值图像 32% x---------矩形左上角顶点X坐标 33% y---------矩形左上角顶点Y坐标 34% w---------矩形宽度 35% h---------矩形长度 36% 如果有则返回值eye等于1,否则为0 37function eye = findeye(bImage,x,y,w,h) 38% 根据矩形相关属性得到二值图像中矩形区域中的数据39% 存放矩形区域二值图像信息 40part = zeros(h,w); 41% 二值化 42for i = y:(y+h) 43for j = x:(x+w) 44if bImage(i,j) == 0 45part(i-y+1,j-x+1) = 255; 46else 47part(i-y+1,j-x+1) = 0; 48end 49end 50end 51[L,num] = bwlabel(part,8); 52% 如果区域中有两个以上的矩形则认为有眼睛 53if num 2 54eye = 0; 55else 56eye = 1; 57end 三、人脸检测(facedetection.m) 58function facedetection(img_name) 59% 读取RGB图像 60I = imread(img_name); 61% 转换为灰度图像 62gray = rgb2gray(I); 63% 将图像转化为YCbCr颜色空间 64YCbCr = rgb2ycbcr(I); 65% 获得图像宽度和高度 66heigth = size(gray,1); 67width = size(gray,2); 68% 根据肤色模型将图像二值化 69for i = 1:heigth 70for j = 1:width 71Y = YCbCr(i,j,1); 72Cb = YCbCr(i,j,2); 73Cr = YCbCr(i,j,3); 74if(Y 80) 75gray(i,j) = 0; 76else 77if(skin(Y,Cb,Cr) == 1) 78gray(i,j) = 255; 79else 80gray(i,j) = 0; 81end 82end 83end 84end 85% 二值图像形态学处理 86SE=strel(arbitrary,eye(5)); 87%gray = bwmorph(gray,erode); 88% imopen先腐蚀再膨胀 89gray = imopen(gray,SE); 90% imclose先膨胀再腐蚀 91%gray = imclos

文档评论(0)

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

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

1亿VIP精品文档

相关文档