(完整word版)基于MATLAB的人脸识别
基于MATLAB的人脸识别技术研究与应用
基于MATLAB的人脸识别技术研究与应用人脸识别技术是一种通过对图像或视频中的人脸进行检测、识别和验证的技术。
随着计算机视觉和人工智能领域的不断发展,人脸识别技术在各个领域得到了广泛的应用,如安防监控、人脸支付、门禁系统等。
而MATLAB作为一种强大的科学计算软件,被广泛应用于人脸识别技术的研究和开发中。
本文将探讨基于MATLAB的人脸识别技术研究与应用。
人脸识别技术概述人脸识别技术是一种生物特征识别技术,通过对人脸图像进行采集、处理和比对,实现对个体身份的自动识别。
人脸识别技术主要包括人脸检测、特征提取、特征匹配等步骤。
在MATLAB环境下,可以利用其丰富的图像处理工具箱和深度学习工具箱来实现人脸识别算法的开发和优化。
基于MATLAB的人脸检测人脸检测是人脸识别技术中的关键步骤,其目的是在图像中准确地定位出人脸区域。
在MATLAB中,可以利用Haar级联分类器、HOG特征以及深度学习方法如卷积神经网络(CNN)来实现人脸检测算法。
这些方法可以有效地提高人脸检测的准确性和鲁棒性。
基于MATLAB的人脸特征提取在进行人脸识别时,需要从人脸图像中提取出具有区分性的特征信息。
常用的人脸特征提取方法包括主成分分析(PCA)、线性判别分析(LDA)、局部二值模式(LBP)等。
在MATLAB中,可以通过调用相应的函数或自行编写代码来实现这些特征提取算法,并对提取到的特征进行降维和优化。
基于MATLAB的人脸特征匹配在获取到人脸图像的特征表示后,需要进行特征匹配来判断两幅图像是否属于同一个人。
常用的匹配方法包括欧氏距离、余弦相似度、支持向量机(SVM)等。
在MATLAB中,可以利用其强大的数学计算功能和机器学习工具箱来实现不同的特征匹配算法,并根据具体应用场景选择合适的匹配策略。
基于MATLAB的人脸识别系统开发基于上述步骤,可以在MATLAB环境下开发完整的人脸识别系统。
该系统可以包括图像采集模块、预处理模块、特征提取模块、匹配比对模块以及结果显示模块等功能。
基于matlab程序实现人脸识别
基于matlab程序实现人脸识别
人脸识别已经成为一个广泛被应用的技术,例如手机的解锁方式,安全系统等等。
它是一种基于人脸图像进行身份验证或身份识别的技术,也是近年来计算机视觉和模式识别领域研究的热点方向之一。
在这篇文档中,我们将介绍如何使用matlab编写一个简单的人脸识别程序。
人脸识别是什么?
人脸识别可以被定义为一个过程,旨在使用数字算法识别和验证图像或视频中
人脸身份。
在计算机科学的领域中,这项技术可以被描述为一种模式识别技术,
旨在通过在人脸图像上提取可识别特征来确定身份验证。
通俗易懂地理解,就是计算机能够识别人脸的特征,并将其与已知的数据匹配,从而确定人物身份。
人脸识别程序的开发流程
以下是本文介绍的基本程序开发流程:
1.数据集导入和预处理
2.特征提取和脸部对齐
3.模型训练和分类器设计
4.模型评估和测试
数据集导入和预处理
考虑到一个好的项目,我们需要一个良好的数据集。
在这里,我们可以使用来
自orl人脸数据集的数据。
该数据集中包含的有40个人的400幅灰度图像,每个
人有10个不同的示例。
您可以从该网站下载并使用这些数据来测试您的算法。
在这个过程中,我们需要使用matlab中的imread函数将数据读取为数字矩阵,然后将数据分为训练集和测试集。
这个过程旨在将原始的数据转换为我们算法能
够处理的数字矩阵,并将数据划分为训练集和测试集。
``` % 读取数据集 dataFolderPath =。
基于-MATLAB的人脸识别
图像识别题目:基于MATLAB的人脸识别院系:计算机科学与应用系班级::学号:日期:目录引言 (1)1 人脸识别技术 (2)1.1人脸识别的研究容 (2)1.1.1人脸检测(Face Detection) (2)1.1.2人脸表征(Face Representation) (2)1.2几种典型的人脸识别方法 (3)1.2.1基于几何特征的人脸识别方法 (3)1.2.2基于K-L变换的特征脸方法 (4)1.2.3神经网络方法 (4)1.2.4基于小波包的识别方法 (5)1.2.5支持向量机的识别方法 (5)2 人脸特征提取与识别 (5)2.1利用PCA进行特征提取的经典算法——Eigenface算法 (6)2.2 PCA人脸识别流程 (6)2.3特征向量选取 (8)2.4距离函数的选择 (9)2.5 基于PCA的人脸识别 (9)MATLAB人脸识别程序 (10)3 MATLAB软件程序编写 (10)3.1.创建图片数据库 (10)3.2 主程序 (11)3.3最终程序结果 (12)4 心得与体会 (12)参考文献 (12)引言随着社会的发展及技术的进步,社会各方面对快速高效的自动身份验证的需求可以说无处不在,并与日俱增。
例如,某人是否是我国的居民,是否有权进入某安全系统,是否有权进行特定的交易等。
尤其是自2001年美国“9.1l”恐怖袭击发生以来,如何在车站、机场等公共场所利用高科技手段,迅速而准确地发现并确认可疑分子成了目前世界各国在反恐斗争中普遍关注的问题。
为此,各国都投入大量人力、物力研究发展各类识别技术,使得生物特征识别技术得到了极大的发展。
生物特征识别技术主要包括:人脸识别、虹膜识别、指纹识别、步态识别、语音识别、笔迹识别、掌纹识别以及多生物特征融合识别等。
人类通过视觉识别文字,感知外界信息。
在客观世界中,有75%的信息量都来自视觉,因此让计算机或机器人具有视觉,是人工智能的重要环节。
由于生物特征是人的在属性,具有很强的稳定性和个体差异性,因此是身份验证最理想的依据。
基于matlab的人脸识别系统设计论文
毕业设计 [论文] 题目:基于MATLAB的人脸识别系统设计摘要人脸识别是模式识别和图像处理等学科的一个研究热点,它广泛应用在身份验证、刑侦破案、视频监视、机器人智能化和医学等领域,具有广阔的应用价值和商用价值。
人脸特征作为一种生物特征,与其他生物特征相比,具有有好、直接、方便等特点,因此使用人脸特征进行身份识别更易于被用户所接受。
人脸识别技术在过去的几十年得到了很大的发展,但由于人脸的非刚性、表情多变等因素,使得人脸识别技术在实际应用中面临着巨大的困难。
本文针对近年来国外相关学术论文及研究报告进行学习和分析的基础上,利用图像处理的matlab实现人脸识别方法,这种实现简单且识别准确率高,但其缺点是计算量大,当要识别较多人员时,该方法难以胜任。
利用MATLAB实现了一个集多种预处理方法于一体的通用的人脸图像预处理仿真系统,将该系统作为图像预处理模块可嵌入在人脸识别系统中,并利用灰度图像的直方图比对来实现人脸图像的识别判定。
关键词:图像处理, Matlab, 人脸识别, 模式识别ABSTRACTHuman face recognition focuses on pattern recognition ,image proce ssing andother subjects.It is widely used in authentication,investigat ion,video surveillance,intelligent robots,medicine and other areas.Fac erecognition has wide application and business value.Facial feature as abiological characteristic,compared with others is direct,friendly and convenient.Facial featureemployed in authentication are user-friendly.The technology of face recognition in the past few years obtained the very big development, but due to the face of nonrigid, expression and changeablefactors, the face recognition technology in practical ap plication are facing great difficulties. This paper aimed at home and abroad in recent years the relevant papers and researchreports on stud y and on the basis of the analysis, some units within the data sensiti vity places need to enter personnel to carry out limitation design and develop a set of identity verification identification system, the sys tem uses PCA face recognition method, therealization is simple and the accuracy rate of recognition is high,but itsdrawback is that a large amount of calculation, when to identify more staff,this method is diff icult to do.The realization of a set of various pretreatment methods in one of the generic face image preprocessing simulation system based on MATLAB, the system is used as the image preprocessing module can be embedded in a face recognition system, and using the histogram matching gray image to realize the recognition of human face images to determine.Keywords: Imageprocessing , Matlab, Face recognition, Patternrecognition目录摘要 (I)ABSTRACT (II)1 绪论 (1)1.1 研究背景 (1)1.2国外研究现状 (2)1.3 人脸图像识别的应用前景 (3)1.4 本文研究的问题 (3)1.5 识别系统构成 (4)1.6 论文的容及组织 (5)2 图像处理的Matlab实现 (6)2.1 Matlab简介 (6)2.2 数字图像处理及过程 (6)2.2.1图像处理的基本操作 (6)2.2.2图像类型的转换 (6)2.2.3图像增强 (6)2.2.4边缘检测 (7)2.3图像处理功能的Matlab实现实例 (7)2.4 本章小结 (10)3 人脸图像识别计算机系统 (11)3.1 引言 (11)3.2系统基本机构 (11)3.3 人脸检测定位算法 (12)3.4 人脸图像的预处理 (16)3.4.1 人脸图像预处理方法 (17)3.5人脸识别 (18)4 实验结果与分析 (25)5 结论 (26)参考文献 (27)致 (28)1 绪论当前,人脸检测越来越受到大家的关注,他作为生物特征识别中一个非常重要的一个分支,已成为计算机视觉与模式识别领域中非常活跃的一个研究领域。
基于matlab的人脸识别系统实验报告
基于MATLAB的人脸识别系统小组成员:徐艺达、莫子韬邹明宇、罗远挥、周宁基于MATLAB的人脸识别系统第一部分绪论如图一个人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。
现在已有实用的计算机自动指纹识别系统面试,并在安检部门得到了相应的应用。
人脸图像的自动识别较之于指纹识别系统、DNA鉴定等具有更加方便的性能,其取样方便,可不接触目标进行识别,从而具有更大意义的开发效应。
然而,与指纹成像技术不同的是,人脸图像受很多因素的干扰:人脸表情的多样性,以及外在成像过程中的关照、图像尺寸、旋转、姿势变化等方面,使得同一个人在不同的环境下拍摄所得到的人脸图像不同,有时往往会有很大的差别,给识别带来了很大的难度。
因此,人脸识别也更具有挑战性。
除了具有重大的理论价值及极富挑战性外,人脸识别还具有很多潜在的应用前景,利用人脸图像进行身份验证,可以不与目标接触就取得样本图像,而使用其他的身份手段,如指纹、眼睛虹膜等必须通过与目标接触或相当接近来取得样本,因此此类识别手段也具有很多不便之处。
本文通过使用PCA和NMF两种算法及MATLAB软件对所取图像进行预处理与识别,应用该工具箱对图像进行了经典图像处理,进而应用与人脸识别系统。
主要涉及到图像选取、脸部定位、特征提取及图像处理识别几个过程。
第二部分基于NMF算法的人脸识别系统一、摘要作为一种基于人的脸部特征信息进行身份识别的一种生物识别技术,人脸识别逐渐成为了计算机视觉领域的一个热门研究课题。
NMF就是其中一种主流算法,但由于人脸识别所存在光照、角度、遮挡等问题仍未解决,因此NMF算法仍存在局限性,该算法没有引入任何对空间的位置的约束,所以最小化目标函数很难产生揭示数据X的局部特征的因子分解。
本文以NMF算法为基础,结合LNMF算法来求解人脸问题。
二、实验目的运用NMF算法对数据库中的数据进行人脸识别分析三、实验原理 1.非负矩阵分解法NMF 1.1NMF 定义非负矩阵分解定义为:找到非负矩阵W 与H 得到下式 V ≈WH (1-1)在计算中等式两者很难完全相等。
(完整版)人脸识别MATLAB代码
1.色彩空间转换function [r,g]=rgb_RGB(Ori_Face)R=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;row=size(Ori_Face,1); % 行像素column=size(Ori_Face,2); % 列像素for i=1:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=mean(rr);r=mean(rrr);ggg=mean(gg);g=mean(ggg);2.均值和协方差t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1); t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2); t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3); t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4); t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5); t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6); t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7); t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);t9=imread('D:\matlab\皮肤库\9.jpg');[r9,g9]=rgb_RGB(t9);t10=imread('D:\matlab\皮肤库\10.jpg');[r10,g10]=rgb_RGB(t10);t11=imread('D:\matlab\皮肤库\11.jpg');[r11,g11]=rgb_RGB(t11);t12=imread('D:\matlab\皮肤库\12.jpg');[r12,g12]=rgb_RGB(t12);t13=imread('D:\matlab\皮肤库\13.jpg');[r13,g13]=rgb_RGB(t13);t14=imread('D:\matlab\皮肤库\14.jpg');[r14,g14]=rgb_RGB(t14);t15=imread('D:\matlab\皮肤库\15.jpg');[r15,g15]=rgb_RGB(t15);t16=imread('D:\matlab\皮肤库\16.jpg');[r16,g16]=rgb_RGB(t16);t17=imread('D:\matlab\皮肤库\17.jpg');[r17,g17]=rgb_RGB(t17);t18=imread('D:\matlab\皮肤库\18.jpg');[r18,g18]=rgb_RGB(t18);t19=imread('D:\matlab\皮肤库\19.jpg');[r19,g19]=rgb_RGB(t19);t20=imread('D:\matlab\皮肤库\20.jpg');[r20,g20]=rgb_RGB(t20);t21=imread('D:\matlab\皮肤库\21.jpg');[r21,g21]=rgb_RGB(t21);t22=imread('D:\matlab\皮肤库\22.jpg');[r22,g22]=rgb_RGB(t22);t23=imread('D:\matlab\皮肤库\23.jpg');[r23,g23]=rgb_RGB(t23);t24=imread('D:\matlab\皮肤库\24.jpg');[r24,g24]=rgb_RGB(t24);t25=imread('D:\matlab\皮肤库\25.jpg');[r25,g25]=rgb_RGB(t25);t26=imread('D:\matlab\皮肤库\26.jpg');[r26,g26]=rgb_RGB(t26);t27=imread('D:\matlab\皮肤库\27.jpg');[r27,g27]=rgb_RGB(t27);r=cat(1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22, r23,r24,r25,r26,r27);g=cat(1,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g18,g19,g20 ,g21,g22,g23,g24,g25,g26,g27);m=mean([r,g])n=cov([r,g])3.求质心function [xmean, ymean] = center(bw)bw=bwfill(bw,'holes');area = bwarea(bw);[m n] =size(bw);bw=double(bw);xmean =0; ymean = 0;for i=1:m,for j=1:n,xmean = xmean + j*bw(i,j);ymean = ymean + i*bw(i,j);end;end;if(area==0)xmean=0;ymean=0;elsexmean = xmean/area;ymean = ymean/area;xmean = round(xmean);ymean = round(ymean);end4. 求偏转角度function [theta] = orient(bw,xmean,ymean) [m n] =size(bw);bw=double(bw);a = 0;b = 0;c = 0;for i=1:m,for j=1:n,a = a + (j - xmean)^2 * bw(i,j);b = b + (j - xmean) * (i - ymean) * bw(i,j);c = c + (i - ymean)^2 * bw(i,j);end;b = 2 * b;theta = atan(b/(a-c))/2;theta = theta*(180/pi); % 从幅度转换到角度5. 找区域边界function [left, right, up, down] = bianjie(A)[m n] = size(A);left = -1;right = -1;up = -1;down = -1;for j=1:n,for i=1:m,if (A(i,j) ~= 0)left = j;break;end;end;if (left ~= -1) break;end;end;for j=n:-1:1,for i=1:m,if (A(i,j) ~= 0)right = j;break;end;end;if (right ~= -1) break;end;for i=1:m,for j=1:n,if (A(i,j) ~= 0)up = i;break;end;end;if (up ~= -1)break;end;end;for i=m:-1:1,for j=1:n,if (A(i,j) ~= 0)down = i;break;end;end;if (down ~= -1)break;end;end;6. 求起始坐标function newcoord = checklimit(coord,maxval) newcoord = coord;if (newcoord<1)newcoord=1;end;if (newcoord>maxval)newcoord=maxval;end;7.模板匹配function [ccorr, mfit, RectCoord] = mobanpipei(mult, frontalmodel,ly,wx,cx, cy, angle)frontalmodel=rgb2gray(frontalmodel);model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小model_rot = imrotate(model_rot,angle,'bilinear'); % 旋转模板[l,r,u,d] = bianjie(model_rot); % 求边界坐标bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 选择模板人脸区域[modx,mody] =center(bwmodel_rot); % 求质心[morig, norig] = size(bwmodel_rot);% 产生一个覆盖了人脸模板的灰度图像mfit = zeros(size(mult));mfitbw = zeros(size(mult));[limy, limx] = size(mfit);% 计算原图像中人脸模板的坐标startx = cx-modx;starty = cy-mody;endx = startx + norig-1;endy = starty + morig-1;startx = checklimit(startx,limx);starty = checklimit(starty,limy);endx = checklimit(endx,limx);endy = checklimit(endy,limy);for i=starty:endy,for j=startx:endx,mfit(i,j) = model_rot(i-starty+1,j-startx+1);end;end;ccorr = corr2(mfit,mult) % 计算相关度[l,r,u,d] = bianjie(bwmodel_rot);sx = startx+l;sy = starty+u;RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标8.主程序clear;[fname,pname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.gif'},'Please choose a color picture...'); % 返回打开的图片名与图片路径名[u,v]=size(fname);y=fname(v); % 图片格式代表值switch ycase 0errordlg('You Should Load Image File First...','Warning...');case{'g';'G';'p';'P';'f';'F'}; % 图片格式若是JPG/jpg、BMP/bmp、TIF/tif 或者GIF/gif,才打开I=cat(2,pname,fname);Ori_Face=imread(I);subplot(2,3,1),imshow(Ori_Face);otherwiseerrordlg('You Should Load Image File First...','Warning...');endR=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型处理G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;m=[ 0.4144,0.3174]; % 均值n=[0.0031,-0.0004;-0.0004,0.0003]; % 方差row=size(Ori_Face,1); % 行像素数column=size(Ori_Face,2); % 列像素数for i=1:rowfor j=1:columnif RGB(i,j)==0rr(i,j)=0;gg(i,j)=0;elserr(i,j)=R1(i,j)/RGB(i,j); % rgb归一化gg(i,j)=G1(i,j)/RGB(i,j);x=[rr(i,j),gg(i,j)];p(i,j)=exp((-0.5)*(x-m)*inv(n)*(x-m)'); % 皮肤概率服从高斯分布endendendsubplot(2,3,2);imshow(p); % 显示皮肤灰度图像low_pass=1/9*ones(3);image_low=filter2(low_pass, p); % 低通滤波去噪声subplot(2,3,3);imshow(image_low);% 自适应阀值程序previousSkin2 = zeros(i,j);changelist = [];for threshold = 0.55:-0.1:0.05two_value = zeros(i,j);two_value(find(image_low>threshold)) = 1;change = sum(sum(two_value - previousSkin2));changelist = [changelist change];previousSkin2 = two_value;end[C, I] = min(changelist);optimalThreshold = (7-I)*0.1two_value = zeros(i,j);two_value(find(image_low>optimalThreshold)) = 1; % 二值化subplot(2,3,4);imshow(two_value); % 显示二值图像frontalmodel=imread('E:\我的照片\人脸模板.jpg'); % 读入人脸模板照片FaceCoord=[];imsourcegray=rgb2gray(Ori_Face); % 将原照片转换为灰度图像[L,N]=bwlabel(two_value,8); % 标注二值图像中连接的部分,L为数据矩阵,N为颗粒的个数for i=1:N,[x,y]=find(bwlabel(two_value)==i); % 寻找矩阵中标号为i的行和列的下标bwsegment = bwselect(two_value,y,x,8); % 选择出第i个颗粒numholes = 1-bweuler(bwsegment,4); % 计算此区域的空洞数if (numholes >= 1) % 若此区域至少包含一个洞,则将其选出进行下一步运算RectCoord = -1;[m n] = size(bwsegment);[cx,cy]=center(bwsegment); % 求此区域的质心bwnohole=bwfill(bwsegment,'holes'); % 将洞封住(将灰度值赋为1)justface = uint8(double(bwnohole) .* double(imsourcegray));% 只在原照片的灰度图像中保留该候选区域angle = orient(bwsegment,cx,cy); % 求此区域的偏转角度bw = imrotate(bwsegment, angle, 'bilinear');bw = bwfill(bw,'holes');[l,r,u,d] =bianjie(bw);wx = (r - l +1); % 宽度ly = (d - u + 1); % 高度wratio = ly/wx % 高宽比if ((0.8<=wratio)&(wratio<=2))% 如果目标区域的高度/宽度比例大于0.8且小于2.0,则将其选出进行下一步运算S=ly*wx; % 计算包含此区域矩形的面积A=bwarea(bwsegment); % 计算此区域面积if (A/S>0.35)[ccorr,mfit, RectCoord] = mobanpipei(justface,frontalmodel,ly,wx, cx,cy, angle);endif (ccorr>=0.6)mfitbw=(mfit>=1);invbw = xor(mfitbw,ones(size(mfitbw)));source_with_hole = uint8(double(invbw) .* double(imsourcegray));final_image = uint8(double(source_with_hole) + double(mfit));subplot(2,3,5);imshow(final_image); % 显示覆盖了模板脸的灰度图像imsourcegray = final_image;subplot(2,3,6);imshow(Ori_Face); % 显示检测效果图end;if (RectCoord ~= -1)FaceCoord = [FaceCoord; RectCoord];endendendend% 在认为是人脸的区域画矩形[numfaces x] = size(FaceCoord);for i=1:numfaces,hd = rectangle('Position',FaceCoord(i,:));set(hd, 'edgecolor', 'y');end人脸检测是人脸识别、人机交互、智能视觉监控等工作的前提。
《基于MATLAB的人脸识别算法的研究》范文
《基于MATLAB的人脸识别算法的研究》篇一一、引言人脸识别技术是近年来计算机视觉领域研究的热点之一,其应用范围广泛,包括安全监控、身份认证、人机交互等。
MATLAB作为一种强大的数学计算软件,为研究人员提供了丰富的工具和函数,使得人脸识别算法的研究和实现变得更加便捷。
本文将介绍基于MATLAB的人脸识别算法的研究,包括算法原理、实现方法、实验结果及分析等方面。
二、人脸识别算法原理人脸识别算法主要基于计算机视觉和模式识别技术,通过对人脸特征进行提取和匹配,实现身份识别。
常见的人脸识别算法包括特征提取、特征匹配等步骤。
其中,特征提取是关键步骤,需要从人脸图像中提取出有效的特征,如纹理、形状、颜色等。
特征匹配则是将提取出的特征与人脸库中的特征进行比对,找出最匹配的人脸。
三、基于MATLAB的人脸识别算法实现1. 预处理在人脸识别算法的实现中,首先需要对人脸图像进行预处理,包括灰度化、归一化、降噪等操作。
这些操作可以有效地提高图像的质量,为后续的特征提取和匹配提供更好的基础。
2. 特征提取特征提取是人脸识别算法的核心步骤之一。
在MATLAB中,可以使用各种算法进行特征提取,如主成分分析(PCA)、局部二值模式(LBP)、方向梯度直方图(HOG)等。
本文采用PCA 算法进行特征提取,通过降维的方式将高维的人脸图像数据转化为低维的特征向量。
3. 特征匹配特征匹配是将提取出的特征与人脸库中的特征进行比对的过程。
在MATLAB中,可以使用各种相似度度量方法进行特征匹配,如欧氏距离、余弦相似度等。
本文采用欧氏距离作为相似度度量方法,通过计算特征向量之间的欧氏距离来找出最匹配的人脸。
四、实验结果及分析为了验证基于MATLAB的人脸识别算法的有效性,我们进行了多组实验。
实验数据集包括ORL人脸库、Yale人脸库等。
在实验中,我们使用了不同的特征提取和匹配方法,对算法的性能进行了评估。
实验结果表明,基于PCA算法的特征提取方法和欧氏距离相似度度量方法在人脸识别中具有较好的性能。
基于matlab的人脸识别系统设计与仿真毕业设计
(此文档为word格式,下载后您可任意编辑修改!)佳木斯大学毕业论文基于Matlab的人脸识别系统设计与仿真学院信息电子技术专业电子信息工程班级11级1班姓名杨雷指导教师周经国佳木斯大学2015年6月10日摘要人脸识别即指利用分析比对人脸视觉特征信息从而达到身份鉴别效果的计算机技术。
人脸识别是一项当下十分热门的计算机技术的研究领域,该项技术可以人脸明暗侦测,并且自动调整动态曝光补偿,同时对人脸追踪侦测,并自动调整影像放大;这项技术属于生物特征识别技术的一种,是利用生物体(一般指人)本身的生物特征从而达到区分生物体个体的目的。
人脸识别技术目前主要用做身份识别。
由于视频监控的飞速普及,使这项应用迫切的需要一种能实现在用户非配合状态下、远距离的进行快速身份识别的技术,以求能在远距离之下快速识别人员身份,从而实现智能预警的功能。
最佳的选择无疑是人脸识别技术。
采用快速人脸检测识别技术可以从视频监控图象中实时捕获到人脸信息,并与人脸数据库中的已存信息进行实时比对,从而达到快速身份识别的效果。
报告利用MATLAB软件来实现人脸信息检测与识别,利用YCbCr空间以及灰度图像来实现人脸的边缘分割, 将真彩图像转换为灰度图像,并根据肤色在YCbCr色度空间上的分布范围,来设定门限阀值,从而实现人脸区域与非人脸区域的分割,通过图像处理等一系列的操作来剔除干扰因素,再通过长宽比和目标面积等方法在图像中定位出人脸区域,经试验,该方法能够排除面部表情、衣着背景、发型等干扰因素,从而定位出人脸区域。
关键词:Matlab软件;灰度图像;边缘分割;人脸区域AbstractFace recognition especially use comparative analysis face visual feature information for identification of computer technology. Face recognition is a , light and shade can be automatically adjusted dynamically exposure compensation, face tracking detection, automatic adjustment of image magnification; It belongs to the biometric identification technology, it is of organisms (generally refers to a person) individual biological characteristics to distinguish between the organism itself.Face recognition is mainly used for identification. Because of the video monitoring is fast popularization, many of the video monitoring application is an urgent need to a long distance, the user not cooperate condition of rapid identification technology, in order . Face recognition technology is undoubtedly the best choice, the fast face detection technology to monitor in real-time video image search from face, and with real-time than face database, so as to realize rapid identification.Report using MATLAB software to realize face information detection and recognition, using YCbCr space and gray image to realize the face edge segmentation, the true color image is converted to a grayscale image, and according to the color of skin in YCbCr chroma space distribution, to set the threshold threshold, so as to realize the segmentation of face region with the face region, through a series of operations such as image processing to eliminate interference factors, and through such means as aspect ratio and the target area locate the face region in the image, the experiment, this method can eliminate facial expressions, clothes, . Keywords:Matlab;Gray image;edge segmentation;face region目录摘要 (1)ABSTRACT (2)3 第1章绪论 (4)1.1课题的研究背景、目的及意义 (4)1.1.1 课题的研究背景 (4)1.1.2 研究目的及意义 (5)1.2本课题的主要内容 (5)第2章图像处理的MATLAB实现 (6)2.1识别系统构成 (6)2.2人脸图像的读取与显示 (7)2.3图像类型的转换 (7)2.4图像增强 (8)2.5灰度图像平滑与锐化处理..................... 错误!未定义书签。
(完整版)基于matlab程序实现人脸识别
基于matlab程序实现人脸识别1.人脸识别流程1.1.1基本原理基于YCbCr颜色空间的肤色模型进行肤色分割。
在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。
采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。
1.1.2流程图人脸识别流程图读入原始图像将图像转化为YCbCr颜色空间利用肤色模型二值化图像并作形态学处理选取出二值图像中的白色区域,度量区域属性,筛选后得到所有矩形块否筛选特定区域(高度和宽度的比率在(0.6~2)之间,眼睛特征)是存储人脸的矩形区域特殊区域根据其他信息筛选,标记最终的人脸区域2.人脸识别程序(1)人脸和非人脸区域分割程序function result = skin(Y,Cb,Cr)%SKIN Summary of this function goes here% Detailed explanation goes herea=25.39;b=14.03;ecx=1.60;ecy=2.41;sita=2.53;cx=109.38;cy=152.02;xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)];%如果亮度大于230,则将长短轴同时扩大为原来的1.1倍if(Y>230)a=1.1*a;b=1.1*b;end%根据公式进行计算Cb=double(Cb);Cr=double(Cr);t=[(Cb-cx);(Cr-cy)];temp=xishu*t;value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2;%大于1则不是肤色,返回0;否则为肤色,返回1if value>1result=0;elseresult=1;endend(2)人脸的确认程序function eye = findeye(bImage,x,y,w,h)%FINDEYE Summary of this function goes here % Detailed explanation goes herepart=zeros(h,w);%二值化for i=y:(y+h)for j=x:(x+w)if bImage(i,j)==0part(i-y+1,j-x+1)=255;elsepart(i-y+1,j-x+1)=0;endendend[L,num]=bwlabel(part,8);%如果区域中有两个以上的矩形则认为有眼睛if num<2eye=0;elseeye=1;endend(3)人脸识别主程序clear all;%读入原始图像I=imread('face3.jpg');gray=rgb2gray(I);ycbcr=rgb2ycbcr(I);%将图像转化为YCbCr空间heighth=size(gray,1);%读取图像尺寸width=size(gray,2);for i=1:heighth %利用肤色模型二值化图像for j=1:widthY=ycbcr(i,j,1);Cb=ycbcr(i,j,2);Cr=ycbcr(i,j,3);if(Y<80)gray(i,j)=0;elseif(skin(Y,Cb,Cr)==1)%根据色彩模型进行图像二值化gray(i,j)=255;elsegray(i,j)=0;endendendendse=strel('arbitrary',eye(5));%二值图像形态学处理gray=imopen(gray,se);figure;imshow(gray)[L,num]=bwlabel(gray,8);%采用标记方法选出图中的白色区域stats=regionprops(L,'BoundingBox');%度量区域属性n=1;%存放经过筛选以后得到的所有矩形块result=zeros(n,4);figure,imshow(I);hold on;for i=1:num %开始筛选特定区域box=stats(i).BoundingBox;x=box(1);%矩形坐标Xy=box(2);%矩形坐标Yw=box(3);%矩形宽度wh=box(4);%矩形高度hratio=h/w;%宽度和高度的比例ux=uint16(x);uy=uint8(y);if ux>1ux=ux-1;endif uy>1uy=uy-1;endif w<20 || h<20|| w*h<400 %矩形长宽的范围和矩形的面积可自行设定continueelseif ratio<2 && ratio>0.6 && findeye(gray,ux,uy,w,h)==1%根据“三庭五眼”规则高度和宽度比例应该在(0.6,2)内;result(n,:)=[ux uy w h];n=n+1;endendif size(result,1)==1 && result(1,1)>0 %对可能是人脸的区域进行标记rectangle('Position',[result(1,1),result(1,2),result(1,3),result(1,4)],'EdgeColor','r'); else%如果满足条件的矩形区域大于1,则再根据其他信息进行筛选a=0;arr1=[];arr2=[];for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%得到符合和人脸匹配的数据if m1+m3<width && m2+m4<heighth && m3<0.2*widtha=a+1;arr1(a)=m3;arr2(a)=m4;%rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend%得到人脸长度和宽度的最小区域arr3=[];arr3=sort(arr1,'ascend');arr4=[];arr4=sort(arr2,'ascend');%根据得到的数据标定最终的人脸区域for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%最终标定人脸if m1+m3<width && m2+m4<heighth && m3<0.2*widthm3=arr3(1);m4=arr4(1);rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endendend(4)程序说明人脸识别程序主要包含三个程序模块,人脸识别主程序由三部分构成。
(完整版)人脸识别MATLAB代码
1.色彩空间转换function [r,g]=rgb_RGB(Ori_Face)R=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;row=size(Ori_Face,1); % 行像素column=size(Ori_Face,2); % 列像素for i=1:rowfor j=1:columnrr(i,j)=R1(i,j)/RGB(i,j);gg(i,j)=G1(i,j)/RGB(i,j);endendrrr=mean(rr);r=mean(rrr);ggg=mean(gg);g=mean(ggg);2.均值和协方差t1=imread('D:\matlab\皮肤库\1.jpg');[r1,g1]=rgb_RGB(t1); t2=imread('D:\matlab\皮肤库\2.jpg');[r2,g2]=rgb_RGB(t2); t3=imread('D:\matlab\皮肤库\3.jpg');[r3,g3]=rgb_RGB(t3); t4=imread('D:\matlab\皮肤库\4.jpg');[r4,g4]=rgb_RGB(t4); t5=imread('D:\matlab\皮肤库\5.jpg');[r5,g5]=rgb_RGB(t5); t6=imread('D:\matlab\皮肤库\6.jpg');[r6,g6]=rgb_RGB(t6); t7=imread('D:\matlab\皮肤库\7.jpg');[r7,g7]=rgb_RGB(t7); t8=imread('D:\matlab\皮肤库\8.jpg');[r8,g8]=rgb_RGB(t8);t9=imread('D:\matlab\皮肤库\9.jpg');[r9,g9]=rgb_RGB(t9);t10=imread('D:\matlab\皮肤库\10.jpg');[r10,g10]=rgb_RGB(t10);t11=imread('D:\matlab\皮肤库\11.jpg');[r11,g11]=rgb_RGB(t11);t12=imread('D:\matlab\皮肤库\12.jpg');[r12,g12]=rgb_RGB(t12);t13=imread('D:\matlab\皮肤库\13.jpg');[r13,g13]=rgb_RGB(t13);t14=imread('D:\matlab\皮肤库\14.jpg');[r14,g14]=rgb_RGB(t14);t15=imread('D:\matlab\皮肤库\15.jpg');[r15,g15]=rgb_RGB(t15);t16=imread('D:\matlab\皮肤库\16.jpg');[r16,g16]=rgb_RGB(t16);t17=imread('D:\matlab\皮肤库\17.jpg');[r17,g17]=rgb_RGB(t17);t18=imread('D:\matlab\皮肤库\18.jpg');[r18,g18]=rgb_RGB(t18);t19=imread('D:\matlab\皮肤库\19.jpg');[r19,g19]=rgb_RGB(t19);t20=imread('D:\matlab\皮肤库\20.jpg');[r20,g20]=rgb_RGB(t20);t21=imread('D:\matlab\皮肤库\21.jpg');[r21,g21]=rgb_RGB(t21);t22=imread('D:\matlab\皮肤库\22.jpg');[r22,g22]=rgb_RGB(t22);t23=imread('D:\matlab\皮肤库\23.jpg');[r23,g23]=rgb_RGB(t23);t24=imread('D:\matlab\皮肤库\24.jpg');[r24,g24]=rgb_RGB(t24);t25=imread('D:\matlab\皮肤库\25.jpg');[r25,g25]=rgb_RGB(t25);t26=imread('D:\matlab\皮肤库\26.jpg');[r26,g26]=rgb_RGB(t26);t27=imread('D:\matlab\皮肤库\27.jpg');[r27,g27]=rgb_RGB(t27);r=cat(1,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22, r23,r24,r25,r26,r27);g=cat(1,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g18,g19,g20 ,g21,g22,g23,g24,g25,g26,g27);m=mean([r,g])n=cov([r,g])3.求质心function [xmean, ymean] = center(bw)bw=bwfill(bw,'holes');area = bwarea(bw);[m n] =size(bw);bw=double(bw);xmean =0; ymean = 0;for i=1:m,for j=1:n,xmean = xmean + j*bw(i,j);ymean = ymean + i*bw(i,j);end;end;if(area==0)xmean=0;ymean=0;elsexmean = xmean/area;ymean = ymean/area;xmean = round(xmean);ymean = round(ymean);end4. 求偏转角度function [theta] = orient(bw,xmean,ymean) [m n] =size(bw);bw=double(bw);a = 0;b = 0;c = 0;for i=1:m,for j=1:n,a = a + (j - xmean)^2 * bw(i,j);b = b + (j - xmean) * (i - ymean) * bw(i,j);c = c + (i - ymean)^2 * bw(i,j);end;b = 2 * b;theta = atan(b/(a-c))/2;theta = theta*(180/pi); % 从幅度转换到角度5. 找区域边界function [left, right, up, down] = bianjie(A)[m n] = size(A);left = -1;right = -1;up = -1;down = -1;for j=1:n,for i=1:m,if (A(i,j) ~= 0)left = j;break;end;end;if (left ~= -1) break;end;end;for j=n:-1:1,for i=1:m,if (A(i,j) ~= 0)right = j;break;end;end;if (right ~= -1) break;end;for i=1:m,for j=1:n,if (A(i,j) ~= 0)up = i;break;end;end;if (up ~= -1)break;end;end;for i=m:-1:1,for j=1:n,if (A(i,j) ~= 0)down = i;break;end;end;if (down ~= -1)break;end;end;6. 求起始坐标function newcoord = checklimit(coord,maxval) newcoord = coord;if (newcoord<1)newcoord=1;end;if (newcoord>maxval)newcoord=maxval;end;7.模板匹配function [ccorr, mfit, RectCoord] = mobanpipei(mult, frontalmodel,ly,wx,cx, cy, angle)frontalmodel=rgb2gray(frontalmodel);model_rot = imresize(frontalmodel,[ly wx],'bilinear'); % 调整模板大小model_rot = imrotate(model_rot,angle,'bilinear'); % 旋转模板[l,r,u,d] = bianjie(model_rot); % 求边界坐标bwmodel_rot=imcrop(model_rot,[l u (r-l) (d-u)]); % 选择模板人脸区域[modx,mody] =center(bwmodel_rot); % 求质心[morig, norig] = size(bwmodel_rot);% 产生一个覆盖了人脸模板的灰度图像mfit = zeros(size(mult));mfitbw = zeros(size(mult));[limy, limx] = size(mfit);% 计算原图像中人脸模板的坐标startx = cx-modx;starty = cy-mody;endx = startx + norig-1;endy = starty + morig-1;startx = checklimit(startx,limx);starty = checklimit(starty,limy);endx = checklimit(endx,limx);endy = checklimit(endy,limy);for i=starty:endy,for j=startx:endx,mfit(i,j) = model_rot(i-starty+1,j-startx+1);end;end;ccorr = corr2(mfit,mult) % 计算相关度[l,r,u,d] = bianjie(bwmodel_rot);sx = startx+l;sy = starty+u;RectCoord = [sx sy (r-1) (d-u)]; % 产生矩形坐标8.主程序clear;[fname,pname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.gif'},'Please choose a color picture...'); % 返回打开的图片名与图片路径名[u,v]=size(fname);y=fname(v); % 图片格式代表值switch ycase 0errordlg('You Should Load Image File First...','Warning...');case{'g';'G';'p';'P';'f';'F'}; % 图片格式若是JPG/jpg、BMP/bmp、TIF/tif 或者GIF/gif,才打开I=cat(2,pname,fname);Ori_Face=imread(I);subplot(2,3,1),imshow(Ori_Face);otherwiseerrordlg('You Should Load Image File First...','Warning...');endR=Ori_Face(:,:,1);G=Ori_Face(:,:,2);B=Ori_Face(:,:,3);R1=im2double(R); % 将uint8型转换成double型处理G1=im2double(G);B1=im2double(B);RGB=R1+G1+B1;m=[ 0.4144,0.3174]; % 均值n=[0.0031,-0.0004;-0.0004,0.0003]; % 方差row=size(Ori_Face,1); % 行像素数column=size(Ori_Face,2); % 列像素数for i=1:rowfor j=1:columnif RGB(i,j)==0rr(i,j)=0;gg(i,j)=0;elserr(i,j)=R1(i,j)/RGB(i,j); % rgb归一化gg(i,j)=G1(i,j)/RGB(i,j);x=[rr(i,j),gg(i,j)];p(i,j)=exp((-0.5)*(x-m)*inv(n)*(x-m)'); % 皮肤概率服从高斯分布endendendsubplot(2,3,2);imshow(p); % 显示皮肤灰度图像low_pass=1/9*ones(3);image_low=filter2(low_pass, p); % 低通滤波去噪声subplot(2,3,3);imshow(image_low);% 自适应阀值程序previousSkin2 = zeros(i,j);changelist = [];for threshold = 0.55:-0.1:0.05two_value = zeros(i,j);two_value(find(image_low>threshold)) = 1;change = sum(sum(two_value - previousSkin2));changelist = [changelist change];previousSkin2 = two_value;end[C, I] = min(changelist);optimalThreshold = (7-I)*0.1two_value = zeros(i,j);two_value(find(image_low>optimalThreshold)) = 1; % 二值化subplot(2,3,4);imshow(two_value); % 显示二值图像frontalmodel=imread('E:\我的照片\人脸模板.jpg'); % 读入人脸模板照片FaceCoord=[];imsourcegray=rgb2gray(Ori_Face); % 将原照片转换为灰度图像[L,N]=bwlabel(two_value,8); % 标注二值图像中连接的部分,L为数据矩阵,N为颗粒的个数for i=1:N,[x,y]=find(bwlabel(two_value)==i); % 寻找矩阵中标号为i的行和列的下标bwsegment = bwselect(two_value,y,x,8); % 选择出第i个颗粒numholes = 1-bweuler(bwsegment,4); % 计算此区域的空洞数if (numholes >= 1) % 若此区域至少包含一个洞,则将其选出进行下一步运算RectCoord = -1;[m n] = size(bwsegment);[cx,cy]=center(bwsegment); % 求此区域的质心bwnohole=bwfill(bwsegment,'holes'); % 将洞封住(将灰度值赋为1)justface = uint8(double(bwnohole) .* double(imsourcegray));% 只在原照片的灰度图像中保留该候选区域angle = orient(bwsegment,cx,cy); % 求此区域的偏转角度bw = imrotate(bwsegment, angle, 'bilinear');bw = bwfill(bw,'holes');[l,r,u,d] =bianjie(bw);wx = (r - l +1); % 宽度ly = (d - u + 1); % 高度wratio = ly/wx % 高宽比if ((0.8<=wratio)&(wratio<=2))% 如果目标区域的高度/宽度比例大于0.8且小于2.0,则将其选出进行下一步运算S=ly*wx; % 计算包含此区域矩形的面积A=bwarea(bwsegment); % 计算此区域面积if (A/S>0.35)[ccorr,mfit, RectCoord] = mobanpipei(justface,frontalmodel,ly,wx, cx,cy, angle);endif (ccorr>=0.6)mfitbw=(mfit>=1);invbw = xor(mfitbw,ones(size(mfitbw)));source_with_hole = uint8(double(invbw) .* double(imsourcegray));final_image = uint8(double(source_with_hole) + double(mfit));subplot(2,3,5);imshow(final_image); % 显示覆盖了模板脸的灰度图像imsourcegray = final_image;subplot(2,3,6);imshow(Ori_Face); % 显示检测效果图end;if (RectCoord ~= -1)FaceCoord = [FaceCoord; RectCoord];endendendend% 在认为是人脸的区域画矩形[numfaces x] = size(FaceCoord);for i=1:numfaces,hd = rectangle('Position',FaceCoord(i,:));set(hd, 'edgecolor', 'y');end人脸检测是人脸识别、人机交互、智能视觉监控等工作的前提。
基于matlab的人脸识别
本科生毕业论文(设计)题目基于MATLAB的人脸识别姓名学号院系专业自动化指导教师职称2015年5月15日曲阜师范大学教务处制目录摘要 (1)关键词 (1)Abstract (1)K e y w o r d s (1)1 绪论 (2)1.1 基本介绍与概念 (2)1.2 研发历史与发展现状 (3)1.3 研究背景与意义 (3)2 人脸检测 (4)2.1 检测的具体步骤 (4)2.1 YCbCr空间 (4)2.2 灰度图像转换 (4)2.3 噪声消除 (5)2.4 图像填孔 (5)2.5 图像重构 (5)2.6 边缘检测 (6)2.7 利用规则确定人脸 (6)3 人脸识别 (7)3.1 人脸识别的步骤 (7)3.2 K-L变换原理 (7)3.3 K-L变换 (7)3.4 图像特征脸基底的确立 (8)3.5 图像的识别 (9)4 MATLAB仿真功能的实现 (10)4.1 系统仿真综述 (10)4.2选择预存人脸数据库 (10)4.3 创建预存人脸向量库T (13)4.4 求特征脸空间 (14)4.5人脸识别 (15)4.6 人脸识别结果显示 (16)5 结果分析 (17)6 结论 (18)致谢 (19)参考文献 (19)附录: (20)基于MATLAB的人脸识别自动化专业学生指导老师摘要:人脸识别起始于上个世纪60年代,具有广泛的应用前景,它的工作原理是借由个体的生物特征来确认生物个体,文章利用MATLAB软件实现人脸信息的检测与识别,在输入的图像中寻找人脸区域,把图像分割成两个部分——人脸区域和非人脸区域,之后与设定的人脸库进行特征值比较,辨识出人脸代表的身份。
文章利用YCbCr空间以及二值图像实现人脸边缘分割,用霍特林变换(Kaehunen-Love Transform,K-L)以及主成分分析(Principal Component Analysis,PCA)算法对人脸进行识别对比,并详细介绍了K-L的推导过程,并在MATLAB上对PCA人脸识别算法进行仿真。
基于某matlab程序实现人脸识别
基于matlab程序实现人脸识别1.人脸识别流程1.1.1基本原理基于YCbCr颜色空间的肤色模型进行肤色分割。
在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显著不同。
采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。
1.1.2流程图人脸识别流程图读入原始图像将图像转化为YCbCr颜色空间利用肤色模型二值化图像并作形态学处理选取出二值图像中的白色区域,度量区域属性,筛选后得到所有矩形块否筛选特定区域(高度和宽度的比率在(0.6~2)之间,眼睛特征)是存储人脸的矩形区域特殊区域根据其他信息筛选,标记最终的人脸区域2.人脸识别程序(1)人脸和非人脸区域分割程序function result = skin(Y,Cb,Cr)%SKIN Summary of this function goes here% Detailed explanation goes herea=25.39;b=14.03;ecx=1.60;ecy=2.41;sita=2.53;cx=109.38;cy=152.02;xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)]; %如果亮度大于230,则将长短轴同时扩大为原来的1.1倍if(Y>230)a=1.1*a;b=1.1*b;end%根据公式进行计算Cb=double(Cb);Cr=double(Cr);t=[(Cb-cx);(Cr-cy)];temp=xishu*t;value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2;%大于1则不是肤色,返回0;否则为肤色,返回1if value>1result=0;elseresult=1;endend(2)人脸的确认程序function eye = findeye(bImage,x,y,w,h)%FINDEYE Summary of this function goes here % Detailed explanation goes herepart=zeros(h,w);%二值化for i=y:(y+h)for j=x:(x+w)if bImage(i,j)==0part(i-y+1,j-x+1)=255;elsepart(i-y+1,j-x+1)=0;endendend[L,num]=bwlabel(part,8);%如果区域中有两个以上的矩形则认为有眼睛if num<2eye=0;elseeye=1;endend(3)人脸识别主程序clear all;%读入原始图像I=imread('face3.jpg');gray=rgb2gray(I);ycbcr=rgb2ycbcr(I);%将图像转化为YCbCr空间heighth=size(gray,1);%读取图像尺寸width=size(gray,2);for i=1:heighth %利用肤色模型二值化图像for j=1:widthY=ycbcr(i,j,1);Cb=ycbcr(i,j,2);Cr=ycbcr(i,j,3);if(Y<80)gray(i,j)=0;elseif(skin(Y,Cb,Cr)==1)%根据色彩模型进行图像二值化 gray(i,j)=255;elsegray(i,j)=0;endendendendse=strel('arbitrary',eye(5));%二值图像形态学处理gray=imopen(gray,se);figure;imshow(gray)[L,num]=bwlabel(gray,8);%采用标记方法选出图中的白色区域stats=regionprops(L,'BoundingBox');%度量区域属性n=1;%存放经过筛选以后得到的所有矩形块result=zeros(n,4);figure,imshow(I);hold on;for i=1:num %开始筛选特定区域box=stats(i).BoundingBox;x=box(1);%矩形坐标Xy=box(2);%矩形坐标Yw=box(3);%矩形宽度wh=box(4);%矩形高度hratio=h/w;%宽度和高度的比例ux=uint16(x);uy=uint8(y);if ux>1ux=ux-1;endif uy>1uy=uy-1;endif w<20 || h<20|| w*h<400 %矩形长宽的范围和矩形的面积可自行设定continueelseif ratio<2 && ratio>0.6 && findeye(gray,ux,uy,w,h)==1 %根据“三庭五眼”规则高度和宽度比例应该在(0.6,2)内;result(n,:)=[ux uy w h];n=n+1;endendif size(result,1)==1 && result(1,1)>0 %对可能是人脸的区域进行标记rectangle('Position',[result(1,1),result(1,2),result(1,3),result(1,4) ],'EdgeColor','r');else%如果满足条件的矩形区域大于1,则再根据其他信息进行筛选arr1=[];arr2=[];for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%得到符合和人脸匹配的数据if m1+m3<width && m2+m4<heighth && m3<0.2*widtha=a+1;arr1(a)=m3;arr2(a)=m4;%rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend%得到人脸长度和宽度的最小区域arr3=[];arr3=sort(arr1,'ascend');arr4=[];arr4=sort(arr2,'ascend');%根据得到的数据标定最终的人脸区域for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%最终标定人脸if m1+m3<width && m2+m4<heighth && m3<0.2*widthm3=arr3(1);m4=arr4(1);rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend(4)程序说明人脸识别程序主要包含三个程序模块,人脸识别主程序由三部分构成。
《基于MATLAB的人脸识别算法的研究》范文
《基于MATLAB的人脸识别算法的研究》篇一一、引言人脸识别技术是计算机视觉领域的重要分支,随着科技的发展和大数据的普及,其在安全监控、身份认证、智能交互等领域得到了广泛的应用。
本文旨在基于MATLAB平台,研究并分析几种常见的人脸识别算法,并对其性能进行对比与评价。
二、人脸识别算法概述人脸识别算法主要包括基于特征的人脸识别算法和基于深度学习的人脸识别算法两大类。
其中,基于特征的人脸识别算法如主成分分析(PCA)、线性判别分析(LDA)、局部二值模式(LBP)等,通过提取人脸特征进行识别;而基于深度学习的人脸识别算法如卷积神经网络(CNN)等,通过深度学习技术自动提取人脸特征并进行识别。
三、基于MATLAB的人脸识别算法实现1. 数据准备:使用MATLAB的Image Acquisition Toolbox获取人脸图像数据,并进行预处理,包括灰度化、归一化等操作。
2. 特征提取:采用PCA、LDA等算法提取人脸特征。
在MATLAB中,可以利用其内置的函数或编写自定义函数进行特征提取。
3. 分类器设计:根据提取的特征,设计分类器进行人脸识别。
在MATLAB中,可以使用其内置的分类器函数或自行设计分类器。
4. 算法实现:将上述步骤组合起来,实现基于MATLAB的人脸识别算法。
四、常见人脸识别算法的比较与分析1. PCA算法:PCA是一种常用的特征提取方法,能够有效地降低数据的维度,提高识别的速度和准确性。
但PCA算法对光照、表情等因素的敏感性较高,需要结合其他技术进行优化。
2. LDA算法:LDA算法通过最大化类间距离和最小化类内距离来提取特征,具有较好的分类性能。
但LDA算法对样本数量的要求较高,样本数量不足时可能导致性能下降。
3. CNN算法:CNN是一种基于深度学习的人脸识别算法,能够自动提取人脸特征并进行识别。
CNN算法具有较高的准确性和鲁棒性,但需要大量的训练数据和计算资源。
五、实验与结果分析为了验证上述人脸识别算法的性能,我们进行了多组实验。
基于matlab程序实现人脸识别
For personal use only in study andresearch; not for commercial use基于matlab程序实现人脸识别1.人脸识别流程基于YCbCr颜色空间的肤色模型进行肤色分割。
在YCbCr色彩空间内对肤色进行了建模发现,肤色聚类区域在Cb—Cr子平面上的投影将缩减,与中心区域显着不同。
采用这种方法的图像分割已经能够较为精确的将人脸和非人脸分割开来。
人脸识别流程图2.人脸识别程序(1)人脸和非人脸区域分割程序function result = skin(Y,Cb,Cr)%SKIN Summary of this function goes here% Detailed explanation goes herea=25.39;b=14.03;ecx=1.60;ecy=2.41;sita=2.53;cx=109.38;cy=152.02;xishu=[cos(sita) sin(sita);-sin(sita) cos(sita)];%如果亮度大于230,则将长短轴同时扩大为原来的1.1倍if(Y>230)a=1.1*a;b=1.1*b;end%根据公式进行计算Cb=double(Cb);Cr=double(Cr);t=[(Cb-cx);(Cr-cy)];temp=xishu*t;value=(temp(1)-ecx)^2/a^2+(temp(2)-ecy)^2/b^2;%大于1则不是肤色,返回0;否则为肤色,返回1if value>1result=0;elseresult=1;endend(2)人脸的确认程序function eye = findeye(bImage,x,y,w,h)%FINDEYE Summary of this function goes here % Detailed explanation goes herepart=zeros(h,w);%二值化for i=y:(y+h)for j=x:(x+w)if bImage(i,j)==0part(i-y+1,j-x+1)=255;elsepart(i-y+1,j-x+1)=0;endendend[L,num]=bwlabel(part,8);%如果区域中有两个以上的矩形则认为有眼睛if num<2eye=0;elseeye=1;endend(3)人脸识别主程序clear all;%读入原始图像I=imread('face3.jpg');gray=rgb2gray(I);ycbcr=rgb2ycbcr(I);%将图像转化为YCbCr空间heighth=size(gray,1);%读取图像尺寸width=size(gray,2);for i=1:heighth %利用肤色模型二值化图像for j=1:widthY=ycbcr(i,j,1);Cb=ycbcr(i,j,2);Cr=ycbcr(i,j,3);if(Y<80)gray(i,j)=0;elseif(skin(Y,Cb,Cr)==1)%根据色彩模型进行图像二值化gray(i,j)=255;elsegray(i,j)=0;endendendendse=strel('arbitrary',eye(5));%二值图像形态学处理gray=imopen(gray,se);figure;imshow(gray)[L,num]=bwlabel(gray,8);%采用标记方法选出图中的白色区域stats=regionprops(L,'BoundingBox');%度量区域属性n=1;%存放经过筛选以后得到的所有矩形块result=zeros(n,4);figure,imshow(I);hold on;for i=1:num %开始筛选特定区域box=stats(i).BoundingBox;x=box(1);%矩形坐标Xy=box(2);%矩形坐标Yw=box(3);%矩形宽度wh=box(4);%矩形高度hratio=h/w;%宽度和高度的比例ux=uint16(x);uy=uint8(y);if ux>1ux=ux-1;endif uy>1uy=uy-1;endif w<20 || h<20|| w*h<400 %矩形长宽的范围和矩形的面积可自行设定continueelseif ratio<2 && ratio>0.6 && findeye(gray,ux,uy,w,h)==1%根据“三庭五眼”规则高度和宽度比例应该在(0.6,2)内;result(n,:)=[ux uy w h];n=n+1;endendif size(result,1)==1 && result(1,1)>0 %对可能是人脸的区域进行标记rectangle('Position',[result(1,1),result(1,2),result(1,3),result(1,4)],'EdgeColor','r'); else%如果满足条件的矩形区域大于1,则再根据其他信息进行筛选a=0;arr1=[];arr2=[];for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%得到符合和人脸匹配的数据if m1+m3<width && m2+m4<heighth && m3<0.2*width a=a+1;arr1(a)=m3;arr2(a)=m4;%rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endend%得到人脸长度和宽度的最小区域arr3=[];arr3=sort(arr1,'ascend');arr4=[];arr4=sort(arr2,'ascend');%根据得到的数据标定最终的人脸区域for m=1:size(result,1)m1=result(m,1);m2=result(m,2);m3=result(m,3);m4=result(m,4);%最终标定人脸if m1+m3<width && m2+m4<heighth && m3<0.2*widthm3=arr3(1);m4=arr4(1);rectangle('Position',[m1,m2,m3,m4],'EdgeColor','r');endendend(4)程序说明人脸识别程序主要包含三个程序模块,人脸识别主程序由三部分构成。
基于matlab的人脸识别
数字图象处理Ⅰ实验题目:基于matlab的人脸识别Ⅱ实验内容:一:研究背景随着人工智能技术的兴起,以及人类视觉研究的进展,人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,这一领域除了它的重大理论价值外,也极具实用价值。
如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。
人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,开发研究的实际意义更大。
然而人脸图像受很多因素的干扰,给识别带来很大难度。
国外对于人脸图像识别的研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,国内也有许多科研机构从事这方而的研究,并己取得许多成果。
二、应用前景人脸图像识别除了具有重大的理论价值以及极富挑战性外,还其有许多潜在的应用前景,利用人脸图像来进行身份验证,可以不与目标相接触就取得样本图像,而其它的身份验证手段,如指纹、眼睛虹膜等必须通过与目标接触或相当接近来取得样木,在某些场合,这些识别手段就会有不便之处。
就从目前和将来来看,可以预测到人脸图像识别将具有广阔的应用前景,如表中所列举就是其中已经实现或逐步完善的应用。
三、框架(1)人脸图像的获取一般来说,图像的获取都是通过摄像头摄取,但摄取的图像可以是真人,也可以是人脸的图片或者为了相对简单,可以不考虑通过摄像头来摄取头像,而是直接给定要识别的图像。
(2)人脸的检测人脸检测的任务是判断静态图像中是否存在人脸。
若存在人脸,给出其在图像中的坐标位置、人脸区域大小等信息。
而人脸跟踪则需要进一步输出所检测到的人脸位置、大小等状态随时间的连续变化情况。
(3)特征提取通过人脸特征点的检测与标定可以确定人脸图像中显著特征点的位置(如眼睛、眉毛、鼻子、嘴巴等器官),同时还可以得到这些器官及其面部轮廓的形状信息的描述。
根据人脸特征点检测与标定的结果,通过某些运算得到人脸特征的描述。
(4)基于人脸图像比对的身份识别通过将输入人脸图像与人脸数据库中的所有已知原型人脸图像计算相似度并对其排序来给出输入人脸的身份信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像识别题目:基于MATLAB的人脸识别院系:计算机科学与应用系班级:姓名:学号:日期:目录引言 (1)1 人脸识别技术 (2)1.1人脸识别的研究内容 (2)1.1.1人脸检测(Face Detection) (2)1.1.2人脸表征(Face Representation) (2)1.2几种典型的人脸识别方法 (3)1.2.1基于几何特征的人脸识别方法 (3)1.2.2基于K-L变换的特征脸方法 (4)1.2.3神经网络方法 (4)1.2.4基于小波包的识别方法 (5)1.2.5支持向量机的识别方法 (5)2 人脸特征提取与识别 (5)2.1利用PCA进行特征提取的经典算法——Eigenface算法 (6)2.2 PCA人脸识别流程 (6)2.3特征向量选取 (8)2.4距离函数的选择 (9)2.5 基于PCA的人脸识别 (9)MATLAB人脸识别程序 (10)3 MATLAB软件程序编写 (10)3.1.创建图片数据库 (10)3.2 主程序 (11)3.3最终程序结果 (12)4 心得与体会 (12)参考文献 (13)引言随着社会的发展及技术的进步,社会各方面对快速高效的自动身份验证的需求可以说无处不在,并与日俱增。
例如,某人是否是我国的居民,是否有权进入某安全系统,是否有权进行特定的交易等。
尤其是自2001年美国“9.1l”恐怖袭击发生以来,如何在车站、机场等公共场所利用高科技手段,迅速而准确地发现并确认可疑分子成了目前世界各国在反恐斗争中普遍关注的问题。
为此,各国都投入大量人力、物力研究发展各类识别技术,使得生物特征识别技术得到了极大的发展。
生物特征识别技术主要包括:人脸识别、虹膜识别、指纹识别、步态识别、语音识别、笔迹识别、掌纹识别以及多生物特征融合识别等。
人类通过视觉识别文字,感知外界信息。
在客观世界中,有75%的信息量都来自视觉,因此让计算机或机器人具有视觉,是人工智能的重要环节。
由于生物特征是人的内在属性,具有很强的稳定性和个体差异性,因此是身份验证最理想的依据。
与虹膜、指纹、基因、掌纹等其他人体生物特征识别系统相比,人脸识别系统更加直接、方便、友好,易于为用户所接受,并且通过人脸的表情、姿态分析,还能获得其它识别系统难以得到的一些信息。
人脸识别技术在国家重要机关及社会安防领域具有广泛用途。
例如:公安系统的罪犯识别、信用卡验证、医学、档案管理、视频会议、人机交互系统等身份识别和各类卡持有人的身份验证。
同其他人体生物特征(如:指纹、掌纹、虹膜、语音等)识别技术相比,人脸识别技术的隐性最好,人脸识别系统更直接、友好,是当今国际反恐和安防最重视的科技手段和攻关标志之一。
虽然人类能毫不费力地识别出人脸及表情,但对人脸的机器自动识别确实一个难度极大的课题,它涉及到模式识别、图像处理及生理、心理学等诸多方面的知识。
人脸识别技术的研究虽然己经取得了一定的可喜成果,但在实际应用中仍存在着许多严峻的问题。
人脸的非刚体性、姿态、表情、发型以及化妆的多样性都给正确识别带来了困难,要让计算机像人一样方便地识别出大量的人脸,尚需不同科学研究领域的科学家共同不懈的努力。
1 人脸识别技术人脸因人而异,绝无相同,即使一对双胞胎,其面部也一定存在着某方面的差异。
虽然人类在表情、年龄或发型等发生巨大变化的情况下,可以毫不困难地由脸而识别出某一个人,但要建立一个能够完全自动进行人脸识别的系统却是非常困难的,它牵涉到模式识别、图像处理、计算机视觉、生理学、心理学以及认知科学等方面的诸多知识,并与基于其他生物特征的身份鉴别方法以及计算机人机感知交互领域都有密切联系。
与指纹、视网膜、虹膜、基因、掌形等其他人体生物特征识别系统相比,人脸识别系统更加直接、友好,使用者无任何心理障碍,并且通过人脸的表情和姿态分析,还能获得其他识别系统难以得到的一些信息。
20世纪90年代以来,随着需要的剧增,人脸识别技术成为一个热门的研究话题。
1.1人脸识别的研究内容人脸识别(Face Recognition)是利用计算机对人脸图像进行特征提取和识别的模式识别技术。
在二十世纪七十年代初,对人脸识别的研究涉及心理学神经科学。
其直接目的是要搞清楚人是如何对人脸进行识别的。
七十年代中期以后,开展了用数学、物理和技术的方法对人脸自动识别的研究。
人脸识别一般可描述为:给定静止图像或动态图像序列,利用已有的人脸图像数据库来确认图像中的一个或多个人。
从广义上来说,计算机人脸识别的研究内容大概可以分为以下五个方面。
1.1.1人脸检测(Face Detection)此过程包括人脸检测(Detection)、人脸定位(Location)和人脸跟踪(Tracking)。
所谓人脸检测,就是给定任意图像,确定其中是否存在人脸,如果有,给出人脸的位置、大小等状态信息。
人脸跟踪指在一纽连续静态图像所构成的动态视频中实时地检测人脸。
人脸检测主要受到光照、噪声、姿念以及遮挡等因素的影响,人脸检测的结果直接关系到后面两个过程的准确性。
近年来,人脸检测和跟踪开始成为独立的研究课题受到关注。
1.1.2人脸表征(Face Representation)人脸表征就是提取人脸的特征,是将现实空间的图像映射到机器空间的过程。
人脸的表示具有多样性和唯一性,这其实就是人脸共性和特性之间的关系问题:只有保持这种多样性和唯一性,才能保证人脸图像的准确描述和识别。
人脸图像信息数据量巨大,为提高检测和识别的运算速度以及提高图像传输和匹配检索速度,必须对图像进行数据压缩,降低向量维数,即用尽可能少的数据表示尽可能多的信息。
人脸的表征在提取人脸特征的同时,也实现了对原始图像数据的降维。
1.2几种典型的人脸识别方法对人脸识别方法的研究主要有两大方向:一是基于人脸图像局部特征的识别方法;二是基于人脸图像整体特征的识别方法。
基于人脸图像局部特征的识别通常抽取人脸器官如眼睛、眉毛、鼻子和嘴等器官的位置,尺度以及彼此间的比率作为特征。
进一步地可以用几何形状拟合人脸器官,从而以几何参数作为描述人脸的特征。
由于此类方法通常要精确地抽取出位置、尺度、比率或几何参数作为描述人脸的特征,因此对人脸图像的表情变化比较敏感。
同时,人脸器官分割的精确度也对人脸特征的提取有一定的影响。
另外,该类方法并没有充分利用到人脸图像本身具有的获度信息,该方向已经不是人脸识别技术发展的主流方向。
基于人脸图像整体特征的人脸识别方法由于不需要精确提取人脸图像中部件的具体信息,而且可以充分利用到人脸图像本身具有的灰度信息,因此可获得更好的识别性能。
目前,绝大部分关于人脸识别方法的文章都是基于人脸图像整体特征的,主要有特征脸法、最佳鉴别向量集法,贝叶斯法,基予傅立叶不变特征法,弹性图匹配法,其他相关方法有线性子空间法,可变形模型法和神经网络法。
这些方法中有的侧重于表述人脸图像的特征提取,如弹性图匹配法和傅立叶不变特征法;有的则侧重于分类,如最佳鉴别向量集法、贝叶斯法和神经网络法;而有的则侧重于人脸图像重构,如特征脸法和线性子空间法。
所有这些基于人脸图像整体特征的人脸识别方法均取得了一定的识别性能。
1.2.1基于几何特征的人脸识别方法基于几何特征的人脸识别方法主要源于人脸识别的初期研究阶段。
这种方法是以人脸各个器官和几何关系为基础进行算法设计。
对于不同人来说,脸上的各个器官,如眼睛、鼻子、嘴巴以及整个脸部的轮廓具有不同的形状、大小、相对位置和分布情况。
在基于几何特征的人脸识别方法中,可以用一个矢量来表示提取出来的几何参数。
如果要获得一个准确、稳定和可靠的识别结果,就要求这些被选出的几何特征参数包含足够丰富的辨识人脸的信息,且能反映不同人脸之间的差别。
也就是说对这些矢量要求具有较高的模式分类能力,同时还要有一定的稳健性,能够消除由于时间变迁、光照变化等其他干扰因素所带来的影响。
具体来沈,这些几何参数一般包括人脸上两个指定特征点之间的欧式距离、边缘曲率、角度等等。
在实际应用过程中,基于几何特征的人脸识别方法存在着两个方面的问题:(1)如何快速、准确地检测出入脸的重要标志点依然是一个没有很好解决的问题。
脸上的重要标志点,如瞳孔、嘴巴和鼻子,它们在脸上的位置是进行脸部几何参数计算和测量的基准。
(2)脸部几何特征在人脸辨识中的有效性问题,即脸部几何特征能够提供多少可供识别的信息量。
虽然各人脸的器官在形状、大小及分布上各不相同,但是这种器官上的差异性更多是体现在某些细微的感觉意义上。
例如眼睛显得比较小、鼻子显得比较宽,以及皮肤的纹理、颜色上的差异等等。
显然,这些特征中的一部分是难以精确测量出来或者是不能用几何参数准确描述的。
所以仅靠增加脸上几何参数的数目来提高人脸识别率是不太现实的。
由于进一步改善测量精度是十分困难的,因而通过增加脸部几何参数的数量来改善识别率结果,其影响是极小的。
因此,基于少量人脸几何特征进行大规模人脸辨识的可靠性是不容乐观的。
1.2.2基于K-L变换的特征脸方法K-L变换是图像压缩的一种最优正交变换,人们将它应用于特征提取,形成了子空间法模式识别的基础。
将K-L变换用于人脸识别,需要假设人脸处于低维的线性空间,不同人脸具有可分性。
高维的图像空间经过K-L变换后得到一组新的正交基,保留其中重要的正交基从而形成了低维的人脸空间。
若将所有子空间的正交基排列成图像阵列,则正交基呈现人脸的形状,因此这些正交基也被称为特征脸。
选择那些正交基形成的子空间则有不同的考虑,与较大特征值对应的一些正交基(也称主分量)能够表达人脸的大体形状,而具体细节需要那些小特征值对应的特征向量(也称次分量)来加以补充描述,因此低频成分用主分量表示,高频分量用次分量表示。
采用主分量作为新的正交空间的正交基的方法称为主分量(Principal Component Analysis,简称PCA)方法。
K-L变换在90年代初受到了很大的重视,实际用于人脸识别取得了很好的效果,一般库德大小为100幅左右,识别率在70%-100%之间不等,这主要取决于人脸库图像的质量。
从压缩能量的角度来看,K-L变换是最优的,变换后的低维空间对于人脸有很好的表达能力,然而这并不等同于对不同人脸具有较好的判别能力。
选择训练样本的散布矩阵作为K-L变换的生成矩阵,其最大特征向量反映了该样本集合的最大分布的方向,但这是图像统计方法,而不是人脸统计方法。
它查找的是图像之间所有的差异,并根据这些差异来确定不同人脸间的距离,而不管这些差异是由于光线、发型或背景的改变引起的,还是属于人脸本身的内在差异,因此特征脸的方法用于人脸识别存在理论的缺陷。
研究表明,特征连的方法随着光线、角度以及人脸的尺寸的引入而识别率急剧下降。
主分量的方法使得变换后的表达能力最佳,次分量的方法考虑了高频的人脸区分能力,但是由于外在因素带来图像差异和人脸本身带来的差异对K-L变换而言是不加任何区分的,因此,如何选择正交基并不根本解决问题。