人脸识别与人脸检测

发布时间:2011-04-14 15:37:22

1 绪论

1.1人脸表情识别研究的目的和意义

人脸是人最重要的外貌特征,由于脸部信息可以通过非接触的方式(如摄像头)取得,所以非常适合于作为身份鉴别的依据。人脸识别就是对于输入的人脸图像或者视频,首先判断其中是否存在人脸,如果存在人脸,则进一步确定每张人脸的位置、大小和各个主要面部器官的位置信息,并依据这些信息,进一步提取每张人脸中所蕴含的身份特征,并将其与已知人脸库中的人脸进行对比,从而识别每张人脸所代表的个人。

人脸识别是一个交叉学科,它的研究内容涉及计算机视觉、模式识别、计算机图形学、图像处理、生理学、心理学、认知科学等。人脸识别技术可采用非接触式的、连续的和实时的方式,在国家安全、军事安全和公安、司法、民政、金融、民航、海关、边境、口岸、保险及民用等领域实际应用具有极广阔的前景。这一技术典型应用如下:

1身份鉴定(一对多的搜索):在鉴定模式下,确定一个人的身份,该技术可以快速地计算出实时采集到的面纹数据与面像数据库中已知人员的面纹数据之间的相似度,给出一个按相似度递减排列的可能的人员列表,或简单地返回鉴定结果(相似度最高的)和相对应的可信度。

2身份确认(一对一的比对):在确认模式下,待确认人已知的面纹数据可以存储在智能卡中或数码记录中,该技术只需要简单地将实时的面纹数据与存储的数据相比对,如果可信度超过一个指定的阀值,则比对成功,身份得到确认。

3监视:可以在监控范围内发现人脸,而不论其远近和位置,能连续地跟踪该人脸图像并将其从背景中分离出来,将面像与监控列表进行比对。整个过程完全是无需干预的,连续的和实时的。

4面像数据压缩:能将面纹数据压缩到84字节以便用于智能卡、条形码或其他仅含有有限存储空间的设备中。

5多通道的人机交互界面:可以把跟踪得到的人脸表情作为一种人机交互的手段。为使用者提供一个个性化、智能、便捷的工作环境,这也是智能计算机研究的重要内容。

人脸表情识别研究的主要目的在于:

1在人机接口中实现计算机对人脸面部表情的自动识别;

2在视频片段检索中实现面部表情的跟踪与识别;

3研究人脸表情编码模型,解决低带宽的脸部数据传输、多媒体中的脸部图像压缩等问题。

进行这项研究的意义在于:

1作为情感计算研究的重要组成部分,可以有效地促进人机交互系统的发展和计算机图像理解的研究;

2对实现人体语言与自然语言的融合,以及语言与表情连接模型的建立与实现具有重要意义;

3可以为表情合成、与表情无关的人脸检测与跟踪、人脸识别等领域的研究提供理论基础;

这些年表情识别技术发展相当迅速,北京奥运将首次使用人脸识别综合报警系统,这里我们简单介绍一下2008年北京奥运会使用的人脸识别系统的主要功能:

1对所有进出机场、海关、火车站、奥运场馆的人通过摄像机自动识别;人员通行考勤、外人登记、生物特征人脸识别验证真伪。

2对于危险人摄像机自动识别,向网络报警中心报警。

3对不受欢迎的人,一经录入,自动识别防止进入。

4各种工人、后勤、食品运送人员自动人脸识别未经登记授权限制进入。

5对于恐怖行危险人员、情绪偏激不稳定人员、牵连到奥运场馆和奥运活动区域群体事件的问题人员和等影响社会稳定人员,自动识别人脸,防止进入奥运区;并且根据人脸等生物特征智能查询进出纪录。

6对于奥运场馆和奥运活动区域内各种服务实现不用带卡的自动人脸识别安全服务和优质服务。

7对于党和政府的领导通过联网自动人脸识别掌握奥运活动区域准确人员管理情况、预估风险实现远程管理和控制。

人脸表情识别和理解(Face Recognition)的研究范围广义上大致包括以下5个方面的内容:

1人脸检测(Face Detection):即从各种不同的场景中检测出人脸的存在并确定其位置。这一任务主要受光照、噪声、面部倾斜度以及各种各样遮挡的影响。

2人脸表征(Face Representation):即采取某种表示方式表示检测出的人脸和数据库中的已知人脸。通常的表示法包括几何特征(如欧氏距离、曲率、角度)、代数特征〔如矩阵特征矢量)、固定特征模板、特征脸等。

3人脸识别(Face Identification):即将待识别的人脸与数据库中的已知人脸比较,得出相关信息。这一过程的核心是选择适当的人脸的表征方式与匹配策略,系统的构造与人脸的表征方式密切相关。

4表情/姿态分析(Expression/Gesture Analysis):即对待识别人脸的表情或姿态信息进行分析,并对其加以归类。

5生理分类(Physical Classification) 即对待识别人脸的生理特征进行,得出其年龄、性别等相关信息。

1.2表情识别的现状

现阶段的研究当中,完整的人脸识别系统至少包括个主要环节。首先在输入图像中找到人脸的位置,将人脸从背景中分割出来;其次,将分割后的人脸图像进行特征提取和定,最后根据提取的特征进行人脸识别。如图1.1所示:

1.1 识别过程简图

Fig1.1 Identify process simple diagram

1.2.1人脸图像检测方法现状

人脸图像检测与定位就是在输入图像中找到人脸确切的位置,它是人脸表情识别的第一步。人脸检测的基本思想是用知识或统计的方法对人脸建模,比较待检测对象与所建的人脸模型的匹配程度,从而得到可能存在人脸的区域。根据思想的不同基本上分为下面两种检测方法:

(1)基于统计的人脸检测

是将人脸图像视为一个高维向量,将人脸检测问题转化为高维空间中分布信号的检测问题。

(2) 基于知识的人脸检测

是利用人的知识建立若干规则,从而将人脸检测问题转化为假设验证问题。

1.2.2基于统计的人脸检测方法

1 样本学习:将人脸检测视为从非人脸样本中识别人脸样本的模式分类问题,通过比较人脸样本和非人脸样本来提取各自的特征,进行学习来产生分类器。目前国际上普遍采用的是人工神经网络。

2 模板法:模板法是把测试样本与参考模板进行比较,由阈值大小来判断测试样本是否是人脸。阈值一般是通过对大量的模板进行统计得来的,并不是一个固定的值。

3 子空间方法:Pentland KL 变换引入了人脸检测,利用主元子空间(特征脸) ,而人脸检测利用的是次元子空间(特征脸空间的补空间) 。用待检测区域在次元子空间上的投影能量,也即待检测区域到特征脸子空间的距离作为检测统计量,距离越小,表明越像人脸。子空间方法的特点在于简便易行,但由于没有利用反例样本信息,对与人脸类似的物体辨别能力不足。

1.2.3基于知识建模的人脸检测方法

1人脸规则:人脸规则是人脸遵循的一些几乎是普遍适用的空间相关性。它包括: 灰度分布规则。如五官的空间位置分布大致符合三停五眼,人脸不同区域的明暗关系不变,眼睛的灰度总是比前额和颧骨低,鼻梁的灰度一般比两侧亮等。轮廓规则。人脸的轮廓可以简单地看成一个近似椭圆,而人脸检测可以通过椭圆检测来完成运动规则。通常相对背景人总是在运动的,利用运动信息可以简单有效地将人从任意复杂背景中分割出来。

2 颜色、纹理信息:同一种族人的面部肤色在颜色空间中的分布相对比较集中,颜色信息在一定程度上可以将人脸从大部分背景区分开来。

3 对称性:人脸具有一定的轴对称性,各器官也具有一定的对称性Reisfeld 提出广义对称变换方法[1]检测局部对称性强的点来进行人脸器官定位。

1.3本文的结构

本文的章节做如下安排。第一章绪论介绍量表情识别研究的目的意义和现状;第二章对人脸检测与定位方法、脸部特征定位方法、人脸识别方法作了综述;第三章在上述方法的基础上,重点叙述了毕业设计采用的方法,并用VB开发了一个人脸表情识别系统;第四章对面部表情识别技术以后的发展方向和工作重点做了总结。

2 相关技术综述

2.1引言

情绪使人产生生理和行为的显著变化,面部表情是情绪的外显行为的一个重要方面。眼、眉、嘴、鼻、脸色等的变化最能表示一个人的情绪。如两眼闪光之惊喜,眼泪汪汪之悲哀委屈,眉毛紧锁之忧愁,扬眉之得意,双目圆睁之愤怒,嗤之以鼻之厌恶,脸色苍白之惊恐等。这是由于人的各种情绪同脸部肌肉和血管等的变化有关,故而脸部肌肉和血管的变化能表示一定的情绪状态。例如,喜悦与颧肌有关,痛苦与皱眉肌有关,忧伤与三角肌有关,羞愧因血管舒张而脸红,恐怖因血管收缩而苍白。本文就是通过对人面部表情进行识别来达到对人的情绪的判断。人们做出各种表情,正是表情肌肉运动的结果[2]

2.2人脸模式的特征

人脸模式的特征包括肤色特征和灰度特征。

2.2.1肤色特征

肤色是人脸的重要信息,不依赖于面部的细节特征,对于人脸表情发生的任何变化情况都能适用,具有相对的稳定性并且和大多数背景物体的颜色相区别。因此肤色特征在人脸检测中是最常用的一种特征。肤色特征主要由肤色模型描述,常用的肤色模型有高斯模型、混合高斯模型和直方图模型。

2.2.2灰度特征

灰度特征包括人脸轮廓特征、人脸灰度分布特征(镶嵌图特征、直方图特征等)、器官特征(对称性等)、模板特征等。本文所采取的人脸识别方法就是基于灰度特征,具体的识别方法将在下文叙述。

2.3面部表情的分类

由于表情产生的原因、表情表现得程度、人们对表情的控制能力和表情的倾向等多方面的原因,使得表情的变化细微而复杂,对表情的概括也变得更为复杂。例如,恐惧表情可能同时伴随着悲伤、生气、厌恶的产生。一中混合的表情也就表现出来了。最经常的是恐惧和惊奇的混合表现即惊恐。

