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