教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 专业资料 >

肤色分割人脸检测matlab代码

来源:网络收集 时间:2026-09-22
导读: 把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。 image = imread('im.jpg'); figure,imshow(image); red = double(image(:,:,1)); green = double(image(:,:,2)); blue = double(image(:,:,3)); [m n]=size(red); Y = zeros(m,n)

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

image = imread('im.jpg');

figure,imshow(image);

red = double(image(:,:,1));

green = double(image(:,:,2));

blue = double(image(:,:,3));

[m n]=size(red);

Y = zeros(m,n);

Cb = zeros(m,n);

Cr = zeros(m,n);

I = zeros(m,n);

Q = zeros(m,n);

red_gama = zeros(m,n);

green_gama = zeros(m,n);

blue_gama = zeros(m,n);

for i=1:m %gamma矫正

for j=1:n

if red(i,j)>0 && red(i,j)<90

fai=pi*red(i,j)/180;

gama=1+0.5*cos(fai);

red_gama(i,j)=255*(red(i,j)/255)^(1/gama);

elseif red(i,j)>=90 && red(i,j)<=170

fai=pi/2;

gama=1+0.5*cos(fai);

red_gama(i,j)=255*(red(i,j)/255)^(1/gama);

elseif red(i,j)>170 && red(i,j)<=255

fai=pi-pi*(255-red(i,j))/170;

gama=1+0.5*cos(fai);

red_gama(i,j)=255*(red(i,j)/255)^(1/gama);

end

if green(i,j)>0 && green(i,j)<90

fai=pi*green(i,j)/180;

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

gama=1+0.5*cos(fai);

green_gama(i,j)=255*(green(i,j)/255)^(1/gama);

elseif green(i,j)>=90 && green(i,j)<=170

fai=pi/2;

gama=1+0.5*cos(fai);

green_gama(i,j)=255*(green(i,j)/255)^(1/gama);

elseif green(i,j)>170 && green(i,j)<=255

fai=pi-pi*(255-green(i,j))/170;

gama=1+0.5*cos(fai);

green_gama(i,j)=255*(green(i,j)/255)^(1/gama);

end

if blue(i,j)>0 && blue(i,j)<90

fai=pi*blue(i,j)/180;

gama=1+0.5*cos(fai);

blue_gama(i,j)=255*(blue(i,j)/255)^(1/gama);

elseif blue(i,j)>=90 && blue(i,j)<=170

fai=pi/2;

gama=1+0.5*cos(fai);

blue_gama(i,j)=255*(blue(i,j)/255)^(1/gama);

elseif blue(i,j)>170 && blue(i,j)<=255

fai=pi-pi*(255-blue(i,j))/170;

gama=1+0.5*cos(fai);

blue_gama(i,j)=255*(blue(i,j)/255)^(1/gama);

end

end

end

for i=1:m

for j=1:n

Y(i,j)=0.2989*red_gama(i,j)+0.5866*green_gama(i,j)+0.1145*blue_gama(i,j);

Cb(i,j)=-0.1688*red_gama(i,j)-0.3312*green_gama(i,j)+0.5000*blue_gama(i

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

,j);

Cr(i,j)=0.5000*red_gama(i,j)-0.4184*green_gama(i,j)-0.0817*blue_gama(i,j);

end

end

emp=zeros(m,n);

sita=zeros(m,n);

for i=1:m

for j=1:n

if Cr(i,j)>0 &&Cb(i,j)>0

sita(i,j)=atan(abs(Cr(i,j))/abs(Cb(i,j)))*180/pi;

elseif Cr(i,j)>0 &&Cb(i,j)<0

sita(i,j)=180-atan(abs(Cr(i,j))/abs(Cb(i,j)))*180/pi;

elseif Cr(i,j)<0 &&Cb(i,j)<0

sita(i,j)=180 + atan(abs(Cr(i,j))/abs(Cb(i,j)))*180/pi;

else

sita(i,j)=0;

end

end

end

for i=1:m

for j=1:n

ifsita(i,j)>105 &&sita(i,j)<150

emp(i,j)=sita(i,j);

else

emp(i,j)=0;

Y(i,j)=0;

end

end

end

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

figure,imshow(emp); figure,imshow(uint8(Y));

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

原图像

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

分割结果

把图像从RGB空间映射到YUV空间,根据肤色模型分割出皮肤区域,可用于人脸检测。

分割结果

…… 此处隐藏:524字,全部文档内容请下载后查看。喜欢就下载吧 ……
肤色分割人脸检测matlab代码.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1759241.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)