关于情绪的类别,长期以来说法不一。我国古代有喜、怒、忧、思、悲、恐、惊的七情说;美国心理学家普拉切克(Plutchik)提出了八种基本情绪:悲痛、恐惧、惊奇、接受、狂喜、狂怒、警惕、

2.1 表情特征

Table2.1 expression characteristic

额头 眉毛

眼睛

脸的下半部分

惊奇

1.眉毛抬起,以至于变高变弯,眉毛以下的皮肤被拉伸;2.皱纹可能横跨额头。

1.眼睛睁大,上眼皮抬高,下眼皮下落;2.眼白可能在瞳孔的上边或者下边露出来。

下颌下落,嘴张开,以至于唇和齿分开,但嘴部并不紧张,也不拉伸。

恐惧

1.眉毛抬起并皱在一起;2.额头的皱纹只集中在中部,而不横跨真个额头。

上眼睑抬起,下眼皮非常紧张,并且被拉上来。

嘴张开,嘴唇或者轻微紧张,向后拉,或拉长,同时向后拉。

厌恶

眉毛压低,同时压低上眼睑。

在下眼皮下部出现了横纹,脸颊推动其向上,并不紧张。

1.上唇抬起;2.下唇与上唇紧闭,推动上唇向上,嘴角下拉,唇轻微凸起;3.鼻子皱起;4.;脸颊被抬起。

愤怒

眉毛皱在一起,并且被压低;2.在眉宇间出现了竖直皱纹。

1.下眼皮非常紧张,可能不被抬起。2.上眼皮紧张,在眉的动作下可能被压低;3.眼睛愤怒的瞪着,可能鼓起。

1.唇有两中基本位置:紧闭,唇角拉直或向下;张开,仿佛要喊;2.鼻孔可能张大。

表情

额头眉毛

眼睛

脸的下半部分

高兴

和中性表情相比,基本没变化。

下眼睑下边可能有皱纹,可能鼓起,但并不紧张;2.鱼尾纹从外眼角向外扩张。

1.唇角向后拉并抬高;2.最可能张大,牙齿可能露出;3.一道皱纹从鼻子一直延伸到嘴角外部;4.脸颊被抬起。

悲伤

眉毛内角皱在一起,抬高,带动眉毛下的皮肤运动。

眼内角的上眼皮被抬高。

1.最角下拉;2.嘴角可能在颤抖。

憎恨;汤姆金也列出八种基本情绪:兴趣、快乐、惊奇、痛苦、恐惧、愤怒、羞怯、轻蔑;还有的心理学家提出了九种类别。虽然类别很多,但一般认为有四种基本情绪,即快乐、愤怒、恐惧和悲哀。

针对表情广义性,表2.1中总结出了每种表情的特点及其在生成过程中所涉及到的重点表情区域的动作。

由表2.1我们可以看出,样本表情必须非常典型,而且有点夸张。因此要求采集的样本在做出各种表情时,各个重点位置的表情必须符合表2-1的动作,这样才能正确的辨别样本表情。

2.4人脸检测与定位方法

近年来,人脸和面部表情识别已经吸引了更多科研人员的注意。任何人脸处理系统的第一步都是检测人脸在图像中的位置。但是,从一幅图像中检测人脸是一项极具挑战性的任务,因为其尺度、位置、方向和位姿都是变化的,面部表情、遮挡和光照条件也是变化的。

人脸检测(Face Detection) 是指在输入图像中确定所有人脸(如果存在) 的位置、大小和位姿的过程。人脸检测作为人脸信息处理中的一项关键技术,近年来已成为模式识别与计算机视觉领域内一项受到普遍重视,研究十分活跃的课题。

人脸识别或辨认、人脸定位以及人脸追踪等都与人脸检测密切相关。人脸定位的目的是确定图像中人脸的位置。假设一幅图像中只存在一张脸,则面部特征检测的目的是检测特征的存在和位置,如眼睛、鼻子(鼻孔)、眉毛、嘴(嘴唇)、耳朵等。人脸识别或辨认是将输入图像与数据库中的图像比对,如果存在,报告匹配结果。人脸识别的目的是检验输入图像中的个体的身份,而人脸追踪方法是实时地、连续地估计在图像序列中的人脸的位置和可能的方向。面部表情识别涉及识别人类的情感状态(高兴、悲伤、厌恶,惊恐)。很明显,在任何解决上述问题的自动识别系统中,人脸检测是第一步。

在第一章中我们给出了人脸检测两种基本方法,这只是粗略的分类方法,在这里我们把从一幅图像中检测人脸的方法可以分为以下四种[]:

1基于知识的方法(Knowledge - based Methods)它将典型的人脸形成规则库对人脸进行编码。通常,通过面部特征之间的关系进行人脸定位。

2特征不变方法(Feature Invariant Approaches)该算法的目的是在姿态、视角或光照条件改变的情况下找到存在的结构特征,然后使用这些特征确定人脸。

3模板匹配方法(Template Matching Methods):存储几种标准的人脸模式,用来分别描述整个人脸和面部特征;计算输入图像和存储的模式间的相互关系并用于检测。

4基于外观的方法(Appearance - based Methods):与模板匹配方法相反,从训练图像集中进行学习从而获得模型(或模板) ,并将这些模型用于检测。

2.4.1基于知识的方法

基于知识的方法实质是基于规则的人脸检测方法,而这种规则来源于研究者关于人脸的先验知识。一般比较容易提出简单的规则来描述人脸特征和它们的相互关系,如在一幅图像中出现的人脸,通常具有互相对称的两只眼睛、一个鼻子和一张嘴。特征之间的相互关系可以通过它们的相对距离和位置来描述。在输入图像中首先提取面部特征,确定基于规则的人脸候选区域。

这种方法存在的问题是很难将人类知识转换为明确定义的规则。如果规则是严格的,由于输入图像很可能不能通过所有的规则检测而导致失败相反,如果规则太简单可能会有较高的错误接收率,输入许多错误图像。此外,很难将这种方法扩展到在不同的情况下检测人脸,因为列举所有的情况是一项很困难的工作。许多表情识别方面的专家通过研究,提出了一些克服这些缺点的方法。

YangHuang使用分层的基于知识的人脸检测方法[4],他们的系统由三级规则组成。在最高级,通过扫描输入图像的窗口和应用每个位置的规则集找到所有可能的人脸候选区。较高级的规则通常描述人脸看起来像什么,而较低级的规则依赖于面部特征的细节。多分辨率的分层图像通过平均和二次采样生成,2.1所示。编码规则通常在较低的分辨率下确定人脸的候选区,包括人脸的中心部分(2.2中较浅的阴影部分),其中有四个基本上相同的灰度单元。

2.1 分层图像

Fig.2.1 Layering picture

2.2 人脸侯选区

Fig2.1 Face District

在人脸的上层周围部分具有相同的灰度。人脸的中心部分和上层周围的灰度不同。最低分辨率的(Lever1)图像用于搜索人脸的候选区并在后面较精细的分辨率下作进一步处理。在Lever2完成人脸候选区的局部直方图均衡化,并进行边缘检测,以缩小后选区。继续存在的候选区在Lever3用其他的人脸特征,如眼睛、嘴等对应的规则进行检查。这种方法的特点是用从粗到细的策略来减少所需要的计算,虽然它没有很高的检测率,但采用多分辨率分层的思想和指导搜索的规则已经用到后面的人脸检测工作中[5]

KotropoulosPitas[5]提出了一种基于规则的定位方法。用投影方法确定面部特征,I(x,y)m×n图像中(x,y)位置的灰度值,图像的水平和垂直投影定义为。通过对投影曲线的分析可知。整个曲线看起来会有两个较大的凹槽和凸起,人脸的眼睛和嘴的位置正好对应曲线的这两个谷值区域,即在这条曲线上找到一个具有最大剃度值的点和一个具有最小剃度值的点,由此可以粗略的检测出眼睛和嘴的位置。

2.4.2基于特征的方法

基于特征的方法不仅可以从已有的面部特征而且可以利用面部特征点的几何关系进行人脸检测。这种方法是寻找人脸的不变特征用于人脸检测,这与基于知识的方法正好相反。人们已经提出了许多先检测人脸面部特征,后推断人脸是否存在的方法。面部特征,如眉毛、眼睛、鼻子、嘴和发际,一般利用边缘检测器提取,根据提取的特征,通过与统计模型比较来确定人脸是否存在。基于特征的算法存在的问题是,由于光照、噪声和遮挡等使图像特征被严重地破坏,人脸的特征边界被弱化,阴影可能引起很强的边缘,而这些边缘可能使得算法难以使用。

Sirohey 提出了从复杂的背景中分割人脸进行人脸识别的定位方法[6]。它使用边缘图和启发式算法来去除和组织边缘,而只保存一个边缘轮廓,然后用一个椭圆拟合头部区域和背景间的边界。Graf等人提出定位灰度图像的面部特征和人脸的检测方法[7]。在滤波以后,用形态学的方法增强具有高亮度、含有某些形状(如眼睛)的区域。Leung等人提出一种基于局部特征检测器和任意图匹配的概率方法,在复杂场景中定位人脸[8]。其目标是找到确定的面部特征的排列。典型的人脸用五个特征(两只眼睛、两个鼻孔和鼻子与嘴唇的连接处)来描述。YowCipolla 提出了一种基于特征的方法[9][10]。在第一阶段,应用了二阶微分Gaussian滤波器,在滤波器响应的局部最大点检测感兴趣的点,指出人脸特征可能的位置;第二阶段,检查感兴趣点周围的边缘并将它们组成区域。这种方法的优点是可以在不同的方向和位姿上检测人脸[11]Han等人提出了一种基于形态学的技术进行眼部分割进而实现人脸检测的方法[12] 。他们认为眼睛和眼眉是人脸最突出和稳定的特征,特别适合人脸检测。

