文献标识码: A
目前,基于FPGA的自动指纹识别系统主要有纯硬件方式实现[1]和在以Nios II为CPU的软核中实现[2-4]两种方式。以纯硬件方式实现虽然速度较快,但由于指纹处理算法比较复杂,实现困难,同时算法精度差,设计周期长;而以下载到FPGA的软核Nios II为控制模块,具有灵活的设计方式,并具备软硬件在系统可编程的功能,较大程度上提高了系统速度,但是该方案中软硬件处理交替进行,涉及到软硬件之间频繁的指纹数据传输,限制了系统的速度,同时增加了系统的复杂度。
本文提出了一种基于SoPC的新型结构的自动指纹识别设计方案。具有以下特点:
(1)根据对指纹识别算法的分析和优化,在软、硬件结合的基础上将软件设计和硬件设计分开,把指纹识别系统中耗时较大的图像预处理部分用硬件来实现,而耗时较少的特征提取、匹配和操作控制等部分则在NiosⅡ软核中实现。从而使得系统结构明晰,处理性能得到提升。
(2)用一块SRAM作指纹处理中间数据的缓存。指纹图像前期处理以硬件实现,中间数据缓存于SRAM中;指纹图像后期处理软件从SRAM中将所有数据读入NiosⅡ的数据存储器。这样的存储设计使得软件处理和硬件处理之间不涉及大量的数据流传输,使软硬件数据接口简单,数据流的控制更加简单易行,同时避免了频繁的软硬件数据传输带来的时间消耗。
(3)在软硬件处理结合的基础上使指纹处理时间大大降低,1.5 s内可以完成一幅指纹图像的预处理,3 s内可以完成一幅指纹图像的比对。
1 设计思路
1.1 指纹系统结构
从整个指纹处理系统的角度来考虑,根据各算法处理特性仔细地划分系统子模块。通过对指纹处理算法的分析发现,指纹的预处理部分使用到多次数据循环运算,运算量较大而且单一,使用硬件实现明显降低时间消耗,所以选择对指纹的预处理部分实行整体硬件化;对于指纹匹配部分,运算量相对较少但算法复杂多样,使用软件算法相对比较简单而且可以达到很高的精度,所以使用Nios II软件算法来实现。选择预处理部分整体硬件化,匹配部分整体软件化的另外一个好处是软硬件处理不需要进行频繁的数据交换传输,节省时间的同时降低了系统的复杂度。
如图1所示,系统工作流程主要分为指纹硬件采集、指纹图像硬件预处理和指纹软件匹配。其中SRAM作为指纹数据的缓存设备,Flash做为指纹特征数据的存储设备,对指纹数据的处理步骤按照箭头所指示的方向进行。
1.2 NiosⅡ软件功能
Nios II作为主要控制模块,通过Avalon总线协调指纹处理各个子模块的运行。其中预处理硬件模块由于处理中各算法步骤顺序执行,所以以一个整体挂在Avalon总线上,方便模块的控制。指纹图像预处理后的特征提取匹配使用NiosⅡ软件实现,指纹数据储存于程序的数据存储器中,按照软件处理流程调用各个函数进行处理。为了方便观察调试结果,在Avalon上挂有VGA和LCD显示,每一步算法完成后调用VGA显示查看处理结果,使用LCD提示处理步骤。
1.3 硬件优化技术
针对FPGA算术运算中的乘法、除法易出现的时序问题,对浮点数运算、开方算法、反正切算法等耗费大量资源的通用性问题,特别做了如下优化:
(1)乘除法均采用Quartus自带的IP核进行运算,IP核采用流水线结构,减少系统中时序不满足情况的发生,提高系统的稳定性;
(2)浮点数运算均通过扩大倍数后转为定点数再进行运算,可以在降低运算复杂度的同时降低时间消耗;
(3)开方算法采用不恢复余数开方算法实现,只涉及加减和移位,处理时间只有输入位宽的1/2,可降低系统消耗,减少处理时间;
(4)反正切运算采用CORDIC算法,采用状态机结构,通过反复迭代实现,算法简单。
2 系统实现
2.1 MBF200硬件采集模块
MBF200开启自动检测功能采集整幅指纹图像。通过设置芯片内部的阈值寄存器THR使芯片适应不同的外部环境。改变内部的PGC、DTR、DCR三个寄存器的值可以调整图像的清晰度,提高采集到的图像质量。
2.2 预处理模块的实现
图像预处理主要分为指纹图像平滑、背景分离和滤波增强三大部分。通过硬件处理控制状态机实现各个硬件模块的处理。预处理的指纹数据均存于SRAM中,根据硬件状态控制来选择SRAM与各个硬件模块的连接。图像平滑采用归一化处理,背景分离采用方差法,滤波增强采用方向滤波图像增强算法来实现[5]。
2.3 Nios算法实现
软件算法的主要模块分别为二值化、细化、特征提取和特征匹配。其中二值化处理中同时包括二值化后的填充和删除算法;细化算法包括细化后的去伪算法。二值化算法采用阈值法;细化算法采用Hilditch细化算法,同时采用基于8邻域特征点的特征提取算法和基于中心点的匹配算法。
3 系统实现
3.1 指纹处理VGA显示结果
图2(a)为MBF200采集效果图,图中指纹图像的纹线清晰,与背景区域对比明显。
归一化处理的作用是使图像中的黑白点对比更加明显,同时改变图像灰度的均匀程度。如图2(b)所示为采集后的指纹归一化处理情况,从图中可以看出指纹脊线明显加强。由于背景区域较少,因而跳过了背景分离这一步。
采用基于方向图的增强算法,处理效果如图2(c)所示。从图中可以看出,对指纹图像脊线具有很好的连接效果,能较好地去除指纹图像中的噪声干扰使指纹更清晰、真实。
二值化是在滤波的基础上进行的,包括二值化后的删除和填充算法,处理效果如图2(d)所示。二值化后图像只剩余黑白两色。
细化主要是去除不必要的纹线粗线信息,便于之后提取特征点。细化处理如图2(e)所示,细化后的指纹图像的纹线只剩下一个像素点。细化后去除了伪特征点,明显去除了断点和短线。
3.2 指纹处理性能说明
系统的处理时间消耗分为硬件预处理和软件算法处理两部分。
硬件处理包括指纹采集块、归一化块、背景分离块和增强滤波块四个部分;软件处理包括二值化、细化、特征提取和特征匹配四个部分。系统处理时间消耗如表1所示。
本文根据指纹识别算法的特点设计了一种基于SoPC的新型结构的自动指纹识别系统,通过对指纹识别算法的具体分析和优化,设计了将指纹处理划分为硬件处理和软件处理两大部分的结构,用一块SRAM作指纹处理中间数据的缓存,软件和硬件之间不涉及大的数据流的传输,节约了数据传输时间。此结构将耗时较多的预处理部分使用全硬件模式,大大提高了系统的运算速度;将耗时较小的匹配算法部分由NiosⅡ软件完成,缩短了设计周期,提高了设计精度。这种设计结构降低了系统的复杂度,使得系统结构明晰,处理性能得到提升,便于单独处理模块的优化以及系统的升级。
参考文献
[1] 郭娟.基于FPGA硬件方式实现的指纹识别系统研究[D].上海:中国科学院上海微系统与信息技术研究所.2007.
[2] 李莹,艾明晶.基于NiosⅡ的自动指纹识别系统设计[J]. 新器件新技术.2005(6):49-51.
[3] 郭海波,王金海,刘长春,等.基于NiosⅡ的高速嵌入式指纹识别系统[J].国外电子元器件,2007(11):24-27.
[4] 张君安.基于NiosⅡ软核处理器的嵌入式指纹数据识别系统研究[D].上海:华东师范大学,2007.
[5] 罗军,肖芳,毛雪莹,等.基于FPGA的方向滤波指纹图像增强算法实现[J].电子技术应用,2010,36(6):13-16.