基于嵌入式linux的指纹识别系统与实现

更新时间:2024-02-09 作者:用户投稿原创标记本站原创 点赞:34121 浏览:157747

【摘 要】将指纹识别技术与嵌入式系统相结合可以使指纹识别系统摆脱空间与环境的限制,更加广泛的适用于各种场合的需要.系统硬件平台采用基于ARM9架构的S3C2410嵌入式平台.本文对指纹图像预处理、特征值提取和指纹匹配算法进行了改进.实测结果表明,本系统可以稳定的运行在ARM平台上,对指纹识别技术在嵌入式平台应用具有很大参考价值.

【关 键 词 】嵌入式;Linux;指纹识别;MiniGUI

0.引言

计算机的发展使指纹识别技术得到高速发展.目前指纹识别系统的发展以嵌入式系统为主,嵌入式指纹识别系统需要构建可靠的嵌入式平台,而且由于资源有限,对指纹识别算法要求较高.嵌入式指纹识别系统体积小、灵活性高、操作简单,能够很好的满足实际需要.与其它生物识别技术相比,指纹具有较高的稳定性、独特性.指纹绝对可以通过每个指纹的细节特征进行区分.

1.指纹识别系统设计方案

本系统以S3C2410微处理器为核心,扩展了SDRAM、RAM芯片、FLASH芯片、RTL8019AS网卡芯片.S3C2410的通用IO口与液晶显示屏、键盘相连,完成与用户的交互操作,构成了了本系统的硬件开发板.指纹采集模块采用的是Veridi公司的FPS200指纹传感器模块,并通过USB接口与开发板相连,实现数据指令的传送,从而在开发板上完成指纹的获取、预处理、提取特征值、特征值对比等功能.系统机构框架见图1.

操作系统启动后对FPS200指纹模块进行初始化,然后通过USB将采集到的指纹图像传送到ARM开发板上,应用程序对读入的指纹图像进行处理并,最后进行指纹的匹配.

2.嵌入式linux开发平台搭建与实现

2.1嵌入式系统概述

嵌入式操作系统(Embedded Operating System,简称EOS)负责嵌入式系统的全部资源的分配和调度工作,管理任务和并发操作,为开发人员提供统一的接口和硬件抽象.嵌入式操作系统除具备任务调度、中断处理、文件操作等一般操作系统所具有的最基本功能外,还具有小巧、稳定可靠、可移植性好、可扩展性好、具有强大的网络功能及硬件支持等优点.

2.2嵌入式Linux交叉编译环境的搭建

交叉编译需要一个高性能的宿主机,用来编译应用开发的源程序,然后可以生成目标平台的可执行程序.建立交叉编译环境需要完成两件事:宿主机的选择和交叉编译环境的建立.

2.2.1宿主机的选择

嵌入式Linux开发的宿主机可以选择安装Linux操作系统的主机或是装有Linux虚拟机的主机.本文选择Fedora12作为宿主机的操作系统,Linux宿主机与目标机通过两种方式进行连接:(1)网络方式,通过TFTP和NFS怎么写作;(2)串口方式mini.

2.2.2交叉编译环境的建立

交叉编译就是在一个平台上编译生成可在另一个平台上执行的程序.平台是指体系结构(Architecture)和操作系统(Operating System).为了Linux的应用程序的开发,构建一个多体系结构的交叉编译环境是非常必要的.

2.5设备驱动程序移植

在Linux系统下将设备分为三类:字符设备,块设备和网络设备.字符设备驱动程序与访问普通文件一样,需要至少实现open、close、read和write等方法,但是普通文件可以前后移动的访问,字符设备通常只能顺序访问.块设备与字符设备类似,块设备上可以容纳文件系统.但是块设备和字符设备在内核中数据的管理方式不同,内核与驱动程序之间的软件接口也不同.

Linux设备驱动的移植分为两种,一种是内核已经支持的硬件,这些设备驱动移植比较简单,只需在内核配置时加入该设备,并添加相应的初始化代码即可.另一种是内核不支持的硬件,首先要编写相应的驱动程序,然后通过交叉编译生成驱动模块文件,在应用程序使用该驱动时加载驱动模块.与U-Boot的移植一样,Linux内核也需要对K9F1208U0B NAND Flash、RTL8019AS网卡进行驱动的移植,而且内核中还要加入LCD、触摸屏和USB驱动的移植.

2.6根文件系统的设计

嵌入式Linux可以支持的多种文件系统,最常用的是Cramfs、YAFFS、JFFS等.

3.指纹识别算法研究

指纹识别算法是将采集到的指纹与指纹模板进行对比,判断它们是否为同一枚手指.目前的指纹识别过程如图3所示.系统从指纹传感器获得原始指纹图像,首先要对采集的图像进行预处理,将噪声等无用信息去除,并且将有用信息加强.其次对处理后的图像提取特征,获得能够区分指纹的唯一性特征.注册指纹是把得到的指纹加入到指纹库中.最后对指纹匹配,通常为了节省查找时间,会将指纹数据库分类.