彭进业等人提出了一种在图像的反对称双正交小波分解数据域中,实现多尺度对称变换的方法,并将它应用于脸部图像中主要特征点的定位[13]。王延江等人提出了一种快速的彩色图像中复杂背景下人脸检测方法[14]。其方法首先计算对彩色图像中与人的肤色相似的像素进行聚类和区域分割,然后利用小波分解对每一个候选区域进行人脸特征分析,如所检测到的区域特征分布与某一预先定义的人脸模型相似,则确认该区域代表人脸。

皮肤颜色通常不能独自进行人脸检测和追踪。近年来,人们已经提出几种使用形状分析、颜色分割和运动信息结合的模块化系统在图像序列中用于定位和追踪头部和人脸的方法。

2.4.3模板匹配方法

Sakai等人使用眼睛、鼻子、嘴和人脸轮廓等子模板建模,检测照片中的正面人脸[15]。每一个子模板按照线分割定义。基于最大梯度变化提取输入图像的线,然后与子模板匹配。计算子图像和轮廓模板之间的相互关系去检测人脸的候选区域,完成用其他子模板在候选区域的匹配。

Craw等人提出了一种基于正面人脸的形状模板(也就是人脸的外形)定位方法[16]Sobel滤波器提取边缘,将边缘组织在一起,根据几个约束条件去搜索人脸模板。在头轮廓定位以后,用相同的过程以不同的尺度重复定位眼睛、眼眉和嘴唇等特征。

Miao 等人提出了用于人脸检测的层次模板匹配方法[17]。在第一阶段,为了处理旋转图像,输入图像从- 20°20°旋转,每次旋转。多分辨率图像层次形成和边缘提取使用Lapla2cian操作符。人脸模板通过六个人脸成分产生的边缘组成:两个眼眉、两只眼睛、一个鼻子和一张嘴。最后,应用启发式确定人脸的存在。实验结果表明在图像含有单个人脸要比图像中含有多个人脸的结果好。

2.4.4基于外观的方法

模板匹配中的模板是由专家预定义的,与模板匹配中的方法不同,基于外观方法中的模板是从图像中的样本学习的。通常,基于外观的方法依靠统计分析和机器学习技术找到相应的人脸和非人脸图像的特征。学习的特征由分布模型或判别函数形成,用于人脸检测,同时,由于计算效率和检测有效性的原因通常需要降维。这种方法中最常用的是用贝也斯(Bayesian)分类器或最大自然函数将一个候选图像位置分类为人脸或非人脸;另外,隐藏Markov 模型(Hidden Markov Model,HMM)和支持向量机(SupportVector Machines,SVMs)方法也比较常用。在这里我们就不做介绍了。

2.5脸部特征定位方法分类

近年来,国内外学者们已提出了许多种脸部特征定位方法。根据定位所依据的基本信息的类型,以将现有方法分为基于先验规则、基于几何形状信息、基于色彩信息、基于外观信息和基于关联信息等5

1)基于先验规则

根据脸部特征的一般特点总结出一些经验规则,搜索前,先对输人图像作变换使目标特征得到强化,而后根据上述规则从图中筛选出候选点或区域。

2)基于几何形状信息

根据脸部特征的形状特点构造一个带可变参数的几何模型,并设定一个评价函数量度被检测区域与模型的匹配度搜索时不断调整参数使评价函数最小化,从而使模型收敛于待定位的脸部特征。

3)基于色彩信息

使用统计方法建立起脸部特征的色彩模型,搜索时遍历候选区域,根据被测点的色彩与模型的匹配度筛选出候选点。

4)基于外观信息

将脸部特征附近一定区域(窗口)内的子图像作为一个整体,映射为高维空间中的一个点,这样,同类脸部特征就可以用高维空间中的点集来描述,并可以使用统计方法得到其分布模型在搜索中,通过计算待测区域与模型的匹配度即可判定其是否包含目标脸部特征。

5)基于关联信息

在局部信息的基础上,引人脸部特征之间的相对位置信息,以缩小候选点范围,从运算量、准确率与鲁棒性(包括图像质量需求和姿态表情光照等影响)3个方面对各类方法的性能作了粗略的比较。

2.5.1先验规则

先验规则是关于脸部特征一般特点的经验描述,人脸图像有一些明显的基本特征,如脸部区域通常包括双眼、鼻和嘴等脸部特征,其亮度一般低于周边区域;双眼大致对称,鼻、嘴分布在对称轴上等。为了利用这些基本特征进行脸部特征定位,一般要先对输人图像作变换,使所要使用的特征得到强化,而后根据规则从图中筛选出候选点或区域.此类方法的难点在于,如何将人们的直观印象精确地表述为可应用的代码化规则,以及如何处理规则的精确性与适用性之间的矛盾。

1镶嵌图

镶嵌图[18]方法是先将图像划分成一组相同大小的方格,每个方格中像素灰度的平均值作为这个方格的灰度值,根据一组规则确定可能为人脸的区域;确定人脸的区域之后再将方格的边长减半,重新构建新的镶嵌图,并根据一组规则分别定位出眼、鼻、嘴等脸部特征;最后,将前两步所得到的脸部区域二值化,并使用边缘检测装置最终确定脸部特征的位置,为了实现尺寸无关性,对所有可能的方格尺寸都作了测试,因此算法的运算量很大,准确率也不高但是这种由粗到精的搜索策略对后来的研究有很大的影响。

使用长宽比可变的矩形单元代替方格田,以便更好地拟合人脸为了设定矩形单元的长宽比,利用灰度值在xy方向上的投影确定眼、鼻、嘴和脸颊边界的位置,从而确定出脸部的大致范围,据此设定矩形单元的长宽比.这样缩小了搜索的范围,也避免了循环测试,不但使运算量大幅减少,也使准确率大大提高(M2VTS数据库[19]上,对眼、鼻、嘴等的定位准确率均在94.6%以上),但是他们的算法无法处理复杂背景或多人的情况,对目标对象姿态的变化较敏感

2几何投影

几何投影是脸部特征领域中最经典的算法,它利用脸部特征灰度值比皮肤灰度值低的特点,先统计出XY方向上的灰度值,画出灰度值曲线,找出曲线中特定的变化点,然后通过先验规则与变化点比较,即可得到脸部特征的位置.Kanade等首先将这一方法应用于人脸识别[20]Brunelli等在投影中使用X,Y两个方向上的梯度信息,以取代原始灰度值,从而减小了对光照条件的敏感度,增加了识别的准确性。

FengYuen等提出使用VPF (VarianceProjection Function方差投影函数)函数来定位[21]脸部特征,该函数的作用是计算指定方向上的所有像素的灰度值方差,与简单求和相比,它对复杂背景的适应力较强.他们在人眼上定义了6个特征点,分别对应于VPF函数值在X,Y方向上的特定突变点,同时假定瞳孔为圆形,上下眼眶为抛物线搜索时,先依据人体测量标准在人脸区域上划出搜索范围,然后根据其中VPF函数值的变化情况求出特征点位置,最后根据眼形假设拟合出瞳孔形状和眼眶线.与可变形模板法相比,该方法计算量较小,对初始搜索位置要求不高,但在眼睛状态变化的情况下容易失效

姜军等提出以运算代替求和运算的广义投影运算,他们先将图像二值化,而后在一定高度范围内作水平方向投影得到一系列短线,最后根据先验规则对短线两两配对,从而筛选出最终结果.该算法能应对多人的情况,运行速度很快,但错误接受率较高几何投影法计算量较低,但在大的姿态变化或复杂背景下容易失效

3二值化定位

Liming Zhang等先用直方图问值法将图像二值化,然后根据其中黑色区域的面积、形状和相对位置等几何特征确定出瞳孔的位置,最后通过边缘追踪依次找到上眼眶、眼角和下眼眶[22]范宏深等提出了一种与其类似的方法[23],即将图像二值化后,计算出黑色区域的有效面积、质心、外接矩形、圆性质和添实度(即黑斑的有效面积与黑斑外接矩形面积之比)等几何特征,然后依据经验标准筛去一部分黑色区域,并将余下的黑色区域作配对筛选,从而得到双眼位置此类方法运算量很小,但易受光照条件和图像质量的影响,在追踪边界时容易发生断线问题,稳定性无法保证

4广义对称

对称性是识别物体可利用的基本性质之一,它包括点对称性(也叫中心对称性)和轴对称性.绝大多数自然物体或人造物体都存在着这两种对称性,对于人脸图像来说,人眼、眉毛、嘴等都具有很强的点对称性,所以对称性被大量用于表情识别。

2.5.2基于几何形状信息

几何形状信息,即目标对象的几何形状特征,易于理解和应用,并且具有很好的直观性。因而很早就在模式识别领域得到广泛的使用。基于几何形状信息类方法的一般思路是:根据脸部特征的形状特点构造一个带可变参数的几何模型,并设定一个相应的评价函数以度量被检测区域与模型的匹配度,搜索时,不断调整参数使能量函数最小化,使模型逐渐收敛于待定位的脸部特征。

2.5.3基于色彩信息

色彩信息类方法的基本思想是用统计方法对目标对象的色彩建模,在搜索中根据被测点的色彩与模型匹配的程度,筛选出待测特征的可能位置.色彩信息在人脸检测中有广泛的应用,而在脸部特征定位方面的应用则相对较少,这是因为肤色在色彩空间中具有聚合性,而脸部特征的色彩信息较为复杂,如眼与嘴,以及眼睛的瞳孔与眼白的色彩有显著区别,这给统一建模造成了一定的难度。

一种简单的解决办法是直接利用脸部特征与皮肤在色彩上的差异如在已找到的皮肤区域上搜索空洞,并根据空洞的面积、相对位置等判断其是否为脸部特征这种方法避开了对脸部特征色彩信息的直接建模,直接利用了基于色彩信息的人脸检测的搜索结果,速度快,但精度不高

2.5.4基于外观信息

