人脸检测改进模型
1. 读取RGB图像I = imread(img_name);并对图像运用色彩均衡算法进行光照调整。I=GrayWorld(I);%%%图像光照调整
2. % 转换为灰度图像gray = rgb2gray(I);% 将图像转化为YCbCr颜色空间YCbCr = rgb2ycbcr(I);
3. 根据肤色模型将图像二值化再进行形态学处理。膨胀之后二次腐蚀,再去除边缘多余区域,填补小空洞。
以下给出关键代码。该模型在图像背景简单,图像中人脸数较少时表现较好。还有很多可改进之处,欢迎交流。
肤色模型,GRAYWORLD,寻找眼部区域 function 可参考相关资料,或者私信我
function detection(I)
% 读取RGB图像
%I = imread(img_name);
I=GrayWorld(I);%%%图像光照调整
% 转换为灰度图像
gray = rgb2gray(I);
% 将图像转化为YCbCr颜色空间
YCbCr = rgb2ycbcr(I);
% 获得图像宽度和高度
heigth = size(gray,1);
width = size(gray,2);
% 根据肤色模型将图像二值化
for i = 1:heigth
for j = 1:width
Y = YCbCr(i,j,1);
Cb = YCbCr(i,j,2);
Cr = YCbCr(i,j,3);
if(Y < 80)
gray(i,j) = 0;
else
if(skin(Y,Cb,Cr) == 1)%肤色模型
gray(i,j) = 255;
else
gray(i,j) = 0;
end
end
end
end
% 二值图像形态学处理