[摘 要]人脸识别技术发展到今天,已经很成熟,但是由于达到准确且精确识别人脸需要投入的硬件软件成本都很大,所以其在中小型公司和单位中的应用并不普及。本系统则通过PCA和HMM两种识别技术相结合的方式实现高准确度,高精确度人脸识别,并在此基础上实现签到功能。
[关键词]人脸识别签到系统;PCA;HMM
中***分类号:TP3-05 文献标识码:A 文章编号:1009-914X(2015)05-0236-01
1 引言
由于每个人的人脸或多或少是有差异这一特性和计算机数据海量而且细致入微的特点决定了人脸识别是一种很有效的分辨识别技术,基于人脸识别技术的应用最近几年也越来越多起来。应用最广泛是安检系统,公安刑侦部门的罪犯备案系统,以及奥运馆的人脸识别报警系统等等。
传统的人脸识别技术主要是基于可见光***像的人脸识别,这也是人们最熟悉的识别方式,已有30多年的研发历史。但这种方式有着难以克服的缺陷,尤其在环境光照发生变化时,识别效果会急剧下降,无法满足实际系统的需要。解决光照问题的方案有三维***像人脸识别,和热成像人脸识别。但目前这两种技术还远不成熟,识别效果不尽人意。
最近迅速发展起来的一种解决方案是基于主动近红外***像的多光源人脸识别技术。它可以克服光线变化的影响,已经取得了卓越的识别性能,在精度、稳定性和速度方面的整体系统性能超过三维***像人脸识别。这项技术在近两三年发展迅速,使人脸识别技术逐渐走向实用化。
出版社2002
2 功能需求
本系统应实现的功能模块包括:系统登录模块管理;人脸模板录入模块,自动识别签到模块,信息管理系统。而在人脸摹本录入系统中又包括摄像头数据采集,存储;模板***像采集存储,特征值文件生成与存储;姓名语音提示的录入及其存储。自动识别模块包括摄像头数据采集,多帧采集,实时检测识别,信息入库等子模块。
基于以上对管理系统的要求,开发一个人脸识别签到管理系统,应能实现的功能如下:
1、能够进行系统登录管理,用户可以通过输入用户名和密码登录系统,系统需要对信息进行有效的验证。
2、能够进行人脸模板录入,对录入的模板进行及人员信息存储,并根据模板生成特征文件,存储特征文件。
3、能够录入识别提示语音,在系统自动检测到员工签到的时候播报。给员工一个反馈。
4、能够提供自动识别签到功能,并存储视频文件,存储识别结果,给出签到识别提示。
5、能够设置相关数据文件的存储方式,位置等。
3 系统设计
3.1 系统设计原理
本系统在设计中使用了面向对象的设计原理,是因为:
1.面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。
2.所谓的对象是一种抽象的名称,用来对应实现世界存在的"东西"。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何细节,操作是封闭的,对象之间能通过函数调用相互通信。
3.类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。
4.面向对象设计的核心是类的设计。
5.设计的人脸识别签到系统也是建立在一系列类基础之上的,其编程的思想是:先根据一定的需要创建一系列的子类或直接调用VC提供的基类,编制程序时,由这些类派生出相应的对象,所派生出的对象继承了其父类所有的功能,而且具有很好的封装性,这样就可利用派生出的对象像搭积木一样来设计自己的程序。打个比方,就比如要制造一台机器,首先要制造各种零件的模具,然后用制造好的模具生产出所需的零件,所有这些做完后,剩下的就只是如何把这些零件组装起来,这样一台机器就很容易制造出来了。实际编程也是如此。每个表单都是由一定数量的对象按某一种方式组合在一起的,程序编制的核心是类的设计。
3.2 功能模块设计
模块化就是把程序划分成***命名且可***访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。为了降低软件系统的复杂性,提高可理解性、可维护性,必须把系统划分成为多个模块。但是模块不能任意划分,应尽量保持其***性。模块的***性指每个模块只能完成系统要求的***的自功能,并且与其他模块的联系最少且接口简单。模块***的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。模块***性很重要,主要有两条理由:
1、有效的模块化软件比较容易开发出来,这个优点尤其重要。
2、***的模块化比较容易测试和维护。
模块***程度可以由两个定性标准度量,这两个标准分别称为内聚和偶合。偶合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
从以上两点可以得出结论:好的模块是具有高内聚低耦合的特点。
3.3 系统模块详细设计
人脸识别检测类***描述了系统中主要功能类的属性,操作及其之间的关系。
人脸检测类是别类基本属性和操作是一样的,都是依赖自身的特征模版哭和待测人脸库作为匹配源,对输入***像源进行抠***,检测,并识别。只是内部实现不同,算法不同。检测类主要是识别出***像的人脸区域。而人脸识别类则是识别出人脸模板是模版库中那个模板源的模板(最相似)。
自动识别类则是从检测类和识别类中继承而来,集成了检测和识别功能,同时可以从数据源取帧,并对帧数据进行检测,抠***,识别。同时可以修改取帧频率等等。
摄像头实时数据类则是对摄像头数据进行设置的一个类,主要包括设置摄像头的帧频,帧大小(宽高)并提供数据信息给自动检测识别类。
采集存储类:主要是对信息数据的采集和存储,包括设置存储的位置,存储文件的文件名,文件备份的位置等等。
摄像头实时源数据存储是存储摄像头实时数据的类,可以设置存储文件大小,设置存储采样频率。
人脸模板存储类:负责存储人脸模板信息。设置人脸模板存储方式,人脸模板信息的校验方式等。
人脸模板录入模块主要是对人脸模板进行录入并存储模板以及备份相关信息。其中数据源录入包括视频流录入和***片录入两种,只要是可以用于检测的***像源都可以作为数据源。存储方式则包括两种,特征值文件和***片文件,特征值文件是用于识别匹配的数据源,而***片源则是用于人员管理的时候可以查看相关的***片。
总结
人脸识别模块包括人脸自动识别和视频文件管理两个部分。人脸自动识别是从视频流中获取视频帧,检测抠***并提取特征值且与模板文件进行匹配识别。而视频文件管理则是对视频流进行存储的过程。包括设置存储位置,对文件名的设置,对文件大小的设置等等。
参考文献
[1] 李赫雄,许宏泰,唐家才.SQL Server 2000应用程序开发[M].北京:邮电出版社,2001.3.
[2] D.S.Malik.C++编程――数据结构与程序设计方法[M].北京:电子工业出版社,2003.6.
[3] 郑莉,傅仕星,张瑞丰.C++语言程序设计学生用书[M].北京:清华大学出版社,2004.6.
转载请注明出处学文网 » 人脸识别签到系统分析与设计