与几何信息类方法和色彩信息类方法不同的是,外观(Appearance)信息类方法不再面向像素级判断,而是将一定区域(窗口)内的图像整体视作一个随机变量,并映射为高维空间中的一个点,这样,同一类型的脸部特征就可以描述为高维空间中的一个点集,可以用统计方法对其分布规律建模,在搜索中,通过计算待测区域与模型的匹配度即可判定其是否包含目标脸部特征.这类方法对图像质量、环境条件和目标对象状态等方面的变化有较好的适应能力,近年来引起研究者们的广泛关注。

色彩信息类方法对光照条件和图像采集设备的特性较为敏感,易受环境因素的干扰,精度难以稳定,但其优势在于系统的运行速度快,受姿态、尺寸表情等变化的影响小,适合于粗定位或一些对运行时间有较高要求的应用。

2.5.5基于关联信息

上述方法大多从局部着眼,试图依据像素本身(色彩信息类方法)或邻近像素之间的相互关系(几何、外观类方法)来做出判断,但局部信息的区分度有限,在不受限制的条件下往往存在着大量的相似点,这就增大了后期处理的难度为了解决这个问题,研究者们引人了关联信息,试图利用脸部特征之间存在着的较稳定的相对位置关系来缩小候选点范围与前面提到的先验知识不同的是,这些方法所使用的关联信息都是通过统计学习得到的

2.2算法分类

Table2.2 Calculate categorize

方法分类

运算量

准确率

先验规则

镶嵌图

几何投影

二值化定位

广义对称

较低

较低

较低

较高

几何信息

Snakes

可变形模板

ASM

较小

色彩信息

--

外观信息

神经网络

PCA

SVM

关联信息

概率网络

DLA

GWN

较大

随着相对位置信息的引入,脸部特征定位与人脸识别、定位等相关领域之间的界线渐趋模糊,脸部特征的定位与匹配度计算可以同步完成,而且还可以利用相似人脸的经验信息来确定搜索的初始位置这可以说是目前脸部特征定位研究的一个重要趋势随着使用信息类型的增多,定位的准确率随之提高,对眼睛状态、目标对象姿态上的变化有一定的适应能力,但同时也增大了算法的运算量。

上文只是对人脸特征定位方法作了简单的介绍,在下表中给出了这几种方法的算法分类。对于表中的算法除了先验规则的之外,我们不做介绍。在本文中采用的特征定位方法是先验规则中的几何投影。在表2.2中总结了脸部特征定位方法。

2.6表情识别方法分类

关于人脸表情特征提取与识别的方法可概述如下:

2.6.1基于几何特征的识别方法

人脸由眼睛、鼻子、嘴巴、下巴等部件构成,正因为这些部件的形状、大小和相对位置的各种变化才使得人脸表情千差万别,因此对这些部件的形状和结构关系等特征的变化,可以作为人脸表情识别的重要特征。最早,研究人员利用人脸特征显著点导出一组用于识别的特征进行人[24]及其表情识别。采用几何特征进行正面人脸表情识别一般通过提取眼、口、鼻等重要特征点的位置和眼睛等重要器官的几何形状作为识别特征。Lanitis[25] 用脸部一系列的特征点组成可变形的模型,通过测量特征点的相互位置和形状来识别人脸表情(如图2.3所示) 。左图为训练图像中定位特征点,右图说明变形模板上关键的14个点。

2.3 特征点

Fig.2.3 The characteristic order

其基本思想是:对每一种表情(高兴、悲伤、惊奇、恐惧、厌恶、愤怒和平静共七种) 在选出来的训练图像中建立全局参数的分布,以便对一幅新的人脸图像计算其全局参数,以此来识别人脸表情。他们在实验中具体的运用了可变形模型,通过计算特征点的相互位置和形状来识别表情,达到74 %的识别率。基于几何特征的方法很大程度上减少了输入的数据,但是用有限的特征点来代表人脸图像,一些重要的表情识别和分类信息就会丢失。实验研究表明几何特征提取的精确性结果不容乐观。现在对于人脸图像处理技术,基于整体的正面灰度信息的方法越来越引起重视。

2.6.2基于整体的识别方法

与基于几何特征的识别方法相比,基于整体的识别方法主要强调尽可能多的保留原始人脸表情图像中的信息,并允许分类器发现表情图像中相关的特征,通过对整幅人脸表情图像进行变换,获取特征来进行识别。这种全局表情特征未必有明确的含义,但在某种意义上是易于分类的。由于基于全局的人脸表情识别方法具有强相关性及高冗余度,因此如何在抽取优化特征的同时提高识别的自适应性,至今还没有一个行之有效的方法。

基于整体的识别方法中最有代表性,应用最广泛的就是主元分析(PCA) 方法。主元分析就是要找到一个正交的维数空间来说明数据中变化的主要方向。而坐标轴就成了称之为Holo2ns[26]Eigenfaces[27]的近似人脸的模板图像轴。它是最小方差准则条件下基于图片的最优描述方法,将输入空间的维数从板中的象素数减少到特征脸的数目。如图2.4:EkmanFriesen得到的基于形状无关的人脸表情图像的特征脸[27]。主元分析现在已成功的用于人脸表情识别和人脸识别。

2.4 特征脸

Fig.2.4 Characteristic face

另一种基于整体的识别方法是运用神经网络。神经网络模型由简单的、并行处理的互连处理单元构成,每个神经元与其它神经元相连并从与其相连的神经元接受输入,输入加权后输出送给其它的神经元,各神经元之间的连接强度通过连接权值来描述。

2.6.3基于模版的识别方法

基于模板的方法又可以分为特征脸方法、基于相关匹配的方法、线性判别分析方法、奇异值分解方法、神经网络方法、动态连接匹配方法等。其中最具有代表性,也是最成功的是特征脸方法。

1特征脸方法

Turk 1991年提出特征脸的方法,它根据一组人脸训练图像构造主元子空间,由于主元具有脸的形状,也称为特征脸。识别时将测试图像投影到主元子空间上,得到一组投影系数,和各个已知的人脸图像比较进行识别该算法取得了较好的效果, 但系统在进行特征脸方法之前需要作大量预处理工作如归一化等。

2神经网络方法

神经网络在人脸识别应用中有很长的历史。早期用于人脸识别的神经网络主要是Kohenon自联想映射神经网络,用于人脸的回忆。所谓回忆是指当图像上的人脸受噪声污染严重或部分缺损时,能用Kohenon网络恢复出原来完整的脸。

2.6.4基于模型的识别方法

现在很多人脸表情识别系统是基于人脸物理模型的方法。它是将人脸图像建模为可变形的3D网格表面,将人脸表情识别问题转化成为可变形曲面的弹性匹配问题,把空间和灰度放在一个3D空间中同时考虑。EssaPentland[28]TerzopoulosWatwes[27]的基础上构建了一个基于解剖学的人脸模型并且把它用于识别人脸表情(如图2.5所示)

2.5 人脸模型

Fig.2.5 Face model

2.6.5其他方法

由于小波理论已逐渐成为一种成熟的技术,用小波方法进行图像识别的技术也已日趋成熟。日本九州大学[29]提出用Gabor小波进行面部表情信息的压缩编码,但在图像序列中只考虑特征点位移纹理信息,并未运用颜色信息。美国CMU[30]运用隐马尔可夫模型(HMM)分析人脸表情的细微变化,自动区别各种基于FACS表情活动单元(AU)的细微面部表情。为实现自动识别运用了三种提取面部表情信息的方法:特征点跟踪、流跟踪和边缘检测。Peng Hayes[31]研究了人脸表情的建模与合成,用基于模型图像编码的方法使用遗传算法来编码、识别与合成各种不同的表情。

2.7本章小结

本章介绍了面部表情的分类,重点研究了人脸检测方法、人脸特征定位方法以及表情识别方法为下一章人脸表情识别系统的设计奠定了基础。

3 人脸表情识别系统的设计

3.1引言

人脸表情识别包括三方面的内容:人脸检测(定位),人脸表情特征提取,表情识别,其具体方法在第二章已经做了详细说明。本章的研究重点是利用表情识别的方法开发一个基于VB6.0的人脸表情识别系统。

为了评价一个人脸表情识别系统,需要有一定的测试标准。一个完整的人脸表情识别系统的测试标准应该有一个大容量的人脸表情数据库(表3.1中提供了大量表情库)。但是人脸表情库很难在线获得,这里要感谢陈锋军老师提供的CKACFEID人脸表情库。这个库里面包括了1850岁共210位成年人(69%为女性,31%为男性)的脸部表情序列图像。其中81%的白种人,13%的非洲人和6%其它种族的人。在本章中人脸表情识别系统的设计和评价都是利用了这个人脸表情库。

3.1 常用人脸表情库

Fig 3.1 Common face data

人脸表情库

链接

特点

CKACFEID人脸库

M2VTS人脸库

MTT人脸库

ORI人脸库

Yale人脸库

FERET人脸库

UMIST人脸库

Harvard人脸库

Purdue AR人脸库

Kodsk人脸库

CMU PIE 图象库

Bern 大学人脸库

——

http://poseidon.csd.auth.gr/M2VTS/index.html

http://whitechapel.media.mit.edu/pub/images

http://www.uk.reseach.att.com

http://cvc.yale.edu

http://www.nist.gov/humanid/feret

http://image.ee.umist.ac.uk/danny/databased.html

http://ftp,hrl.harward.edu/pub/faces

http://rvl1.ecn.purdue.edu/~aleix/aleix_face_DB.html

Eastman Kodak Corporation

http://www.ri.cmu.edu/projects/project_418.html

ftp://iamftp.unibe.ch/pub/Images/FaceIages/

850岁共210位成年人

包含图像序列

16人,每人27幅,有光照、尺度和头部偏转变化

40人,每人10

有表情、光照变化及眼镜

大量的男女脸像,有表情变化

20564幅图像,包含从正面到侧面的各个角度

各种光照条件下,脸像经裁剪和掩盖

3276张脸像,有表情、光照变化和遮挡

彩色图像,有尺寸、姿态和光照变化

每人13种姿态、43种光照条件和4种表情

