本文以ASIC芯片为应用背景,提出了一种基于FPGA的指纹识别系统,及其采集接口的设计与实现方案,采用滑动式指纹传感器完成高质量的指纹采集工作。
早在十九世纪初科学家就发现了指纹的两个重要特征:性和稳定性,这个研究成果使得指纹在犯罪鉴别中得以正式应用。20世纪60年代,随着计算机性能的提高和应用的增加,人们开始使用计算机来处理指纹,自动指纹识别系统(AFIS)在法律实施方面的研究与应用由此展开。而近几年,随着电子商务的发展和消费类电子的普及,越来越多的领域需要指纹识别系统。目前,基于DSP、ARM的独立式指纹识别系统已经成功应用于考勤、门禁、安检等领域。
本文选用具有高集成度、低功耗、短开发周期等优点的FPGA(现场可编程门阵列)来设计实现自动指纹识别系统,下文将重点介绍系统软硬件结构以及指纹采集接口的设计方案。
指纹识别系统的设计实现
系统软件结构设计
本文设计的自动指纹识别系统的软件算法采用BST FingerAPI 1.0版本,包括1:1比对(即验证)模式和1:N比对(即识别)模式,主要实现指纹的检测与采集、指纹图像的增强、特征点的提取与匹配几大功能,具体结构见图1。
图1 指纹识别系统的软件流程图
指纹检测与采集
首先将指纹区与背景区分离。为了方便判别,在判别之前需要对图像进行平滑处理和边缘提取。将图像分为8×8的块,并计算每块内各点灰度值的标准差,若该值大于某一阈值(本算法中设置为8,共为256),则该块的所有点都为指纹数据,否则为背景数据。接着判断指纹数据块中指纹区面积占整个图像区域面积的比例,若该值大于给定的阈值,则进行指纹图像采集,否则重新检测并采样。
指纹图像增强
首先计算直角坐标系下8×8块指纹图像的方向,然后根据相邻图像块的方向,过滤掉脊线方向发生变化过大的图像块,并按脊线平滑变化的规律恢复脊线原有方向,再对图像数据进行Gabor滤波。
指纹特征点提取
本算法的特征点选择脊线的端点和交叉点。首先记录每个特征点的信息,包括类型、位置(直角坐标系)、方向以及在特征点集中的序号,然后去除掉由于噪声引起的大量伪特征点。此方法采用了一种基于脊线跟踪的直接从灰度级指纹图像提取细节特征点的新颖算法,这种算法不必经过二值化和细化过程,减少了程序运行时间。
指纹特征点数据库
将成功提取到的指纹图像特征点信息保存到数据库中,以供指纹识别认证时把这些数据库里的指纹信息与认证的指纹特征点信息进行对比,查找是否有与之匹配的指纹信息。
Hough变换特征点匹配
在指纹比对时,在直角坐标系中,通过基于特征点的Hough变换匹配算法识别出指纹的几何形状,使图像匹配可以不受指纹摆放的角度和位置平移的影响。接着计算现场指纹与数据库中指纹的相似度。若匹配的特征点占模板中所有特征点的30%,则判定两枚指纹匹配,否则进入极坐标的比较。
极坐标变换,特征点匹配
极坐标变化用以减小直角坐标系中的匹配误差。若在两个坐标系中所有匹配的特征点占模板中所有特征点的30%,则仍判定两枚指纹匹配,否则判为不匹配。
系统硬件结构设计
整个电路系统由指纹传感器、FPGA、PROM、SRAM和Flash构成,如图2所示。其中,SRAM的地址线和数据线分别与Flash的地址线和数据线共用。
图2 指纹识别系统结构硬件结构
指纹传感器
主要负责指纹检测与采集,是整个系统的首要任务。本系统选用富士通公司的MBF300滑动式电容指纹采集传感器。这款指纹传感器采用标准CMOS技术,含有8位A/ D变换器,在2.8V~5V的宽电压范围内工作,能自动检测到是否有指纹到达传感器,并实现在线采集。与以往采用的面积式指纹传感器相比,它的优点是在保证指纹图像高分辨率(500dpi)的同时大大减小了传感器的尺寸(13.3×3.6mm2)。
FPGA
它是系统的核心控制器件。按照其功能,FPGA内部可分为指令控制模块、指纹传感器控制模块、Flash控制模块、SRAM控制模块和算法模块,见图3。本系统选用Xilinx公司SpartanIII系列的XC3S400型FPGA芯片,封装形式为PQ208。这款芯片采用90nm工艺,容量40万门,工作频率高达200MHz,足以完成系统需要。
图3 FPGA内容结构图
PROM
PROM主要负责向FPGA加载程序,因为FPGA内部的SRAM掉电时不能保存自身配置。本系统选用Xilinx公司用于SpartanIII系列的专用PROM芯片XCF02S。
SRAM
SRAM用于存储部分算法程序运行时的临时数据,包括图像数据、向量、特征值等,这是由于FPGA内部RAM容量不能满足程序运行需要而扩展的。本系统选用Cypress公司的芯片CY7C1021V33-12,其大小为64k×16bits。
Flash
Flash是一个指纹数据库,用来存储指纹特征点数据。它的容量决定了该指纹识别系统能够储存的指纹数据的数量。本系统选用AMD公司的芯片AM29LV160,其大小为1M×16bits,能存储约256K枚指纹。
指纹采集接口的设计与实现
指纹传感器MBF300
MBF300为富士通公司新推出的滑动式指纹传感器,它支持3种通信接口:8位微处理器总线接口、集成的USB全速接口和集成SPI接口。
本文选用SPI接口,在选择了SPI模式后,MBF300的其它两种模式将自动禁止。XC3S400通过读写MBF300内部的寄存器实现对它的控制,以完成指纹检测与采集、自动A/D转换、数据传输等任务。
指纹采集接口硬件设计
本系统中SPI接口主设备为FPGA芯片XC3S400,从设备为指纹传感器MBF200。由于FPGA没有特定管脚的要求,本文任意选用XC3S400的4个I/O口137—140,分别与指纹传感器MBF300的相应管脚连接,见图4所示。
图4 XC3S400与MBF300的SPI链接图
指纹采集接口软件设计
接口时钟采用传感器内部的12MHz时钟,整个采集指纹图像流程依次为初始化XC3S400和MBF300、调整MBF300寄存器参数、读取指纹数据、存储指纹数据。
·初始化XC3S400和MBF300
系统上电后首先对FPGA器件XC3S400进行初始化,即从PROM中读取配置数据(指纹识别算法和控制指令等)到内部的SRAM中,接着初始化指纹传感器MBF300,其中部分VHDL源程序如下:
……
ENTITY ini_mbf300 IS
PORT(......
PGC: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
DTR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
DCR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
THR: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
CTRLB: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
ISR: INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);
ICR: INOUT STD_LOGIC_VECTOR (7 DOWNTO 0);
......);--定义需要初始化的MBF300寄存器;
END ini_mbf300;
ARCHITECTURE ini_mbf300 OF ini_mbf300 IS
BEGIN
PGC <= "00000110 "; --初始设置图像增益为1.5;
DTR<= "00111111";
DCR<= "00000001";
THR<= "00101100";
CTRLB <= "00000001"; --使能阵列,AD及时钟;
ISR<= "00000011"; --清空中断;
ICR<= "01011001"; --使能自动检测;…...
END ini_mbf300;......
调整MBF300寄存器参数
调整MBF300参数,也就是调整PGC、DTR、DCR三个寄存器的值来调整放电时间、放电电流速率和图像的放大增益,直到获得质量的图像。经多次实验表明,当DTR=0x15,DCR=0x20,PGC=0x01时,指纹图像为清晰。
采集指纹图像数据
XC3S400按照MBF300的SPI时序(见图5)要求,在MOSI信号线上发送一系列读写MBF300寄存器的指令,并由MBF300在MISO信号线上发送A/D转换后的指纹数据,直到一幅完整的256×32的指纹图像传输完毕。详细的工作流程见图5。
图5 MBF300在SPI从模式下工作流程
存储指纹图像数据
采集到的原始指纹图像保存到片外SRAM中,地址空间为0000 0000 0000 0000~FFFF FFFF FFFF FFFF。
实验调试与结果
所有模块在ISE7.1软件平台上用VHDL编程,并且尽量地应用软件工具提供的IP资源Synplify和XST进行逻辑综合和实现,并比较两种工具综合的结果,可以看出哪种综合实现,占用FPGA资源较少。综合实现之后,用Modelsim工具进行寄存器级和门级仿真。仿真完成之后,把功能代码通过JTAG数据口下载到对FPGA芯片配置的PROM,编写测试向量在FPGA芯片内测试,通过逻辑分析仪对中间数据和结果数据进行分析和测试。 图6为MBF300寄存器设置为DTR=0x15,DCR=0x20,PGC=0x01时采集到的指纹数据通过Matlab工具数据转化得到的指纹图像,它足以满足后续的指纹特征点提取、比对等要求。
图6 指纹图像
结语
本文介绍了一个完整的、独立运行的基于FPGA的嵌入式指纹识别系统及其指纹采集接口的设计与实现方案。该系统能实现快速的指纹登录以及指纹比对,指纹比对所需的时间在0.5s以内,完全能满足用户的要求。
参考文献:
1. Huang Hong, Li Jian-wei, Li Dong-liang, et al, The design and realization of automatic fingerprint identification system based on DSP, Electronic Design & Application, 2005
2. Zhou Ning-jie ,Fu Yu-zhuo ,Zhou Yu, Hardware Design of a Fingerprint Recognition Platform Based on DSP, Computer Emulation, 2005
3. Huang Lin-bo, Du Kun-mei, Xie Jian-yang, et al, Study and development of fingerprint recognition algorithm based on ARM, Journal of Harbin University of Commerce (Natural Sciences Edition), 2005
4. Shen Xiao-feng , Li Xiao- bei, A portable fingerprint identification system, Automatization technology and application, 2005
5. MBF300 Solid State Fingerprint Sweep Sensor,Data Sheet[Z], 2002
6. Spartan-3 FPGA Family: Complete Data Sheet [Z], 2005