基于LabVIEW虚拟仪器技术的指纹识别报警系统设计
作者:刘畅 李晓东 毕云峰
来源:《现代电子技术》2012年第04期
摘要:针对门禁、安防系统的安全性和报警的实时性需求,设计了一种基于指纹识别技术和MMS无线信息传输技术的指纹识别报警系统。系统以LabVIEW为平台,以ActiveX为控件技术,实现了对指纹采集仪的二次开发应用,结合摄像头和和彩信模块实现了指纹采集、识别和危险情况下图像采集和彩信报警等功能。实验结果表明,系统反应灵敏,工作稳定可靠。 关键词:虚拟仪器; 指纹识别; Biokey算法; MMS彩信 中图分类号:
文献标识码:A文章编号:
Fingerprint identification and alarm system based on LabVIEW virtual instrument
(School of Mechanical, Electrical & Information Engineering, Shandong University, Weihai 264209, China)
Abstract:
alarm system, a fingerprint identification and alarm system is designed, based on technologies of fingerprint indentification and MMS wireless information transmission. LabVIEW is taken as a platform in the system. The second time development and application of fingerprint instrument were realized with ActiveX technology. The functions of fingerprint acquisition and identification, as well as image acquisition and MMS alarm in dangerous situations were achieved in combination with camera and MMS module. The experiment results show that the system responds sensitively and works steady.
Keywords: virtual intrument; fingerprint identification; Biokey algorithm; multimedia messaging service 收稿日期:
基金项目:山东大学威海分校教研基金资助项目 (1050511420004)0引言
龙源期刊网 http://www.qikan.com.cn
目前常见的门禁系统多采用机械式钥匙或射频IC卡作为身份识别方式,由于他们具有易遗失,可伪造的缺点,已不能很好地满足人们对其安全性能的要求。而为大多数安防报警系统所采用的声、光报警方式也不能实时记录下非法入侵者的图像,并即时发送给业主。针对上述安全性和实时性的不足,本文以LabVIEW软件为开发平台设计的指纹识别报警系统能够实现身份识别准入,危险情况下的拍照取证,彩信报警的功能,较好地解决了以上问题。 1系统总体方案设计
该系统由指纹采集仪、摄像头、GPRS彩信模块、计算机和动作执行机构等部分构成。 指纹采集仪选用美国DP公司的URU4000B指纹采集仪。该采集仪采集指纹图像,支持Biokey算法。Biokey算法是一种快速、准确的1∶1和1∶N指纹识别算法,面向软件开发商和系统集成商全面开放,在使用Biokey进行指纹识别时(2 000~6 000枚指纹),不需要对指纹通过姓名、PIN等预先分类就可以快速轻松完成。
图1系统总体结构框图彩信模块采用SIMCOM公司的SIM300。SIM300是一款三频段GSM/GPRS 模块,可在全球范围内的EGSM 900 MHz,DCS 1 800 MHz,PCS 1 900 MHz 三种频率下工作, 支持数字、语音、短消息、彩信等功能, 支持并且有完善的AT 命令。通过RS 232串口与计算机相连接, 用AT指令实现与计算机的数据收发。
计算机是系统的核心处理、控制单元。系统工作时先由指纹采集仪采集允许的指纹图像形成指纹库,完成指纹登记,然后采集外来指纹。若该指纹与计算机中已登记的指纹匹配,则发送开关量,触发执行机构;若指纹不匹配,则立刻通过摄像头采集当前非法入侵者的图像,并通过GSM/GPRS模块发送彩信到指定的手机号码中,实现对危险情况的及时报警。因此,系统的主要工作就是在计算机平台上实现指纹采集比对、图像采集和报警信息发送。 2系统在LabVIEW软件平台的实现
系统在LabVIEW编程环境下设计实现。LabVIEW是由美国NI公司研制开发的一种专门面向测控领域的图形化编辑语言,直观易学,编程效率高。系统的软件编程主要分为指纹识别和彩信报警两个功能模块。其中,指纹识别模块实现指纹在计算机上的采集登记和比对,以摄像头和彩信报警模块实现图像的采集和发送。 2.1指纹采集和识别
URU4000B指纹采集仪提供了可供二次开发用的软件开发包Biokey SDK,它以ActiveX控件方式存在。本文利用LabVIEW调用ActiveX控件,实现指纹的登记和比对。 2.1.1ActiveX控件的注册和调用
龙源期刊网 http://www.qikan.com.cn
ActiveX控件是ActiveX技术的一种,它是以控件形式发布的一种软件模块。ActiveX控件主要包含的函数节点有属性、方法和事件,使用前需要将URU4000B的控件文件Biokey.ocx复制到c:\windows\system32系统目录中。点击Window系统下的“开始运行”在对话框中输入命令“regsvr32 Biokey.ocx”,即完成对控件的注册。
在LabVIEW中调用Biokey.ocx控件的步骤是:首先在前面板中创建“ActiveX容器”,创建好后在上面单击右键选择“插入ActiveX对象”,在弹出对话框的下拉列表中选择需要的Biokey.ocx控件即可完成操作。 2.1.2指纹登记
在LabVIEW平台上完成对ActiveX控件的调用后就需进行指纹的登记和比对。登记指纹的目的在于将以后允许通过的指纹模板登记在计算机中。登记指纹的流程图如图2所示。 首先调用InitEngine()方法函数初始化控件,调用CreateFPCacheDB()方法函数创建内存高速缓冲区;然后开始登记,登记环节主要包含一个方法函数BeginEnroll()和三个事件函数。对事件函数的设计是框图程序的关键。事件在LabVIEW中以“事件回调注册”形式存在,同时还需要创建一个回调子VI来处理控件事件,当事件被触发时将运行回调VI。子VI的创建方法是右键单击“事件回调注册”节点的“VI引用”分支,然后选择“创建回调VI”。
图2指纹登记流程图回调子VI中包含需要传递出来的“事件数据”,需要把这些数据传递出来,关于回调事件数据的方法有很多,本文选择利用全局变量传递回调事件数据的方法。指纹登记涉及到的三个事件函数分别是:OnImageReceived()为当指纹仪取到指纹图像时调用该事件;OnFeatureInfo()为取得指纹初始特征,该函数的传递参数Quality表示该指纹特征的质量,它有三个可能值,0表示好的指纹特征,1表示特征点不够,2表示其他原因导致不能取到指纹特征;OnEnroll()为用户登记指纹结束时调用该事件,当该函数的传递参数ActionResult =true时,表示成功登记。利用这三个事件函数及其各自回调子VI编写的程序如图3所示。这里采用循环结构的原因在于当前面板上“登记指纹”按钮被触发后,需要通知程序循环运行等待按压指纹。当上述三个事件均被成功触发后属性函数IsRegister函数值自动变为0,经过取反操作后变为1,即可停止循环。
图3指纹登记主要框图程序循环结构停止后,数据流流出循环结构进入下一步操作。接着调用GetTemplate()方法函数提取登记到的指纹模板;调用SaveTemplate()方法函数保存指纹模板;调用AddRegTemplateToFPCahceDB()方法函数将提取到得指纹模板添加到已创建的内存缓冲区。其中fpcHandle为内存缓冲区的句柄,由之前创建的内存缓冲区的全局变量得到。到此为止即完成了指纹登记。这部分程序见图4。
图4添加登记的指纹模板到内存缓冲区2.1.3指纹的比对
龙源期刊网 http://www.qikan.com.cn
指纹比对的目的在于采集当前指纹,与已登记的指纹模板做比对,即实现系统的身份识别,并发送开关量驱动后续功能模块。流程图如图5所示。
图5指纹比对流程图首先将已登记的所有指纹模板添加到内存缓冲区内。因为在登记环节是按照工序号命名保存的指纹模板,所以在添加时可以用一个for循环结构,循环N次(N为登记保存的模板个数)将所有模板全部添加进内存高速缓冲区。然后利用指纹仪采集当前指纹,此处步骤与指纹登记相差不大,同样是包含一个方法函数BeginCapture()和三个事件函数,只不过最后一个事件函数由OnEnroll()变成了OnCapture()。再调用
IdentificationInFPCacheDB()方法函数,将当前指纹模板与指纹识别高速缓冲空间fpcHandle中所有登记模板进行特征点比对,在比对识别过程中如果比对分数大于等于设定阈值
Threshold,则认为比对成功,不再和缓冲空间中剩余的指纹登记模板进行比对,如果比对失败即指纹不匹配,则返回-1。
本文在程序指纹识别成功时(即IdentificationInFPCacheDB()函数返回值大于-1)通过串口向执行机构发送一个开关量00,驱动后续动作。LabVIEW程序是利用VISA节点进行串口通信的,因为在LabVIEW中实现串口通信很简单,故在此不再详细说明,串口通信的程序框图见图6。
图6串口通讯程序框图2.2摄像头图像采集
若当达到规定的指纹识别次数(比如3次)时指纹比对仍然失败,则触发系统报警。系统彩信报警需要先通过摄像头采集非法入侵者的图像,即计算机调用摄像头拍照。
系统报警模块被触发时,名为“结果”的布尔量值产生改变,于是触发“报警”的事件结构,开始进入报警阶段。在这一阶段,首先通过LabVIEW调用Ovfw.dll的函数方法节点:“CaptureToBitmapFile”,调用摄像头拍照,并将图像保存为bmp格式,其程序框图见图7。 图7摄像头图像采集程序框图2.3彩信发送
这一部分完成图像和文字信息的打包,将彩信报警内容发送到指定的手机号码中。该部分通过RS 232串口经计算机传送到SIM300模块中,再经该模块将报警信息实时发送出去。 计算机采集到图像后还需将图像转换成8位无符号整数类型(U8)的一维数组才能被彩信模块接收到。这部分功能同样需要在LabVIEW软件上实现。因此首先在程序中调用“读取二进制文件”节点,以二进制方式读取图片,读取出来的图片数据存放在一个一维数组里面,其程序框图如图8所示。最后将图片数据从一维数组里面读取出来,连同报警的文字内容,以AT指令形式通过串口传送给彩信收发模块,即完成彩信报警。 3系统测试
龙源期刊网 http://www.qikan.com.cn
为检验指纹识别通过时系统发出的信号,以51单片机控制继电器作为执行机构,当指纹识别成功,单片机接收到计算机发出的开关量00时,驱动继电器吸合。
将指纹采集仪通过USB口和计算机相连,并通过串口分别将SIM300彩信模块和单片机与计算机相连。打开LabVIEW程序,注册登记6个不同的指纹,然后用不同的手指作指纹识别测试。分别观察指纹比对成功时执行机构的动作,以及指纹比对失败时彩信接受设备是否接收到报警彩信。一共测试50次,系统测试结果如表1所示。 图8二进制方式读图片表1系统测试结果表次
指纹比对成功指纹比对失败数量2822摄像头拍照022彩信接收022继电器吸合280 4结语
本文采用常见的指纹采集仪,结合MMS无线信息传送技术,利用LabVIEW虚拟仪器技术设计实现了具有安全性、实时性的指纹识别报警系统。测试结果表明,系统运行良好,能够进行可靠安全的指纹识别和实时快速的彩信报警。本文的创新点是将指纹识别技术与MMS信息传输技术结合在一起,应用于安防报警系统中,解决了传统安防报警系统安全性和实时性不足的缺陷;基于LabVIEW软件平台以图形化编程语言实现对Biokey SDK的二次开发,以及图片文件的数字化传输,提出了一种全新的编程思路。 参考文献
[1]姚庆君,单佳佳,杨宜霖,等.汽车指纹识别门锁软硬件设计[J].微计算机信息,2010,
[2]毕云峰,曹乐,孙日明.基于LabVIEW虚拟仪器技术的分布式速度检测系统[J].现代电子技术,2009,
[3]杨乐平.LabVIEW高级程序设计\\[M\\].北京:清华大学出版社,2003.
[4]阮奇桢.我和LabVIEW:一个NI工程师的十年编程经验\\[M\\].北京:北京航空航天大学出版社,2009.
[5]赵鑫,蒋亮.MMS彩信开发与应用\\[M\\].北京:北京邮电大学出版社,2003. [6]赵亮,龚鸣敏.基于指纹识别的身份认证技术研究[J].微计算机信息
[7]基于LabVIEW和OVFW控件的通用视频捕捉程序[D].石家庄:石家庄理工职业学院,2008.
龙源期刊网 http://www.qikan.com.cn
[8]王定远,胡吉朝,李援,等.基于Mscomm32和LabVIEW的串口通信技术[J].国外电子测量技术
因篇幅问题不能全部显示,请点此查看更多更全内容