资源简介

MATLAB肤色分割程序 将照片转换成黑白二色 以区分皮肤以及其他

资源截图

代码片段和文件信息

function [ result ] = skin( YCbCr )
%Anil K.Jain提出的基于YCbCr颜色空间的肤色模型 
%根据当前点的Y、Cb、Cr值判断是否为肤色 result=1表示该点为肤色,result=0表示不是
%参考论文Hsu Rein-Lien Anil K Jain. Face detection in color images. 
%IEEE Tran on Pattern Analysis and Machine Intelligence 24 (5): 696-706 Dec 2002.
%分段域值Kl、Kh 为常量,取值为Ki =125、Kh =188;Ymin、Ymax是由实验数据得到的
%肤色聚类区域中Y分量的最小和最大值,Ymin =16、Ymax =235。
%WCb、WCr为Ki、Kh间的肤色聚类区域宽度WLCb、WLCr、WHCb、WHCr均为常量
Kl = 125; Kh = 188;
Ymin=16; Ymax=235;
WCb=46.97; WCr=38.76; %取经验值
WLCb=23; WLCr=20;
WHCb=14; WHCr=10;
%Ki、Kh两个临界值之间,亮度变化对色度的影响不大,可忽略,Y、Cb、Cr值保持不变。
%而对小于Ki和大于Kh的色度跟据亮度偏离临界值的多少进行修正。
if Y    WCb_y=WLCb+(Y-Ymin)*(WCb-WLCb)/(Kl-Ymin);
    WCr_y=WLCr+(Y-Ymin)*(WCr-WLCr)/(Kl-Ymin);
    Cb_=108+(Kl-Y)*(118-108)/(Kl-Ymin);
    Cr_=154-(Kl-Y)*(154-144)/(Kl-Ymin);
    Cb_y=(Cb-Cb_)*WCb/WCb_y+Cb_;
    Cr_y=(Cr-Cr_)*WCr/W

评论

共有 条评论