30人,每人10伏正面像和5幅侧面像

3.2预处理

人脸表情图像的预处理在人脸图像的识别过程中占有举足轻重位置,它为表情特征的提取和识别奠定了基础。根据算法的要求,本文中预处理包括归一化、灰度化和二值化

3.2.1归一化

由于在每幅人脸图像的大小不同,因此可能导致眼睛、鼻子、口等的位置发生误差,因而会导致识别结果发生错误,所以在对人脸表情特征提取和分类之前一般需要做几何归一化和灰度归一化。几何归一化是指根据人脸定位结果将图像中人脸变换到同一位置和同样大小;灰度归一化是指对图像进行光照补偿等处理,光照补偿能够一定程度地克服光照变化的影响而提高识别率,如果不进行归一化在下一步中会遇到很多困难。几何归一化的算法我们将在3.4节中讨论

3.2.2灰度化

灰度图(GrayScale)是指只含亮度信息,不含色彩信息的图像。灰度化处理是把含有亮度和色彩的彩色图像变换成灰度图像的过程。灰度化处理在许多图像处理中是很重要的一步,他的结果就是后续处理的基础。所以,寻求一种正确有效的灰度化处理方法尤其重要。

位图图像一般分为单色图像、灰度图像和彩色图像。单色图像只有黑色和白色两种颜色, 整个图像由单纯的黑色点和白色点组成,就是我们下面要介绍的二值图像。彩色图像的像素点是由R (红色)G (绿色)B () 三元色混合而成的, 不同含量的RGB 组成不同的颜色, 每一个记录单个像素的位数据单元可表示任意一种颜色。根据这个记录单个像素信息的位数据单元所占位数大小, 可分为8 位、16 位、24 位和32 位等几种位图。8 位位图是指图像一个像素点的颜色信息用8 个位(一个字节) 来表示; 同样, 16 位位图用16 个位(二个字节) 来表示, 其中RGB分别占5 , 另外1 位他用; 24 位位图用24 个位(三个字节) 来表示, 其中R 8 位、G 8 位、B 8 位。

3.1 灰度化流程图

Fig3.1 The ash degree turns flow chart

灰度图像与单色图像的区别是加上颜色深度的概念, 单纯的看, 灰度图也是黑白的, 就像黑白电视显示的图像一样, 但是点与点之间黑的程度是不一样的, 这就是深度。如果称不同深度的颜色为一色的话, 灰度图像就不止只有黑色和白色两种颜色, 一般使用的灰度图为256 级灰度, 就是说图像256 种不同灰度级的颜色组成[32]一般的对于256色的位图图像,它的每个像素占8位,正好是一个字节。它的像素值存储的并不是像素的颜色,而是一个图像颜色表中的索引,在颜色表中则存储了256种颜色值。

在彩色图像中,图像的像素值存储的就是像素的颜色。一般的对于256色的位图图像,它的每个像素占8位,正好是一个字节。它的像素值存储的并不是像素的颜色,而是一个图像颜色表中的索引,在颜色表中则存储了256种颜色值。

通过以上的分析,可很容易地得到图像的灰度化及灰度特征的提取算法,灰度化流程见图3.1

3.2.3二值化

1灰度图像:

灰度图像矩阵元素的取值范围通常为[0255]。因此其数据类型一般为8位无符号整数的(int8),这就是人们经常提到的256灰度图像。0”表示纯黑色,255”表示纯白色,中间的数字从小到大表示由黑到白的过渡色。在某些软件中,灰度图像也可以用双精度数据类型(double)表示,像素的值域为[01]0代表黑色,1代表白色,01之间的小数表示不同的灰度等级。二值图像可以看成是灰度图像的一个特例。

2二值图像:

一幅二值图像的二维矩阵仅由01两个值构成,0”代表黑色,1”代白色。由于每一像素(矩阵中每一元素)取值仅有01两种可能,所以计算机中二值图像的数据类型通常为1个二进制位。二值化的通常用的方法如下:

选择某个阈值 T ,将原始图像变换为二值图像:

f(x,y)>=T时,f(i,j)=1;

f(x,y)时,f(i,j)=0.

图像阈值化这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但是遗憾的是,如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果,甚至也没有一个理论指导我们选择特定方法处理特定图像。在这里给出了几种常用的阈值确定方法:

基于点的全局阈值方法;基于区域的全局阈值方法局部阈值方法和多阈值方法

在本系统中采用的是第一方法,其具体用法在下节中有具体介绍。二值化过程如图3.2

3.2 二值化流程图

Fig3.2 Two values turn flow chart

3.3基于黑斑的特征识别方法

我们之所以采用基于下半部分人脸的表情识别算法,主要是有以下三个原因:

脸的下半部分特征比较稳定,无论是彩色图、灰度图还是三值图,都可以清楚的分辨出;而像眉角、额头等脸的上半部分的特征在二值以后的质量不是很好,因此要对脸的上半部分的特征进行提取难度很大,而且很容易产生误差,导致识别结果的错误。

四种基本表情都可以通过嘴角和下颌的特征变化表现和区别出来。而像额头、眼神变化对高兴、惊讶、平静、悲伤等表情的变化表现不出来。

对于二值化以后的图像,黑斑的特征比较明显,嘴角附近的黑斑变化可以反映出四种表情的变化。

基于上述原因,我们选择了符合我们设计要求和目的的算法。整个的识别过程流程如图3.3

3.3 程序流程图

Fig.3.3 Procedure flow chart

通过对大量人脸头像的识别,发现人脸的下半部分的标志在二值化以后非常明显,尤其是嘴角附近黑斑的变化可以反映出人的表情。如图3.4的三个人的12幅人脸图像,在惊讶”“高兴”“悲伤”“平静时具有同样的黑斑特征。

整个过程的思路是首先识别高兴表情,最明显的特征是:嘴角上翘,从嘴角到鼻翼有高剃度成分;其次是悲伤表情,特征是:嘴巴张开,并且嘴角内收(特别是和高兴的表情相比较,嘴角明显的内收)。通过以上的黑斑就可以明显的区分出高兴惊讶的表情。接下来是悲伤的表情,特征是:嘴角下拉,下巴收紧(反映在二值图上就是下唇和下巴之间的黑斑);最后是平静的表情,特征是:嘴角基本没有上下移动,下巴放松。

惊讶嘴巴黑斑 高兴嘴角黑斑 悲伤下巴黑斑 平静无特殊黑斑

a

惊讶嘴巴黑斑 高兴嘴角黑斑 悲伤下巴黑斑 平静无特殊黑斑

b

惊讶嘴巴黑斑 高兴嘴角黑斑 悲伤下巴黑斑 平静无特殊黑斑

c

3.4 黑斑特征

Fig.3.4 Black facial

3.4软件系统设计

在本次设计中,我们将会完成一个人脸图像表情识别软件系统的设计,利用这个软件,我们可以对人脸的四中表情——“高兴”“惊讶”“平静”“悲伤进行自动识别,并以绘图的形式输出表情的识别结果。在这个系统中,计算机会自动读取图像,并对图像进行归一化灰度化、二值化、表情识别,最终实现表情的识别(这个系统的设计我们是采用VB6.0完成)。

3.2 颜色常量

Table3.2 Color measure

颜色常量

颜色

vbBlack

vbRed

vbGreen

vbBlue

vbYellow

vbWhite

vbCyan

vbMagenta

&H0&

&HFF&

&HFF00&

VHFF0000&

&HFFF&

&HFFFFFF&

&HFFFF00&

&HFF0000&

绿

紫红

3.4.1VB颜色设定

由于该系统是基于VB6.0 ,首先,介绍VB的颜色设定。Visual Basic的计算机屏幕颜色设定常用3种类型:8色、16色、和RGB函数。

8色设置使用8个颜色常量,如表3.2所示。

16色设置使用QBColor函数。其格式为QBColorcolor),其中color为必要参数,取值0-15,代表颜色编号,如表3.3所示[33]

本文中将会用到RGB函数,Visual Basic中的函数RGB有红色、绿色、蓝色3个基色,根据给定的颜色深度,RGB函数返回由三个基色混合调制的色彩。RGB的格式是:

RGBredgreenblue

red:必要参数,表示红色色素,取值0-255

Green:必要参数,表示绿色色素,取值0-255

Blue:必要参数,表示蓝色色素,取值0-255

3.3 颜色设置

Table3.3 Color Establish

颜色编号

颜色

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

黑色

深蓝

绿色

青色

咖啡色

紫色

墨绿色

灰色

深灰色

蓝色

浅绿色

浅蓝色

红色

粉红色

黄色

白色

例如,RGB000)为黑色,RGB255255255)为白色,RGB00255)为蓝色,RGB2552550)为黄色。理论上RGB函数有种颜色组合[34],但究竟能显示多少种颜色还要看显示器类型。

RGB函数合成绿色的方法可以表示为:合成颜色=蓝色65536+绿色256+红色。

3.4.2灰度化处理

预处理的第一步是将彩色的人脸图像转化为灰度图像,原理如下:彩色图像使用一个三维矢量(RGB)表示一个像素点,而灰度图是用一个灰度级(gray level)来表示。因此这种转化可以看作是从一个三维矢量到一个一维矢量的投影操作。通常可以用一个线性变换完成这一过程,如下式:

Pxy=kR(x,y)+lC(x,y)+mB(x,y)

这里R(x,y)C(x,y)B(x,y)分别为像素(xy)点的RGB三个分量的值,l,k,m为预先确定的参数(在该系统中lkm都取1/3),且和为1Pxy)为求得的灰度值。下面给出了VB中生在VB里生成灰度图像的一般算法[35]

c = Picture1.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

3.4.3 二值化处理

由于是针对人脸图像的黑斑特征进行表情识别,所以要将灰度图转化为二值图,在本文中我们采用阈值分割法,关于阈值的确定在3.2节中我们已经做了介绍,这里就不赘述了。 我们选取最简单的阈值取灰度值的一半127作为阈值[36]

VB里二值化的一般算法为

If graycolor < 127 Then

T = 0

Else

