matlab面向对象编程人脸识别相关问题?

现如今,在公共安全、企业管理等诸多领域中为保证信息安全,确认个人身份变得尤其重要,传统的身份证、钥匙、密码等确认方式已满足不了人们的需求,因此各种新型的利用人的固有特征对身份的识别方式也应运而生,比如指纹、虹膜、声音、人脸特征等识别方式。本文通过阅读大量资料、书籍,研究了人脸识别系统的应用和发展。在本文中主要对嵌入式近红外人脸识别系统做出相关说明。首先介绍了人脸识别技术的相关背景和研究意义,其次通过近红外人脸成像、人脸检测相关方法和图像的简单预处理方式――直方图均衡化介绍了近红外人脸识别的整体流程,最后简单介绍了Adaboost算法在人脸检测中的应用。

关键词 人脸识别 近红外人脸成像 人脸检测 直方图均衡化 Adaboost算法

当下,计算机及网络技术发展迅速,如何保证信息安全以及准确鉴定身份信息变得异常重要。随着社会的发展,也有越来越多的场合需要对个人身份进行识别。传统的通过身份证、工作证、密码、钥匙等方式识别身份也变得越来越不安全,利用指纹、人脸、虹膜、声音等人的固有特征进行的身份识别技术以其稳定性和可靠性越来越受到人们的关注。在对这些生物特征的识别之中,对人脸特征的识别更加直接、直观,而且使用方便、容易被接受,受到了更多的关注与青睐。人脸识别技术应用广泛,可作为刑侦鉴定的重要手段在国家安全、公共安全、智能视频监控中发挥重要作用;在企业中用于智能门禁、考勤以维护企业安全和方便企业管理;未来在自助式网络交易、金融服务、信息安全等方面也有很大的应用前景。

1人脸识别技术产品的现状及发展趋势

之前国内外的人脸识别系统很多是基于可见光谱的,后来又有基于对热红外图像的人脸识别方法,不过因为设备昂贵,且在存储和计算方面复杂度大,难以满足实际应用需要,而且基于热红外或者远红外图像的识别方法,容易受到环境温度的影响,人的健康状态和情绪对人脸识别也有很大影响,使得采集到的人脸图像产生较大变化,因而,为了解决环境光的变化对人脸识别产生的影响,近年来近红外图像的人脸识别方法进入研究范围,成为人脸识别技术领域的一个研究热点。在人脸识别过程中,人脸图像的采集因为受环境光照变化影响较大,成为一大难题。而近红外人脸成像能够很好地克服环境光线改变带来的影响,使其在不同的光照环境下都能很好地采集人脸图像。近年来,嵌入式系统发展迅速,由于嵌入式产品携带和操作方便,且成本低、功耗小、交互性强,使基于嵌入式的产品十分畅销,从而嵌入式近红外人脸识别产品成为一种发展的趋势。

2嵌入式近红外人脸识别

人脸识别技术是以计算机为辅助手段,利用统计学原理从动态或静态的图像中捕捉人脸进行识别。一般说来,人脸识别的研究可以分为三个部分:从复杂的场景中检测并抽取人脸的所在区域;抽取人脸的特征;最后进行相关的匹配与识别。嵌入式系统作为产品中的集成信息处理单元,保持了设备或系统对实时性、可靠性及效率的要求,嵌入式近红外人脸识别系统主要涉及近红外技术、人脸检测技术、人脸识别技术、嵌入式微处理化技术和算法优化等,通过计算机和生物学统计学原理等,利用人脸固有的生理特征进行身份识别。其主要工作过程为:由摄像头采集近红外图像,通过微处理器进行人脸检测与识别,进行特征分析与数据库人脸特征比对,最终确定被检测者身份。

2.2近红外人脸识别中光源的选取

在过去多年对人脸识别的研究中,人们已经提出了很多方法来解决在图像采集过程中可见光影响图像采集的问题,但在实际应用中各种环境因素会影响识别的性能,如面部表情、光照的变化、人脸的遮挡等。红外成像独立于可见光源,具有抗干扰性强、防伪装等优点,因为人脸皮肤的热辐射系数区别于周围景物的热辐射系数,所以红外成像容易使人脸与周围景物区别开来,可以在很大程度上弥补可见光人脸识别技术的不足。在降低环境光对成像影响的同时,我们还应考虑到人的舒适度和适应性,而且选取光源时要求主动光源的强度高于环境光,所以,主动光源最好位于不可见波段,例如:红外、紫外等。但是若长期照射紫外光,会对人的皮肤和眼睛造成永久性的伤害,而中远红外波段成像会损失物体表面的大多数信息,一般不用于人像的采集,因此近红外波段成为最好的选择,如:780nm。

2.3主动近红外人脸成像

