1 引言 指纹识别作为生物特征识别的一种,在身份识别上有着其他识别方法不可比拟的优越性:指纹具有唯一性、不可复制且便于采集等优点;随着指纹传感器性价比的提高。指纹的采集也相对容易。指纹识别技术是通过分析指纹局部特征,从中抽取详尽的特征点来可靠地确认个人身份。指纹的复杂度能提供用于鉴别的足够特征。具有极高的安全性。相对于其他身份认证技术。指纹识别不仅具有许多独特的信息安全性.重要的是具有很高的实用性、可行性。已经广泛应用于刑事侦察、电子商务、金融以及安全性能要求较高的行业。 传统的PC机+算法的指纹识别系统存在设计结构体积大、成本高、处理速度慢等缺点;采用DSP组成的识别系统外围电路复杂、设计与调试周期长且系统的可扩展性差;而嵌入式指纹识别系统则具有体积小、外围电路简单、处理速度快、能移植到PC机开发的程序上实现片上系统等优点。本文给出一种基于NIOS II的高速嵌入式指纹识别系统。利用Altera公司的SOPC Builder创建配置NIOS II,添加自定义指令与系统逻辑结合构成功能强大的SOPC系统。硬件实现部分算法,在保证实时性的同时提高了数据的处理速度。在不改变外围电路,更新FPGA内部的电路设计可使系统功能升级。 2 指纹识别算法 指纹识别算法包括指纹图像预处理、指纹特征提取和指纹匹配3部分组成,主要算法流程如图1所示。 图1 系统指纹识别算法流程图 将指纹图像分成许多小块,根据Ratha等提出的“沿着和横穿过指纹脊线流的灰度级方差大小有明显的不同”这一原理进行背景分离,目的是避免在没有有效信息区域进行特征提取、加快NIOS II处理速度、提高指纹特征提取和匹配精度等操作。 指纹图像中脊线的变化较慢.采用低通滤波器滤除方向中的噪声和错误:由式(1)归一化成G(i,j);把G(i,j)分成(W×W)块,根据Sobel算子对每块按式(2)分别计算每个像素点(i,j)的梯度dx(i,j)和dy(i,j)。根据梯度值按式(3)计算每块的主方向,再由式(4)得到像素(i,j)处的主方向θ(i,j)。 式中,Mo、VarO是预先设定的指纹图像平均灰度和均方差;Var是指纹图像的平均灰度值;C(i,j)是指纹图像的灰度矩阵;G(i,j)是归一化图像,目的是把不同源指纹图像的对比度和灰度调整一个固定的级别,为后续处理提供一个统一的图像规格。 其中,Sx,Sy为Sobel算子,dx(i,j)和dy(i,j)是像素点(i,j)的梯度。 这样可计算出每块的主方向(Vx,Vy)的值,θ(i,j)代表是以像素点(i,j)为中心的方块的局部方向,此方向将用于计算纹线的频率,并且作为特征点的信息,记为θ。 图像增强采用归一化、计算方向图、计算频率、计算区域掩码、滤波等改善图像的质量、恢复脊线原来的结构。计算频率的目的是在不含特征值的小区域中(特别是中心点和三角点),把这一小块指纹图像在垂直于脊线方向的灰度值看成一个正弦状波形图,根据式(5)计算出波形的正弦函数的频率来表示脊线分布。 把式(5)代入 中计算特征值,其中,k=0,1,…,l-1,l,w。X[k]中所有极大值的平均距离T(i,j)称为原图像的频率图,则波形频率为F(i,j)=1/T(i,j)。计算区域掩码的目的是为了防止在指纹灰度图中部分质量较差的区域出现大量的伪特征.对前面得到的(W×W)块按式(6)计算脊线方向灰度方差来进行分割。 其中,m表示已得到的该块的方向数,c(imk,jmk表示像素(i,j)沿m方向上的第k点灰度,由公式 得出块方向灰度方差掩码,Th是预先设定的分割阈值,然后再进行Gobel滤波,G(i,j)与滤波函数卷积得到增强图像E(i,j)如公式(7)输出。 滤波针对R(i,j)=1区域,wg为高斯滤波器窗口的大小。 对FPS200指纹传感器采集图像的特性,采用3x3的模板从得到可靠的细化二值图像中根据公式 (其中R(1)=R(9),R(i)分别对应模板M检测点的相邻8个点。CN=2时M为末梢点,CN=6时M为分支点)将末梢点和分支点提取出来。记录其特征点的位置(x,y)、方向(θ)和类型(s),从而得到指纹的特征点集。考虑到指纹扫描和预处理阶段会引入噪声而产生大量伪特征点,根据特征点之间的关系识别伪特征点并去除。处理后.将特征点集于特征模板保存到非接触IC卡中。根据FBI提出的细节点坐标模型的细节匹配.即采用分支点和末梢点鉴定指纹.具有简单、快速、鲁棒性等优点。为了解决指纹采集时指纹图像的旋转和平移问题。采用指纹局部特征的多边形方法确定参照点的细节点匹配算法。实验表明,这种匹配算法能解决指纹采集时造成的指纹图像旋转和平移等问题。 3 系统总体设计 系统采用NIOS II处理器、FPGA嵌入式开发板以及PS200指纹传感器利用SOPC Builder生成系统。通过定制指令与系统逻辑结合构成功能强大的SOPC系统 系统主要实现指纹的注册和鉴别。注册是将指纹图像采集、指纹图像预处理、特征点提取、特征模板存储到非接触IC卡中.同时用户的新ID号也存储到非接触IC卡中并输出显示。鉴别的前3部分与注册相同.在特征点提取后将生成的指纹特征模板与从非接触IC卡中读出的指纹特征模板进行特征匹配。最后输出显示匹配结果。系统的原理框图如图2所示。PS200用于实现指纹图像的采集,NIOS II鉴别采集的指纹图像。 系统硬件是在FPGA (Altera Cyclone II EP2C20)中完成,硬件结构图如3所示。 组件配置完成后,使用SOPC Builder生成系统.SOPC Builder自动产生每个模块的HDL文件.同时自动产生一些必要的仲裁逻辑来协调系统中各部件工作.将整个系统的硬件资源集中在FPGA中,也可以根据用户需要定制、更改模块。SPI组件直接建立通信,DMA组件实现指纹图像数据的大块搬移。为了Tri-State Bridge组件与外部存储器连接,Flash Memory组件用于存放程序代码和硬件电路的配置信息。 图3系统硬件结构图 为了实现系统的注册和鉴别功能。将硬件系统主要分为指纹图像采集模块、指纹图像处理模块、输入输出模块和射频应答模块。其中,指纹图像处理模块是整个系统的核心,主要完成指纹识别算法运算,同时还对其他的模块进行控制和监测。图像采集模块采用美国Veridicom公司第三代基于电容器充放电原理的半导体指纹传感器FPS200。FPS200可输出像素256x300、分辨率为500 dpi的灰度图像。FPS200的图像搜索功能通过改变电容阵列的参数值可在1 s内扫描多幅指纹图像并自动选择质量最好的一幅.大大降低了误识率(FAR)和拒识率(FRR)。FPS200内置了3种通信接口的指纹设备:USB口、微处理器单元接口(MCU)和串行外设接口(SPI)。系统采用SPI总线连接NIOS II和FPS200。NIOS II是主机.FPS200是从机且始终处于选通状态。通过SCK串口时钟同步信号实现数据传输。NIOS II和FM1702N通过复用地址和数据总线连接.采用中断工作模式。 指纹图像处理模块可用硬件实现部分指纹图像的处理。由于指纹识别算法处理指纹图像数据运算量大、循环数目多,而NIOS II的定制指令为256个.因此可使用定制指令完成循环内的数据处理,加快数据处理速度。在处理指纹图像中.频繁采用坐标转换(将图像的二维坐标转换为一维的存储地址),利用定制指令完成坐标转换,采用易于硬件实现的位移和加法运算替代乘加运算.转换时间约为原来的1/4;在计算方向图时.需离散反正切变换,采用硬件实现的定制指令替代C语言中的arctan函数。运算时间约为原来的1/1000;在图像增强中,对预处理后的图像进行Gobel滤波,可采用硬件实现的Gobel滤波器进行滤波,运算时间约为原来的1/1000。其中。一些算法的基本模块可使用处理器的IP内核直接完成,大大缩短了开发周期。将指纹图像处理模块中用软件处理费时多的关键算法通过定制指令完成。用HDL语言描述,并最终生成VHD文件.大大提高系统的指纹图像处理速度。 输入输出模块包括一些按键、LCD和以太网等组件。NIOS II对指纹图像数据处理后生成指纹特征模板,在指纹注册模式下,存入非接触IC卡中;在指纹鉴别模式下。与存储在非接触IC卡的特征模板相匹配。通过LCD显示识别结果,也可选用以太网或GPRS发送到主控制站。 射频应答模块是由基于ISO14443标准、Mifare标准的三重认证算法的非接触式IC卡读卡机专用器件FM1702和Philips公司的Mifare oneS50卡(简称M1卡)组成。该模块采用13.56 MHz的时钟频率驱动FM1702。并提供天线13.56 MHz的载波。M1卡采用射频识别技术,每张卡有唯一的32位序列号。含一片容量为8 KB的EEPROM存储器。 4 系统软件设计 系统软件设计包括指纹识别模块和射频识别模块,采用C语言在NIOS II集成开发环境(IDE),NIOS II系统主程序流程图如图4所示。 图4 系统主程序流程图 指纹识别模块的软件设计。用C语言编程指纹识别算法。利用NIOS II的定制指令。硬件替代算法中循环、坐标变换和滤波等复杂编程.编写指纹质量评估子程序用于质量评估FPS200采集的指纹图像,保证了系统的可靠性和稳定性。 射频识别模块的软件设计主要包括NIOS II对读卡器件FM1702(PCD)中的各个寄存器操作。通过天线发出寻卡信号,当有M1卡(PICC)进入天线的有效操作区时,为了防止对多张卡进行操作。设计了防冲突子程序,然后选择最先寻找到的卡进行读写操作。 5 结束语 本文设计了基于NIOS II的高速嵌入式指纹识别系统。使用NIOS II的定制指令,采用硬件替代软件实现部分指纹图像的处理。大大缩短了指纹图像的处理时间和匹配时间。极大地提高了系统的运行速度。
|