引言
随着科学技术的发展,指纹识别已经成为目前最为实用、应用最为广泛的生物识别技术,尤其在民用生物识别技术中。指纹识别技术已经在金融、医疗、公安、门禁系统等领域得到了广泛的应用。
传统的指纹识别系统都是基于PC机的,这种系统具有识别速度快、样本存储量大、软件设计技术成熟等优点。但是,基于PC机的指纹识别系统由于价格昂贵、移动性能差、功耗高等缺点限制了其应用的进一步扩大。自二十世纪末以来,半导体技术和嵌入式技术的快速发展,为人们设计廉价的便携式指纹识别系统提供了一个技术上的实现平台。 本文介绍了一种基于ALTERA公司推出的SOPC(System on a Programmable Chip,片上可编程系统)技术的指纹识别系统的设计方案。该系统以ALTERA公司的Cyclone II系列FPGA和NIOSII软核处理器为核心,并采用富士通公司的MBF200指纹采集芯片设计,是一种简单实用的嵌入式指纹识别系统。
1 指纹识别系统原理
指纹识别系统一般由指纹图像采集、指纹图像预处理、指纹特征提取、指纹特征匹配、特征数据库等几部分组成。指纹识别系统的原理框图如图 1所示。该系统首先由指纹采集设备采集到指纹图像并将其转化为数字图像;然后对指纹数字图像进行预处理,再通过图像增强、分割、平滑、细化等处理过程得到便于指纹特征提取的数字图像:接着提取细化后的图像细节特征点;最后将提取到的特征与特征数据库中的特征数据进行匹配,并输出识别结果。
2 系统硬件设计
2.1 SOPC技术与NIOS II软核处理器
SOPC (System on a Programmable Chip,片上可编程系统)是ALTERA公司提出来的一种灵活、高效的SOC解决平台。它将处理器、存储器、I/O口、LVDS、CDR等系统设计所需要的功能模块集成到一个PLD器件上,从而构建成一个可编程的片上系统。基于SOPC技术的系统设计十分灵活,用户可以根据自己的实际要求,并利用IPCore资源组合构建出不同的应用系统,从而实现软硬件协同设计。
NIOS II软核处理器是ALTERA公司于2004年推出的通用32位RISC CPU,它能满足任何应用32位嵌入式微处理器的需要.用户可以获得超过200 DMIPS的性能。NIOS II软核处理器具有32位处理器的基本结构单元(32位指令大小,32位数据和地址路径,32位通用寄存器和32个外部中断源),设计者可以根据系统需求的变化来调整嵌入式系统的特性,以选择满足性能和成本的最佳方案。
NIOS II系列可支持用户自定义指令,而NIOS II ALU则直接与用户自定义的指令逻辑相连。由于设计者能为系统中使用的每个Nios II处理器创建多达256个专用指令,因此,设计者能够调整系统硬件以增强对实时软件算法的处理能力。ALTERA公司同时还推出了Nios II集成开发环境(IDE)和一些常用的免费IP核,以方便设计者的软件开发。另外,设计者使用Altera公司Quartus II开发软件中的SOPC Builder系统开发工具还能够很容易地创建专用的处理器系统,并能够根据系统的需求添加Nios II处理器核的数量。
2.2 系统硬件结构
一般的指纹识别系统主要由指纹采集模块、系统核心模块、数据存储模块和输出显示模块等几部分组成。其系统硬件结构框图如图2所示。
本系统中的采集模块采用富士通公司的MBF200指纹传感器芯片,该芯片的分辩率高达500dpi(dots per inch),并带有8bit数据接口,可以采集300×256大小的指纹数字图像。MBF200芯片提供有三种接口(SPI、USB和MCU)方式,本系统中采用MCU方式,其内置的标准8位微处理器总线使其性能大大加强。MBF200的工作流程分为两部分:首先是初始化参数的设置,即使MBF200设置相应的参数,然后选择其工作方式;其次是采用查询等待方式采集指纹数据。
由于系统每次采集的指纹图像数据量达几十KB,故在系统核心模块中集成了一个硬逻辑协处理器。这个协处理器负责查询指纹芯片的状态和指纹图像数据采集存储任务。该协处理器是用硬件描述语言设计的一个有限状态机,其状态机模型如图3所示。
系统复位后,协处理器将进入空闲状态并等待主处理器的复位信号;当正确接收到主处理器的复位信号后,协处理器进入查询状态;查询状态主要查询指纹芯片的中断状态位,当查询到有效中断状态位后,系统将进人数据采集存储状态;在数据采集存储状态,协处理器从指纹芯片读出数据并保存在系统的存储区SRAM中,读完整个指纹图像后即向NIOS II处理器发出中断信号并重新进入空闲状态,以等待主处理器复位。
本系统的核心模块是在ALTERA公司的Cy-clone II 2C35上实现的,相应的软件开发套件包括Quartus II 5.0和NIOS II 5.0集成开发环境(IDE)。Cyclone II系列FPGA是ALTERA公司最新推出的低成本、高性价比的通刚FPGA,CycloneII 2C35具有32,216个LE单元、105个M4K RAM块、35个嵌入式乘法器,完全可以满足系统的性能要求。
通过QuartusII中的软件工具SOPC Builder可实现NIOS II处理器的创建和各种IP模块的管理和配置,以构建系统的核心模块。图2中,根据系统的实际要求由SOPC Builder配置的处理器核心包括NIOS II处理器、指纹卡PIO、协处理器PIO、Avalon Tri-Atate Bridge、UART模块和LCD PIO等模块。配置好这些模块后,便可进行系统生成。SOPC Builder在系统生成过程中可生成HDL源文件和BDF文件。SOPC Builder为定制的NIOS II核心模块创建的一个符号(Symbol)就存放在BDF文件中,用户可以在Quartus软件中使用该符号。本系统核心模块是使用Quartus的符号表文件编译生成的。
数据存储模块包括512 KB的SRAM和4 MB的FLASH。SRAM用来存放采集到的指纹图象数据和程序运行时的临时数据。4 MB的FLASH则用于存放系统应用程序和特征数据库。系统的识别结果可以通过LCD输出。
3 系统软件的设计
系统软件可利用C语言在NIOS II集成开发境下开发。Nios II集成开发环境(IDE)是Nios II软核处理器的主要开发工具,包括编辑、编译和程序调试。Nios II IDE为软件开发提供了一个集成的设计开发环境。它有一个包括工程管理、源代码开发和基于JTAG调试功能的图形界面(GUI),故可大大简化复杂的 Nios II处理器设计。
指纹识别算法流程主要包括背景分割、方向图计算及方向滤波、二值化、细化、特征提取和特征匹配等。采集的指纹图像容易受到各种因素的影响而使图像质量变差,比如手指按压的方向和力度、皮肤的干湿程度、传感器的特征差异等。因此,指纹识别算法首先要对指纹图象进行处理,以把有用的前景信息和背景区分开。本系统算法采用方差法进行图像分割。
然后采用基于块方向图计算的方向滤波。接着利用动态阀值法进行二值化处理,以把指纹灰度图像转化为仅用0、1表示的二值图像。对二值化后的二值图像进行细化可得到骨架图象。接下来的特征提取阶段是用模板匹配的方法获取细节特征点(端点、分叉点)的位置、方向和类型信息。最后和特征匹配则采用基于细节特征点匹配的算法。
4 结束语
本文给出了一种基于SOPC的指纹识别系统的设计方案。使用SOPC技术进行系统设计具有开发周期短、设计灵 活、可把若干外部模块综合设计到一片高密度FPGA中等优点,同时设计更小巧、成本更低、更便于系统升级。虽然目前SOPC技术还处于刚开始的推广阶段,但国内外已经有很多高校和公司进行了实际应用方面的研究。因此,我们有理由相信,SOPC技术在不久的将来一定会有更广阔的应用空间!