嵌入式人脸识别考勤系统的设计
2018-11-14陈寿坤郑清兰
陈寿坤,郑清兰
(闽南理工学院实践教学中心,福建 石狮 362700)
当今社会,大多数公司、企业都会对员工的上、下班进行考勤。常见的有通过比对指纹的考勤机、用带磁的卡刷卡的考勤机、采用单片机为CPU的考勤系统等。指纹打卡主要是利用指纹膜打卡,若指纹膜用久了出现破损、丢失等情况就不能正常的打卡;刷卡主要是利用磁卡打卡,若磁卡无磁性或丢失也打不上卡,而且两者都会出现由别人代替打卡的情况;而用单片机的考勤系统功能相对简单、不稳定,无法满足当今高效率、易存储、识别度高的考勤系统的要求。现在社会生物识别技术在各种场合都得到了广泛的应用,人脸是一种具有不可替代性的生物特征,因此采用人脸识别的各种考勤系统、门禁产品等也随之产生,其中嵌入式人脸识别考勤系统,具有高效、安全、可扩展的特点,适合各种公司的考勤、门禁出入、智能安防系统等[1-3]。
1 人脸图像识别算法分析
人脸识别技术首先要采集不同的人脸图像做为图像比对数据库,再对获取的图像进行计算处理、去噪处理、提取特征参数等操作,以获得最佳图像,最后与数据库中的人脸数据进行比对。要想获得高质量的人脸图像,事先要对征得到的图像进行科学的处理和计算。
1.1 图像预处理
在用设备采集图像时或多或少都会伴有一定的噪声,它会使图像降质,影响到后期的人脸图像识别,因此为了得到较优质的图像,须对所采集到的图像实行降噪处理。去噪的方式有多种,其中中值滤波是目前应用较多的一种非线性滤波器[4-5]。中值滤波主要方法是将像素四周点的像素值按从大到小的顺序进行排列,然后取出中间值。设yij为数字图像点xij的灰度值,中值滤波器的数学公式如下所示:
当像素点为奇数时,中值就为中间的数;当像素点为偶数时,就取中间两个数的均匀值,经由中值滤波去噪后,图像效果如图1所示。
图1 去噪前后对比
1.2 人脸识别PCA算法
PCA人脸识别算法即主成分分析法,它的实质是穿过线性变换取一组最优向量基来重修原样本,使误差达到最小值,一般协方差矩阵S的对角化是通过特征值问题来实现的。
式中,N为样本总数;xˉ为样本均值,将特征值按自小到大的顺序摆列,选取前m个为主元。样本可用投影系数ai来表示它在特征子空间中的位置,表达,通过PCA算法,可从中提取到标准的人脸特征向量,由这些向量的线性加权给合来表示人脸图像。
2 系统总体设计
人脸识别考勤系统主要是完成人脸图像的采集、分析处理,并将处理好的图像与数据库中的数据比对进行识别,选出符合要求的数据完成考勤。该系统选用ARM9为核心的嵌入式控制模块,具有高速的图像处理能力,能支持OS和TCP/IP协议,相较于其他的考勤设备具有使用安全、处理高效、无法复制等优势,其系统总体构架如图2所示。
图2 系统框架
整个系统设计框架包括摄像头、解码模块、缓存模块、核心控制模块、软件算法、系统管理、设备终端机几个部分。人脸头像搜集采用网络摄像头,并选用TVP5147将采集的模拟信号转换为所需的数字信号。控制模块是人脸识别的CPU,包括硬件和软件两部分,硬件围绕ARM9系统来扩展。软件为操作系统及人脸图像算法的实现,此模块的作用是对算法的结果进行识别,并发出相应的控制信号。设备终端是整个系统的执行部件,当接收到信号时执行考勤操作。
2.1 图像采集优点与解码
人脸图像采集采用网络摄像头,此摄像头为USB端口输出,使用基于CMOS的感光元件,此元件采用半导体制作流程,能将周围设施一次性整合在单晶片中,节省了制作成本,且工作电压低,可直接与ARM9的USB接口相连,不需要转接电路。
解码是将采集到的模拟信号转为数字信号输出的,这样才能提取到可靠的数据。TVP5147是一种具有滤波功能的视频处理器,内部包含A/D转换、数字解码、视频切换等电路,能将输入的模拟视频转换为数字视频信号输出,支持多个分量视频输入并具有先进的VBI功能[6-7]。几乎所有常用的模拟视频信号都能通过它进行解码。
系统通电时,首先对TVP5147进行初始化,一般通过IIC总线完成。若系统初始化从Y[8....0]端口输出9位视频数据,那么其输出的时序如图3所示。
图3 输出时序
2.2 缓存模块
解码模块TVP5147输出的数据很难直接由ARM处理器同步读取,所以设计中采用了CPLD控制器作为缓存单元,完成图像的保存和更新。该设计中的缓存模块选用CPLD器件的EPM7128S,该器件的引脚至引脚的逻辑时延最小为5 ns,最高的计数频率可达175.4 Hz,引脚可设置为开漏输出,带有使能控制的可编程宏单元触发器,并且还提供了JTAG接口,可实现在线编程[8]。其电路连接如图4所示。
图4 器件接口电路
2.3 控制模块
S3C2440是三星公司开发的一种32位的CMOS微处理芯片,是基于ARM9内核的产品。它具有4通道DMA并有外部请求引脚,8通道10 bitADC和触摸屏接口[9-10],管理电源和时钟的模式多样,可使用软件来实现处理器工作频率的切换。S3C2440主要应用于手持设备和工业控制方面的处理器,具有功耗低、成本价格低、处理及运算能力强等特点。该设计中主要采用DMA的数据传输方式从缓存器中读取图像数据,如图5所示。
图5 数据连接示意图
3 系统软件设计与实现
系统在运行软件时嵌入式操作系统选择Linux,此系统运行简便且允许任何人修改源码,运用成本低,具有较高的开发效果。
3.1 开发环境
设计中PC机的主要作用是开发并运行嵌入式系统的程序。ARM9嵌入式系统可以使用Linux开发环境,并采用ARM-Linux-gcc进行链接,即可执行代码,在调试时使用串口与主机进行通信[11]。Linux安装交叉编译环境搭建顺序如下所示:
1)创建环境存放的目录:sudo mkdir/usr/local/arm;
2)下载并解压安装包arm-linux-gcc-4.3.2tar.gzc到目录/usr/local/arm下;
3)将原文件改为“PATH=/usr/local/sbin∶/usr/local/bin∶/usr/bin∶/sbin∶/bin∶usr/games∶/usr/local/arm/4.4.3/bin”;
4)查看路径,若显示内容为“/usr/local/sbin∶/usr/local/bin∶/usr/sbin∶/usr/bin∶/usr/games∶/usr/local/arm/4.4.3/bin”说明编译环境安装完成。
3.2 程序流程
程序编写采用C语言编程,程序运行后,首先打开采集到的人脸图像文件,再对图像进行预处理,获得较准确的数据,将数据通过串口发送到人脸库进行比对,若符合要求则执行考勤操作,若不符合则结束程序,等待下一轮采集的数据。整个软件流程如图6所示。
图6 软件流程
3.2.1 人脸图像检测
此部分用来检测摄像头采集到的图像是否有人脸。首先,加载摄像头拍的图像;其次,在PC机中用图像分检器检测所拍的图像是否有人脸;最后,检测人脸中是否含有眼睛从而来确定是否为人脸照片。人脸图像检测程序流程如图7a所示。
3.2.2 人脸图像识别
此部分用来确定所采集到的图像为人脸库中的哪一张。首先,加载要识别的图像;其次,提取图像的特征与人脸库比对;最后,确定比对结果。人脸图像识别程序流程如图7b所示。
3.3 系统界面设计
系统的界面使用Qt设计,Qt广泛应用于嵌入式开发中,只要编写一次程序和UI,就能跨不同的桌面与嵌入式系统进行部署,不用修改源代码,从而减少了开发成本。系统的界面如图8所示,单击开始键,待识别人脸方框中就会出现摄像头拍到的图像;点击检测,就会出现一个红色的小方框框住待检测的具体脸面位置;点击识别,在识别方框中就会出现人脸库中与待识别框中相似的人脸;若采集的库中没有此人,则显示“无此人”,点击退出钮即可。
图7 人脸检测与识别流程
图8 人机界面
4 系统的实验结果
系统测试时任意采集3个人的正面脸部照片,建立一个小型的人脸图像为库,如图9a所示,在PC机上对这些照片进行处理,形成.XML库文件,并传送到嵌入式开发板上。点击Qt界面的开始钮进行系统的初始化,然后打开摄像头在待识别方框中采集到的图像。按下检测,然后点识别,系统对采集的图像进行特征提取,与库中图像进行比对,最后在识别结果中显示出最相似的人脸,如图9b所示。经过多次实验测试,系统在识别时受外限影响较小,在很大程度上提高了人脸识别的效率。
图9 实验结果
5 结 语
该设计结合了嵌入式和人脸图像识别技术两大方面,设计了一套智能考勤系统。从系统设计的整体要求、图像的算法研究、软件的选择应用等方面进行阐述,完成了整个考勤系统的设计。实验测试结果显示,该系统能够正确的识别出人脸库中的图像,此设计可根据需要进行更改及扩展,具有功能齐全、图像识别度高、运用方便、价格可观等特点,能广泛的应用在各种需要考勤的场合。