基于ARM9的指纹识别系统的研究刘兴建,刘金根武汉理工大学信息工程学院,武汉(430070)E-mail:dxmchina@摘要:分析了指纹识别系统的组成、各模块的功能,讨论了指纹识别算法的原理并对指纹识别算法进行了简要地分析,指出了指纹的处理、识别和匹配等功能的硬件实现的步骤和方法以及指纹处理程序各阶段的主要的函数实现。
关键词:ARM9-S3C2410A;FPS200;图像处理;指纹识别1. 引言信息化时代,生物识别技术作为信息安全和个人身份识别技术越来越受到人们的重视。
指纹作为人体中最明显的外表特征,具有独一无二的特性。
指纹鉴定技术利用人类指纹稳定性和独特性的生理特征,将其作为人们的一种“活的身份证”,随着图像处理、模式识别方法的发展和指纹传感器技术的日臻成熟,指纹识别系统将有更广阔的应用前景。
嵌入式系统是继IT网络之后一个新的发展方向,由于嵌入式系统具有体积小、功耗低、性能强以及面向行业应用突出的特点,被广泛应用于军事国防、消费电子、网络、工业控制等领域[1-2]。
目前市场上有各种各样的嵌入式处理器,而SAMSUNG公司的ARM9处理器s3c2410A具有很高的性价比。
基于ARM9处理器为核心的嵌入式指纹识别系统设计以s3c2410A芯片设计为硬件平台,配以VERIDICOM公司的指纹传感器芯片FPS200组成的。
2. 系统组成及系统硬件设计2.1系统组成系统结构框图如图1所示。
本系统主要实现指纹的采集、处理、特征模板提取、结果显示,以及完成个人身份识别/注册功能。
主要有以下几个模块,指纹采集模块,ARM9处理模块,结果显示模块。
2.2 数据处理模块该模块主要采用了SAMSUNG公司的ARM9处理器s3c2410A芯片,该芯片提供以下丰富的内部设备:分开的16KB的指令Cachae和 16KB的数据Cachae,MMU虚拟存储管理,LCD控制器(支持STN&TFT)支持NAND FLASH系统引导系统管理(片选逻辑及SDRAM控制器),3通道的UART,4通道的DMA,4通道的PWM定时器,I/O端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,USB主机,USB设备,两通道的SPI及内部PLL时钟倍频器等[3]。
2.3 指纹采集模块该模块为Veridicom公司的FPS200传感器芯片,该芯片是一种触摸式CMOS传感器件,其传感区域为1.28cm×1.50cm,256×300传感阵列,500dpi分辨率,内置有8位模数转换器,且有微处理器总线、SPI总线和USB总线三种接口模式。
USB:FPS200已内置了高速USB的核电路,不需要外部的USB控制器,因此使FPS200成为标准的USB设备。
FPS200在USB模式下可支持13帧/秒的指纹图象采集传输速度。
微处理器总线(MCU):通过增加自动递增列和地址寄存器的值以及模数转换的路径优化功能,FPS200内置的标准8位微处理器总线的性能大大加强,图象传输速度达到30帧/秒,可以满足对连续指纹图象采集和比对的需要。
串行外设接口(SPI):FPS200内置的SPI接口可极大减小FPS20对硬件的依赖,只需要6条线就可以连接到带SPI接口的微处理器。
在SPI模式下,FPS200的图象传输速度为10帧/秒。
FPS200的工作电压为3.3V~5V,低功耗(在5V的工作电压下的功率低于70mW)。
本系统采用了传感器的USB模式,传感器的数据线直接与s3c2410A芯片扩展口相接,对FPS200图像传感器进行初始化控制和图像读取。
2.4 显示输出模块显示输出模块采用3.5寸TFT-LCD分辨率320*240,本指纹识别系统采用传感器的USB 模式,且获取整幅图像,然后由LCD显示出来。
3. 设计中的关键技术3.1图像处理过程3.1.1图像增强图像增强中要解决的核心问题是指纹图像预处理,其目的是为了减弱噪声、改善图像质量,以便于特征提取。
指纹纹理由相间的脊线和谷线组成,它们蕴涵了纹理方向、纹理密度等大量信息。
这些信息在不同区域显示不同特征。
指纹图像增强算法就是利用图像信息的区域性差异来实现的。
本系统中采用的是参考了指纹图像纹理频率信息,以GABOR变换这个能够同时对图像局部结构的方向和空域频率进行解析的最优滤波器作为滤波器的模板,因而极大改善了增强算法的效果[4-5]。
3.1.2脊线方向除奇异区外,指纹图像在一个足够小的区域内,纹理近似于相互平行的直线,这就是指纹图像的方向性特征。
方向性特征是指纹图像中最为明显的特征之一,它以简化的形式直观的反映指纹图像的基本形态特征,因而被广泛应用于指纹图像的分类、增强、特征提取等方面。
提取脊线方向方法为:(1) 将指纹图像分割成足够小的子块,以满足块中纹理近似平行的条件。
(2)对每个子块的每一个点(,)(,0,1......-1)p s t s t w =利用Sobel 算子分别计算其x 的方向梯度x g 和y 的方向梯度y g ;(3)每个子块方向,m n θ()的计算公式如下:11122112(,)(,),tan (,)(,)w w x y s t w w x y s t g s t g s t m n g s t g s t θ====⎧⎫′′′′⎪⎪⎪⎪⎨⎬⎪⎪′′′′⎡⎤−⎣⎦⎪⎪⎩⎭∑∑∑∑-1()=2 s s mW ′=+ t t nW ′=+ 3.1.3脊线频率指纹纹理除了具有稳定的方向性特征外,还具有稳定的频率性特点。
在指纹图像的一个局部区域内,脊线和谷线的纹理走向平行,同时沿脊谷方向的灰度分布近似于正弦包络。
脊线频率被定义为两条脊线之间间距的倒数。
通过定位该包络中极大、极小值点,就能得到相应的脊线间距和谷线间距,进而计算出脊线频率。
3.1.4 GABOR 滤波器GABOR 变换由于具有最佳时域和频域连接分辨率的特点,能够同时对图像局部结构的方向和空域频率进行解析,可以很好地兼顾指纹图像的脊线方向和脊线频率信息[5]。
本系统中采用GABOR 滤波器函数的实部作为模板,以与子块纹线方向垂直的方向作为滤波器方向,以脊线频率作为滤波器频率来构建滤波器。
滤波过程如下式所示:22221(,)|x,y,,,,(,)|WW E g x y W Wy x G s t h m n f m n G s x t y S θσσ=−=−=++∑∑((),(),) 其中,(,)G s t 为原始灰度图像,(,)E G s t 是GARBOR 滤波后的图像灰度,W 为滤波器,模板的大小。
S 为模板系数和,θ为子块的域方向值。
需要注意的是GARBOR 滤波器的θ与指纹纹理方向垂直。
对x σ和y σ的取值需要进行折中,取值越大,滤波器的抗噪声性能越好,但也可能形成假的脊线。
取值4x σ=和4y σ=3.1.5 指纹匹配本系统中指纹匹配采用基于特征点集合匹配的校准算法,该算法多为简单的比较逻辑和加减运算,经过一些列处理后的指纹图像分别如图a -c 所示。
3.2 软件设计3.2.1整个系统工作流程系统工作流程如图2所示。
3.2.2 指纹处理算法指纹识别算法是指纹识别的核心,本系统中采用的指纹识别算法流程如图3所示。
根据图3指纹识别算法流程进行软件设计以下是指纹识别算法的实现和主要函数。
函数1:FvsError_t FvsImageImport(FvsImage_t image, const FvsString_t filename)功能:从文件中加载指纹图像参数:image 指纹图像filename 文件名返回:错误编号函数2:FvsError_t FingerprintGetDirection(const FvsImage_t image, FvsFloatField_t field, const FvsInt_t nBlockSize, const FvsInt_t nFilterSize)功能:计算指纹图像脊线的方向。
参数:image 指向图像对象的指针field 指向浮点域对象的指针,保存结果nBlockSize 块大小nFilterSize 滤波器大小返回:错误编号函数3:FvsError_t FingerprintGetFrequency(const FvsImage_t image, const FvsFloatField_t direction, FvsFloatField_t frequency)功能:估计指纹脊线的频率。
参数:image 指向图像对象的指针direction 脊线方向frequency 输出的频率返回:错误编号函数4:FvsError_t FingerprintGetMask(const FvsImage_t image, const FvsFloatField_t direction, const FvsFloatField_t frequency, FvsImage_t mask)功能:获取指纹图像的有效区域,以进行进一步的处理。
如果某个区域不可用用,则掩码置为0,包括如下区域:边界,背景点,图像质量很差的区域。
有效区域的掩码置为255。
参数:image 指纹图像direction 脊线方向frequency 脊线频率mask 输出的掩码返回:错误编号函数5:FvsError_t ImageEnhanceGabor(FvsImage_t image, const FvsFloatField_t direction, const FvsFloatField_t frequency, const FvsImage_t mask, const FvsFloat_t radius)功能:指纹图像增强算法,该算法比较复杂,其后处理的部分是基于Gabor滤波器的,参数:image 指纹图像direction 脊线方向,需要事先计算frequency 脊线频率,需要事先计算mask 指示指纹的有效区域radius 滤波器半径,大多数情况下,4.0即可。
值越大,噪声可以受到更大抑制,但会产生更多的伪特征。
返回:错误编号函数6:FvsError_t MatchingCompareImages(const FvsImage_t image1, const FvsImage_t image2, FvsInt_t* pgoodness)功能:匹配两个指纹参数:image1 指纹图像1image2 指纹图像2pgoodness 匹配度,越高越好返回:错误编号函数7:FvsError_t FvsImageExport(const FvsImage_t image, const FvsString_t filename)功能:将一个指纹图像输出到一个文件,文件的格式由文件的扩展名决定参数:filename 将要保存图像的文件名image 将要导出的图像返回:错误代码4. 总结本系统结合嵌入式技术、图像处理以及信号处理技术等实现了指纹识别系统,克服了传统系统的指纹采集速度慢,处理器处理速度慢等缺点,提高了图像的质量,提高了效率,也增加了系统的可靠性。