基于matlab程序实现人脸识别
1人脸识别流程
基于YCbCr颜色空间的肤色模型进行肤色分割。在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在CbCr子平面上的投影将缩减,与中心区域显着不同。采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。
人脸识别流程图
2人脸识别程序
(1)人脸和非人脸区域分割程序fu
ctio
resultski
YCbCrSKINSummaryofthisfu
ctio
goeshereDetailedexpla
atio
goesherea2539b1403ecx160ecy241sita253cx10938cy15202xishucossitasi
sitasi
sitacossita如果亮度大于230,则将长短轴同时扩大为原来的11倍ifY230
fa11ab11be
d根据公式进行计算CbdoubleCbCrdoubleCrtCbcxCrcytempxishutvaluetemp1ecx2a2temp2ecy2b2大于1则不是肤色,返回0;否则为肤色,返回1ifvalue1result0elseresult1e
de
d(2)人脸的确认程序fu
ctio
eyefi
deyebImagexywhFINDEYESummaryofthisfu
ctio
goeshereDetailedexpla
atio
goesherepartzeroshw
f二值化foriyyh
forjxxwifbImageij0partiy1jx1255elsepartiy1jx10e
d
e
de
dL
umbwlabelpart8如果区域中有两个以上的矩形则认为有眼睛if
um2
eye0else
eye1e
de
d3人脸识别主程序clearall读入原始图像
fIimreadface3jpggrayrgb2grayIycbcrrgb2ycbcrI将图像转化为YCbCr空间heighthsizegray1读取图像尺寸widthsizegray2fori1heighth利用肤色模型二值化图像
forj1widthYycbcrij1Cbycbcrij2Crycbcrij3ifY80grayij0elseifski
YCbCr1根据色彩模型进行图像二值化grayij255elsegrayij0e
de
d
e
de
d
fsestrelarbitraryeye5二值图像形态学处理grayimope
graysefigureimshowgrayL
umbwlabelgray8采用标记方法选出图中的白色区域statsregio
propsLBou
di
gBox度量区域属性
1存放经过筛选以后得到的所有矩形块resultzeros
4figureimshowIholdo
fori1
um开始筛选特定区域
boxstatsiBou
di
gBoxxbox1矩形坐标Xybox2矩形坐标Ywbox3矩形宽度whbox4矩形高度hratiohw宽度和高度的比例uxui
t16xuyui
t8yifux1
uxux1e
d
fifuy1uyuy1
e
difw20h20wh400矩形长宽的范围和矩形的面积可自行设定
co
ti
ueelseifratio2ratio06fi
deyegrayuxuywh1
根据“三庭五眼”规则高度和宽度比例应该在(062)内;result
uxuywh
1e
de
difsizeresult11result110对可能是人脸的区域进行标记recta
glePositio
result11result12result13result14EdgeColorrelse如果满足条件的矩形区域大于1则再根r