1656.人脸图像特征匹配的研究与实现毕业论文.doc
毕业设计题 目 人脸图像特征匹配的研究与实现 学 院 信息科学与工程学院专 业 计算机科学与技术姓 名 学 号 指导教师 助理指导教师 目 录摘 要3ABSTRACT41 引言51.1系统的目的、意义51.2 国内外研究现状、水平及存在的问题52 系统相关理论简介62.1 人脸检测方法概述62.1.1 基于几何特征的识别方法62.1.2 奇异值分解的方法62.1.3 隐马尔科夫模型62.1.4 神经网络方法62.1.5 模板匹配方法72.1.6 特征脸方法72.1.7 弹性图匹配方法72.2 特征匹配方法概述72.2.1 幅度排序相关算法72.2.2 FFT相关算法82.2.3 分层搜索的序贯判别算法82.3 模板匹配算法概述83 系统总体设计103.1 模块设计思想103.2 人脸检测模块103.2.1 图像数据读取与预处理103.2.2 颜色空间转换113.2.3 基于肤色信息的彩色图像分割方法113.3 人脸表征和特征提取模块123.3.1 人脸区域检测123.3.2 眼睛的检测和定位123.3.3 人嘴的检测和定位123.4 人脸识别模块人脸及其主要特征的标定133.5 人脸特征匹配模块人脸模板匹配和投影法134 系统详细设计144.1 图像数据读取与预处理154.2 人脸区域检测164.3 眼睛的检测和定位184.4 人嘴的检测和定位194.5 人脸及其主要特征的标定204.6人脸模板匹配和投影法205 结论和下一步工作22致 谢23参考文献24附 录25摘 要人脸图像特征匹配是根据人脸检测的结果且在源图像中寻找相应的模式。目前,很多的算法曾经应用于人脸图像特征匹配。人脸是受到多种因素影响的复杂模式,找到一种有效的方法提取人脸的共性特征来描述人脸模式,是人脸特征匹配的关键。在这篇论文中,使用了一种基于模板匹配的人脸图像特征匹配方法。人脸图像特征匹配的任务是在两个不同的背景下根据特征匹配的方法检测出图像中的人脸,并提取出人脸面部图像信息。比如,人脸的眼睛、嘴巴等等。本系统首先利用肤色模型定位一幅真彩色图像的人脸区域,然后利用适当的先验知识来匹配并定位出人脸的眼睛和嘴,最后,通过模板匹配和投影法来匹配显示出人脸模板在源图像当中的位置。模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。实验结果表明,这种方法比傅立叶分析相关算法、投影方法有许多的优点。关键词:特征匹配,人脸检测,模板匹配,投影Abstract Face Image Feature Matching(FIFM) is based on Face Detection(FD) and the results of the source image for the corresponding model. At present, many have applied the algorithm face image feature matching. Face is affected by many factors of complex patterns, find an effective method for extracting the face of common characteristics to describe facial patterns, facial features is the key to match. In this paper, using a template matching based on the facial image feature matching methods. face image feature matching task in two different contexts in accordance with the method of matching images detected the human face, and extract facial image information. For example, face the eyes, mouth and so on. The system model of the first to use color positioning a true color image of the face region. Then use the appropriate prior knowledge to match the definition and face the eyes and mouth, finally, by template matching and Projection to match showed facial template in which the source image location. template matching refers to a smaller images, templates and source images, to determine the source image and the existence of the same or similar template region, if the region, can determine its location and extraction of the region.Experimental results show that this method than the FFT relevant algorithms, projection method has many advantages. Keywords: Feature Matching, Face Detection, Template Matching, Projection1 引言1.1系统的目的、意义对同一人脸的不同角度观察,在人脸的三维重构、安全检测、人脸识别等方面都有重要应用,而这一研究主要依靠人脸图像的特征匹配。人脸图像特征匹配的任务是在两个不同的角度下根据特征匹配的方法检测出图像中的人脸,并提取出人脸面部图像信息。比如,人脸的眼睛、嘴巴等等。本系统首先利用肤色模型定位一幅真彩色图像的人脸区域,然后利用适当的先验知识来匹配并定位出人脸的眼睛和嘴。最后,根据模板图像(比如,眼睛、鼻子和嘴唇模板)匹配出在人脸图像当中的位置。1.2 国内外研究现状、水平及存在的问题基于BMP格式的人脸图像特征匹配技术是当前人工智能和模式识别的研究热点,是一门崭新的生物识别技术,也是数字图像处理的应用领域之一。早期研究较多的静态人脸识别方法有基于几何特征的人脸识别方法和基于相关匹配的人脸识别方法。目前人脸识别研究的对象基本上都是针对二维灰度图像,除次之外,还有深度人脸图像识别和红外人脸图像识别方法。对于多CCD摄像机系统,可以得到多视点人脸图像,从而可以获得人脸的三维模型,含有三维信息的特征能有效解决人脸在光照、伪装和年龄变化等情况下的识别问题。基于三维建模的人脸识别方法和根据人工智能、模式识别和数字图像处理方面等技术相结合的多幅图像之间的特征匹配是今后人脸识别的一大发展趋势。在过去几年里,许多人脸图像特征匹配方法迅速发展。自从1990年,基于模板匹配的方法表现相当优秀,并且成为人脸图像特征匹配领域最出色的方法之一。目前,许多研究表明,模板匹配在特征匹配中的表现是优秀的。因此,学习一门模板匹配的特征匹配受到很大的吸引。幅度排序相关算法、傅立叶分析相关算法、分层搜素的序贯判别算法是最著名的匹配算法。但这些算法有一些局限性,并且不适合于人脸图像特征匹配。在本篇论文中,使用了一种人脸图像特征匹配方法称为模板匹配。模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。2 系统相关理论简介2.1 人脸检测方法概述早期研究较多的静态人脸识别方法有基于几何特征的人脸识别方法和基于相关匹配的人脸识别方法。下面介绍几种方法:2.1.1 基于几何特征的识别方法采用的几何特征是人脸器官的形状和几何关系为基础的特征矢量,其分量通常包括人脸指定两点间的欧式距离、曲率、角度等。优点是符合肉眼识别人脸的机理,易于理解;存储量小;对光照变化不太敏感。缺点是:特征不稳定,特别是面相受到遮挡时;鲁棒性较差;忽略了局部细微特征,造成部分信息丢失。2.1.2 奇异值分解的方法该方法与离散变换的思想比较接近但不是从统计角度出发,它将图像矩阵的奇异值作为模式的特征矢量。奇异值分解方法具有如下优点:人脸图像的奇异值具有良好的稳定性,当图像上有小的扰动时,奇异值变化不大;奇异值表示了图像的代数特征,是一种本质的内在特征,在某种程度上,奇异值分解特征同时拥有代数与几何两方面的不变性,即对图像灰度值的比例变化、平移、旋转和伸缩不变性。2.1.3 隐马尔科夫模型该模型是用于描述信号统计特性的一组统计模型。隐马尔科夫模型有三个主要问题:评估、估计及解码。这里关心的是前两个问题。评估用于解决识别问题,一般采取比较有效的“向前向后”法;估计用来产生用于识别的各个单元的隐马尔科夫模型,采取BaumWelch方法。2.1.4 神经网络方法在人脸识别应用中有很长的历史。典型的方法包括:Kohonen的自联想映射神经网络;Cottrell等人的级联神经网络;Intratar等人的无监督/监督混和神经网络;Lawrance和Giles等人的自组织特征映射神经网络结合卷积神经网络;Lin和Kung的基于概率决策的神经网络;时滞神经网络;多模态的神经网络等。2.1.5 模板匹配方法大多用归一化互相关,直接计算两幅图像之间的匹配程度。要求两幅图像上的目标要有相同的尺度、取向和光照条件,所以预处理要做尺度归一化和灰度归一化的工作。人脸模板可以用一个简单的椭圆模板表示,也可以用一组独立的小模板表示,如眼睛模板、嘴巴模板、鼻子模板、眉毛模板和下巴模板等。但获得模板必须利用各个特征的轮廓,而传统的基于边缘提取的方法很难获得较高的连续边缘,即使得到连续边缘也很难从中自动提取所需的特征量。2.1.6 特征脸方法该方法是从主成分分析导出的一种人脸识别和描述技术。主成分分析实质上是KL展开的网络递推实现。实验表明,特征脸方法受光照、角度和人脸尺寸等因素的影响较大。近年来,据此发展了多种对特征脸的改进方法,应用中较为成功的是Fisher脸方法,又称为线性判别分析方法。其它基于特征脸的人脸识别方法还包括:独立成分分析法、双子空间法、相形歧义分析方法、TPCA方法等。与这些方法相比,Fisher脸方法更为业内人士所接受。2.1.7 弹性图匹配方法该方法是一种基于动态链接结构的方法。它将人脸用格状的稀疏图表示,图中的节点用图像位置的Gabor小波分解得到的特征向量标记,图的边用连接节点的距离向量标记。弹性图匹配方法对光照、位移、旋转及尺度变化都不敏感,但是计算量大,存储量大。后来改进的聚束图匹配方法和弹性图动态链接模型的方法,也没有克服识别率和识别速度的矛盾。2.2 特征匹配方法概述对同一景物的两幅或者多幅图像在空间对准,或者根据已知模式在另一幅图像中寻找相应的模式,这就叫做特征匹配。如果利用不同时间对同一地面拍摄的两幅图像经套准后找出其中那些特征有了变化的像素点,就可以用来分析图中那些部分发生了变化。常用的方法有:2.2.1 幅度排序相关算法这种算法有两个步骤组成,第一步把要处理的图像中的各个灰度值按照幅度大小排序列的形式,然后在对它进行二进制(或三进制)编码,最后根据二进制排序的诸列,把源图像变换成二进制阵列的一个有序集合,这一过程称之为幅度排序的预处理。第二步,依次将这些二进制阵列与基准图像进行由粗到细的相关,直到确定出匹配点为止。2.2.2 FFT相关算法由傅立叶分析中的相关定理可知,两个函数在定义域中的卷积等于它们在频域中的乘积,而相关则是卷积的一种特定形式。因此,存在着另一种计算相关函数的方法,但是这样做在时间上并没有多少可取之处,但由于快速傅立叶变换技术比直接法计算速度提高了一个数量级,因此用FFT进行频域相关计算也是一种可行的方法。2.2.3 分层搜索的序贯判别算法这种分层搜索算法是直接基于人们先粗后细寻找事物的惯例而引出的。例如,在世界地图上找北京的位置时,可以先找出中国这个广阔的地域,称之为粗相关,然后在这个地域内,再仔细确定北京的位置,这叫做细相关。所以由这种思想形成的分层搜索算法具有相当高的处理速度。它有两个步骤组成。第一步,预处理。对被匹配的图像进行分层预处理,方法是将图2*2维的邻区逐个进行平均处理。从而得到一个分辨率较低和维数较小的图像,依次类推。加上源图像后便可构成一组分辨力由高到低而维数由大到小地图像序列。这种方法叫分层预处理。用同样的方法对匹配图像进行预处理。第二步,先粗后细的相关过程。先用分辨率最低维数最小的源图像和匹配图像进行相关匹配找到粗略匹配位置,然后用上一级的源图像和匹配图像在先前确定的匹配位置附近进行二次相关匹配,再次确定一个匹配位置,然后再用再上一级的源图像和匹配图像,直到进行到原来的源图像和匹配图像为止。2.3 模板匹配算法概述模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。模板匹配常用的一种测度为模板与源图像对应区域的误差平方和。设f(x,y)为M*N的源图像,t(j,k)为J*K(J<=M,K<=N)的模板图像,则误差平方和测度定义为:D(x,y)=f(x+j,y+k)-t(j,k)2将上式展开可得:D(x,y)=f(x+j,y+k)2-2t(j,k)* f(x+j,y+k)+ t(j,k)2令DS(x,y)=f(x+j,y+k)2 DST(x,y)= 2t(j,k)* f(x+j,y+k)DT(x,y)= t(j,k)2DS(x,y)称为源图像中与模板对应区域的能量,它与像素位置(x,y)有关,但随像素位置(x,y)的变化,DS(x,y)变化缓慢。DST(x,y)称为模板与源图像对应区域的互相关,它随像素位置(x,y)的变化而变化,当模板t(j,k)和源图像中对应区域相匹配时取得最大值。DT(x,y)称为模板的能量,它与图像像素位置(x,y)无关,只用一次计算便可。显然,计算误差平方和测度可以减少计算量。基于上述分析,若设DS(x,y)也为常数,则用DST(x,y)便可进行图像匹配,当DST(x,y)取最大值时,便可认为模板与图像是匹配的。但假设DS(x,y)为常数会产生误差,严重时将无法正确完成匹配,因此可用归一化互相关作为误差平方和测度,其定义为:R(x,y)= t(j,k)* f(x+j,y+k)/ f(x+j,y+k)2* t(j,k)2给出了匹配示意图,其中假设源图像f(x,y)和模板图像t(j,k)的原点都在左上角。对任何一个f(x,y)中的(x,y),根据上式都可以算得一个R(x,y)值。当x和y变化时,t(j,k)在源图像区域中移动并得出R(x,y)所有值。R(x,y)的最大值便指出了与t(j,k)匹配的最佳位置,若从该位置开始在源图像中取出与模板大小相同的一个区域,便可得到匹配图像。用归一化互相关求匹配的计算工作量非常大,因为模板要在(M-J+1)*(N-K+1)个参考位置上做相关计算,其中,除最佳匹配点外,其余做的都是无效运算,所以有必要对其进行改进,以提高远算速度。常用的方法有序贯相似性检测算法、幅度排序相关算法、FFT相关算法、分层搜索的序贯判别算法等。模板匹配的主要局限性在于它只能进行平行移动,如源图像中要匹配的目标发生旋转或大小变化,该算法无效。另外,如源图中要匹配的目标只有部分可见,该算法也无法完成匹配。3 系统总体设计3.1 模块设计思想 一个完整的人脸图像特征匹配系统包括以下四个模块:人脸检测(Face Detection)。利用人脸检测技术,从各种不同的角度下检测是否存在人脸图像,如果存在确定出图像的位置,分割出面相区域,对分割出的面相区域进行膨胀、腐蚀和灰度均衡等标准化处理。这一任务主要受光照、姿态、遮挡物和噪声等方面的影响。首先,进行人脸颜色建模、增强、边缘检测处理;然后,根据特征匹配找出多幅图像中人脸的部分。人脸表征和特征提取(Face Representation And Feature Extraction)。确定标准化处理后人脸图像的描述方式,然后通过特征的位置和它们之间的几何关系来检测人脸,定位人脸、眼睛和嘴唇的区域。首先,进行多幅人脸图像眼睛色度和亮度的匹配,定位出人脸的眼睛;再次,进行人脸嘴巴的定位。人脸识别(Face Recognition)。就是狭义上通常说的人脸识别,将待识别的图像进行特征匹配,然后勾绘出人脸的特征。可以根据一些已知先验知识进行特征匹配,然后将多幅图像中的特征进行匹配,去掉一些干扰的信息,定位出多幅图像中人脸的区域。人脸特征匹配(Face Feature Matching)。模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。模板匹配的主要局限性在于它只能进行平行移动,如源图像中要匹配的目标发生旋转或大小变化,该算法无效。另外,如源图像中要匹配的目标只有部分可见,该算法也无法完成匹配。投影法就是把图像在某一方向上进行投影。在投影图上便可反映出图像中目标对象的位置、尺寸等信息。这两种方法一般都用于二值图像的处理,而对于BMP图像首先应进行二值化。3.2 人脸检测模块3.2.1 图像数据读取与预处理 图像数据读取主要包括图像文件的打开和显示。而预处理则主要包括对图像文件的光线补偿等操作。3.2.2 颜色空间转换由于人脸肤色仍然是人脸最重要而且明显的特征,基于彩色信息的检测方法利用恰当的肤色建模,把肤色作为实现人脸检测和跟踪的主要参数,因而在人脸的检测和跟踪方面具有对放大和缩小以及对微小变形不敏感的优点。为了把人脸区域从非人脸区域分割出来,需要使用适合不同肤色和不同光照条件的可靠的肤色模型。常用的RGB表示方法不适合于皮肤模型,在GRB空间中,三基色(R、G、B)不仅代表颜色,还表示了亮度。由于周围环境光照的改变,亮度可能使人脸的检测变的更加复杂,在皮肤的分割过程中是不可靠的。为利用肤色在色度空间的聚类性,需要把颜色表达式中的色度信息与亮度信息分开,将R、G、B转换为YCrCb颜色模型即色度与亮度分开的色彩表达空间可以达到这个目的。通过建立的肤色模型,将一幅彩色图像转变为灰色图像,灰色值对应于该点属于皮肤区域的可能性,然后通过选取合适的门限值,可以将灰度图像进一步转变为二值图像,其中0,1分别表示皮肤区域和非皮肤区域。3.2.3 基于肤色信息的彩色图像分割方法对任意一幅彩色图像,可以执行基于肤色特征的分割操作。首先,分析图像判别图像是否需要进行光线补偿,如果需要按照前面提到的算法进行光线补偿。而后进行肤色建模,根据前面提到的YCrCb颜色模型,计算源图像中每个像素的色调值,得到色调图像。然后,按照人脸肤色模型阈值化色调图像,得到粗略的包含人脸候选区(灰度值是255)和背景(灰度值是0)的二值分割图。这样的分割图中,有大量微小的区域,而且在面积较大的连通区域中还有一些微小的黑洞,这些是图像中的噪音。因此需要对肤色区域进行处理,剔除明显不是人脸的肤色区域。经过肤色分割得到一系列的连通区域W1、W2、W3,这些区域包括肤色区域及与皮肤颜色相近的背景区域。在复杂的背景下,有可能存在很多和人脸肤色相近的非人脸区域被分割出来(如手、胳膊等)。首先对分割出来的皮肤区域进行腐蚀或膨胀操作,除去噪声对肤色分割的影响。然后通过人脸肤色区域的统计特征分析,对分割出来的肤色进行预处理,得到最为可能的人脸区域。系统使用了一种最为常用的预处理方案,其处理步骤可以表示为:在一幅多人脸照片中,所有人脸的大小基本相同。经过肤色分割的图像,对于人脸区域来说,由于存在眼睛、嘴巴、眉毛等非肤色区域,因此在人脸区域中会存在一个或多个“孔”(非肤色区域)。首先检测出有“孔”区域(大多数情况下为人脸区域)的尺寸大小,并求出平均值得到整幅图像中人脸的大小,根据该值剔除尺寸过大或过小的肤色区域。通过计算肤色区域的方差,可以进一步剔除其中的手和胳膊等非人脸区域。人脸区域由于存在眼睛、鼻子、嘴巴等非肤色区域,其方差比颜色统一的手和胳膊等非人脸区域的要大。3.3 人脸表征和特征提取模块3.3.1 人脸区域检测人脸区域检测主要由肤色建模、区域膨胀、腐蚀、去掉非脸区域、再次膨胀、再次腐蚀、获取人脸区域几部分处理构成,这些处理过程要按照先后顺序依次进行。肤色建模完成的主要处理为将图像转换到YCrCb颜色模型,并对其进行色彩的非线性变换,根据先验的肤色特征提取肤色区域,并将其区域置为白色,其余区域置为黑色。膨胀和腐蚀的目的就是补偿由于各种原因引起的人脸提取图像点的离散化问题,使其连通。去掉非人脸区域操作是因为肤色建模提取的肤色区域往往包括人的颈部和手部信息,为了后续处理必须加以去除。去除的方法是考察各目标区域(白色区域)连通的像素的数目,如果大于某一门限则认为该区域是人脸区域加以保留,否则去除。去除非脸区域后,再对图像进行膨胀、腐蚀操作以使人脸区域更好地连为一体。 人脸区域定位实际上就是根据“再次膨胀”后得到的人脸区域用一个矩形包络起来,该矩形区域实际上就记录着人脸的位置信息。3.3.2 眼睛的检测和定位眼睛的检测和定位主要由眼睛的匹配、去掉非眼睛区域、膨胀眼睛区域、定位人眼中心点几部分处理组成,这些处理过程要按照先后顺序依次进行。眼睛的匹配,根据先验知识分别进行色度匹配和亮度匹配,综合两者最终得到眼睛的匹配结果。最终关于眼睛的匹配双重匹配,则综合色度匹配和亮度匹配的结果作为提取的人眼区域。经过双重匹配后的人眼提取图像不可避免的包含有其它的区域,为了便于提取人眼,利用人脸检测定位的区域进行去掉非眼睛区域处理。在人脸区域之外或者在人脸区域的下二分之一区域不可能为人眼,因此这些区域可以去除。膨胀眼睛的目的就是使离散点连通形成一个整体。 眼睛区域定位即标定出双眼中心点的位置,根据提取出的眼睛区域,计算出各区域中心的位置,满足一定条件即为双眼的中心。3.3.3 人嘴的检测和定位人嘴的检测和定位主要由嘴巴的匹配、腐蚀出嘴巴区域、去离散点、定位嘴巴中心点几部分处理组成,这些处理过程要按照先后顺序依次进行。嘴具有一定的区域,因此可据此将匹配图像中的一些离散点作为非嘴区域去除。 根据前面得到的嘴的区域,将其区域中心作为嘴的中心。3.4 人脸识别模块人脸及其主要特征的标定经过前面的处理,已经提取了人脸的区域,定位了人眼的中心和嘴巴的中心,接着就可以在原始图像上对检测结果进行标注。将人脸区域用矩形框标出,并将双眼的中心和嘴巴的中心用三角连接。3.5 人脸特征匹配模块人脸模板匹配和投影法模板匹配是指用一个较小的图像,即模板与源图像进行比较,以确定在源图像中是否存在与模板相同或相似的区域,若该区域存在,还可确定其位置并提取该区域。模板匹配的主要局限性在于它只能进行平行移动,如源图像中要匹配的目标发生旋转或大小变化,该算法无效。另外,如源图像中要匹配的目标只有部分可见,该算法也无法完成匹配。投影法就是把图像在某一方向上进行投影。在投影图上便可反映出图像中目标对象的位置、尺寸等信息。这两种方法一般都用于二值图像的处理,而对于BMP图像首先应进行灰度化处理,然后再进行二值化处理等工作。4 系统详细设计本系统实现的基本目标是对一幅带有人脸信息的24位真彩色的BMP文件,通过基于肤色信息的彩色图像分割的方法,利用预先设定的肤色建模的知识进行人脸区域的检测以及区域标定。在此基础上,利用给定的人眼睛、嘴的先验色度信息进行眼睛、嘴的匹配检测,并最终实现双眼中心以及嘴唇中心的标定,从而达到人脸以及特征信息检测的目的。进一步完成通过模板匹配和投影匹配(包括垂直投影和水平投影)方法进行特征匹配,从而实现特征匹配的目的。该系统采用MFC单文档单视图的结构设计,通过文件打开的方式读取图像文件,并判断文件格式是否满足处理要求(24位真彩色的BMP文件)。该系统对同一人脸进行不同角度的拍摄,对得到的图像进行预处理。比如,光线补偿等等。根据人脸的特点选择图像特征,根据这些特征进行特征匹配。基于特征匹配的方法将人脸视为显著器官的组合,它首先提取一些重要的特征: 肤色、眼睛、鼻子、嘴唇等等,然后通过特征的位置和它们之间的几何关系来匹配出眼睛、嘴巴等等。此外,利用彩色信息进行人脸特征匹配,也是一种有效的方法。系统的图像处理流程图如图4-1所示:打开并读取图像文件人脸区域检测眼睛的检测与定位人嘴的检测与定位人脸及其主要特征的标定人脸模板匹配和投影法图4-1 系统图像处理流程图系统的主界面如图4-2所示:图4-2 系统的主界面4.1 图像数据读取与预处理图像文件打开与读取在类CFaceDetectionDoc中的OnOpenDocument()函数中实现。其读取过程如下:首先,获取文件绝对路径名,打开文件,分析文件头结构。然后,判断文件是不是BMP文件,若是获取位图大小,分配内存,读取信息头结构,根据得到的信息判断像素起始地址。否则,程序结束。至此,图像数据读取完毕,转入类CfaceDetectionView中的OnDraw()函数进行图像的显示。其显示过程如下:首先,从文档获取位图数据的指针,从数据指针获取位图高度、宽度等必要信息。然后,判断是否带有颜色表,若是,则从颜色表创建逻辑调色板,选中新建的逻辑调色板,同时保留旧的调色板,根据相应参数调用WinAPI,显示位图,恢复旧的调色板。否则,根据相应参数调用WinAPI,显示位图。图像的预处理主要是指图像的光线补偿操作,当然并不是每幅图像都需要进行光线补偿处理的。 在实验室环境中,当光照条件发生变化时,人脸颜色也会发生一定的变化。实验表明,当待检测图像的亮度高于训练图像的亮度时,即光线较强时,人脸大部分区域的颜色不会超出正常光照条件下人脸颜色的变化范围。但当待检测图像的亮度低于训练图像的亮度时,即光线较暗时,人脸颜色的变化受亮度降低的影响较大,此时待检测图像中人脸的颜色很可能超出正常光照条件下人脸颜色的变化范围。为了解决这一问题,有必要对待检测的图像首先进行光线补偿。精确的人脸颜色补偿需要建立复杂的颜色恒常性模型,考虑到研究的问题计算机自动登录系统要求检测的实时性,给出一种简单而又行之有效的自适应亮度补偿算法如下:(a)训练时计算训练用图像中各点的R、G、B分量的平均值mR,mG,mB,方差sR,sG,sB和亮度的平均值mL;(b)计算待检测图像中各点的亮度平均值mL;(c)若mL-mL>5则进行亮度补偿,计算待检测图像中各点的R、G、B分量的平均值mR,mG,mB,方差sR,sG,sB。对待检测图像中的每一点A,令RA,GA,BA分别表示点A补偿前的R、G、B值,RAC,GAC,BAC分别表示补偿后的R、G、B值,则其颜色补偿可表示为公式(1)(3):RAC= RA+(mR-mR)*( sR/sR) (1)GAC= GA+(mG-mG)*( sG/sG) (2)BAC= BA+(mB-mB)*( sB/sB) (3)这里进行的亮度补偿是全局性的,考虑到实验室背景下光照条件的变化一般是比较均匀,因此这种全局性的亮度补偿时可以达到较好的补偿效果。图像进行光线补偿处理前后的结果如图4-3所示:图4-3 光线补偿处理前后的图像在光线较暗的情况下,经过光线补偿后的图像跟正常光照条件下的图像效果一致。4.2 人脸区域检测人脸区域检测主要由肤色建模、区域膨胀、腐蚀、去掉非脸区域、再次膨胀、再次腐蚀、获取人脸区域几部分处理构成,这些处理过程要按照先后顺序依次进行。肤色的建模在类CFaceDetectionDoc中的FaceModeling()函数中实现。肤色建模完成的主要处理为将图像转换到YCrCb颜色模型,并对其进行色彩的非线性变换,根据先验的肤色特征(本系统采用的基准的Cr、Cb的值分别为158.442和122.453)提取肤色区域,并将其区域置为白色,其余区域置为黑色。再次膨胀的方法是拿一点的原点和人脸上的点及周围的点一个一个的对比,如果一点上有一个点落在人脸的范围内,则该点就为黑,否则为白。再次腐蚀的方法是拿一点的原点和人脸上的点一个一个的对比,如果一点上所有的点都在人脸的范围内,则该点保留,否则将该点去掉。人脸区域检测处理流程图如图4-4所示:预处理后的图像数据人脸颜色建模人脸粗区域膨胀和腐蚀处理去掉非人脸区域再次膨胀和腐蚀处理定位等人脸区域定位图4-4 人脸区域检测处理流程图最终人脸区域的检测与标定结果如图4-5所示: (a)再次膨胀的结果 (b)再次腐蚀的结果 (c) 最终人脸区域标定结果图4-5 最终人脸区域的检测与标定结果再次膨胀的结果包括人脸的所有范围,且比人脸包含的点要多,就像人脸膨胀了一圈似的。再次腐蚀的结果仍在原来人脸的范围内,且比人脸包含的点要少,就像人脸被腐蚀了一层。4.3 眼睛的检测和定位眼睛的检测和定位主要由眼睛的匹配、去掉非眼睛区域、膨胀眼睛区域、定位人眼中心点几部分处理组成,这些处理过程要按照先后顺序依次进行。眼睛的色度匹配在类CFaceDetectionDoc中的EyeMapC()函数中实现。关于眼睛的色度匹配,根据先验知识,参考的Cr、Cb的值分别为150和100,通过设定门限选取门限内的像素点为目标区域。眼睛的亮度匹配在类CFaceDetectionDoc中的EyeMapL()函数中实现。关于眼睛的亮度匹配,根据先验知识,参考的Cr、Cb的值分别为110和130。眼睛的检测和定位处理流程图如图4-6所示:预处理后的图像数据眼睛的色度和亮度匹配眼睛的双重匹配去掉非眼睛区域等膨胀眼睛区域定位人眼中心点图4-6 眼睛的检测和定位处理流程图最终眼睛中心的标定结果如图4-7所示:(a)色度匹配的结果 (b)亮度匹配的结果 (c) 最终眼睛中心的标定结果图4-7 最终眼睛中心的标定结果 在正面角度和正常的光照条件下基本能准确的定位眼睛的中心。4.4 人嘴的检测和定位人嘴的检测和定位主要由嘴巴的匹配、腐蚀出嘴巴区域、去离散点、定位嘴巴中心点几部分处理组成,这些处理过程要按照先后顺序依次进行。嘴巴的匹配在类CFaceDetectionDoc中的FunctionMouseMap()函数中实现。嘴巴的匹配,根据先验知识,参考的Cr、Cb的值分别为157和100。人嘴的检测与定位处理图如图4-8所示:预处理后的图像数据嘴巴的定位先做人脸区域检测腐蚀出嘴巴区域去离散点定位嘴巴中心点 图4-8 人嘴的检测与定位处理图最终人嘴中心的定位结果如图4-9所示:(a)嘴巴匹配的结果 (b)腐蚀嘴巴的结果 (c) 最终人嘴中心的标定结果图4-9 最终人嘴中心的定位结果 由于人嘴和手的红色分量、蓝色分量和亮度值基本一致,导致了只通过肤色的信息很难直接识别出来,还需要通过和人脸一块才能准确地定位人嘴的位置。4.5 人脸及其主要特征的标定经过前面的处理,已经提取了人脸的区域,定位了人眼的中心和嘴巴的中心,接着就可以在原始图像上对检测结果进行标注。在类CFaceDetectionDoc中的EllipseFace()函数中实现。结果将人脸区域用矩形框标出,并将双眼的中心和嘴巴的中心用三角连接。最终勾绘结果如图4-10所示:图4-10 最终勾绘结果 首先,必须完成前面每项的工作才能进行这一项操作,这项操作基本能满足系统所需的要求。4.6人脸模板匹配和投影法模板匹配中匹配测度R采用归一化互相关法,模板匹配算法通过在文件“function.h”中编写函数TemplateMatch()实现。其主要步骤如下:首先,将要显示的目标区像素初始化为灰白色。其次,找到图像中最大的相似性的坐标位置。最后,将模板图像的内容复制到要显示的区域。投影法在文件“function.h”中编写函数Project()实现。其主要步骤如下:首先,如果图像不是二值图像,则强行转换为二值图像。其次,进行水平方向和垂直方向投影。最后,复制区域生长后的图像,并释放内存。 最终模板匹配结果如图4-11所示:(a)模板匹配源图像 (b)模板匹配模板图像 (c)最终模板匹配结果图4-11 最终模板匹配结果最终投影法结果如图4-12所示:(a)投影匹配源图像 (b)水平方向投影结果 (c)垂直方向投影结果图4-12 最终投影法结果经过模板匹配显示模板图像在源图像当中的位置。投影法则显示在横轴和纵轴上的投影。图像的大小一般为4的整数倍,以便能正确的显示操作的结果。5 结论和下一步工作设计得到了正确的结果,经过本次毕业设计,是我真正有机会对大学期间所学的知识进行了系统的总结,从系统的总体设计到最后的编程实现,都是在老师的指导下,一点一点独立完成,由于题目的关系,设计中涉及到了多方面的知识,比如,特征匹配、人脸检测、模板匹配、投影方法、傅立叶分析相关算法等许许多多实际的问题,经过不断的分析和一次次的调试,最终实现了系统的基本目标。本篇论文在人脸图像特征匹配领域使用了一种特征匹配方法叫