人脸识别专业课程设计附带代码.docx
- 文档编号:23729022
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:19
- 大小:341.16KB
人脸识别专业课程设计附带代码.docx
《人脸识别专业课程设计附带代码.docx》由会员分享,可在线阅读,更多相关《人脸识别专业课程设计附带代码.docx(19页珍藏版)》请在冰豆网上搜索。
人脸识别专业课程设计附带代码
人脸识别中图像预处理研究
1.课程设计目标
伴随人工智能技术兴起,和人类视觉研究进展,大家逐步对人脸图像机器识别投入很大热情,并形成了一个人脸图像识别研究领域,这一领域除了它重大理论价值外,也极具实用价值。
如同人指纹一样,人脸也含有唯一性,也可用来判别一个人身份。
人脸图像自动识别系统较之指纹识别系统、DNA判定等更具方便性,开发研究实际意义更大。
然而人脸图像受很多原因干扰,给识别带来很大难度。
国外对于人脸图像识别研究较早,现己有实用系统面世,只是对于成像条件要求较苛刻,应用范围也就较窄,中国也有很多科研机构从事这方而研究,并己取得很多结果。
2.方法综述
2.1特征脸法(PCA):
把单个图像看成一维向量,众多一维向量形成了人脸图像特征空间,再将其变换到一个新相对简单特征空间,经过计算矩阵特征值和特征向量,利用图像代数特征信息,寻求“人脸”、“非人脸”两种模式在该特征空间中分布规律。
2.2人工神经网络(ANN)法:
经过训练一个网络结构,把模式统计特征隐含在神经网络结构和参数之中。
基于人工神经网络方法对于复杂、难以显式描述模式,含有独特优势。
2.3支撑向量机(SVM)法:
在统计学习理论基础上发展出一个新模式识别方法,它基于结构风险最小化原理,较之于基于经验风险最小化人工神经网络,部分难以逾越问题,如:
模型选择和过学习问题、非线性和维数灾难问题、局部极小点问题等全部得到了很大程度上处理。
不过直接使用SVM方法进行人脸识别有两方面困难:
第一,训练时需要求解二次计划问题计算复杂度高,内存需求量巨大;第二,在非人脸样本不受限制时,需要极大规模训练集合,得到支持向量会很多,使得分类器计算量过高。
2.4基于积分图像特征人脸检测方法:
是Viola等新近提出一个算法,它综合使用了积分图像描述方法、Adaboost学习算法及训练方法、级联弱分类器。
3.试验结果和分析
3.1人脸识别整体过程
图3.1 人脸识别技术处理步骤图
3.1.1人脸图像获取
通常来说,图像获取全部是经过摄像头摄取,但摄取图像能够是真人,也能够是人脸图片或为了相对简单,能够不考虑经过摄像头来摄取头像,而是直接给定要识别图像。
3.1.2人脸定位
对人脸图像打上网格,对区域块图像做二值分析,经过像素百分比来做处理,进而得到人脸区域。
在彩色图像中,颜色是人脸表面最为显著特征之一,利用颜色检测人脸是很自然想法。
研究人员在考察了不一样种族、不一样个体肤色后,认为人类肤色能在颜色空间中聚成单独一类,而影响肤色值改变最关键原因是亮度改变。
所以她们采取广泛使用RGB颜色空间,在滤去亮度值图像中经过比较像素点r、g值和肤色范围来推断该像素点及其邻域是否属于人脸区域。
除了RGB颜色空间,还有诸如HIS,LUV,GLHS等其它颜色空间被使用。
寻求到肤色区域后,必需进行验证,排除类肤色区域。
利用肤色像素连通性分割出区域,使用椭圆拟合各个区域,依据椭圆长短轴比率判定是否为人脸。
图3.2所表示。
图3.2人脸定位过程
3.1.3图像预处理
①滤波去噪:
空域滤波根据空域滤波器功效又可分为平滑滤波器和锐化滤波器。
平滑滤波器能够用低通滤波实现,目标在于模糊图像或消除噪声;锐化滤波器是用高通滤波来实现,目标在于强调图像被模糊细节。
②灰度变换:
有多个方法能够实现图像灰度变换,其中最常见就是直方图变换方法,即直方图均衡化。
这种方法是一个使输出图像直方图近似服从均匀分布变换算法。
③边缘检测:
数字图像边缘检测是图像分割、目标区域识别、区域形状提取等图像分析领域十分关键基础,也是图像识别中提取图像特征一个关键属性。
边缘检测算子能够检验每个像素邻域并对灰度改变率进行量化,也包含对方向确实定,其中大多数是基于方向导数掩模求卷积方法。
常见有Sobel算子,Prewitt算子,Roberts算子,Log算子等。
3.4.4人脸识别
把单个图像看成一维向量,众多一维向量形成了人脸图像特征空间,再将其变换到一个新相对简单特征空间,经过计算矩阵特征值和特征向量,利用图像代数特征信息,寻求“人脸”、“非人脸”两种模式在该特征空间中分布规律。
传统主成成份分析方法基础原理是:
利用K-L变换抽取人脸关键成份,组成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,经过和各个人脸图像比较进行识别。
对于一幅M*N人脸图像,将其每列相连组成一个大小为D=M*N维列向量。
D就是人脸图像维数,即是图像空间维数。
设n是训练样本数目;Xj表示第j幅人脸图像形成人脸向量,则所需样本协方差矩阵为:
其中U为训练样本平均图像向量:
令A=[x1-u,x2-u,...xn-u],则有Sr=AAT,其维数为D×D。
依据K-L变换原理,需要求得新坐标系由矩阵AAT非零特征值所对应特征向量组成。
直接计算计算量比较大,所以采取奇异值分解(SVD)定理,经过求解ATA特征值和特征向量来取得AAT特征值和特征向量。
依据SVD定理,令li(i=1,2,…,r)为矩阵ATAr个非零特征值,vi为ATA对应于li特征向量,则AAT正交归一特征向量Ui为:
则“特征脸”空间为:
w=(U1,U2,...,Un)
将训练样本投影到“特征脸”空间,得到一组投影向量Ω=wTu,组成人脸识别数据库。
在识别时,先将每一幅待识别人脸图像投影到“特征脸”空间,再利用最邻近分类器比较其和库中人脸位置,从而识别出该图像是否是库中人脸,假如是,是哪一幅人脸。
图3.1.4测试图像和对比结果
3.2试验过程具体分析
3.2.1人脸检测
人脸检测任务是判定静态图像中是否存在人脸。
若存在人脸,给出其在图像中坐标位置、人脸区域大小等信息。
而人脸跟踪则需要深入输出所检测到人脸位置、大小等状态随时间连续改变情况。
3.2.2特征提取
经过人脸特征点检测和标定能够确定人脸图像中显著特征点位置(如眼睛、眉毛、鼻子、嘴巴等器官),同时还能够得到这些器官及其面部轮廓形状信息描述。
依据人脸特征点检测和标定结果,经过一些运算得到人脸特征描述。
3.2.3基于人脸图像比正确身份识别
经过将输入人脸图像和人脸数据库中全部已知原型人脸图像计算相同度并对其排序来给出输入人脸身份信息。
这包含两类识别问题:
一类是闭集人脸识别问题,即假定输入人脸一定是人脸库中某个个体;另一类是开集识别,即首先要对输入人脸是否在已知人脸库中做出判定,假如是,则给出其身份。
3.2.4基于人脸图像比正确身份验证
即人脸确定问题。
系统在输入人脸图像同时输入一个用户宣称该人脸身份信息,系统要对该输入人脸图像身份和宣称身份是否相符作出判定。
4.试验结果分析
人脸识别优势在于其自然性和不被被测个体觉察特点。
人脸识别困难关键是人脸作为生物特征特点所带来。
相同性:
不一样个体之间区分不大,全部人脸结构全部相同,甚至人脸器官结构外形全部很相同。
这么特点对于利用人脸进行定位是有利,不过对于利用人脸区分人类个体是不利。
易变性:
人脸外形很不稳定,人能够经过脸部改变产生很多表情,而在不一样观察角度,人脸视觉图像也相差很大,另外人脸识别还受光照条件、人脸很多遮盖物、年纪等多方面原因影响。
特征脸算法(PCA)使得压缩前后均方误差最小,且变换后低维空间有很好分辨能力,不过在种方法在处理人脸图像时,要将二维图像矩阵转换成一维列向量,使图像维数达成上万维,计算工作量很大,特征提取速度慢。
为了克服传统PCA不足,研究者们相继提出了二维PCA(2DPCA)方法、PCA+2DPCA等部分方法。
这些方法提出不仅有效地处理了图像处理高维问题,而且大大提升了人脸识别率。
5.心得体会
经过本学期对数字图象处理课程学习,是我对数字图像处理领域有了一定了解和体会,熟悉了图像处理步骤和方法方法,加深了我对数字领域了解。
经过matlab试验,是我对matlab应用有了更深入掌握和学习,为下一步学习打下了良好基础。
参考文件
[1]阮秋琦.数字图像处理学[M].北京:
电子工业出版社,.4
[2]贺兴华.MATLAB7.x图像处理[M].北京:
人民邮电出版社,.11
[3]王耀南.计算机图像处理和识别技术[M].北京:
高等教育出版社,.6
[4]章毓晋.图像工程[M].北京:
清华大学出版社,.9
[5]胡学龙.数字图像处理[M].北京:
电子工业出版社,.9
[6]罗军辉.MATLAB7.0在图像处理中应用[M].北京:
机械工业出版社,.6
[7]刘文耀.数字图像采集和处理[M].北京:
电子工业出版社,.8
[8]缪绍纲.数字图像处理——活用MATLAB[M].成全部:
西南交通大学出版社,.7
[9]罗良正.数字图像处理[M].南京:
东南大学出版社,1999.8
附录代码:
(运行exampae.m文件)
%Ch1
Img=imread('1.jpg');
ifndims(Img)==3
I=rgb2gray(Img);
else
I=Img;
end
BW=im2bw(I,graythresh(I));%二值化
figure;
imshow(Img);
title('原图像');
holdon;
[xt,yt]=meshgrid(round(linspace(1,size(I,1),10)),...
round(linspace(1,size(I,2),10)));
mesh(yt,xt,zeros(size(xt)),'FaceColor',...
'None','LineWidth',3,...
'EdgeColor','r');
imshow(BW);
title('二值图像');
[n1,n2]=size(BW);
r=floor(n1/10);%分成10块,行
c=floor(n2/10);%分成10块,列
x1=1;x2=r;%对应行初始化
s=r*c;%块面积
fori=1:
10
y1=1;y2=c;%对应列初始化
forj=1:
10
if(y2<=c||y2>=9*c)||(x1==1||x2==r*10)
%假如是在四面区域
loc=find(BW(x1:
x2,y1:
y2)==0);
[p,q]=size(loc);
pr=p/s*100;%黑色像素所占百分比数
ifpr<=100
BW(x1:
x2,y1:
y2)=0;
end
end
y1=y1+c;%列跳跃
y2=y2+c;%列跳跃
end
x1=x1+r;%行跳跃
x2=x2+r;%行跳跃
end
[L,num]=bwlabel(BW,8);%区域标识
stats=regionprops(L,'BoundingBox');%得到包围矩形框
Bd=cat(1,stats.BoundingBox);
[s1,s2]=size(Bd);
mx=0;
fork=1:
s1
p=Bd(k,3)*Bd(k,4);%宽*高
ifp>mx&&(Bd(k,3)/Bd(k,4))<1.8
%假如满足面积块大,而且宽/高<1.8
mx=p;
j=k;
end
end
imshow(I);holdon;
rectangle('Position',Bd(j,:
),...
'EdgeColor','r','LineWidth',3);
title('标识图像');
%CreateDatabase
functionT=CreateDatabase(TrainDatabasePath)
%Alignasetoffaceimages(thetrainingsetT1,T2,...,TM)
%
%Description:
Thisfunctionreshapesall2Dimagesofthetrainingdatabase
%into1Dcolumnvectors.Then,itputsthese1Dcolumnvectorsinarowto
%construct2Dmatrix'T'.
%
%
%Argument:
TrainDatabasePath-Pathofthetrainingdatabase
%
%Returns:
T-A2Dmatrix,containingall1Dimagevectors.
%SupposeallPimagesinthetrainingdatabase
%havethesamesizeofMxN.Sothelengthof1D
%columnvectorsisMNand'T'willbeaMNxP2Dmatrix.
%
%Seealso:
STRCMP,STRCAT,RESHAPE
%OriginalversionbyAmirHosseinOmidvarnia,October
%Email:
%%%%%%%%%%%%%%%%%%%%%%%%Filemanagement
TrainFiles=dir(TrainDatabasePath);
Train_Number=0;
fori=1:
size(TrainFiles,1)
ifnot(strcmp(TrainFiles(i).name,'.')|strcmp(TrainFiles(i).name,'..')|strcmp(TrainFiles(i).name,'Thumbs.db'))
Train_Number=Train_Number+1;%Numberofallimagesinthetrainingdatabase
end
end
%%%%%%%%%%%%%%%%%%%%%%%%Constructionof2Dmatrixfrom1Dimagevectors
T=[];
fori=1:
Train_Number
%Ihavechosenthenameofeachimageindatabasesasacorresponding
%number.However,itisnotmandatory!
str=int2str(i);
str=strcat('\',str,'.jpg');
str=strcat(TrainDatabasePath,str);
img=imread(str);
img=rgb2gray(img);
[irowicol]=size(img);
temp=reshape(img',irow*icol,1);%Reshaping2Dimagesinto1Dimagevectors
T=[Ttemp];%'T'growsaftereachturn
end
%EigenfaceCore
function[m,A,Eigenfaces]=EigenfaceCore(T)
%UsePrincipleComponentAnalysis(PCA)todeterminethemost
%discriminatingfeaturesbetweenimagesoffaces.
%
%Description:
Thisfunctiongetsa2Dmatrix,containingalltrainingimagevectors
%andreturns3outputswhichareextractedfromtrainingdatabase.
%
%Argument:
T-A2Dmatrix,containingall1Dimagevectors.
%SupposeallPimagesinthetrainingdatabase
%havethesamesizeofMxN.Sothelengthof1D
%columnvectorsisM*Nand'T'willbeaMNxP2Dmatrix.
%
%Returns:
m-(M*Nx1)Meanofthetrainingdatabase
%Eigenfaces-(M*Nx(P-1))Eigenvectorsofthecovariancematrixofthetrainingdatabase
%A-(M*NxP)Matrixofcenteredimagevectors
%
%Seealso:
EIG
%OriginalversionbyAmirHosseinOmidvarnia,October
%Email:
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingthemeanimage
m=mean(T,2);%Computingtheaveragefaceimagem=(1/P)*sum(Tj's)(j=1:
P)
Train_Number=size(T,2);
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingthedeviationofeachimagefrommeanimage
A=[];
fori=1:
Train_Number
temp=double(T(:
i))-m;%ComputingthedifferenceimageforeachimageinthetrainingsetAi=Ti-m
A=[Atemp];%Mergingallcenteredimages
end
%%%%%%%%%%%%%%%%%%%%%%%%SnapshotmethodofEigenfacemethos
%WeknowfromlinearalgebratheorythatforaPxQmatrix,themaximum
%numberofnon-zeroeigenvaluesthatthematrixcanhaveismin(P-1,Q-1).
%Sincethenumberoftrainingimages(P)isusuallylessthanthenumber
%ofpixels(M*N),themostnon-zeroeigenvaluesthatcanbefoundareequal
%toP-1.SowecancalculateeigenvaluesofA'*A(aPxPmatrix)insteadof
%A*A'(aM*NxM*Nmatrix).ItisclearthatthedimensionsofA*A'ismuch
%largerthatA'*A.Sothedimensionalitywilldecrease.
L=A'*A;%ListhesurrogateofcovariancematrixC=A*A'.
[VD]=eig(L);%DiagonalelementsofDaretheeigenvaluesforbothL=A'*AandC=A*A'.
%%%%%%%%%%%%%%%%%%%%%%%%Sortingandeliminatingeigenvalues
%AlleigenvaluesofmatrixLaresortedandthosewhoarelessthana
%specifiedthreshold,areeliminated.Sothenumberofnon-zero
%eigenvectorsmaybelessthan(P-1).
L_eig_vec=[];
fori=1:
size(V,2)
if(D(i,i)>1)
L_eig_vec=[L_eig_vecV(:
i)];
end
end
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingtheeigenvectorsofcovariancematrix'C'
%EigenvectorsofcovariancematrixC(orso-called"Eigenfaces")
%canberecoveredfromL'seiegnvectors.
Eigenfaces=A*L_eig_vec;%A:
centeredimagevectors
%example
%Asamplescript,whichshowstheusageoffunctions,includedin
%PCA-basedfacerecognitionsystem(Eigenfacemethod)
%
%Seealso:
CREATEDATABASE,EIGENFACECORE,RECOGNITION
%OriginalversionbyAmirHosseinOmidvarnia,October
%Email:
clearall
clc
closeall
%Youcancustomizeandfixinitialdirectorypaths
TrainDatabasePath=uigetdir('D:
\ProgramFiles\MATLAB\Ra\work','Selecttrainingdatabasepath');
TestDatabasePath=uigetdir('D:
\ProgramFiles\MATLAB\Ra\work','Selecttestdatabasepath');
prompt={'Entertestimagename(anumberbetween1to10):
'};
dlg_title='InputofPCA-BasedFaceRecognitionSystem';
num_lines=1;
def={'1'};
TestImage=inputdlg(prompt,dlg_title,num_lines,def);
TestImage=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 识别 专业课程 设计 附带 代码