T = 255

3.4.4几何归一化处理

坐标化原因是每幅图片的大小可能不一样,为了使识别过程步产生大的误差而采取的。具体VB代码如下:

Picture2.Width = 1935

Picture2.Height = 1935

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture5.Width, Picture5.Height, 0, 0, Picture1.Width, Picture1.Height

3.5程序编写过程

3.5.1添加控件

建立一个工程,向窗体添加五个PitureBox控件,一个CommonDialog控件,五个TextBox控件,一个MMControl控件[37]。窗体和控件的属性设置如表3.4

3.4 窗体控件属性设置

Table3.4 Form Toolbox Establish

类型

属性

属性值

Form

Name

Form1

Caption

人脸表情识别系统

Height

4230

Left

105

Top

105

Width

11010

ScaleMode

1

StartUpPosition

3

Picturebox

Name

Picture1

AutoSize

false

Top

480

Left

240

ScaleMode

1

AutoRedraw

True

Picturebox

Name

Picture2

AutoSize

False

Top

480

Left

2400

ScaleMode

1

AutoRedraw

True

Picturebox

Name

Picture3

AutoSize

False

Top

480

Left

4560

ScaleMode

1

AutoRedraw

True

类型

属性

属性值

Picturebox

Name

Picture4

AutoSize

False

Top

480

Left

6720

ScaleMode

1

AutoRedraw

True

Picturebox

Name

Picture5

AutoSize

False

Top

480

Left

8880

ScaleMode

1

AutoRedraw

True

CommonDialog

名称

CommonDialog1

Copies

1

Left

480

Top

360

TextBox

Name

Text1

Text

读入图片

Left

720

Top

2760

Visible

True

Appearance

1

TextBox

Name

Text2

Text

归一窗口

Left

2880

Top

2760

Visible

True

Appearance

1

类型

属性

属性值

TextBox

Name

Text3

Text

灰度窗口

Left

5040

Top

2760

Visible

True

Appearance

1

TextBox

Name

Text4

Text

二值窗口

Left

7200

Top

2760

Visible

True

Appearance

1

TextBox

Name

Text5

Text

识别窗口

Left

9360

Top

2760

Visible

True

Appearance

1

按照表3.4设置得到窗口如图3.5所示。

3.5 控件设置

Fig3.5 Form

3.5.2菜单编辑

按照表3.5,编辑菜单。

3.5 菜单编辑

Table3.5 Edit

标题

名称

类型

文件

打开

保存

保存归一图像

保存灰度图像

保存二值图像

保存识别图像

退出

File

Open

Save

Savegy

Savehd

Saveezh

Saveshb

Close

主菜单

第一层菜单

第一层菜单

第二层菜单

第二层菜单

第二层菜单

第二层菜单

第一层菜单

编辑

坐标化

灰度化

二值化

图像识别

Edit

TY

Hdh

Ezh

txsb

主菜单

第一层菜单

第一层菜单

第一层菜单

第一层菜单

帮助

help

主菜单

关于

About

主菜单

执行工具菜单中的菜单编辑器命令,如图3.6所示。

3.6 工具

Fig3.6 Tools

进入菜单编辑器后,出现菜单编辑器对话框,如图3.7所示。

3.7 菜单

Fig3.7 Files

按照表3.4中的标题、名称、类型对菜单编辑器进行编辑[38],得到如图3.8所示。

3.8 编辑

Fig3.8 Edit

编辑完菜单后得到窗口如图3.9所示的系统

3.9 系统图

Fig3.9 System diagram

3.5.3编写程序

灰度化程序

Dim Red As Integer

Dim Green As Integer

Dim Blue As Integer

Dim c As Long

Dim graycolor As Long

Dim x0 As Integer

Dim y0 As Integer

For x0 = 0 To Picture2.Width

For y0 = 0 To Picture2.Height

c = Picture2.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

Picture3.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)

DoEvents

Next

Next

二值化程序

For x0 = 0 To Picture3.Width

For y0 = 0 To Picture3.Height

c = Picture3.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

If graycolor < 127 Then

T = 0

Else

T = 255

End If

Picture4.PSet (x0, y0), RGB(T, T, T)

DoEvents

Next

Next

主程序[主程序参照附录]

3.6以高兴为例演示表情识别系统

双击桌面人脸识别系统进入初始画面如图3.10所示,从初始画面中点进入进入识别主画面。在主画面里执行文件菜单中的打开图片命令,打开一幅125*125像素的图片如图3.11。执编辑菜单中的归一令,对图片进行几何归一化,结果如图3.12。执编辑菜单中的灰度化对图片进行灰度处理,结果如图3.13。执编辑菜单的二值化命令,对图片进行二值处理,结果如图3.14执行编辑菜单的图像识别输出识别结果如图3.15。对于处理结果可以执行文件菜单中的保存令来保存。



3.10 初始画面

Fig.3.10 Beginning appearance

3.11 主画面

Fig.3.11 Main appearance

3.12 归一化

Fig.3.12 Unify

3.13 灰度化

Fig.3.13 Ash degree

3.14 二值化

Fig.3.14 Two values

3.15 识别

Fig.3.15 Identify

3.16 保存

Fig.3.16 Save

3.7识别结果分析

利用CKACFEID人脸表情库提供的样本表情图片对基于VB6.0的表情识别系统进行评价,得到的结果如表3.6所示。

3.6 表情识别结果

Table3.6 The result of expression recognition

表情

样本数

识别数

惊讶

12

10

高兴

14

11

悲伤

16

12

平静

11

11

使用基于VB6.0开发的人脸表情识别系统,对于CKACFEID人脸表情提供的图片具有较高的识别率,达到了83%的识别率,如3.17和图3.18的八幅图片是由CKACFEID人脸库提供的本系统可以很好的识别这八幅人脸图片。为了进一步评价该系统,我们对随机输入的人脸图像进行了处理识别,如3.19的四幅图片在对(c中的表情识别时发生错误。

因此,为了提高系统的识别识别率,一方面要在识别方法上改进,另一方面,也可以在在特征提取方面做改进。对于面部表情的识别方法的研究和发展方向,在下一章中了作了详细的讨论。

输入图像(惊讶) 灰度图像(惊讶) 二值图像(惊讶) 识别图像(惊讶)

(a)

输入图像(高兴) 灰度图像(高兴) 二值图像(高兴) 识别图像(高兴)

(b)

输入图像(悲伤) 灰度图像(悲伤) 二值图像(悲伤) 识别图像(悲伤)

c

输入图像(平静) 灰度图像(平静) 二值图像(平静) 识别图像(平静)

(d)

3.17 图像识别

Fig.3.17 The picture identify

输入图像(惊讶) 灰度图像(惊讶) 二值图像(惊讶) 识别图像(惊讶)

(a)

输入图像(高兴) 灰度图像(高兴) 二值图像(高兴) 识别图像(高兴)

(b)

输入图像(悲伤) 灰度图像(悲伤) 二值图像(悲伤) 识别图像(悲伤)

(c)

输入图像(平静) 灰度图像(平静) 二值图像(平静) 识别图像(平静)

(d)

3.18 图像识别

Fig.3.18 The picture identify

输入图像(惊讶) 灰度图像(惊讶) 二值图像(惊讶) 识别图像(惊讶)

(a)

输入图像(高兴) 灰度图像(高兴) 二值图像(高兴) 识别图像(高兴)

(b)

输入图像(悲伤) 灰度图像(悲伤) 二值图像(悲伤) 识别图像(惊讶)

(c)

输入图像(平静) 灰度图像(平静) 二值图像(平静) 识别图像(平静)

(d)

3.19 图像识别

Fig.3.19 The picture identify

3.8本章小结

本章首先介绍了人脸表情识别的预处理方法,然后重点设计开发了基于VB6.0的人脸表情识别系统,并对系统的识别过程做了演示、对识别结果做了说明。

4 面部表情识别的深入研究

4.1发展方向

前面所介绍的表情识别实现方法都取得了一定的效果,对表情识别的发展起到了很大的作用。已经有许多关于人脸表情识别方面的研究,但是对特定人脸表情的再现效果还不是特别理想,使用一般人脸模型进行变形来表现特定人脸的表情时,是通过一组特征点的位置变换来得到一个新的人脸网格模型,当稳定一个特征点匹配到图像上的特征位置时,变形算法模拟人脸皮肤的粘弹特性,自动计算出与该移动相关的网格点的新坐标位置,这样就存在匹配程度和逼真程度的问题了,这是因为一般人脸模型已经固定,采用固定算法虽然能够模拟人脸皮肤的变化,但是大部分采用的还是一般人脸模型的样子,这样就对特定人脸表情的再现有一定的虚假性。能否直接采用特定真人脸的表情特征点(位置、灰度值)来建立特定人脸的表情模型,在仿真真人脸表情动画中的一个关键技术就是要提取真人表情的特征点,找出特征点运动前后的关系,确定特征点运动后的位置,以便来建立真人面部表情模型。在这方面还需要做的工作就是要建立真人表情点的提取系统,为实现仿真真人脸部表情动画系统做准备,因为通过对三维视图中相关二维视图特征的识别与匹配,就可以完成三维基本特征体素的提取及关系判断即三维重建。

人脸特征提取又称人脸描述,是在基于人脸定位的基础上进行人脸的各特征提取的过程,也是对人脸进行特征建模(精细建模)的过程。建立的特征模型主要用于区分各人脸之间的差异性,为人脸识别分类打下基础[39]。目前,人脸特征提取方法按特征提取思路一般可分为两大类:基于整体思想[40],把定位后的人脸图像灰度分布整个作为一个特征模式。该方法的主要流程为:图像尺寸方向标准化(仿射变换)、灰度分布归一化;特征维数压缩(数据压缩);提取相应特征进行识别。其优点是不需要进行人脸特征检测分割可直接通过预处理、定位后进行人脸识别,不受图像整体平均灰度的变化影响,对图像分辨率不太敏感;缺点是受人脸定位不准、背景变化、光线不均匀变化较大,且随着图像数据库的急剧增大,人脸识别正确率逐渐下降。基于局部思想,先求人脸各器官等的特征,然后由此张开成人脸特征模型。该方法主要流程是先基于各器官的分布知识进行人脸特征建模,然后各特征检测提取并分类识别。它又可分为2种:a.基于各器官边界特征的提取[41]b.局部特征PCA方法,提取特征眼、特征鼻、特征嘴等。其优缺点与基于整体思想方法基本相同,但对人脸图像分辨率有一定的要求,相应的局部器官区域要求有一定的面积。

目前,静止图像的人脸识别方法主要有三个研究方向:一是基于统计的识别方法,包括特征脸(Eigenface)方法和隐马尔科夫模型(Hidden Markov Model)方法;二是基于连接机制的识别方法,包括一般的神经网络方法和弹性图匹配(Elastic Graph Matching)方法;三是其他一些综合方法或处理非二维灰度图像的方法[42]

4.2工作重点

过去对人脸研究主要集中于人脸识别。虽然表情识别与人脸识别密切相关(例如在人脸检测与定位、人脸跟踪这些环节上是一致的) 但特征提取方法和研究的主要对象有很大区别:人脸识别提取的特征是不同人脸的个体差异(特性) ,面部表情作为干扰信号存在;而表情识别是忽略个体差异,提取人脸在不同表情模式下的差异特征,人脸个体差异成为干扰信号。人脸表情识别是一个跨学科富挑战性的前沿课题,但目前还只是研究课题尚没有进入实用化的领域。成功的人脸表情识别系统(针对二维图像) 至少要包括以下几个因素:

1)由于外部干扰不可避免,预处理的效果会直接影响识别结果,所以图像预处理要尽量保留有用信息并且抑制和分隔外界干扰。

