基于Nios II的自动指纹识别系统设计
扫描二维码
随时随地手机看文章
摘要:介绍基于Nios II处理器的嵌入式自动指纹识别系统的实现方法;具体说明自动指纹识别系统的基本原理、系统总体结构、硬件结构设计、用户自定义指令的设计,以及指纹识别算法的处理流程和实现方法。
关键词:嵌入式 指纹识别 Nios II 定制指令
引 言
指纹识别作为生物特征识别的一种,在身份识别上有着其他手段不可比拟的优越性:人的指纹具有唯一性和稳定性的特点;随着指纹传感器性能的提高和价格的降低,指纹的采集相对容易;指纹的识别算法已经较为成熟。由于指纹识别的诸多优点,指纹识别技术已经逐渐走入民用市场,并应用到许多嵌入式设备中。
目前的嵌入式处理器种类繁多。Altera公司的Nios II处理器是用于可编程逻辑器件的可配置的软核处理器,与Altera的低成本的Cyclone FPGA组合,具有很高的性能价格比。本系统采用Nios II和Cyclone EP1C20嵌入式系统开发板,以及Veridicom公司的FPS200指纹传感器芯片,实现了一个嵌入式自动指纹识别系统。
1 总体设计及系统架构
本系统有两大功能:指纹登记和指纹比对。指纹登记主要包括指纹采集、指纹图像预处理、特征点提取、特征模板存储和输出显示;指纹比对的前三步与指纹登记相同,但在特征点提取后,是将生成的特征模板与存储在指纹特征模板库中的特征模板进行特征匹配,最后输出显示匹配结果。自动指纹识别系统的基本原理框图如图1所示。
本系统在结构上分为三层:系统硬件平台、操作系统和指纹识别算法。系统层次结构如图2所示。
图1自动指纹识别的基本原理框图
图2系统层次
最底层——系统硬件平台,是系统的物理基础,提供软件的运行平台和通信接口。系统的硬件平台在Altera的Nios II Cyclone嵌入式系统开发板上实现,指纹传感器采用美国Veridicom公司的FPS200。FPS200可输出大小为256×300像素、分辨率为500 dpi的灰度图像。
第二层是操作系统,采用μC/OSII。μC/OSII是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性。这一层提供任务调度以及接口驱动,同时,通过硬件中断来实现系统对外界的通信请求的实时响应,如对指纹采集的控制、对串口通信的控制等。这种方式可以提高系统的运行效率。
最上层是指纹识别核心算法的实现。该算法高效地对采集到的指纹进行处理和匹配。采用C语言在Nios II的集成开发环境(IDE)中实现。
2 系统硬件的设计与实现
2.1 Nios II嵌入式软核处理器简介
Nios II嵌入式处理器是Altera公司于2004年6月推出的第二代用于可编程逻辑器件的可配置的软核处理器,性能超过200 DMIPS。Nios II是基于哈佛结构的RISC通用嵌入式处理器软核,能与用户逻辑相结合,编程至Altera的FPGA中。处理器具有32位指令集,32位数据通道和可配置的指令以及数据缓冲。它特别为可编程逻辑进行了优化设计,也为可编程单芯片系统(SoPC)设计了一套综合解决方案。Nios II处理器系列包括三种内核:一种是高性能的内核(Nios II/f);一种是低成本内核(Nios II/e);一种是性能/成本折中的标准内核(Nios II/s),是前两种的平衡。本系统采用标准内核。
Nios II 处理器支持256 个具有固定或可变时钟周期操作的定制指令;允许Nios II设计人员利用扩展CPU指令集,通过提升那些对时间敏感的应用软件的运行速度,来提高系统性能。
2.2 硬件平台结构
系统的硬件平台结构如图3所示。
图3系统硬件平台结构
本系统使用FPS200指纹传感器获取指纹图像。FPS200是电容式固态指纹传感器,采用CMOS技术,获取的图像为256×300像素,分辨率为500 dpi。该传感器提供三种接口方式:8位微机总线接口、集成USB全速接口和集成SPI接口。本系统采用集成SPI接口。指纹采集的程序流程是:首先初始化FPS200的各个寄存器,主要是放电电流寄存器(DCR)、放电时间寄存器(DTR)和增益控制寄存器(PGC)的设置;然后查询等待,指纹被FPS200采集进入数据寄存器后,通过DMA存入内存。
由于从指纹传感器采集到的指纹图像数据在80 KB左右,以DMA方式存入片内RAM。Nios II对指纹图像数据进行处理后,生成指纹特征模板,在指纹登记模式下,存入片外Flash中;在指纹比对模式下,与存储在Flash中的特征模板进行匹配,处理结果通过LCD和七段LED显示器输出显示。
本系统的硬件平台主要是在Altera的Nios II Cyclone嵌入式开发板上实现,选用Altera的Cyclone版本的Nios II开发套件,包括Nios II处理器、标准外围设备库、集成了SoPC Builder系统设计工具的QuartusII开发软件等。系统的主要组件Nios II的标准内核、片内存储器、SPI、UART、DMA控制器、并行I/O接口、Avalon总线、定时器等都集成在一块Altera的Cyclone FPGA芯片上,使用SoPC Builder来配置生成片上系统。
SoPC Builder是功能强大的基于图形界面的片上系统定义和定制工具。SoPC Builder库中包括处理器和大量的IP核及外设。根据应用的需要,本系统选用Nios II Processor、On?Chip?Memory、Flash Memory(Common Flash Interface)、SPI、JTAG UART、DMA、Interval timer、LCD PIO、Seven Segment PIO、Avalon Tri?State Bridge等模块。对这些模块配置完成后,使用SoPC Builder进行系统生成。SOPC Builder自动产生每个模块的HDL文件,同时自动产生一些必要的仲裁逻辑来协调系统中各部件的工作。
2.3 使用Nios II的定制指令提高系统性能
使用Nios II的定制指令,可以将一个复杂的标准指令序列简化为一个用硬件实现的单一指令,从而简化系统软件设计并加快系统运行速度。Nios II的定制指令是与CPU的数据通路中的ALU相连的用户逻辑块。其基本操作是,接收从dataa和/或datab端口输入的数据,经过定制指令逻辑的处理,将结果输出到result端口。
在指纹识别算法中,对指纹图像的处理数据运算量大,循环数目多;而Nios II的定制指令个数已增加到256个,可以使用定制指令完成许多循环内的数据处理,从而加速数据处理的速度。
在对指纹图像的处理中,频繁地用到坐标转换,将图像的二维坐标转换为一维的存储地址;通过定制指令来完成坐标的转换,用一组易于用硬件实现的位移和加法运算替代乘加运算,可将转换时间缩短1/3。在方向图计算中,要进行离散反正切变换,使用优化过的用硬件实现的定制指令来替代C语言中的atan函数,更可以将变换时间缩短到原来的1/1000。
定制指令逻辑和Nios II的连接在SoPC Builder中完成。Nios II CPU配置向导提供了一个可添加256条定制指令的图形用户界面,在该界面中导入设计文件,设置定制指令名,并分配定制指令所需的CPU时钟周期数目。系统生成时,Nios II IDE为每条用户指令产生一个在系统头文件中定义的宏,可以在C或C++应用程序代码中直接调用这个宏。
3 系统软件的设计与实现
本系统的指纹图像处理及识别算法采用C语言在Nios II IDE中实现。指纹识别算法的流程如图4所示。
图4指纹识别算法流程
背景分离是将指纹区与背景分离,从而避免在没有有效信息的区域进行特征提取,加速后续处理的速度,提高指纹特征提取和匹配的精度。采用标准差阈值跟踪法,图像指纹部分由黑白相间的纹理组成,灰度变化大,因而标准差较大;而背景部分灰度分布较为平坦,标准差较小。将指纹图像分块,计算每个小块的标准差。若大于某一阈值(本文取20),则该小块中的所有像素点为前景;否则,为背景。
方向图是用纹线的方向来表示原来的纹线。本文采用块方向图,将源指纹图像分成小块,使用基于梯度值的方向场计算方法,计算出每个小块的脊线方向。
图像增强的目的是改善图像质量,恢复脊线原来的结构;采用方向滤波,设计一个水平模板,根据计算出的方向图,在每个小块中将水平模板旋转到所需要的方向进行滤波。
图像的二值化是将脊线与背景分离,将指纹图像从灰度图像转换为二值图像。
二值化后的图像经过细化,得到纹线的骨架图像。细化采用迭代的方法,使用Zhang?Suen并行细化算法,可对二值图像并行处理。
特征提取阶段,选择脊线端点和分叉点作为特征点,记录每一个特征点的类型、位置和方向信息,从而得到指纹的特征点集。但由于在指纹扫描和预处理阶段会引入噪声,产生大量伪特征点,因此需要进行伪特征点的去除。去除伪特征点后的特征点集作为特征模板保存。
特征匹配阶段采用基于特征点的匹配算法,通过平移和旋转变换实现特征点的大致对齐重合,计算坐标变换后两个模板中的特征点的距离和角度。如果小于某一阈值(本文的距离和角度阈值分别取5个像素和10°),则认为是一对匹配的特征点。计算得出所有匹配的特征点对后,计算匹配的特征点占模板中所有特征点的百分比S。根据系统的拒识率(FRR)和误识率(FAR)要求设置阈值TS。如果S大于或等于阈值TS,则认为是同一指纹;否则,匹配失败。
结语
本文提出了一种基于Nios II嵌入式处理器软核的自动指纹识别系统实现方法。使用Altera的Cyclone FPGA实现,且具有开发周期短、成本低等特点;同时,采用Nios II的定制指令来提高系统性能,利用硬件实现算法速度快的优点,使以Nios II处理器为核心的系统能够快速地完成大量数据处理。
参考文献
1 Frank Vahid,等. 嵌入式系统设计.骆丽等译. 北京:北京航空航天大学出版社, 2004
2 任爱锋,等.基于FPGA的嵌入式系统设计.西安:西安电子工业大学出版社, 2004
3 Nios II Custom Instruction User Guide. www.altera.com
4 Vizcaya P, Gerhardt L. A nonlinear orientation model for global description of fingerprints. Pattern Recognition, v. 29, no. 7
5 柴晓光,等.民用指纹识别技术.北京:人民邮电出版社,2004
(收稿日期:2005-01-25)