1、现在生物特征鉴别技术迅速的发展,而人脸识别作为生物模式识别中的重要分支,也越来越受到人们的关注和研究。人脸识别技术就是指通过计算机等智能设备采集到有效的人脸特征信息,并根据这些特征对身份进行验证的一门技术。在所有的生物特征识别中,人脸特征是最自然的,也是最友好最容易获取的特征,而且人脸特征提取具有非接触性、操作方便等优点,所以目前人脸识别的研究是图像处理领域里最热门的课题。这次本组总的毕业设计任务就是实现一款人脸识别的软件。其中,由一位同学专门负责系统的平台搭建、最后系统的集成和数据库的部分,其余同学主要负责的功能有实现人脸定位、人脸分割、人眼开闭状态判断、人脸头部动作判断、人脸性别检测、人脸
2、预处理、人脸辨识模式识别和人脸验证模式识别等。而我的主要任务就是实现人脸图像的预处理过程以及通过人脸特征的提取再对人脸进行辨识模式识别的部分。1 人脸识别介绍1.1 人脸识别发展历史人脸识别技术的研究开始于20世纪60年代,在80年代之后,随着光学成像技术和计算机技术的发展而得到提高,然而人脸识别真正进入初级的应用阶段,应该是在90年代的后期,并且当时主要以德国、美国和日本的技术实现为中心。人脸识别系统成功的关键点:一是在于是否拥有尖端的核心算法;让其识别结果的识别率和识别速度具有实用化的特点。人脸识别系统结合了人工智能技术、机器识别、模型理论、机器学习、专家系统以及视频图像处理等多种专业技术
3、,同时需要结合中间值处理的理论与实现。人脸识别是生物特征识别领域里的最新应用,人脸识别系统的核心技术的实现,实现了弱人工智能向强人工智能的转变。1.2 人脸识别系统构成人脸识别系统的结构图如下图1.1所示:图1.1人脸识别系统结构图1.2.1 人脸图像采集及检测人脸图像采集:通过摄像头采集不同对象的人脸图像,并生成原始人脸图像。其中对象包括:静态图像和视频流。当用户被采集对象在采集设备的拍摄范围内的时候,采集设备就会自动搜索和拍摄该对象的人脸图像作为原始人脸图像。人脸检测:人脸检测在现实实践中主要应用于人脸识别的预处理,主要过程就是根据人脸图像的各种模式特征算法,在采集的原始人脸图像中准确标出
4、人脸的位置和大小。1.2.2 人脸图像预处理人脸图像预处理:人脸图像的预处理是在设备检测到人脸之后,对检测到的人脸图像进行处理,然后用于人脸特征提取的过程。由于系统采集到的原始人脸图像往往会受到各种外部因素的限制和干扰,就不能够直接拿来使用,所以就必须在图像处理的早期阶段对它进行灰度校正、直方图均衡化等图像预处理。1.2.3 人脸图像特征提取人脸图像特征提取:人脸识别系统中可以使用的特征一般分成视觉特征、人脸图像变换系数特征、像素统计特征、人脸图像代数特征等。人脸的特征提取就是针对人脸的某些特征来进行的。人脸的特征提取,它主要是一个对人脸进行特征建模的过程。人脸特征提取的方法总结起来就分成两种
5、情况:一种是基于知识的表征方法;另一种则是基于代数特征或统计学习的表征方法。1.2.4 人脸图像匹配与识别人脸图像匹配与识别:把提取到的人脸图像的特征数据和数据库中已知的特征模板进行搜索匹配,事先设定一个阈值,当两个数据的特征相似度超过这个阈值的时候,就认为匹配成功,然后再把匹配得出的结果显示出来。人脸识别就是把待识别的人脸特征和已知的人脸特征模板进行比较,并根据两者的相似程度对待识别人脸的身份信息进行判断。这一过程又分成两种情况:一种是验证,是进行一对一图像比较的过程,另一种则是辨识,是进行一对多进行图像匹配对比的过程。1.3 人脸识别常用方法人脸识别的方法有很多,下面介绍一些主要的人脸识别
6、方法。1.几何特征的人脸识别方法 几何特征是指眼、鼻、嘴等的形状和它们之间存在的几何关系,比如它们之间的距离等。这种算法的优点是识别的速度很快,需要的内存也很小,但缺点就是识别率比较低。2.基于特征脸(PCA)的人脸识别方法 特征脸方法主要是一种基于KL变换的人脸识别方法,KL变换是进行图像压缩最好的一种正交变换。特征脸方法的基本思想是把高维的图像空间经过KL变换后能得出一组新的正交基,然后进行筛选,保留重要的正交基,最后由这些正交基就可以构成新的低维线性空间。假如人脸在这些低维的线性空间里的投影具有可分的性质,那么就可以把这些投影作为识别的特征矢量。但是这些方法的缺点就是需要大量的训练样本,
7、并且它完全是基于图像灰度的统计特性的。3.神经网络的人脸识别方法 神经网络通过模拟出人类大脑神经网络的结构和工作原理,构建出一种和人脑相似的计算模型。该类算法的优点主要是可以简单方便地构造出神经网络系统,然后用来当作人脸识别的分类器,并使用人脸和非人脸样本对该系统进行训练,然后让系统自动的学习两类样本复杂的类条件密度,这样就可以防止人为假设类条件密度函数所带来的问题。但是该算法的缺点就是同样需要大量的样本进行训练,但是在很多的应用场景中,样本的数量是有限的,所以有局限性。 4.线段Hausdorff距离(LHD)的人脸识别方法心理学的有关研究表明,人类在识别轮廓图的速度和准确度上和识别灰度图的
8、效果差不多。LHD是基于从人脸灰度图像中提取到的线段图,它定义的是两个线段集之间的距离,和其它不一样的是,LHD并没有建立不同线段集之间线段的一一对应关系,所以它更能够适应线段图之间的微小变化。5.支持向量机(SVM)支持向量机主要是解决的一个2分类的问题,它的基本思想就是把一个低维的线性不可分的问题转化成一个高维的线性可分的问题。大部分的实验结果表明了SVM具有不错的识别率,但是它需要很多的训练样本,这在实际应用中通常是不太现实的。并且支持向量机的训练时间比较长,方法的实现也比较复杂,所以该函数的取法没有统一的理论。2 基于人脸的预处理由于在人脸图像进行识别的时候,会受到光线、表情以及角度等
9、多种因素的影响,就会降低图像的识别率,所以就要在图像识别前进行预处理。预处理时主要采用一些方法对人脸图像进行优化,把要处理的人脸亮度和大小做到尽量统一,尽量去减少外部因素对人脸图像带来的影响,为后面的特征提取提高图片的质量,进而提高了人脸的识别率,增强整个软件系统匹配识别的可靠性。对于人脸图像而言,其预处理方式主要有人脸图像的光线补偿、灰度变换、直方图均衡化、归一化、几何校正、滤波以及锐化等。本次毕业设计主要采用的方法是直方图均衡化的方法。2.1 直方图均衡化2.1.1 基本原理直方图均衡化方法的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度级进行缩减,从而达到清晰图
10、像的目的18。直方图均衡化主要是通过灰度变换,重新分配人脸图像的像素值,然后再让每个灰度级上都能够具有相同的像素点数的过程。这在图像的比较和分割方面有优势。直方图是一种用来说明图像的灰度级分布情况的图像分析工具。直方图的横坐标表示的是图像中每个像素点的灰度r;纵坐标是灰度值像素的个数,用ri表示。直方图的纵坐标也可以用出现这个灰度值的概率函数表示,。并知:,其中k为一幅图像对应的灰度级数。直方图均衡化通常用来增加图像的全局对比度,特别是当图像的有用数据信息的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以在增强图像局部的对比度的同时,又能够不影响整体图像的对比度,直
11、方图均衡化就能够通过有效地扩大常用亮度来实现这种功能。直方图均衡化效果如图2.1:图2.1 直方图均衡化2.1.2 实现方法算法描述:1.使用cvCreateHist函数创建直方图2.用cvCalcHist函数计算出输入图像的直方图H。3.对直方图进行归一化处理,所以直方块的和是255。4.计算直方图积分,H(i) = Sum(H(j) (0=j=i)。5.采用H作为查询表:dst(x, y) = H(src(x, y)进行图像变换。核心代码:/ 创建灰度图像的直方图 CvHistogram* CreateGrayImageHist(IplImage *ppImage) int nHistSi
12、ze = 256; float fRange = 0, 255; /灰度级的范围 float *pfRanges = fRange; CvHistogram *pcvHistogram = cvCreateHist(1, &nHistSize, CV_HIST_ARRAY, pfRanges); cvCalcHist(ppImage, pcvHistogram); return pcvHistogram; / 根据直方图创建直方图图像 IplImage* CreateHisogramImage(int nImageWidth, int nScale, int nImageHeight, CvH
13、istogram *pcvHistogram) IplImage *pHistImage = cvCreateImage(cvSize(nImageWidth * nScale, nImageHeight), IPL_DEPTH_8U, 1); FillWhite(pHistImage); /统计直方图中的最大直方块 float fMaxHistValue = 0; cvGetMinMaxHistValue(pcvHistogram, NULL, &fMaxHistValue, NULL, NULL); /分别将每个直方块的值绘制到图中 int i; for(i = 0; i nImageWi
14、dth; i+) float fHistValue = cvQueryHistValue_1D(pcvHistogram, i); /像素为i的直方块大小 int nRealHeight = cvRound(fHistValue / fMaxHistValue) * nImageHeight); /要绘制的高度 cvRectangle(pHistImage, cvPoint(i * nScale, nImageHeight - 1), cvPoint(i + 1) * nScale - 1, nImageHeight - nRealHeight), cvScalar(i, 0, 0, 0),
15、CV_FILLED ); return pHistImage; 运行结果:对图像进行直方图均衡化的运行结果如下图2.2所示。图2.2直方图均衡化处理3 人脸特征提取与识别3.1 Gabor小波变换基本原理Gabor小波变换特征提取采用的是多通道滤波技术,先通过对参数进行选择,把一组具有不同时频域特性的Gabor小波运用在图像变换的过程中,然后每一个通道都能够通过变换来得到输入的人脸图像的某种局部特征信息,这样我们就可以根据自己的需要在不同的特征上对图像进行分析。Gabor小波的核函数与哺乳动物初级视觉皮层的感受细胞的刺激响应十分相似,能够很好的提取目标图像的不同空间位置、频率和方向上的特征14
16、。Gabor滤波器在图像的亮度、人脸姿态变化和对比度变化等方面具有很强的鲁棒性,而且它表现出了在人脸识别方面很有效的局部特征。虽然Gabor小波自己本身不能够构成正交基,但是在某些特定参数下可以构成紧框架。再通过对参数进行选择,每一组滤波器就具有了各自的方向选择性以及频率选择性,这样不同方向、不同尺度上的滤波器就能够覆盖整个频域区域了,于是一幅面部图像的Gabor特征表明的就通过Gabor变换核的卷积得到了。如果用来表示一张人脸图像的灰度分布情况,就用表示Gabor特征,是Gabor小波卷积结果。其中是Gabor核函数。从特征提取的角度出发,对人脸图像选取L个尺度与N个角度进行2D Gabor
17、小波变换16,那么我们就可以认为是得到了L*N组具有不同性质的特征矢量,就能够提取到人脸图像不同性质的特征。3.2 主成分分析法基本原理经过Gabor小波变换后得到的人脸特征信息,其中含有很多多余的信息,并且对计算量的要求也很高,严重影响图像的识别效率,就需要通过主成分分析法(PCA)来提取有效的特征,对特征信息进行降维,从而来提高图像的识别率。主成分分析法(PCA)是一种基于全局特征和代数特征的人脸识别方法。它能够把原来的复杂数据进行降维处理,去除数据中的冗余信息。人脸识别中使用到主成分分析(PCA)方法,其实就是自己假设所有的人脸图像都处在一个低维的线性空间里面,而且每个人脸图像在这个空间
18、里面都是具有可分性的。在一系列特征组成的多维向量里,有的元素本身在多维向量里是没有区别的。假如其中的一个元素,在经过所有的投影后得出的结果都是1,或者接近于1,那么这个元素本身就并没有什么区分性,如果用这个元素作为一个特征去区分,效果就会不明显。因此就需要我们去找那些变化很大的元素,即方差大的维,然后忽略掉那些变化不大的元素,这样我们留下作为特征区分的元素都是效果很明显的,并且同时减少了计算量。简单来说,主成分分析法(PCA)的算法原理就是通过一个特殊的特征向量矩阵,把一个高维向量投影到一个低维向量空间里面,然后用一个低维的向量来表示,这样并不会丢失任何信息。换句话说,就是原来的高维向量可以根
19、据低维向量和特征向量矩阵再重构出来。对一个k维的特征来说,相当于它的每一维特征都和其他维正交,即在多维坐标系中,坐标轴都垂直。因此我们就可以选择通过变化这些维的坐标系,然后让这个特征在一些维上面方差很小,而在一些维上方差很大。因此我们实际就是要求出一个k维特征的投影矩阵,然后用高维特征去乘以这个投影矩阵,这个投影矩阵就可以把特征得维数下降。然而新的低维特征又必须是每个特征向量、每个维都正交。然后通过求这些样本矩阵的协方差矩阵,再求出协方差矩阵的特征向量,最后就能够用这些特征向量来构成我们需要的投影矩阵了。现在opencv里有专门的PCA函数,能够得出这个投影矩阵,即特征矩阵。3.3 分类方法3
20、.3.1 最近邻法(NN)基本原理最近邻法识别是一个理论研究中比较成熟且最简单的机器学习方法。主要是基于最小距离的分类上,再进行扩展,然后把一个待分类的样本和训练库中的所有样本进行对比,如果对比得出的一个最相似样本属于哪个类别,那么就视这个测试样本是和这个最相似样本的类别相同,以此作为用于分类的依据。假设训练集里面有N个样本x1,x2,xN,各自属于c个类别,然后定义待分类样本x到训练集样本xi的距离是:若有i=1,2,Nw=且则最近邻分类器的分类决策为这里需要特别的注意的是:距离的定义决定了最近邻分类的结果,因此不同的距离定义得出的分类结果也不一样。如果使用欧氏距离当作距离度量的指标,那么在
21、训练集中不同类别的两个样本,特征空间中里面的两个样本点连线的垂直平分线就是最近邻分类器的分类决策边界。如图3.2所示:图3.2两个样本时的最近邻分类器当训练集里面包含了多种类型的样本时,任意两个相邻样本点连接线的垂直平分线分割出的网格状的图形,这个图形就是最近邻分类器的分类决策区域,这种网格状的图形叫做维诺图(VoronoiDiagram),如图2.5所示。注:维诺图(VoronoiDiagram)是计算几何学中的一种著名结构,其最早出现可以追溯到1644年,命名来源于乌克兰数学家GeorgyFedosievychVoronyi,他于1908年定义和研究了普遍意义上的多维维诺图。图3.3维诺图
22、当特征空间被训练集中的样本点划分成维诺图的时候,如果一个待识别的样本落入了哪一个训练集样本周边的区域内,那么你就能够确定它是属于这个训练集样本的类别。这就是最近邻分类器的分类决策算法。最近邻分类器是典型的“非参数方法”(Non-parametricmethod)。所谓的“非参数方法”,就是在进行分类器设计的时候,不需要考虑各个类别样本在特征空间中的分布形式以及参数,也不需要对样本分布的形式和参数进行估计。我们常用的线性分类器或非线性分类器,仅依靠决策边界来对样本进行分类,也是非参数分类方法的一种。3.3.2 支持向量机(SVM)基本原理支持向量机(SVM)模式识别方法在解决小样本、非线性及高维
23、模式识别的问题中表现出许多特有的优势9。支持向量机(SVM)是由线性可分情况下的最优分类面演变过来的。首先通过非线性映射,将样本空间映射到一个另外高维甚至是无穷维的特征空间里,即Hilbert空间。这样就可以把在线性学习机的方法应用在特征空间中,来解决样本空间中的高度非线性分类的问题。SVM是一种根据结构风险最小化统计学习理论的分类方法。它主要有以下三个方面的考虑:通过最小化函数集的VC维,控制学习机器的结构风险,让它具有较强的推广能力,让结构风险最小化。由统计学习理论的相关定理来保证,通过寻找最优分类超平面来实现对VC维的控制。SVM在技术上采用了核化技术,根据泛函中的Mercer定理,寻找
24、一个函数(称核函数)将样本空间中内积对应于变换空间中的内积,即避免求非线形映射而求内积2。支持向量机是通过事先选择非线形映射,然后把输入向量x映射到另外一个高维的特征空间,再在这个空间内构造出最优分类超平面。并且,离这个超平面最近的并且在这个超平面两侧的两个点之间的距离最大,那么,在原始空间里的非线性可分问题就能够转化为高维空间中线性可分问题。SVM为了构成一个最佳分类的超平面,即一个能够对样本进行正确划分的超平面。它通过之前选择的非线性映射,把输入的矢量x映射到一个高维的特征空间。并且,离这个超平面距离最近的两侧的两个点指尖的距离达到了最大化,然后就把原来的非线性可分问题转变成了高维空间的线性可分问题如图3.4所示。图3.4 输入空间到特征空间的映射设线性可分样本集为;为类别标志,d为空间维数。最优分类面问题用下面的优化问题来进行表示,即限制条件: (1)下求函数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1