3.1指纹图像预处理

指纹模块采集到的指纹图像是灰度图像,这些灰度图像中通常包含有噪声等无用信息,而这些无用信息严重影响到指纹识别系统的准确性,为了提高系统的性能需要对指纹图像进行预处理.指纹图像预处理包括提取指纹图像中指纹的有效区域,去除有效区域中的噪声,加强指纹有效信息,为指纹特征提取和最终的识别提供好的条件.

3.1.1归一化

归一化的算法描述如下:检测设指纹图像大小为N×N,G(i,j)为像素点(i,j)的灰度值,N(i,j)为归一化后像素点(i,j)的灰度值,对指纹图像中的像素点依次应用公式(1)实现归一化.归一化处理调整图像灰度值的均值和方差到一个希望的范围内,保证采集到的指纹图像的灰度值能够在同一个级别上,为以后的处理算法提供一个好的条件.

3.1.2分割

指纹模块采集到的指纹图像包括指纹和背景两部分,所以在预处理时需要将背景分割出去,只留下指纹部分.分割操作就是将指纹图像的有效指纹区域保留下来进行后续的预处理操作. 3.1.3基于点方向的二值化

通常在对指纹图像进行二值化之前要先完成滤波去噪,如卷积法、Gabor等,但是这些算法运算量较大,不适宜在嵌入式应用系统中使用,所以本文中采用将滤波和二值化合并的算法,即基于点方向的二值化,能够在较小的运算代价下去除一定的粘连和连接断文等.二值化操作就是将255级灰度图像转化为只显示黑和白两种颜色的指纹图像.

3.1.4去噪

虽然二值化能够消除一些噪声干扰,但是可能会引入新的噪声,而且指纹纹线上可能会存在少数气泡噪声,指纹图像边缘上也会有部分毛刺存在.这些噪声会对后面的指纹特征提取造成影响,所以在完成二值化操作后需要进行一步去噪的操作,删除指纹图像边缘的毛刺和对指纹纹线上的气泡进行填充.

3.1.5细化

经过上面几步的处理,基本得到了指纹纹线,但是纹线的宽度却是不均匀的,原因可能是采集指纹图像时手指压力大小不同或是手指不干净等噪声影响,纹线不均匀会给指纹特征提取带来比较大的误差.对图像进行细化的算法有很多,常用算法有:Hitditcb算法、E.S.Deutsch算法和OPTA算法.


3.2指纹特征提取

在进行指纹特征提取前会利用纹线跟踪算法对指纹图像中纹线进行修复,修复后的指纹图像会提高指纹特征提取的效果和效率,但是如果指纹图像噪声干扰严重时,指纹修复就是一件非常困难的任务,对于不同的指纹图像,指纹修复算法效果差别会很大,从而影响到指纹识别算法.还有一种处理方法是,对细化后的指纹图像直接进行指纹特征提取,当然提取的特征中会包含大量的伪特征,但是这样的提取过程简单,简化了算法的复杂度;然后再根据实际中真实特征点和伪特征点的特点,对提取的特征进行筛选,删除伪特征,最终得到真实有用的特征点集.

3.3指纹特征匹配

指纹匹配是指纹识别系统非常关键的一步,目前已经做了大量的研究,常见的匹配算法有基于点模式的指纹匹配算法,基于纹理结构的匹配算法,基于纹线的匹配算法等.点模式匹配算法因其不高的时间和空间复杂度,非常适合在嵌入式环境下使用.本文就采用基于二维群集的点模式匹配算法进行指纹匹配.

4.结束语

本设计在S3C2410实验箱平台上实现基于Linux操作系统的指纹识别系统的设计与实现,采用先进的FPS200指纹采集模块,设计了良好的图形交互界面.本文对基于嵌入式linux的指纹识别系统进行了深入研究,硬件平台采用基于ARM9架构的S3C2410嵌入式平台.对指纹识别算法进行了深入的研究,选择和改进后的算法更适用于嵌入式平台,算法主要分为三个部分:指纹图像预处理、特征值提取和指纹匹配. [科]

【参考文献】

[1]颜永龙.嵌入式自动指纹识别系统若干问题的研究[D].重庆:重庆大学硕士学位论文,2008.

[2]陈梁.嵌入式指纹识别系统研究与实现[D].南京:南京航空航天大学硕士学位论文,2007.

[3]丁飞.基于的指纹识别系统的研究与实现[D].广州:华南理工大学硕士学位论文,2007.

[4]柴晓光,岑宝炽.民用指纹识别技术[M].北京:人民邮电出版社,2004.

相关论文范文