一种新型指纹识别系统的设计与实现
摘 要: 针对目前对嵌入式指纹识别系统的广泛需求,提出了一种基于TMS320VC5501 DSP芯片和HV7131R COMS图像传感器的新型指纹识别系统。该系统采用独特的设计方法提高了存储器的可扩展性以及图像采集电路设计的灵活性,采用特别的图像处理算法显著提高了指纹图像识别的准确率和速度。实验结果表明,该识别系统图像采集速度快、识别精度高、适用性强,具有一定的参考价值。
关键词: TMS320VC5501;图像采集;指纹识别算法
相对于人体其他的生物特征而言,指纹在唯一性、永久性方面有着明显优势,即使皮肤受伤磨损,只要不伤及真皮,也能重新长出。另外,指纹识别应用起来方便可靠,不会对人体构成损伤。基于这些特征,指纹识别技术受到了普遍重视,一系列带有身份识别和防伪功能的产品被开发,如指纹身份证、准考证、社会保障卡、银行储蓄卡等。随着计算机集成技术的提高,指纹识别设备已向小型化、自动化、嵌入式方向发展,并显示出旺盛的市场需求。
本系统采用高性能、低功耗的DSP芯片TMS320VC5501作为核心处理器,扩展了SDRAM和FLASH存储器,集成了CMOS图像采集、LCD、键盘、JTAG仿真接口USB等外设,设计紧凑、布局合理;充分利用了片上资源,仅用一片DSP芯片完成了从指纹图像获取、预处理、指纹匹配及结果显示等功能。系统既可以脱机工作,也可以通过接口进行二次开发,整合到其他系统中去。
1 指纹识别基本原理
指纹识别主要涉及指纹采集、图像预处理、特征提取、特征匹配等过程。首先,通过指纹采集设备获取指纹的数字图像,并对原始图像进行预处理,提高图像质量。然后,指纹识别算法从指纹图像中提取出所需的特征数据,根据需要将特征信息存入指纹数据库中。最后,用当前获得的特征数据与预存在特征库中数指纹模板进行比对,通过匹配算法计算出它们的相似程度,从而得到两幅指纹图像的匹配结果。指纹识别原理框图如图1所示,指纹图像预处理、特征提取、指纹匹配是整个系统的核心。
2 系统硬件设计与研究
指纹识别系统硬件平台是应用程序与指纹识别算法运行的物理平台。综合考虑器件选型、结构简单、低功耗、低成本、工作稳定、可扩展接口与调试方便等方面的因素,确定了系统硬件设计方案,其组成部分为:核心处理器(DSP)、系统电源管理、存储设备(SDRAM和FLASH)、指纹采集头、人机交互模块(键盘和LCD)、在线仿真接口(JTAG)。整个系统硬件结构如图2所示。
2.1 系统核心处理器
TMS320VC5501是美国德州仪器(TI)公司生产的一款高性能、低功耗的16 bit定点DSP芯片[1]。该芯片时钟频率最高可达300 MHz,配以双乘加结构,每秒最高可以完成600万次乘加运算。采用改进的哈佛结构,芯片内部有1组程序总线、3组数据读总线和2组数据写总线,使得系统在一个时钟周期内能完成3次读和2次写的操作,并且提供了专用的汇编指令,极大地提高了数据处理能力。
2.2 存储器扩展
TMS320VC5501的内部存储空间仅有32 KB,无法满足系统程序的需要,因此需要通过外部存储器接口(EMIF)扩展存储空间[2]。本系统同时扩展了SDRAM和FLASH。其中,SDRAM采用了Hynix公司的HY57V161610D,用于运行程序与指纹图像处理数据的暂存。针对图像的算法在片内DARAM上实现的效率要远远高于外扩存储器的情况,将指纹采集器输出的图像大小设置为280×280,并经过图像压缩成大小140×140,再采用高低位分开放置图像数据,整个图像数据就不到20 KB。同时,指纹图像处理算法的程序也不超过8 KB。这样,图像识别过程中的程序和数据都在片内DARAM上完成,可以缓解EMIF总线接口的压力并提高系统的数据处理能力。
本系统中FLASH主要有2个作用:(1)用于存放程序代码,上电以后,FLASH中的各段程序代码被装入SDRAM或DSP内部DARAM中,系统开始正常工作;(2)存放指纹处理程序处理完指纹后所获得的指纹特征以及一些相关的信息数据等。本系统采用FLASH芯片为SST39VF3201,存储容量为2M字。但是,DSP片上仅有20根地址线,最多可以扩展到1M字。设计中将GPIO7直接连接到SST39VF3201的A22管脚,使用GPIO7模拟地址线访问FLASH空间。高地址位存储指纹模板,低地址位存储引导程序,可以有效地利用FLASH空间资源。
2.3 图像采集电路设计
系统采用MagnaChip Semiconductor公司的HV7131R彩色CMOS图像传感器作为指纹采集头的核心器件[3]。该芯片有很强的实用性,可在复杂环境中工作。其支持VGA模式,有效像素640×480,带有可编程自动曝光、增益控制及白平衡控制功能,可通过编程设定成像窗口和帧传输速率。芯片集成I2C总线接口,10 bit A/D输出。但是,一般只用高8 bit传输像素点灰度值。最大帧速度30帧/s,最高工作频率25 MHz。
芯片采用Bayer滤光阵列把输入光信号分解成RGB三原色,每一像素点仅保留一种原色。由于绿色像素对亮度影响最大,所以保留最多,占1/2;红色像素和蓝色像素各占1/4。在实际处理时,每个像素的R、G、B信号由像素本身输出的某种颜色信号和相邻像素输出的其他颜色信号构成,这种采样方式,在基本上不降低图像质量的同时,可以将采样频率降低60%左右。本系统中,DSP的8 bit主机接口HPI.HD[7:0]配置为GPIO,通过读写HGPIODAT1寄存器实现数据传输。如图3所示,HV7131R外接25MHz时钟,A/D转换输出的高8 bit DATA[9:2]接HPI.HD[7:0]作为数据输入;帧同步信号(VSYNC)和行同步信号(HSYNC)作为外部中断源分别接到TIM0和TIM1引脚;SDA和SCL与DSP片上集成的I2C引脚连接,用以访问或者修改传感器的寄存器值。整个系统运行过程中,DSP只需读取指纹采集头的数据,但是,LCD作为输出显示,仅写入数据即可。LCD采用并口连接方式设计,通过6 800时序接收DSP数据,与指纹采集模块复用HPI.HD[7:0]管脚。实验证明,这种连接方式不仅可以节约核心处理器片上管脚资源,而且编程紧凑,易于移植。
3 指纹识别算法
指纹处理和识别算法是整个系统的核心,且都在DSP上实现。整个流程如图4所示,主要包括图像预处理、特征提取和指纹匹配3部分。预处理又可分为图像分割、归一化、图像增强、二值化以及图像细化等。
传统的图像分割算法主要有2类:一类是基于指纹图像方向信息分割的方向法;另一类是基于图像灰度特征分割的方差法。系统采用了一种基于特征融合的分割算法,对梯度、方向一致性进行2次分割。实验表明,该算法能够精确地对不同类型的指纹图像进行分割,分割效果比较理想。
图像归一化是为了对不同的指纹图像进行统一处理,将源图像的对比度和灰度调整到一个固定的级别上,为后续处理提供一个统一的基础[4]。方向图计算、背景分离到频率提取,所有算法都可以在互补重叠的小区域内单独进行。所以本文采用分块规一化的方法,将图像分为14×14大小的子区域,再对子图像进行规一化,保证了各个小区域内均值和方差的一致性。
笔者实现了基于非线性扩散滤波的指纹图像增强新算法。该算法利用指纹图像的结构张量构造扩散张量,使得滤波沿着指纹脊线方向扩散。该算法属迭代算法,比Gabor滤波算法能量聚集慢,可以有效地连接断裂脊线,而不会改变指纹脊线的连续性和奇异性。经过测试,该算法能提高细节点提取的性能,增强指纹匹配的效率。
图像二值化的关键问题是选取一个合适的阈值,经过在系统中实测,选择阈值To=180。图像细化处理是指为了减少所需处理的信息量,便于提取指纹特征[5]。算法中采用了一种最近邻点方式来抽取纹线骨架。既可以消除短枝和断线等噪声,还能满足指纹细化的保持性、连接性、中轴性和快速性要求。
细化之后的指纹图像就会呈现出特征信息。研究表明,中断点和分支点这2类特征点就可以描述指纹的唯一性。所以,本文采用一种基于8连通域判断法的特征点提取方法。该方法是在细化后的二值图像上,对于细化图像的任意点P计算其交叉数和8连通纹线点数,然后遍历细化图像中的每一个像素点,即可得到所有的端点和分支点。图5给出了指纹图像识别过程中的部分结果图像,很好地保持了原指纹图像的特性。
图像匹配就是判断2次输入指纹的特征集合(模板)是否属于同一枚指纹[6]。本系统采用基于点模式匹配算法进行指纹识别,有效地解决了数量和位置都不尽相同的2幅指纹细节图像进行最优匹配的问题。在系统硬件平台上,通过HV7131R采集到的指纹图像作为测试样本,每一枚指纹分别测试100次来评价FRR(错误拒绝率)与FAR(错误接受率)。实验显示:FRR为3.5%,FAR为0%,比对结果令人满意。
本文提出了一种基于TMS320VC5501 DSP的新型指纹识别系统。仅用一片DSP芯片,实现了存储器扩展、指纹图像采集、人机交互模块等的设计,既可以独立运行,又可以进行二次开发。指纹图像识别算法是系统的核心,经过在系统硬件平台上的实际测试,算法体现出了运算速度快、识别效率高等优点。目前该系统的二次开发产品已经进入商用阶段并得到用户好评,从而充分证明了其适用性和可靠性。