PPT:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像

思想:

先转换为YCbCr图像,利用人体肤色特征。CR属性。

转换肤色为255,非肤色为0.这样就生成了一个二值图。

会有小噪声干扰,直接腐蚀小对象腐蚀掉就好啦。

再利用find分割提取。就可以分割出来人的脸啦。

代码:

clc,clear,close all;
f=imread('h1.jpg');figure,imshow(f);
fycbcr=rgb2ycbcr(f);
cr = fycbcr(:,:,3);figure,imshow(cr);
cr(cr>140&cr<160)=255;
cr(cr~=255)=0;
figure,imshow(cr);
ba=bwareaopen(cr,500);
figure,imshow(ba);
[r,c]=find(ba);
rr=f(min(r):max(r),min(c):max(c),:);
figure,imshow(rr);

结果:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像_02

步骤:

原图:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像_03

YCBCR提取CR:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像_04

CR肤色范围变为255,其他变为0:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像_05

结果:

MATLAB利用YCBCR切割出人脸头像_MATLAB利用YCBCR切割出人脸头像_06

OK