2)细节是区分人脸表情的关键,因此选择方法要充分考虑人脸表情细微的形变。

3)对于人脸表情的各种特征表达方法需要进行比较和选择,要找出合适的人脸表情特征表达方法。

人脸表情识别难度较大,主要难在人脸都是塑性变形体,因此人脸表情不能用经典的几何模型来进行识别分类,更适合用弹性模型来描述。从当前的发展来看采用上述方法的混合法是进一步提高识别率的最有效的途径,这也恰恰符合了人脸表情识别的神经学特性:人脸表情识别是一个整体识别和特征分析的过程。而基于多种类型特征信息融合的混合方法成为发展的主要方向。也就是说,无论对于检测定位还是识别,如何将各种信息最大限度、有机的结合起来加以利用,是有效提高人脸表情识别系统效率的手段。

并且人脸表情识别被认为是人类视觉中独特的过程,生理学和心理学结合对人脸表情的研究很有帮助,但是并不能简单的模仿人类。目前的计算机体系结构的特长是数值计算,应该充分发挥它的计算能力。

4.3目标要求

在表情识别领域,国外已经取得了很大成果,我国在这个领域的很多方面的研究很少甚至是一片空白。在学习外国先进技术的同时,我们有要发挥自己的优势,摆脱前人在算法上的影响提出更新更实用的算法。可以预见随着我国科研人员在这个领域的研究,我国的表情识别将会越来越好。

5 结论

本文主要研究了人脸检测与定位方法,脸部特征定位方法,以及表情识别方法。首先从图片中提取脸部影像,然后对脸部的特征点进行定位,通过脸部的特征点进行表情识别,最终得到识别结果。

在本文中,主要从下面几个方面进行了研究。

首先,研究了人脸检测与定位方法:(1) 基于知识的方法(Knowledge - based Methods) (2) 特征不变方法(Feature Invariant Approaches) (3) 模板匹配方法(Template Matching Methods) (4) 基于外观的方法(Appearance - based Methods)

其次,研究了脸部特征定位方法:基于先验规则、基于几何形状信息、基于色彩信息、基于外观信息和基于关联信息等5类。

再次,研究了表情识别的方法:基于几何特征的识别方法,基于整体的识别方法,基于模板的识别方法,基于整体的识别方法,另外还介绍了一些其它的方法。

最后,在研究上述方法的基础上,结合实际的要求和毕业设计的时间,利用VB6.0开发了一个人脸表情识别系统。用这个软件,我们可以对人脸的四中表情——“高兴”“惊讶”“平静”“悲伤进行自动识别,并以绘图的形式输出表情的识别结果。在这个系统中,计算机会自动读取图像,并对图像进行灰度化、二值化、归一化、表情识别,最终实现表情的识别。

总之,表情识别的研究在国外已经取得了重大突破,我国的表情识别研究也正在兴起,作为情感计算机的一个重要方面,表情识别对自然化交互具有重要的意义。今后对表情识别的研究应该着重于下面几个方面:

进一步优化已有的算法,减小外界环境对识别过程的影响。

在已有算法的基础上,提出更新的、更好的算法。

利用现有的技术开发具有实用价值的产品,如安全检测系统,司机情绪监测系统等[43]

致谢

本论文(设计)是在导师陈锋军老师的悉心指导下完成的,老师以其渊博的知识、宽阔的眼界、敏锐的思维、尤其是丰富的经验给了我非常诚恳的意见,使我受益匪浅。从对表情识别一无所知,到完成表情识别系统的设计,没有陈锋军老师的指导,我的论文是无法完成的。当然在在完成毕业论文(设计)过程中,我也得到了许多人的关心和帮助,我衷心的感谢他们。

首先,我要感谢自动化系的所有老师,是他们在四年的时间里教给我许多自动化方面知识和做人的道理,不仅为我毕业论文(设计)完成奠定了良好的基础,也指导了我以后的成长方向。在此,我一并向他们表示感谢。

其次,我要感谢工自02级的所有同学们。在四年的时间里,我们一起学习,一起生活,度过了美好的大学生活,同时在完成毕业论文(设计)的过程中我们相互讨论、相互学习,没有你们的配合我的研究工作也不会顺利的进行。

最后,我要感谢所有在我成长的道路上,关心、支持、帮助过我的人们。我所取得的每一点成绩都与他们的帮助联系在一起。在我幸运地完成了四年的大学学习生活之际,我真诚地向他们每个人致以深深的谢意!

参考文献

[1] I. Essa et all.IEEE Trans [M].Dallas:PAMI ,1997 :757763.

[2] 吕岩.面部表情识别的研究与实现[D].哈尔滨:哈尔滨工业大学,1999.

[3] Ming - Hsuan Yang.,David J Kriegman. Detecting Faces in Images: A Survey [J]. IEEE Trans. Pattern Analysis and Machine Intelligence, 2002 ,24 (1) :34 – 58.

[4] TS Huang ,G Z Yang. Human Face Detection in a Complex Background [J]. Pattern Recognition ,1994 ,27 (1) :53 – 63.

[5] C Kotropoulos.I Pitas[A]//Rule - based Face Detection in Frontal Views Proc [C] . Int’l Conf . Acoustics ,Speech and Signal Processing ,1997. 2537 -2540.

[6] S.A. Sirohey1Human Face Segmentation and Identification Technical Report CS - TR - 3176[R] . Univ. of Maryland , 1993.

[7] H P Graf [A]//et al.Locating Faces and Facial Parts [C].Proc. 1st Int’l Workshop Automatic Face and Gesture Recognition ,1995:41 – 46.

[8] T KLeung. M C Burl[A]//P Perona. Finding Faces in Cluttered Scenes Using Random Labeled Graph Matching[C] . Proc 5th IEEE Int’l Conf . Comput2er Vision ,1995:637 - 644.

[9] KC Yow. R Cipolla1[A]//A Probabilistic Framework for Perceptual Grouping of Features for Human Face Detection[C] . Proc. 2nd Int’l Conf . Automatic Face and Gesture Recognition ,1996:16 - 21.

[10] KC Yow.R Cipolla. Feature - based Human Face Detection [J]. Image and Vision Computing ,1997 ,15 (9) :713 - 735.

[11] K C Yow.R Cipolla[A]//Enhancing Human Face Detection Using Motion and Active Contours[C].3rd Asian Conf . Computer Vision ,1998. 515 - 522.

[12] C.C.Han,et al[A]//Fast Face Detection via Morphology – based Pre2Processing[C] . 9th Int’l Conf . Image Analysis and Processing ,1998:469 - 476.

[13] 彭进业,俞卞章,王大凯.多尺度对称变换及其应用于定位人脸特征点[J] . 电子学报,2002 , 6(3) 104

[14] 王延江,袁保宗,唐晚芳.一种快速彩色图像中复杂背景下人脸检测方法[J].电子学报,2002 , (10)11-12 .

[15] T Sakai, MNagao, et al .Line Extraction and Pattern Detection in a Photo2 graph[J].Pattern Recognition ,1969 ,1:233 – 248.

[16] I Craw,H Ellis, J Lishman. Automatic Extraction of Face Features [J] .Pattern Recognition Letters ,1987 ,5 :183 – 187.

[17] J Miao. et al .A Hierarchical Multi scale and Multi angle System for Human Face Detection in a Complex Background Using Gravity - Center Template [J]. Pattern Recognition ,1999 ,32 (7) :1237 – 1248.

[18]Yang G, Huang T S. Human face detection in a complex background[J]. Pattern. Recognition. 1994,27(1):53-63.

[19] Pigeon S. Vandendorpe L. The M2VTS multimodal face database [A]// Lecture Notes in Computer Science LC[C].Crans Montana. Switzerlund.l997,1206: 403-409.

[20] Kanade T. Picture processing by computer complex and recognition of human faces[R]. Deptemem Information Science Kyoto University. Kyoto japan, 1978.

[21] FengG.C,Yuen P C. Variance projection function and its Application to eye detection for human face recognition[N].Pattern Recognition Leters, 1998,19(9).

[22]姜军,张桂林一种基于知识的快速人脸检侧方法[N].中国图像图形学报,2002-7-1(A1).

[23]范宏深,倪国强,申会堂利用几何特性及神经网络进行人脸探侧技术的研究[N].光学技术,2002,28(2):105-107.

