MATLAB处理人像素材

clear,clc,close all;
Image=imread('motheranddaughter.jpg');%读入图片数据
figure,imshow(Image),title('原图');%显示原图窗口
r=double(Image(:,:,1));%红绿蓝三通道,双精度型三阶矩阵
g=double(Image(:,:,2));
b=double(Image(:,:,3));
[N,M]=size(r);
miu=[117.4361 156.5599]';
sigma=[160.1301 12.1430;12.1430 299.4574];
cbcr=zeros(2,1);
SkinCbCrG=zeros(N,M);
SkinRGB=zeros(N,M);
SkinHSV=zeros(N,M);
SkinCbCr=zeros(N,M);
thresh=0.35;
for i=1:M%外层循环
    for j=1:N
       R=r(j,i);
       G=g(j,i);
       B=b(j,i);
       if (R>95 && G>40 && B>20 && (R-G)>15 && R-B>15) || ...
           (R>220 && G>210 && B>170 && R-B<=15 && R>B && G>B)
           SkinRGB(j,i)=1;%&&并且,||或者
       end
       
       maxRGB=max(max(R,G),B);%RGB最大范围,R和G中最大~B
       minRGB=min(min(R,G),B);
       C=maxRGB-minRGB;
       V=maxRGB;
       if V==0
           S=0;
       else
           S=C/V;
       end
       if maxRGB==R
           H=60*mod((G-B)/C,6);
       elseif maxRGB==G
           H=60*((B-R)/C+2);
       elseif maxRGB==B
           H=60*((R-G)/C+4);
       end
       if ((H>=0 && H<=25) || (H>=335 && H<=360)) && (S>=0.2 && S<=0.6) && V>=0.4
           SkinHSV(j,i)=1;
       end
       
       R=R/255;G=G/255;B=B/255;
       Cb=224*(-0.1687*R-0.3313*G+0.5*B)+128;
       Cr=224*(0.5*R-0.4187*G-0.0813*B)+128;
       if Cb>=77 && Cb<=127 && Cr>=133 && Cr<=173
            SkinCbCr(j,i)=1;
       end
       
       cbcr= [Cb Cr]';
       p=exp(-0.5*((cbcr-miu)')*(inv(sigma))*(cbcr-miu));
       if p>thresh
           SkinCbCrG(j,i)=1;
       end
    end
end
%循环里处理完数据后进行输出
figure,imshow(SkinRGB),title('RGB空间肤色检测');
figure,imshow(SkinHSV),title('HSV空间肤色检测');
figure,imshow(SkinCbCr),title('YCbCr空间范围肤色检测');
figure,imshow(SkinCbCrG),title('YCbCr空间高斯模型肤色检测');
imwrite(SkinRGB,'skinrgb3.jpg');
imwrite(SkinHSV,'skinhsv3.jpg');
imwrite(SkinCbCr,'skincbcr3.jpg');
imwrite(SkinCbCrG,'skinCbCrG3.jpg');

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值