当前位置:首页 > 数字图像处理课程设计 - 人脸检测与识别
数字图像处理
课 程 设 计
人脸检测与识别课程设计
一、简介
人脸检测与识别是当前模式识别领域的一个前沿课题,人脸识别技术就是利用计算机技术,根据数据库的人脸图像,分析提取出有效的识别信息,用来“辨认”身份的技术。人脸识别是模式识别研究的一个热点, 它在身份鉴别、信用卡识别, 护照的核对及监控系统等方面有着广泛的应用。人脸图像由于受光照、表情以及姿态等因素的影响, 使得同一个人的脸像矩阵差异也比较大。因此, 进行人脸识别时, 所选取的特征必须对上述因素具备一定的稳定性和不变性. 主元分析(PCA)方法是一种有效的特征提取方法,将人脸图像表示成一个列向量, 经过PCA 变换后, 不仅可以有效地降低其维数, 同时又能保留所需要的识别信息, 这些信息对光照、表情以及姿态具有一定的不敏感性. 在获得有效的特征向量后, 关键问题是设计具有良好分类能力和鲁棒性的分类器. 支持向量机(SVM ) 模式识别方法,兼顾训练误差和泛化能力, 在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势。
本此课程设计基于MATLAB,将检测与识别分开进行。其中检测部分使用实验指导书上的肤色模型算法进行,不进行赘述。识别部分采用PCA算法对检测出的人脸图像进行特征提取, 再利用最邻近距离分类法对特征向量进行分类识别,将在后文具体表述。仿真结果验证了本算法是有效的。
二、人脸检测
1.源码
img=imread('D:\\std_test_images\\face3.jpg'); figure; imshow(img); R=img(:,:,1); G=img(:,:,2); B=img(:,:,3);
faceRgn1=(R>95)&(G>40)&(B>20)&max(img,[],3)-min(img,[],3)>15&abs(R-G)>15&R>B; figure;
imshow(faceRgn1);
r=double(R)./double(sum(img,3)); g=double(G)./double(sum(img,3)); Y=0.3*R+0.59*G+0.11*B;
faceRgn2=(r>0.333)&(r<0.664)&(g>0.246)&(g<0.398)&(r>g)&g>=0.5-0.5*r; figure;
imshow(faceRgn2); Q=faceRgn1.*faceRgn2; P=bwlabel(Q,8);
BB=regionprops(P,'Boundingbox'); BB1=struct2cell(BB); BB2=cell2mat(BB1); figure; imshow(img); [s1 s2]=size(BB2); mx=0;
for k=3:4:s2-1
p=BB2(1,k)*BB2(1,k+1);
if p>mx&(BB2(1,k)/BB2(1,k+1))<1.8 mx=p; j=k; hold on;
rectangle('position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'linewidth',3,'edgecolor','r'); hold off; end end
2.处理过程
共分享92篇相关文档