人脸识别课程设计附带代码文档格式.docx
《人脸识别课程设计附带代码文档格式.docx》由会员分享,可在线阅读,更多相关《人脸识别课程设计附带代码文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
除了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)为矩阵ATA的r个非零特征值,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].北京:
电子工业出版社,2000.4
[2]贺兴华.MATLAB7.x图像处理[M].北京:
人民邮电出版社,2006.11
[3]王耀南.计算机图像处理与识别技术[M].北京:
高等教育出版社,2001.6
[4]章毓晋.图像工程[M].北京:
清华大学出版社,2001.9
[5]胡学龙.数字图像处理[M].北京:
电子工业出版社,2006.9
[6]罗军辉.MATLAB7.0在图像处理中的应用[M].北京:
机械工业出版社,2005.6
[7]刘文耀.数字图像采集与处理[M].北京:
电子工业出版社,2007.8
[8]缪绍纲.数字图像处理——活用MATLAB[M].成都:
西南交通大学出版社,2001.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);
二值图像'
[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:
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:
y2)=0;
y1=y1+c;
%列跳跃
y2=y2+c;
x1=x1+r;
%行跳跃
x2=x2+r;
[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
%如果满足面积块大,而且宽/高<
mx=p;
j=k;
imshow(I);
holdon;
rectangle('
Position'
Bd(j,:
),...
3);
标记图像'
%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'
willbeaMNxP2Dmatrix.
%Seealso:
STRCMP,STRCAT,RESHAPE
%OriginalversionbyAmirHosseinOmidvarnia,October2007
%Email:
***************.ac.ir
%%%%%%%%%%%%%%%%%%%%%%%%Filemanagement
TrainFiles=dir(TrainDatabasePath);
Train_Number=0;
size(TrainFiles,1)
ifnot(strcmp(TrainFiles(i).name,'
.'
)|strcmp(TrainFiles(i).name,'
..'
Thumbs.db'
))
Train_Number=Train_Number+1;
%Numberofallimagesinthetrainingdatabase
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];
%'
growsaftereachturn
%EigenfaceCore
function[m,A,Eigenfaces]=EigenfaceCore(T)
%UsePrincipleComponentAnalysis(PCA)todeterminethemost
%discriminatingfeaturesbetweenimagesoffaces.
Thisfunctiongetsa2Dmatrix,containingalltrainingimagevectors
%andreturns3outputswhichareextractedfromtrainingdatabase.
%columnvectorsisM*Nand'
m-(M*Nx1)Meanofthetrainingdatabase
%Eigenfaces-(M*Nx(P-1))Eigenvectorsofthecovariancematrixofthetrainingdatabase
%A-(M*NxP)Matrixofcenteredimagevectors
EIG
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingthemeanimage
m=mean(T,2);
%Computingtheaveragefaceimagem=(1/P)*sum(Tj'
s)(j=1:
P)
Train_Number=size(T,2);
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingthedeviationofeachimagefrommeanimage
A=[];
temp=double(T(:
i))-m;
%ComputingthedifferenceimageforeachimageinthetrainingsetAi=Ti-m
A=[Atemp];
%Mergingallcenteredimages
%%%%%%%%%%%%%%%%%%%%%%%%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=[];
size(V,2)
if(D(i,i)>
1)
L_eig_vec=[L_eig_vecV(:
i)];
%%%%%%%%%%%%%%%%%%%%%%%%Calculatingtheeigenvectorsofcovariancematrix'
C'
%EigenvectorsofcovariancematrixC(orso-called"
Eigenfaces"
)
%canberecoveredfromL'
seiegnvectors.
Eigenfaces=A*L_eig_vec;
%A:
centeredimagevectors
%example
%Asamplescript,whichshowstheusageoffunctions,includedin
%PCA-basedfacerecognitionsystem(Eigenfacemethod)
CREATEDATABASE,EIGENFACECORE,RECOGNITION
clearall
clc
closeall
%Youcancustomizeandfixinitialdirectorypaths
TrainDatabasePath=uigetdir('
D:
\ProgramFiles\MATLAB\R2006a\work'
Selecttrainingdatabasepath'
);
TestDatabasePath=uigetdir('