www.gusucode.com > 关于海航matlab和lingo的训练题 > skin.m
%基于肤色和眼睛定位的人脸检测算法——MATLAB实现【转】 %Admin %2011年11月13日 %本文提出了一种基于肤色信息和眼睛粗略定位的人脸检测算法。该算法先对 Anil K.Jain %的 Cb、Cr椭圆聚类办法进行了改进,用改进的算法进行肤色提取,经过肤色区域的解析, %对人脸区域进行预检测,断定人脸可能区域,然后再按照眼睛的粗略定位进一步断定人脸区域。 %一、肤色解析(skin.m) %Anil K.Jain提出的基于YCbCr色彩空间的肤色模型,按照当前点的Cb Cr值断定是否为肤色。 % Anil K.Jain提出的基于YCbCr色彩空间的肤色模型 % 按照当前点的Cb Cr值断定是否为肤色 function result=skin(Y,Cb,Cr) % 参数 a=25.39; b=14.03; ecx=1.60; ecy=2.41; sita=2.53; cx=109.38; cy=152.02; xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; % 若是亮度大于230,则将长短轴同时扩大为本来的1.1倍 if(Y>230) a=1.1*a; b=1.1*b; end % 按照公式进行策画 Cb=double(Cb); Cr=double(Cr); t=[(Cb-cx);(Cr-cy)]; temp=xishu*t; value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2; % 大于1则不是肤色,返回0;不然为肤色,返回1 if value>1 result=0; else result=1; end