人脸检测和识别在门禁系统上的应用

人脸检测和识别在门禁系统上的应用

崔丽

摘要:本文简要介绍一种门禁系统,采用人脸检测和识别的方法,系统软件使用VisualC++程序设计,程序边缘检测效果好,处理速度快。

关键词:图象处理人脸检测人脸识别中图分类号:G710文献标识码:CDOI:10.3969/j.issn.1672-8181.2012.19.1291引言

在过去三十年的实际应用中,人脸自动识别是一个非常热门的研究领域。现在人脸识别技术已经应用到很多方面,例如监控,对可跟踪的人脸(视频)序列,提供可控的门禁访问,还有例如在最新的Android4.0操作系统中,也提供了最新的人脸识别解锁功能,它通过手机内置的前置摄像头进行合法用户的人脸识别操作,并进行手机解锁。2工作原理

首先采集合法用户的人脸特征数据,对人像数据进行建模提取人脸的特征,并将其生成人脸模板(人脸特征文件)将登记入数据库。用户进入按以下流程:

①首先用户按下开关,开启摄像头进行人脸数据采集采集。②服务器使用OpenCV人脸检测软件进行人脸检测,并采集人脸图片。

③服务器使用PCA人脸识别软件进行人脸识别:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定的距离函数进行识别。3人脸检测

本文中的人脸检测功能是通过OpenCV编程来完成的。OpenCV是Intel公司的开源计算机视觉库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV拥有包括300多个C函数的跨平台的中、高层API。它具有统一的结构和功能定义、强大的图像和矩阵运算能力、方便灵活的接口等特点,是计算机视觉、图像处理和模式识别等方面进行二次开发的理想工具。

Open可以在各种版本的Windows下运行,也可以在Linux下运行。OpenCV的源代码是用C和C++所编写且完全开放的,因此具有很好的可移植性,在MicrosoftVisualC++6.0、MicrosoftVisualStudio2003及BorlandC++BuilderX等环境下均可方便地使用OpenCV所提供的库来进行实际开发。本文的人脸检测软件以VisualC++6.0作为开发环境来开发。

人脸检测需要用到的一个重要技术是图像边缘检测,经过大家广泛的研究,已经提出了许多相关算法,如Sobel、Canny、Prewitt、Roberts等。Canny算法由于一直表现良好,因此已经成为各种新的边缘检

系统工作流程图测方法中事实上的验证标准,Canny算法

也不断被改进,性能也显著提高。本文中

采用了OpenCV库中已经实现的Canny算法来进行人脸检测,并采用双阀值技术,首先利用累计统计得到一个高阀值,然后再取一个低阀值。如果图像信号的响应大于高阀值,那么他一定是边缘;如果低于低阀值,那么它一定不是边缘;如果在低阀值和高阀值之间,就看它的8个邻接像素有没有大于高阀值的边缘。

Canny准则下最优边缘检测滤波器的求解是由由高斯函数的一阶导数去逼近。Canny认为好的边缘检测具有3个特点:

第一,好的检测结果,或者说对边缘的错误检测率要尽可能低,就是在图像上边缘出现的地方检测结果中不应该没有;另一方面也不要出现虚假的边缘。这是显然的,所有使用边缘检测做更深入工作的系统,它的性能都依赖于边缘检测的误差;

第二,对边缘的定位要准确:也就是我们标记出的边缘位置要

和图像上真正边缘的中心位置充分接近;

第三,对同一边缘要有低的响应次数。

根据Canny算法的特点和准则需要设置合适的参数来保证人脸检测的成功率,Canny算法的实现步骤如下:

①用高斯滤波器平滑图像,去除图像噪声。一般选择方差为1.4的高斯函数模板和图像进行卷积运算。

②用一阶偏导的有限差分来计算梯度的幅值和方向。使用的梯度算子计算x和y方向的偏导数和方向角、梯度幅值。

③对梯度幅值应用非极大值抑制。幅值M越大,其对应的图像梯度值也越大,但这还不足以确定边缘,因为这里仅把图像快速变化的问题转化成求幅值局部最大值问题,为确定边缘,必须细化幅值图像中的屋脊带,只保留幅值局部变化最大的点,生成细化的边缘。

④用双阈值算法检测并且连接边缘。双阈值法使Canny算子提取的边缘点更具有鲁棒性,高低阈值分别表示为Hth和Lth,对于高阈值Hth的选折,基于计算出的图像梯度值对应的直方图进行选取。在一幅图像中,非边缘点数目在总图像像素点数目中占的比例表示为Hratio,根据图像梯度值对应的直方图累加,累加数目达到总像素数目的Hratio时,对应的图像梯度值设置为Hth,低阈值Lth的选择通过Lth=Lratio*Hth得到,文中Lratio设定为0.4。最后通过对边缘点的标记和领域关系进行连接得到最后的边缘检测图。4人脸识别

完整的PCA人脸识别的应用包括几个步骤:归一化人脸库,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。然后计算K-L变换的生成矩阵,把所有训练图片进行投影,最后对于测试图片也进行同样的投影,采用判别函数对投影系数进行识别。本文采用的PCA人脸识别程序来自于SourceForge上的开源项目,具体原理不再敷述。5结束语

在本文中,我们使用个人计算机的规格是inteli32100,4GB,Window7旗舰版。开发环境为VisualC++6.0版。采用经过裁剪预处理的人脸识别研究用FERET数据库(美国军方数据库)。Canny边缘处理进行人脸,平均抓到人脸正确率为96%,使用PCA算法进行人脸识别。合法用户的一次性识别成功率达到80%以上,基本满足要求。

参考文献:

[1]CannyJ.Acomputationalapproachtoedgedetection[J].JEEETransactionsonPattenAnalysisandMachineIntelligence,1986,8(6):679-698.

[2]R.Chellappa,C.L.Wilson,andS.Sirohey.Humanandmachinerecognitionoffaces:Asurvey[J].ProceedingsoftheIEEE,1995,83(5):705-740.

[3]T.Fromherz,P.Stucki,andM.Bichsel.Asurveyoffacerecog-nition[J].MMLTechnicalReport.,1997,(1).

[4]K.FukuiandO.Yamaguchi.Facialfeaturepointextractionmethodbasedoncombinationofshapeextractionandpatternmatching[J].SystemsandComputersinJapan,1998,29(6):2170-2177.

[5]K.FukuiandO.Yamaguchi.Facerecognitionusingmulti-view-pointpatternsforrobotvision[Z].Int’lSymp.OfRoboticsResearch,2003.

[6]岳利军,汪仁煌,刘洪江.基于OpenCV的边缘检测算法在仪表识别中的应用与改进[J].自动化与仪器仪表,2008,(3).作者简介:崔丽,成都职业技术学院,四川成都610041

-175-

人脸检测和识别在门禁系统上的应用相关文档

最新文档

返回顶部