摘 要: 通过研究指纹图像预处理算法,提出了基于指纹灰度分类的图像预处理算法,设计了指纹图像匹配算法,其减少了计算复杂度,提高了匹配速度,并设计了一套联网型指纹识别系统。通过对指纹识别系统软、硬件的设计和开发解决了现有系统网络方面的不足。
关键词: 嵌入式系统; 指纹识别; 方向场; 图像预处理
中图分类号: TN919⁃34; TM417 文献标识码: A 文章编号: 1004⁃373X(2016)13⁃0156⁃04
Abstract: The fingerprint image preprocessing algorithm is studied to propose the image preprocessing algorithm based on fingerprint grayscale classification and fingerprint image matching algorithm based on block orientation field, which can reduce the computation complexity and improve the matching speed. A set networking fingerprint identification system was designed. The insufficient of the available system network was solved by means of the design and development of the fingerprint identification system hardware and software.
Keywords: embedded system; fingerprint identification; direction field; image preprocessing
0 引 言
传统的身份识别技术主要包括基于实物的身份识别技术和基于知识的身份识别技术,基于实物的识别技术主要是借助于某一种或某几种实物来实现身份的认证;基于知识的身份识别技术主要是借助于某些特征信息来实现身份的认证。但是这两种身份识别技术都存在一定的缺陷:对于基于实物的身份认证方式来说,这些实物容易丢失、损坏或伪造;对于基于知识的身份认证方式存在信息选择的问题,复杂信息不易记忆,简单信息可靠性差。
生物识别技术中,指纹识别技术具有采集容易、安全性高、易存储、稳定性好、性价比高等优点,因此近年来得到了快速发展。现阶段指纹识别技术分为基于PC的指纹识别技术和基于嵌入式的指纹识别技术。基于PC的指纹识别技术在理论上与应用上都比较成熟,但其存在价格较贵、功耗高、移动性能差等缺点,而嵌入式指纹识别技术则提供了良好的解决方案。
1 联网型指纹识别系统的总体设计
1.1 总体方案
联网型指纹识别系统由上位机和客户端两部分组成,其中上位机部分包括PC和服务器,PC进行信息的管理,服务器进行信息的存储;客户端部分为一个小型的嵌入式指纹识别系统,主要进行指纹的增删、处理、对比等操作,同时实现与上位机的交互功能。结合实验室现有条件,本文进行了联网型指纹门禁系统的设计。该门禁系统总体框架如图1所示。
PC为控制中心,与客户端通信实现对客户端的管理;同时对PC采集和客户端上传的用户信息进行管理,实现对数据库的读/写操作,读取、保存需要的信息。服务器为存储中心,主要进行海量信息的存储,其中内容包括用户信息、指纹信息、房间信息以及开门记录等。门锁端即客户端,为联网系统的终端,是一个小型的嵌入式系统,主要实现指纹信息的采集、处理等功能,同时实现与上位机的通信功能。为了拓展系统的使用范围,选择TCP/IP方式进行信息的传输,则相应的中继器即为路由器。
1.2 上位机设计
(1) 应用软件开发。对PC功能进行分析后,将该部分的开发分为以下几个模块:人员信息管理模块、门锁通信模块和开门记录查询模块。人员管理模板主要用于实现人员信息的管理、显示功能,同时实现用户信息与指纹信息、密码信息的关联功能。门锁通信模块实现了PC与客户端的通信功能,同时实现对门锁的实时监控功能。开门记录查询模块实现了开关门记录的查询功能,实现记录信息的存储和打印功能。
(2) 数据库设计。数据库作为一个信息存储仓库,主要用于实现对信息的有序管理功能,在系统中结合系统需求,主要使用数据库存储以下信息:用户的基本信息、指纹信息、密码信息,房间的基本信息以及对应的IP地址信息,开门记录等信息。
1.3 客户端设计
结合系统联网型应用的需求,选择以ARM芯片作为核心芯片进行相应系统的开发。针对ARM系统计算能力相对较差的问题,可以通过选择高主频的芯片对算法进行优化改进加以克服。结合系统应用的需求,选择嵌入式Linux系统作为本文的软件平台。
2 指纹识别系统硬件设计
2.1 系统总体设计
结合系统的应用需求,在嵌入式系统基本设计环节之外,加入了指纹采集模块、键盘电路模块和网络模块。整个系统的硬件框图如图2所示。
在图2中,ARM芯片为整个系统的运算单元和控制核心;指纹采集模块用于实现指纹图像的采集;存储模块用来存储系统程序、应用程序以及用户信息;键盘模块用于实现功能的选择和密码的输入功能;LCD模块用于提示信息的输出;电插锁模块用于模拟门锁的开关功能;网络模块用于实现与上位机的交互功能等。
2.2 系统硬件设计
选择S3C2440A作为核心处理芯片,DM9000A作为网络控制芯片进行硬件的设计。
电源电路设计:外部输入电压为5 V,S3C2440A芯片的内核工作电压为1.3 V,存储器电压为3.3 V,接口电压为3.3 V,因此需要设计相应的电压转换电路。在系统中选用LM1117作为核心转换芯片。选用LM1117⁃ADJ作为核心电压的转换芯片,选用LM1117⁃CT3.3作为接口电压和存储电压的转换芯片。
网络部分设计:以DM9000A作为核心芯片设计网络部分的接口电路,使用HR911105A作为网络的接口。DM9000A是一个带有通用处理器接口的完全集成的单芯片快速以太网控制器,集成有一个10/100M的自适应收发器和一个4 KB的双字SRAM。
LCD与触摸屏电路设计:选用WXCAT35⁃TG3作为显示设备。WXCAT35⁃TG3是一个投射型TFT⁃LCD模块,它包含一个TFT⁃LCD面板、一个驱动电路,、一个背光单元和一个4线模拟电阻式触摸屏。它的面板尺寸为3.5英寸,分辨力为320×240,广泛应用于便携式设备。
指纹识别模块:采用实验室已有的指纹识别模块ZAZ⁃010作为指纹采集模块。ZAZ⁃010系列指纹识别模块以高速DSP处理器为核心,配有光学指纹传感器,具有指纹录入,图像处理,指纹匹配、搜索和模板存储等功能。
电插锁模块:系统选用电插锁模块LS⁃204,其电源供给为DC 12 V,启动状态电流为960 mA,平常状态为130 mA,该锁可根据用户需要设定上锁延迟时间为0 s,3 s,6 s和9 s。
3 指纹识别系统软件设计
3.1 嵌入式Linux系统开发
(1) 建立交叉编译环境
为建立交叉编译环境首先需要安装交叉编译工具,在系统开发过程中,选择现有的cross⁃3.4.1.tar.bz2作为编译工具。建立交叉编译环境的过程如下:首先在PC机Linux系统的/usr/local目录下建立arm目录,将cross⁃3.4.1.tar.bz2拷贝至该目录下;然后进入该目录,执行命令“tarjxvfcross⁃3.4.1.tar.bz2”进行解压,最后编辑/etc/bashrc文件,增加该交叉编译器的路径。
(2) 编译Bootloader
Bootloader是在操作系统内核或用户应用程序运行之前的一段启动硬件的引导程序,在绝大部分系统中,整个系统的加载启动任务完全由Bootloader完成。常见的Bootloader包括Redboot,ARMboot,U⁃Boot,Bootldr等,系统选择U⁃Boot作为系统的Bootloader。
(3) Linux内核的选择、配置和编译
在系统中选用Linux⁃2.6.12作为核心,该版本运行稳定、内核精简,目前使用较为广泛。在开发过程中,首先下载Linux⁃2.6.12源码,使用tar命令进行解压;然后进入内核源码,找到“Makefile”文件,添加对ARM的支持,将“ARCH?=(SUBARCH) ”和“CROSS_COMPILE?=”分别修改为“ARCH=arm”和“CROSS_COMPILE=arm⁃linux⁃”;接下来修改输入时钟,结合本系统所使用的12 MHz晶振,将时钟的频率由16.934 MHz改为12 MHz;再次,对系统内核进行配置,添加对系统硬件的支持,主要包括:CPU、串口、LCD、键盘、文件系统等。最后通过输入命令makezImage实现内核的完全编译,编译结束后,可在arch/arm/boot目录下得到Linux内核压缩映像zImage,使用该映像即可实现系统的引导。
(4) 文件系统的构建
编译内核之后,系统仅仅能实现正常的引导,为保证系统的正常运行,还需要添加相应的文件系统。在系统中,结合需求,使用Yaffs2文件系统。搭建Yaffs2文件系统步骤如下:
获取Yaffs源码,在内核和配置单中添加对Yaffs的支持;获取BusyBox源码,修改并配置BusyBox进行编译安装;使用_install中的文件,构建文件系统框架;使用mkyaffs2image工具制作文件系统。
3.2 驱动开发
驱动程序是一种可以使操作系统和设备通信的特殊程序,相当于硬件的接口,在系统开发过程中具有重要意义,Linux中85%的源代码都是驱动程序。在本系统中,为满足联网型应用的要求,需进行网络驱动程序的开发,该过程可分为网卡驱动程序的编码与配置两个部分。
(1) 网卡驱动程序编码
网卡驱动程序的编码需结合硬件原理图进行,在本系统中选用的网络芯片为DM9000A,下面针对其进行具体的设计,具体步骤如下:
① Linux⁃2.6.12内核不支持DM9000A芯片,因此需先获得DM9000A驱动的源码,从Linux⁃2.6.20内核的driver/net/拷贝dm9000.c和dm9000.h到Linux⁃2.6.12相应目录下,同时拷贝include/linux下的dm9000.h到相应位置。
② 修改Linux⁃2.6.12内核arch/arm/ mach⁃s3c2410/devs.c文件使其支持DM9000A网卡。首先,添加头文件:#include
③ 修改arch/arm/mach⁃s3c2410/devs.h文件,导出DM9000A设备。
④ 修改arch/arm/mach⁃s3c2410/mach⁃smdk 2410.c文件,添加DM9000A。
⑤ 修改driver/net/dm9000.c文件,设置中断模式。
经过以上过程即完成了对网络驱动程序的编码,接下来需要进行驱动程序的配置。
(2) 网卡驱动程序配置
首先,修改文件drivers/net/Kconfig,添加DM9000A驱动选项;其次,修改文件drivers/net/Makefile,添加DM9000A的编译选项;再次,在内核中添加对网络模块的支持,该过程分两步完成:一是配置网络协议支持,加入对TCP/IP协议的支持;二是配置网络设备的支持,加入对网络芯片DM9000A的支持;最后,对内核进行编译,生成新的内核映像文件,通过该过程就完成了对网络模块驱动程序的设计。
3.3 应用开发
完成了嵌入式Linux的系统开发和驱动开发,接下来需要进行嵌入式的应用开发。嵌入式Linux应用开发是指结合系统应用需求进行软件的具体设计。在该过程中涉及应用程序设计、数据库开发、GUI设计和网络程序设计等内容[1]。
(1) 应用程序的设计
应用程序设计就是对系统进行功能分析,画出相应的流程图并进行编码实现的过程。在本系统中,主要实现指纹信息的增加、匹配和删除功能。因此在开发过程中将系统分为三种模式:指纹增加模式开发、指纹匹配模式开发、指纹删除模式开发等。
指纹增加模式主要是实现指纹数据库中指纹数据的添加功能,它是指纹匹配和删除的先行条件。结合指纹采集模块的通信协议,其流程图如图3所示。
指纹匹配模式主要实现指纹的匹配,进行用户身份的判别。在该模式下,首先进行用户指纹信息的采集和处理,然后搜索指纹特征库,查找相匹配的指纹,进而做出相应的判断。指纹匹配模式流程图,如图4所示。
指纹删除模式主要是指删除过期的指纹信息,以保证该系统的安全可靠。在该模式中,主要是通过ID号进行身份的验证,进而实现用户指纹模板的删除,结合指纹采集模块具体的通信协议,其流程图如图5所示。
(2) 数据库设计
需要对采集到的指纹模板进行存储,因此引入了数据库,考虑到嵌入式系统资源的限制,本系统中使用SQLite。在数据库的使用过程中,考虑到系统的要求需要建以下几个表格:user,finger,finger_open,passwd_open。其中user表格用来存储用户的信息;finger用来记录对应的指纹信息;finger_open用来记录指纹开门的信息;passwd_open用来记录密码开门的信息。
(3) 网络程序设计
在网络应用程序设计中,广泛使用TCP/IP参考模型,在本系统中,为保证信息安全可靠的传输,选用TCP协议作为TCP/IP通信方式的核心协议。
经过以上步骤即完成了前期的准备工作,接下来需要进行网络程序具体的设计。该部分作为联网型系统的客户端,采用如下步骤进行程序的设计:首先,用Socket()函数创建一个Socket套接字;其次,设置服务器端的IP地址和端口等属性;再次,用Connect()函数连接服务器;接下来进行数据的收发;最后,断开连接。相应步骤如图6所示。
4 结 论
本文旨在对基于嵌入式系统的指纹识别技术进行相关研究。研究内容主要包括两个方面:一是对指纹识别算法进行研究,结合嵌入式系统的特点,对指纹图像预处理算法、特征提取算法和特征匹配算法进行优化改进,以提高指纹图像处理的鲁棒性,加快特征匹配的速度;二是对指纹识别技术的应用展开研究,设计一套联网型嵌入式指纹识别系统,满足现在日益普遍的联网型应用需求。
参考文献
[1] 葛明涛,关景新,董素鸽.基于双目视角的嵌入式3D指纹识别系统设计[J].现代电子技术,2014,37(18):155⁃158.
[2] 刘增明,张文山.嵌入式软件浮点运算精度分析[J].航空兵器,2010(3):42⁃45.
[3] 罗西平,田捷.自动指纹识别中的图像增强和细节匹配算法[J].软件学报,2010,13(5):946⁃956.
[4] 王业琳,宁新宝,尹义龙.指纹图像细化算法研究[J].南京大学学报(自然科学版),2013,39(4):468⁃475.
[5] 林建民.嵌入式操作系统技术发展趋势[J].计算机工程,2011,27(10):1⁃4.
[6] 张微,张华春.U⁃Boot在S3C2440上的移植方法[J].电子器件,2007,30(4):1423⁃1426.
[7] 张娟,张雪兰.基于嵌入式Linux的GUI应用程序的实现[J].计算机应用,2013,23(4):115⁃117.
[8] 黎妹红,张其善.一种基于智能卡的指纹认证方案[J].北京航空航天大学学报,2011,31(1):74⁃77.
[9] 林建民.嵌入式操作系统技术发展趋势[J].计算机工程,2011,27(10):1⁃4.
[10] 王藴红,朱勇,谭铁牛.基于虹膜识别的身份鉴别[J].自动化学报,2012,28(1):1⁃10.