人脸面部特征提取技术的.docx
《人脸面部特征提取技术的.docx》由会员分享,可在线阅读,更多相关《人脸面部特征提取技术的.docx(34页珍藏版)》请在冰豆网上搜索。
人脸面部特征提取技术的
人脸面部特征提取技术的研究
摘要
人脸识别技术(FRT)是当今模式识别和人工智能领域的一个重要研究方向。
虽然人脸识别的研究已有很长的历史,各种人脸识别的技术也很多,但由于人脸属于复杂模式而且容易受表情、肤色和衣着的影响,目前还没有一种人脸识别技术是公认快速有效的.本文主要讨论了人脸识别技术的一些常用方法,对现有的人脸检测与定位、人脸特征提取、人脸识别的方法进行分析和讨论,最后对人脸识别未来的发展和应用做了展望。
关键字:
人脸识别,特征定位,特征提取
ABSTRACT
Nowadaysthefacerecognitiontechnology(FRT)isahotissueinthefieldofpatternrecognitionandartificialintelligence.Althoughthisresearchalreadyhasalonghistoryandmanydifferentrecognitionmethodsareproposed,thereisstillnoeffectivemethodwithlowcostandhighprecision.Humanfaceisacomplexpatternandiseasilyaffectedbytheexpression,complexionandclothes.Inthispaper,somegeneralresearcharediscussed,includingmethodsoffacedetectionandlocation,featuresabstraction,andfacerecognition.Thenweanalyzeandforecastthefacerecognition’sapplicationanditsprospects.
Keywords:
FaceRecognitionTechnology,Facelocation,Featuresabstraction
第1章绪论
所谓人脸识别,是指对输入的人脸图像或者视频.判断其中是否存在人脸,如果存在人脸,则进一步给出每张人脸的位置、大小和各个主要面部器官的位置信息。
并且依据这些信息,进一步提取每张人脸蕴含的身份特征,并将其与已知人脸库中的人脸进行对比,从而识别每张人脸的身份。
人脸识别研究涉及的范围广泛,内容涉及模式识别、计算机视觉、图像处理、人工智能等方面。
人脸识别还涉及到神经网络等学科,也和人脑的认识程度紧密相关。
这诸多因素使得人脸识别成为一项极富挑战性的课题。
1.1人脸识别技术的研究意义
人脸识别是机器视觉和模式识别领域最富有挑战性的课题之一,同时也具有较为广泛的应用意义。
人脸识别技术是一个非常活跃的研究领域,它覆盖了数字图像处理、模式识别、计算机视觉、神经网络、心理学、生理学、数学等诸多学科的内容。
如今,虽然在这方面的研究已取得了一些可喜的成果,但是FRT在实用应用中仍面临着很严峻的问题,因为人脸五官的分布是非常相似的,而且人脸本身又是一个柔性物体,表情、姿态或发型、化妆的千变万化都给正确识别带来了相当大的麻烦。
如何能正确识别大量的人并满足实时性要求是迫切需要解决的问题。
1.2国内外的研究现状
人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。
我国在这方面也取得了较好的成就,国家863工程“面像检测与识别核心技术”通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。
北京科瑞奇技术开发股份有限公司在2002年开发了一种人脸鉴别系统,对人脸图像进行处理,消除了照相机的影响,再对图像进行特征提取和识别。
这对于人脸鉴别特别有价值,因为人脸鉴别通常使用正面照,要鉴别的人脸图像是不同时期拍摄的,使用的照相机不一样。
系统可以接受时间间隔较长的照片,并能达到较高的识别率,在计算机中库藏2300人的正面照片,每人一张照片,使用相距1--7年、差别比较大的照片去查询,首选率可以达到50%,前20张输出照片中包含有与输入照片为同一人的照片的概率可达70%。
美国陆军实验室也是利用vc++开发,通过软件实现的,并且FAR为49%。
在美国的进行的公开测试中,FAR,为53%。
美国国防部高级研究工程署,利用半自动和全自动算法。
这种算法需要人工或自动指出图像中人的两眼的中心坐标,然后进行识别。
在机场开展的测试中,系统发出的错误警报太多,国外的一些高校(卡内基梅隆大学(CarnegieMellonUniversity)为首,麻省理工大学(MassachusettsInstituteofTechnology)等,英国的雷丁大学(UniversityofReading))和公司(Visionics公司Facelt人脸识别系统、Viiage的FaceFINDER身份验证系统、LauTech公司Hunter系统、德国的BioID系统等)的工程研究工作也主要放在公安、刑事方面,在考实验证系统的实现方面深入研究并不多。
1.3本系统研究内容
本系统主要对人脸的检测与定位做了深入研究。
在人脸检测部分主要是对图像进行获取和预处理。
图像获取主要是获取图像的基本信息,以便对图像的像素进行处理。
预处理的包括对图像灰度化,中值滤波,对比度变化以及边缘提取。
人脸预处理过程是计算机人脸识别中一个重要过程。
人脸图像预处理的好坏对整个系统至关重要,对人脸预处理的研究具有非常重要的意义。
特征定位是人脸识别的目的是确定单张人脸在图像中的位置,它通过标记人脸区域来确定和计算人脸的各器官定位。
人脸特征检测是检测人脸特征的有无和位置,比如说眼睛、鼻子、鼻孔、嘴巴、嘴唇等的有无和位置。
值得指出的是,人脸检测涉及的方法种类繁多(据报告可知,用于人脸检测方法的有150多种),且涉及的知识点较深,并各有特点,所以我们小组将人脸检测与人脸识别区分开来,因为后者只是前者一个简单问题。
同时,我们把注意力集中在人脸检测方法上,而没有实现与数据库中的人脸匹配问题。
1.4目前研究中存在的问题
虽然人类的人脸识别能力很强,,能够记住并辨别上千张不同人脸,可是计算机则困难多了。
其表现在:
人脸表情丰富;人脸随年龄增长而变化;人脸所成图像受光照、成像角度及成像距离等影响;而且从二维图象重建三维人脸是病态(ill2posed)过程,目前尚没有很好的描述人脸的三维模型。
另外,人脸识别还涉及到图象处理、计算机视觉、模式识别以及神经网络等学科,也和人脑的认识程度紧密相关。
这诸多因素使得人脸识别成为一项极富挑战性的课题。
第2章系统需求分析
2.1系统功能需求
系统功能主要围绕人脸检测和人脸特征定位进行设计,首先该系统会对图像进行人脸检测,人脸检测主要是对图像进行预处理的过程,预处理这个模块在整个人脸识别系统的开发过程中占有很重要的地位。
该系统主要是将处理后的人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来。
2.1.1功能划分及描述
图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。
在确定脸部区域上,通常使用的方法有肤色提取。
肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。
图像获取模块:
该模块主要是从图片库中获取图片,获取后的图片可以在软件的界面中显示出来以便进行识别。
图像预处理模块:
图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。
该模块中的子模块有如下几个,下面对它们进行概述:
中值滤波:
在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。
灰度化:
图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化.相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。
Sobel提取(边缘提取):
采用梯度微分锐化图像,使噪声、条纹等得到增强;对图像中的随机噪声也有一定的平滑作用;标记人脸的边缘,使其边缘显得粗而亮。
对比度增强:
对比度增强,就是对图像的进一步处理,将对比度再一次拉开。
它针对原始图像的每一个像素直接对其灰度进行处理的,其处理过程主要是通过增强函数对像素的灰度级进行运算并将运算结果作为该像素的新灰度值来实现的。
通过改变选用的增强函数的解读表达式就可以得到不同的处理效果。
相似度计算:
相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。
为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。
二值化:
通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。
直方图:
直方图是图象处理中一种十分重要的图象分析工具,它描述了一幅图像的灰度级内容,任何一幅直方图都包含了丰富的信息。
从数学上来说图像直方图是图像各个灰度值统计特性与图像灰度值的函数,它统计了一幅图像中各个灰度级出现的次数和概率。
2.1.2开发环境
●硬件环境
硬件配置原则:
具有可靠性,可用性和安全性,具有完善的技术支持。
能够满足个人学习和设计需要。
运行本软件所需的硬件资源:
CPU:
800M及以上;内存:
128M及以上
●软件环境
系统软件配置原则能够满足该软件的可靠性,可用性和安全性的要求系统软件配置方案
①配置有持续工作能力、高稳定性、高度可集成的开放式标准的操作系统,如Windows2000,WindowsNT,UNIX,Linux等。
②配备符合ANSI/ISO标准的高级程序设计语言处理软件。
如:
VisualC++6.0。
③熟悉C++高级程序设计语言。
2.1.3运行环境
(1)硬件环境
CPU:
800M以上;内存:
128M及以上。
(2)软件环境
可以运行在微软公司近年来所出的各种操作系统。
如Windows98、WindowsMe、Windows2000、WindowsNT等。
2.2可行性分析
在开发该人脸识别软件之前,我们查询了前人所写过的诸多论文以及源程序,在开发之时,结合了资料中的算法并揉进了自己的一些思想,使程序可以对人脸图片进行简易识别。
2.2.1操作可行性
该人脸识别软件需要如下的运行环境:
CPU:
800M及以上;内存:
128M及以上。
安装有Windows98、WindowsMe、Windows2000、WindowsNT等操作系统中的其中一种。
因此,从操作可行性来看,只要系统用户的硬件软件设备满足以上条件,即可用该人脸识别软件进行人脸的识别。
2.2.2技术可行性
图像的处理方法很多,我们可以根据需要,有选择地使用各种方法。
在确定脸部区域上,通常使用的方法有肤色提取。
肤色提取,则对脸部区域的获取则比较准确,成功率达到95%以上,并且速度快,减少很多工作。
人脸自身变化的挑战:
同一个人的人脸图像因为表情、精神状态、健康状况、姿态、整容、年龄变化、意外损伤、化妆、眼镜帽子、头发胡须等变化而发生巨大的变化;外部环境的挑战:
光照环境条件、摄像设备、人与摄像设备的距离角度、图像存储质量等,都会使人脸图像发生教大变化。
面队这些就要求我们进一步研究基于人脸肤色提取的算法,提高识别精度,,提高识别速度,提高系统的适用性。
2.3预处理方案选择
2.3.1设计方案原则的选择
本应用程序的设计方案原则如下:
①采用较为先进的技术力量,保证应用程序在技术上具备一定的优势。
②采用成熟的技术,保证应用程序的安全性和可靠性。
③应用程序便于扩展和维护,易于技术的更新。
④应用程序充分利用现有的资源,尽量减少不必要的再投资。
⑤编写的代码必须严谨易读,代码的解释必须清楚明白,为应用程序的再开发提供应尽的责任。
2.3.2图像文件格式选择
图像采集是在Windows操作系统下开发的,需要了解在此环境下图像的存储、显示等方面的机制。
在Windows操作系统中,任何图像格式(如.jpeg格式,.gif格式)在系统中显示之前最终必须转化为位图格式。
BMP图像文件格式(位图格式)是微软公司为其Windows环境设置的标准图像格式,在设计的过程中,为了定位和特征提取的方便,我们采用的是BMP格式的图像。
2.3.3开发工具选择
本次设计所用的开发工具是MicrosoftVisualC++6.0。
VisualC++6.0是Microsoft公司推出的一种可视化编程工具。
它支持多平台和交叉平台的开发,将各种编程工具如编辑器、连接器、调试器等巧妙的结合在一起,构成一个完美的可视化开发环境。
用户无需通过繁杂的编程操作,即可完成Windows下应用程序的编辑、编译、测试和细化等工作。
2.3.4算法选择分析
本文主要研究的对象是图像预处理模块,该模块分为中值滤波、图像灰度化、相似度计算、二值化每个小模块的实现都有许多相应的算法。
下面将本系统采用的算法进行介绍:
中值滤波:
在图像的采集过程中,由于各种因素的影响,图像中往往会出现一些不规则的随机噪声,如数据在传输、存储时发生的数据丢失和损坏等,这些都会影响图像的质量,因此需要将图片进行平滑操作以此来消除噪声。
但是如果平滑不当,就会使图像本身的细节如边界轮廓、线条等变的模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用中值滤波算法处理。
图像灰度化:
图像灰度化是将图像变成灰色,本系统中采用加权平均值法来实现图像的灰度化,这样可以获得最合理的灰度图像。
肤色相似度计算:
相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。
为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。
二值化:
通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,以便有利于我们对特征的提取。
第3章系统的概要设计
本章主要介绍系统的结构设计的流程以及系统各模块的功能及相关原理。
应用程序的总体结构设计流程图如图3-1所示:
图3-1总体结构设计流程图
图像预处理的层次图如图3-2所示:
图3-2预处理的层次图
人脸定位的层次图如图3-3所示:
图3-3人脸定位的层次图
3.1各模块功能概述
以上是该系统的总体结构设计图以及图像预处理模块的层次图。
下面介绍系统中的各模块的具体功能。
3.1.1图像获取模块
该模块主要是从图片库中获取,获取后的图片可以在软件的界面中显示出来以便进行识别。
3.1.2人脸区域获取
该系统中图像里人脸区域的获取,主要是根据肤色来进行获取,通过肤色非线形分段色彩变换来实现。
这一非线性分段色彩变换得到的肤色模型属于色彩空间中的聚类模型,这一类肤色模型的建立首先要选取一种合适的色彩空间。
3.1.3图像预处理模块
图像预处理就是对获取得来的图像进行适当的处理,使它具有的特征能够在图像中明显的表现出来。
该模块中的子模块有如下几个,下面对它们进行概述:
★中值滤波
中值滤波将对图像进行平滑处理,在图像采集过程中,由于各种因素的影响,图像往往会出现一些不规则的噪声,入图像在传输、存储等都有可能产生数据的丢失。
从而影响图像的质量。
处理噪声的过程称为滤波。
滤波可以降低图像的视觉噪声。
★灰度化
图像灰度化的过程就是把彩色图像转换为灰度图像的过程,彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化.相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。
★对比度增强
对比度增强,就是对图像的进一步处理,将对比度再一次拉开。
使图象原本模糊的边缘变得清晰。
★Sobel边缘提取
Sobel提取的优点:
采用梯度微分锐化图像,同样使噪声、条纹等得到增强,Soble算子则在一定程度上克服了这个问题:
由于引入了平均因素,因而对图像中的随机噪声有一定的平滑作用;由于它是相隔两行或两列之差分,故边缘两侧之元素得到了增强,故边缘显得粗而亮。
★相似度计算
相似度计算是为了判别两对象的相似程度而设定的算法,比如文字、指纹、人脸等。
为了便于二值化阈值的确定,肤色相似度计算的意义是通过计算出与人脸肤色相近的像素点,确定人脸区域,用灰度图象显示出来,并为二值化提供一个可计算出阈值的比较值。
★二值化
二值化的目的是将采集获得的多层次灰度图像处理成二值图像,以便于分析理解和识别并减少计算量。
二值化就是通过一些算法,通过一个阈值改变图像中的像素颜色,令整幅图像画面内仅有黑白二值,该图像一般由黑色区域和白色区域组成,可以用一个比特表示一个像素,“1”表示黑色,“0”表示白色,当然也可以倒过来表示,这种图像称之为二值图像。
这便有利于我们对特征的提取。
该设计中采用组内方差和组外方差来实现二值化。
3.1.4图像模块定位
对候选特征进行筛选时,首先割据颜色信息提出那些伪特征。
然后用PCA模板和几何特征确定眼睛和嘴巴。
★颜色筛选
无论是眼睛还是嘴巴,都位于人脸的非肤色区域。
而且眼睛的颜色是黑暗分明,利用这些知道可以淘汰很多候选,减少PCA验证的负担。
★双眼的定位
把筛选过的特征区域两两配对,再用PCA模扳进行严整,就可以得到真正的双眼
大使,PCA严整有时候难以区分眉毛与眼睛,所以还要用一些几何特性进一步筛选,由于假定姿态是正的,双眼必定位于人脸的上半部分,他们的连线是近似水平的,而且他们的中心比眉毛低,运用这些判据,可以区分眉毛和眼睛。
★鼻子的定位
在确定了眼睛的位置以后,鼻子的位置基本确定,以眼睛的瞳距为1来计算,鼻子到两眼中心的距离为0.7到1。
在这附近搜索颜色较深的区域,大致能得到鼻孔的位置(有的侧面图一个鼻孔基本不可见,也就无法检测出来了)。
然后在两鼻孔上访一定范围内(鼻孔的距离的1/2左右)找亮度最高的点作为鼻尖。
★嘴巴的定位
找到双眼之后,可以在它们的下方搜索候选特征区域,寻找非肤色面积较大、近似位于双眼对称的候选作为嘴巴。
然后根据先验知识调整嘴巴的大小。
第4章系统详细设计
本章主要对图像处理这一模块进行详细介绍,对其子模块所用到的算法及具体实现进行详细讲述。
4.1系统的运行流程图
图4-1系统流程图
4.2图像处理详细设计
4.2.1图像灰度化
彩色图像包含较多人脸特征信息,但是直接作为处理对象会使过程复杂化。
相比之下灰度图像在保留了人脸主要特征信息的基础上,减少了总信息量。
(1)算法思想
灰度化的处理方法主要有3种:
1最大值法:
使RGB的值等于3值中的最大一值,即,
式(4.1)
最大值法会完成亮度很高的灰度。
2平均值法:
取R,G,B的平均值,即,
式(4.2)
平均值法会完成比较柔和的灰度。
③加权平均值法:
根据重要性或其他指标给R,G,B赋予不同的权值,并使RGB的加权值平均,即,
式(4.3)
其中
,
,
分别为R,G,B的权值。
实验和理论推导证明当
时,即当,
式(4.4)
式(4.5)
时,能得到最合理的灰度图像。
(2)具体实现灰度化功能
①在明白了灰度化的原理之后,就可进行编码来实现该功能。
在编辑界面中添加一个按钮控件,将其命名为‘灰度化’,并其ID号设为IDC_BTHD,对应文件CFaceDetectDlg.Cpp中的函数OnBthd()实现.
②现该模块的核心代码如下:
//编写就算像素点灰度值的函数
intCPreProcess:
:
CalGray1(intblue,intgreen,intred)
{
//利用灰度计算公式
intColorGray=(int)((green*59+red*30+blue*11)/100)。
//将像素值限制在0到255
if(ColorGray<0)
{
ColorGray=0。
}
elseif(ColorGray>255)
{
ColorGray=255。
}
returnColorGray。
}
//编写OnBtGray()函数
//获取红色分量
intColorRed=m_tOriPixelArray[i][j].rgbRed。
//获取绿色分量
intColorGreen=m_tOriPixelArray[i][j].rgbGreen。
//获取蓝色分量
intColorBlue=m_tOriPixelArray[i][j].rgbBlue。
//调用函数,计算灰度值
intcgray=method3->CalGray1(ColorBlue,ColorGreen,ColorRed)。
//显示灰度图像
m_tResPixelArray[i][j].rgbBlue=m_tResPixelArray[i][j].rgbGreen=
m_tResPixelArray[i][j].rgbRed=cgray。
//重置位图
MakeBitMap()。
}
//method3是定义的一个函数指针,定义如下:
CPreProcess*method3。
//初始化如下
method3=newCPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight)。
3图像灰度化效果:
图4-2图像灰度化
4.2.2灰度变换
按照一定的规律修改像素的灰度值,使图像的亮度或者对比度发生改变,使之更易于分辨,达到更好的视觉效果。
(1)具体实现功能
进行编码来实现该功能:
在编辑界面中添加一个滑动条控件和文本编辑器,将其命名为‘灰度化变换’,并其ID号分别设为IDC_SLIDER1,IDC_EDIT1,对应文件CFaceDetectDlg.Cpp中的函数OnReleasedcaptureSlider1()和OnChangeEdit1()实现。
打开ClassWizard的MemberVariables标签,给每个控件添加所需的成员变量,参数如下:
表4.1
空间ID号
变量类型
变量名
范围和大小
IDC_SLIDER1
CSliderCtrl
m_Slider
――
IDC_EDIT1
int
m_Gray
0~255
在滑动条的消息处理函数OnReleasedcaptureSlider1()中设置滑动条的值使它等于文本编辑框的初始值。
代码为:
//设置滑动条的初始值
m_Slider.SetPos(m_Gray)。
//刷新界面
UpdateData(true)。
在滑动条的消息处理函数OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条的值赋给灰度,并将其控制在【0,255】之间。
代码为:
cgray+=m_Gray。
if(cgray<0)
{
cgray=0。
}
if(cgray>255)
{