[24]T. Kanade ,“Computer recognition of human faces”. Basel & Stuttgart :Birkhauser Verlag. 1977.

[25]A.Lanitis et all.IEEE Trans[J]. PAMI ,1997,19 (7) :743-756.

[26]G.W. Cottrell et al1.Proc of the Int[J] . Neural Network Conf ,1990,10(1): 322-325.

[27] A. J . Calder et al1 ,Vision Research Vol [J]. Neural Network Conf ,1991,22(4):1179-1208.

[28] I. Essa et al1 In .IEEE Trans[J]. PAMI ,1997,12(2) :757-763.

[29] G. R.Bradski ,IEEE Workshop Application of Computer Vision[J] .Neural Network Conf,1998,4(1):214-219.

[30] J . J . J .Lien , CMU - RI - TR - 98 - 31 .Ph. D[J]. dissertation ,1998,1(1):200-231.

[31] A. Peng et all. GA Technical Report 30332 - 0250 [J].Neural Network Conf,1996,1(1):479-486.

[32]李于剑.Visual C+ + 实践与提高--图形图像编程篇[M].北京: 中国铁道出社,2001(1):24-26.

[33] 李鸿吉.Visual Basic 6.0 中文版编程方法详解[M].北京:科学出版社,2001:204-206.

[34] 陈涌.Visual Basic 第三方控件大全[M].北京:中国电力出版社2002:405-406.

[35] 王兴晶,尹立.Visual Basic 6.0应用程序150[M].北京:电子工业出版社,2004:146149

[36] 臧玉琴,腾跃.Visual Basic 界面、多媒体与操作系统程序设计[M].北京:人民邮电出版社2003:124-132.

[37] 李光明中文Visual Basic 6.0 程序设计教程[M].北京:冶金工业出版,2002:200-211.

[38] 刘新民.蔡琼.白康生Visual Basic 6.0程序设计[M].北京:清华大学出版,2004:334-350.

[39]朱长仁.王润生人脸特征自适应选取技术[J]. 计算机辅助设计与图形学学报,200211):2630.

[40]M Kirby. L Sirovi. Application of the Karhunen-Loeve procedure for the characterization of human face[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1990, 121):103108.

[41] Roberto Brunelli, Tomaso Poggio. Face recognition: Feature versus templates[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1993, 1510):10421052.

[42]李刚,高政. 人脸识别理论研究进展[J]. 计算机与现代化,20033(1)16.

附录

'表情识别系统VB程序

Private Sub about_Click()

'打开Form2

Form2.Show

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub close_Click()

'关闭当前页

Unload Me

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub help_Click()

'WORD方式打开帮助

Dim word As Object

Dim documents As Object

Set word = CreateObject("word.application")

Set documents = word.documents.open("e:\125.doc")

word.Visible = True

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub open_Click()

'初始化TEXT

Text2.Text = "归一窗口"

Text3.Text = "灰度窗口"

Text4.Text = "二值窗口"

Text5.Text = "识别窗口"

'打开图片并显示在Picture1

On Error Resume Next'运行时错误将显示错误信息,同时,代码的执行也随之终止

CommonDialog1.DialogTitle = "打开文件"

CommonDialog1.Filter = "所有支持的格式" + "(*.jpg;*.bmp;*.gif;*.pcx;*.ico)|"

CommonDialog1.ShowOpen

If CommonDialog1.FileName <> "" Then

If Err <> 32755 Then

Dim openfilename As String

openfilename = CommonDialog1.FileName

Picture1.Picture = LoadPicture(openfilename)

End If

End If

Text1.Text = "打开图片"

If Image.Height <> 1935 Then

Image.Height = 1935

End If

If Image.Width <> 1935 Then

Image.Width = 1935

End If

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub savegy_Click()

'保存归一化图像

On Error GoTo err_handle

CommonDialog1.DialogTitle = "保存"

CommonDialog1.Filter = ("位图文件(*.bmp)|*.bmp")

CommonDialog1.ShowSave

SavePicture Picture2.Image, CommonDialog1.FileName

Exit Sub

err_handle:

MsgBox Err.Description, vbOKOnly

Exit Sub

End Sub

Private Sub savehd_Click()

'保存灰度化图像

On Error GoTo err_handle

CommonDialog1.DialogTitle = "保存"

CommonDialog1.Filter = ("位图文件(*.bmp)|*.bmp")

CommonDialog1.ShowSave

SavePicture Picture3.Image, CommonDialog1.FileName

Exit Sub

err_handle:

MsgBox Err.Description, vbOKOnly

Exit Sub

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub saveezh_Click()

'保存二值化图像

On Error GoTo err_handle

CommonDialog1.DialogTitle = "保存"

CommonDialog1.Filter = ("位图文件(*.bmp)|*.bmp")

CommonDialog1.ShowSave

SavePicture Picture4.Image, CommonDialog1.FileName

Exit Sub

err_handle:

MsgBox Err.Description, vbOKOnly

Exit Sub

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub saveshb_Click()

'保存识别图像

On Error GoTo err_handle

CommonDialog1.DialogTitle = "保存"

CommonDialog1.Filter = ("位图文件(*.bmp)|*.bmp")

CommonDialog1.ShowSave

SavePicture Picture5.Image, CommonDialog1.FileName

Exit Sub

err_handle:

MsgBox Err.Description, vbOKOnly

Exit Sub

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub gy_Click()

'对图片进行几何归一化

Picture2.Width = 1935

Picture2.Height = 1935

Picture2.PaintPicture Picture1.Picture, 0, 0, Picture5.Width, Picture5.Height, 0, 0, Picture1.Width, Picture1.Height

Text2.Text = "归一化完毕"

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub hdh_Click()

'对归一图片灰度化

Text3.Text = "图片灰度化"

Dim Red As Integer

Dim Green As Integer

Dim Blue As Integer

Dim c As Long

Dim graycolor As Long

Dim x0 As Integer

Dim y0 As Integer

For x0 = 0 To Picture2.Width

For y0 = 0 To Picture2.Height

c = Picture2.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

Picture3.PSet (x0, y0), RGB(graycolor, graycolor, graycolor)

DoEvents

Next

Next

Text3.Text = "灰度化结束"

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub ezh_Click()

'对灰度图片二值化

Text4.Text = "图片二值化"

For x0 = 0 To Picture3.Width

For y0 = 0 To Picture3.Height

c = Picture3.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

If graycolor < 127 Then

T = 0

Else

T = 255

End If

Picture4.PSet (x0, y0), RGB(T, T, T)

DoEvents

Next

Next

Text4.Text = "二值化结束"

End Sub

---------------------------------------------------------------------------------------------------------------------------------

Private Sub txsb_Click()

'定义数据

Const pi = 3.1415926

Dim py1 As Single

Dim py2 As Single

Dim py3 As Single

'把下巴区域的象素值叠加

For y0 = 1750 To 1800

For x0 = 1000 To 1197

c = Picture1.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

If graycolor < 127 Then

T = 0

Else

T = 255

End If

py1 = py1 + T

Next x0

Next y0

'把嘴角区域的象素值叠加

For y0 = 1688 To 1841

For x0 = 844 To 1228

c = Picture1.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

If graycolor < 127 Then

T = 0

Else

T = 255

End If

py2 = py2 + T

Next x0

Next y0

'把嘴巴区域象素值叠加

For y0 = 1688 To 1841

For x0 = 850 To 1074

c = Picture1.Point(x0, y0)

Red = (c And &HFF)

Green = (c And 62580) / 256

Blue = (c And &HFF00) / 65536

graycolor = (Red + Green + Blue) / 3

If graycolor < 127 Then

T = 0

Else

T = 255

End If

py3 = py3 + T

Next x0

Next y0

'根据3个区域叠加的象素值确定表情

If py2 > 11000000# Then

Text5.Text = "我很高兴哦"

Picture5.Cls

Picture5.Circle (1.65, 1.65), 1.5, , , , 1.2

Picture5.Circle (1.2, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (2.1, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (1.2, 1.24), 0.2, , , , 0.5

Picture5.Circle (2.1, 1.24), 0.2, , , , 0.5

Picture5.Line (1.5, 2.1)-(1.7, 2.1)

Picture5.Circle (1.65, 1.5), 1.2, , pi * 11 / 8, 13 * pi / 8

ElseIf py1 > 1700000 Then

Text5.Text = "我很悲伤哦"

Picture5.Cls

Picture5.Circle (1.65, 1.65), 1.5, , , , 1.2

Picture5.Line (1, 0.9)-(1.4, 1)

Picture5.Line (1.9, 1)-(2.3, 0.9)

Picture5.Circle (1.2, 1.24), 0.2, , , , 0.5

Picture5.Circle (2.1, 1.24), 0.2, , , , 0.5

Picture5.Line (1.4, 2.5)-(1.9, 2.5)

Picture5.Line (1.5, 2.1)-(1.7, 2.1)

ElseIf py3 > 5000000 Then

Text5.Text = "我很平静哦"

Picture5.Cls

Picture5.Circle (1.65, 1.65), 1.5, , , , 1.2

Picture5.Circle (1.2, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (2.1, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (1.2, 1.24), 0.2, , , , 0.5

Picture5.Circle (2.1, 1.24), 0.2, , , , 0.5

Picture5.Line (1.4, 2.5)-(1.9, 2.5)

Picture5.Line (1.5, 2.1)-(1.7, 2.1)

Else

Text5.Text = "我很惊讶哦"

Picture5.Cls

Picture5.Circle (1.65, 1.65), 1.5, , , , 1.2

Picture5.Circle (1.2, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (2.1, 1.2), 0.3, , pi / 6, 5 * pi / 6

Picture5.Circle (1.2, 1.24), 0.2, , , , 0.5

Picture5.Circle (2.1, 1.24), 0.2, , , , 0.5

Picture5.Line (1.5, 1.9)-(1.7, 1.9)

Picture5.Circle (1.65, 2.5), 0.4, , , , 0.4

End If

End Sub

人脸识别与人脸检测

相关推荐