主动近红外人脸成像设备的目的在于为人脸识别提供不受环境光影响的、高质量的人脸图像,高质量的图像要求亮度合适、均匀、对比度合适、不存在过曝光等。一般主动近红外人脸成像设备包括如下几个单元:(1)主动近红外光源。要求在相应波段强度高于环境光,且主动光源与摄像头置于同一位置。(2)摄像头。要求能够接收近红外光。(3)窄带滤光片,置于摄像头镜头外,允许近红外光通过的同时过滤环境光。由于主动光源会随着距离的增大而衰减,因此人与光源之间的距离一般为50―100厘米。

2.4人脸检测与识别的相关方法

采集图像后,我们需要对人脸进行检测和特征提取,前者是人脸识别系统中十分重要的一步,人脸的检测直接影响到后面的特征提取,人脸检测要求从不同场景中检测出人脸,受到人脸方向、面部表情、部分遮挡以及外部饰(下转第145页)(上接第140页)物等干扰,所以这是一个相当困难的工作。目前,关于人脸检测与识别方法主要有以下几种:(1)基于几何特征的方法;(2)基于统计的检测方法;(3)基于相关匹配的方法;(4)基于特征空间的方法;(5)基于神经网络的方法;(6)基于AdaBoost的人脸检测方法。

Adaboost 算法可以说是一种分类算法,在人脸检测过程中,采用积分图的方式计算出大量的简单特征,之后从这些特征中多次选取一小部分形成一个个分类器,而后通过级联的方式进行组合,排除背景区域后就可以专注于人脸区域的检测。此算法具有计算速度快、易于计算机实现等优点。

在采用近红外人脸成像解决环境光影响后,我们可以得到可供分析使用的图像,之后需要对此图像进行进一步的处理与分析,提高图像的对比度,使之更加清晰。在此,我们采用直方图均衡化的方法进行处理。灰度图像是由介于黑、白不同深度的灰色显示的图像,每种灰度为一个灰度级。每个像素点具有一个灰度级,灰度直方图反映出不同灰度级出现的频率,描述了图像各个灰度级的统计特性。直方图均衡化通过某种映射关系将原图像转换为每一灰度级有近似相同的像素点数目的图像,增强图像的对比度,便于人脸特征的提取。此部分内容可通过MATLAB实现,下面通过一简单示例进行效果展示,MATLAB程序:

title('灰度直方图');

title('均衡化图像');

title('均衡化直方图')

如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标。 

Matlab的强大计算引擎和工具箱,让很多人垂涎欲滴,Mathworks也对其他语言的支持越来越好,对.NET平台的支持也越来越强大。3年前偶然接触MatlabC#混合编程,期间断断续续完成了很多不同类型问题的处理,并完成了几个小项目,积累了不少经验,现在已经很熟练的能够解决MatlabC#的混编问题。鉴于很多大学毕业生或者研究生接触混编,有很大难处,也有很多人经常来问很基础的问题,所以2012年年底录制了国内第一套比较完成的Matlab,NET的混合编程入门视频教程,即将在ILoveMatlab论坛发布。最近完成了一个MatlabC#混合编程解决“人脸识别”的案例,再次分享一下经验。

这方面就不仔细阐述了,主要是利用Matlab的Deploytool工具将m函数编译为.NET程序集,然后在C#中调用的过程。然后程序可以在安装MCR的机器上运行,这个过程如果懂Matalb和C#的人,看看Matlab NE Builder工具箱的帮助入门文档,也很容易的可以搞定,只不过是英文的,要花点时间和耐心。下面简单说一下Matlab和.NET混合编程的步骤和注意要点: 

3) 编译,生成dll,并在C#项目中添加引用(还需要引用对应版本的MWArray),利用对象浏览器查看生成dll的方法结构,并根据Matlab和C#的类型转换规则,进行数据转换即可。 

人脸识别是图像处理里面比较常见和经典的问题之一吧。现在研究也很成熟了,本文的人脸识别的Matlab源程序也是一个开源的人脸识别例子。经过分析和改进,进行了重构,最后再进行混编。原始的人脸识别程序,主要有下面几个部分: 

开发的XML数据库,详细使用可以参考我的这篇博客:    ,这个还是很方便的。只不过的后期发现了一个Bug,主要是这个XML数据库内部默认采用了“当前目录”找出的,当前目录和程序启动目录是有区别的,因为当前目录是根据软件使用过程,可能会有变化的。后来把源程序找出来,调试修复了这个错误。我把修复后的版本源代码发出来,大家有需要的下载使用吧。主要是在构造函数里面加了一个程序启动路径,说来也奇怪,Win7下是好的,XP就有这个问题。当然修复后都没这个问题了。看看C#混合编程调用Matlab生成程序集的核心代码:

上面是混编项目的结构,下面是人脸识别中c#中的核心代码,调用Matlab生成的程序集进行识别。

就这么多吧。混编真的很强大,对做科研的朋友来说,真是一大福音啊。但这对开发的基础要求也很高,否则遇到很多奇怪的错误,还是要靠经验去解决,并不是一次都能够完全学会Matlab混编的。

我要回帖

更多关于 matlab面向对象编程 的文章

 

随机推荐