基于arm的指纹识别系统设计本科论文.docx
《基于arm的指纹识别系统设计本科论文.docx》由会员分享,可在线阅读,更多相关《基于arm的指纹识别系统设计本科论文.docx(15页珍藏版)》请在冰豆网上搜索。
基于arm的指纹识别系统设计本科论文
基于ARM的指纹识别系统设计
摘要
世界正朝着互联化的方向发展,而物联网正是这个数字革命的核心之一。
在目前流行的物联网技术中,要求嵌入式终端能够提供成熟且价格便宜的生物特征识别技术,目前来说指纹识别的技术应用最为广泛,我们不仅在门禁、考勤系统中可以看到指纹识别技术的身影,市场上有了更多指纹识别的应用:
如手机、指纹锁、银行支付验证都可应用指纹识别的技术。
在指纹识别控制领域,也会用到各种微控制器,本文采用了三星半导体S3C6410作为控制核心,S3C6410应用了专为要求高性能、低成本、低功耗的嵌入式消费类电子设计的ARM9内核。
按性能分成两个不同的系列:
该系列内核时钟频率已经达到72MHz。
指纹识别基于两种特征点来识别:
(i)组成指纹的指纹整体特征结构(ii)局部的特征点。
本文提出了一种可以在自动指纹识别系统中使用的基于特征点的指纹识别算法。
本文提到的方法基于从细化提取的特征点,二值化一个指纹图像分割图。
该系统采用在指纹分类的指纹索引匹配,大大提高了匹配算法的性能。
关键字:
ARM9,指纹识别,特征识别,图像处理
Abstract
TheworldismovinginthedirectionofthedevelopmentoftheInternet,theInternetofisoneofthecoreofthedigitalrevolution.Inthecurrentnetworktechnology,theembeddedterminalcapableofprovidingbiometrictechnologyismatureandthepriceischeap,atpresenttechnologyoffingerprintrecognitionisthemostwidely,wecannotonlyseethefingerprintrecognitiontechnologyinaccesscontrol,attendancesystem,fingerprintrecognitionapplicationismoreonthemarket:
suchasmobilephone,fingerprintlock,bankpaymentverificationcanbeappliedtofingerprintrecognitiontechnology.
Inthefingerprintrecognitionandcontrolfield,wewillalsouseavarietyofmicrocontroller,thispaperusesSamsungS3C6410asthecontrolcore,S3C6410applicationdesignedforhighperformance,lowcost,lowpowerembeddedconsumerelectronicdesignbasedonARM9kernel.Accordingtoperformanceisdividedintotwodifferentseries:
thisseriesofcoreclockfrequencyhasreached72MHz.
Fingerprintidentificationtwofeaturepointsbasedon:
(I)toidentifythefingerprintfeaturestructurefingerprint(II)featurelocal.Thispaperproposesacanbeusedinautomaticfingerprintrecognitionsystemoffingerprintrecognitionalgorithmbasedonfeaturepoints.Themethodsmentionedinthisarticleisbasedonthefeaturepointsextractedfromrefined,twovaluesegmentationimageofafingerprintimage.Thesystemadoptsfingerprintindexinginthefingerprintclassificationmatching,greatlyimprovestheperformanceofmatchingalgorithm.
Keywords:
ARM9,FingerprintIdentifier,FeaturePoint,ImageProcessing.
第一章概述
1.1指纹课题的研究与应用背景
信息化的特点就是能够实现事物的数字化和隐秘化,传统的身份管理如IC卡,磁卡,钥匙存在着易丢失,伪造等缺点,相比较于传统的身份辨识,人的指纹永远无法改变,因此指纹识别在安防领域,司法领域扮演及其重要的作用,在民用领域,随着采集器的多样化和嵌入式微控制器的发展,指纹识别更多地走进了人们的生活中。
作为一门生物识别的学科,数字指纹学的方法有内在的规则可以遵循,可以把数字指纹识别的方法和规则归纳为:
理解自然模型,建立物理模型,导出数学模型,确定指纹识别算法这样一个过程[1]。
本设计采用嵌入式微处理器,外接传统指纹采录模块,通过移植专用的指纹识别算法,实现了一个具有指纹采集,指纹辨识功能的系统。
1.2嵌入式系统概述
嵌入式系统被工程师们定义为“一种用来控制、监视或者辅助仪器、机械操作的计算机系统”。
嵌入式系统的特点是基于硬件体系,高效,可靠,强实时性,满足对象智能化控制要求的技术需要,因此可以将嵌入式系统定义为:
“嵌入到对象体系中的专用计算机应用系统”。
嵌入式系统有3个特性,即“微机性”、“可植入”及“专用性”。
“微机性”指的是通过使用专门的微控制器,来实现自动化控制。
“可植入”则是指的是可以嵌入到任何应用中,应付多种控制及运算需求,应用面广泛。
“专用性”指的是为了实现特定对象的操作必须对该对象软硬件单独修改。
嵌入式处理器:
嵌入式处理器拥有灵活的应用编程资源、丰富的外设接口总线及高速的内部总线结构,与通用微处理器比较,同时具有功耗低、简单易用,实时性强,性价比高等优点,主要分为微控制器,微处理器,DSP处理器,嵌入式片上系统四类[22]。
微控制器:
一般指单片机,将整个控制计算机的核心封装在了一个芯片中,其中包含了ALU,外设,总线,RAM,ROM等通用接口,以某一类型内核为模板,该类芯片具有功耗低,稳定性好,但是性能较低,没有MMU,无法运行具有内存管理功能的嵌入式系统,是目前工业应用的主流。
微处理器:
嵌入式CPU具有通用处理器大部分的功能,可是其集成了更多的外设,并具有嵌入式特有的功耗低,性耗比高的优点,通常以一内核为模板,有别于单片机的是该类芯片性能更强,且通常由MMU的功能,可以在体系上运行强大的嵌入式操作系统[5]。
.本系统的指纹算法设计包括预处理和指纹两部分的算法,其中,指纹预处理算法用来提取指纹的特征码,包含指纹分割,二值化,细化部分算法。
指纹识别算法用来与以存储的模板匹配得到匹配结果[6]。
第二章系统设计方案
本章主要讲述了指纹识别系统的设计方案,其中包括了硬件部分和软件部分的具体设计方案。
以及曾选用的方案比较。
2.1指纹识别系统的概述
指纹识别系统是通过专用的指纹图片采集器,将指纹图像通过嵌入式处理器经过处理后,经过指纹特征匹配算法,得出匹配结果。
因此指纹识别系统由以下三部分组成:
(1)嵌入式系统控制板
指纹识别控制板由嵌入式处理器,指纹采集器,输入输出等硬件设备组成。
(2)指纹采集器模块
本系统采用光电指纹采集器,该类型采集器具有成本低,应用范围广等特点,缺点是图像失真比例大,需要进行软件较真
(3)指纹系统软件
指纹系统软件由指纹采集,指纹预处理及指纹识别三个步骤构成。
2.2指纹系统硬件设计方案
针对指纹识别应用,嵌入式控制板必须满足的条件有:
1.板载主控芯片必须具有强劲的运算能力,才能具有图像处理的能力,2.有大容量的存储设备,可以满足一般的嵌入式应用需求。
3.具有丰富的接口,方面拓展功能及测试。
综上所述,选用了采用ARM9内核的三星S3C6410芯片,该芯片的主频最高能到达72MHZ,且集成了丰富的外部设备,且价格便宜,完全满足了指纹识别应用的需求。
以下是具体的设计细节[10].
。
2.2.1指纹采集器介绍
本设计采用OP100-T光学式指纹采集头,该采集头使用GC0307传感器进行获取信息,该传感器支持多个分辨率级别的图像传输:
QVGA(480*640)CIF(80*120)等,支持多种传输数据格式输出:
YCRCB422,YCRCB444,RGB565,采集器通过IIC接口进行控制。
指纹识别软件设计由采集器驱动,图像畸变处理算法,图像预处理算法,特征提取别算法,人机UI界面软件流程图如下图:
图2-3指纹识别系统工作流程图
第三章指纹预处理算法的设计
本设计采用的指纹识别方法是基于指纹的特征进行匹配的,指纹的特征指的是纹线的的结束点和交叉点,因此,衡量系统性能的好坏就是指纹的端点和分叉点的提取精度。
而提取的精度又和指纹图像的大小和预处理算法的运算复杂度有关,一般来说,指纹图像越大,预处理越充分,指纹特征的提取越好。
在嵌入式应用中,由于系统的资源有限,因此常常采取折中的方法,即降低图像的分辨率,加大预处理的处理度降低计算量,且得到较高的匹配度。
指纹图像的预处理主要有以下几个流程,主要包括求梯度场,方向场,然后图像分割,滤波增强,而后细化,然后可以得到可提取出特征点的指纹图像[10]。
3.1指纹图片畸变处理算法
由于采用了光电式采集器,反馈信号受到光学机理的影响,会有一点的图像畸变,在这里主要是梯形畸变,当前很多基于光学式采集的校正技术也是针对这种畸变来进行的。
可是,光学采集器得到的指纹图像的畸变不仅只有这种线型变化,非线性扭曲在指纹的边缘是很严重的。
如图3-1,3-2所示,但受图像扭曲的影响,相同采集器存在相同的非线性扭曲,因此只要是同一个采集器采集到的信号是可以完成匹配,即使方向不同。
但是对于不同的指纹采集器,采集到的图像会因为采集器的工作方式的不同,呈现出不同的特性,因此需要采取特殊的处理算法。
图3-1光学畸变示意图
图3-2实际采集到的畸变
解决指纹图像产生的畸变,可以从不同的角度去思考。
基于以下假设进行线性拟合数学建模。
假设:
(1)指纹畸变梯形中的方格数目没有变小,只是由底向顶缩小。
(2)认定每行方格的数目变化是线性的。
(3)方格中的像素是不可压缩的。
依照以上假述,可以进行数学建模,得出第一行的边长关系:
第y行方格边长关系式:
假设
那么第d行的正方形边长
●Y畸变矫正
矫正对于y方向,第y行的所处位置和上底的距离为前(y-1)个正方形的边长和:
X畸变矫正:
采用上述公式可以解决畸变矫正的坐标映射问题,还原出较为真实的图像[11]。
3.2指纹图像的分割计算:
由于使用光学指纹采集器,采集得到的图像分为指纹图像区域和空白区域。
我们所做的操作是针对指纹图像本身,但是空白区域由于采集器的因素也会有像素,因此需要分割具体的图片。
图3-3梯度场
实现图像分割的方法有直方图分割和梯度场的方法:
直方图分割的思路是由于指纹像素和背景像素之间落差较大[12],因此可以设定阀值,这种分割方法的缺点是不大准确,不适应光学采集接口采集的图像,梯度场的实现方法是计算指纹图像的梯度然后对梯度像素进行阀值判断,目的就是区分是前景和背景。
图像梯度的计算方法:
如上公式,图像梯度需要进行与相邻像素的比较因此采用梯度的方法相较于直方图的方法更好。
3.3指纹的平滑处理
在采集指纹过程中,传感器通常会把周围的环境灰尘,表面污渍等也才采集进去,这些噪声像素的特点是与周围像素相比显得并不“合群”。
为了去除该噪声,必须参考周围的像素,进行卷积运算。
信号与系统中卷积运算在实际的指纹图像处理中都表现为邻域运算。
临域运算是在输出指纹图像中,通过矩阵运算的思路,获得图像矩阵和模板矩阵运算结果。
通常临域远比指纹图像尺寸小,如3*3,4*4。
卷积运算的定义为:
平滑模板算子实现了一种类似低通滤波的功能,算子如下
3.4指纹的增强处理
指纹图像的增强指的是增强指纹图像的特征,脊线,谷线等等特性,对这些特性的增强,需要对图像的方向场和频率场进行分析,作为增强的指导。
需要模拟出一个现象滤波器,模拟智能增强的“简单细胞频向调谐”过程。
Daugmann证明了这些“频向”脉冲响应可由高斯窗口和正旋波相乘后得到的Gabor小波逼近[17]。
对于指纹的增强,主要在以下两个方面进行:
在纹线的水平方向上,需要对纹线进行定向增强,弥补由于采集因素造成的可能的纹线断裂。
在纹线的垂直方向上,需要对谷线进行定向滤波,使用Gabor函数可以满足该要求,在该位置的频率场f对指纹图像进行振荡增强[16]。
Gabor小波函数:
因为Gabor小波函数的模板运算十分耗时,可将Gabor函数进行花间处理,将矩形模板化为线段模板。
化简之后切向滤波模板为Hw=1/7{1,1,1,1,1,1,1},法向滤波模板是Vw=1/7{-3,-1,3,9,3,-1,-3}
图3-8收敛之后图图3-9增强处理后
如图3-9所示,增强之后的脊线和谷线更为鲜明,因为采集因素断裂的脊线在增强后得到修复。
4.指纹识别系统的实现
本节主要描述了在S3C6410ARM9芯片上指纹识别系统的实现,该部分的工作主要有搭建程序运行环境,各个模块的接口程序和算法移植,GUI界面的设计。
本设计的硬件平台采用了飞凌OK6410开发板作为硬件平台,该平台集成了2GNANDFLASH,256MSDRAM,具有CAMERA外设,DISPLAY外设,满足了开发指纹识别系统的需求。
4.1软件运行环境的设置
嵌入式微处理器不同于嵌入式控制器,一般的微控制器的存储设备单一,多为片内FLASH或者ROM,然而嵌入式处理器的存储设备是多样,通过集成总线来实现取指和译码,其中涉及到的存储设备分为包括片内和片外,且设备本身的种类也是多样化的。
常见包括NANDFLASH和NORFLASH,SDRAM等。
因此在编程时候需要考虑代码的存放位置和运行位置,在GNUC中提供了SCR文件脚本来指定文件的运行域和执行域,在ARMCC中使用SCATTER文件指定,本设计采用RVDS2.2作为开发环境,该环境采用ARMCC编译器[21]。
本设计采用C语言作为编程语言,不同于汇编语言编程,C语言程序设计需要经过编译,链接,直至生成目标文件,其中需要编译器完成的是堆栈的设置,库重新编译,程序的装载等等工作,在嵌入式开发环境中,同样的芯片,硬件平台往往是不同的,因此这些工作编译器无法进行,只能由开发者来实现[23]。
板载的S3C6410支持SD卡启动,NANDFLASH启动,通过修改芯片管脚OM[0:
4]电平,可以修改启动方式,为了软件调试方便,本设计采用SD卡启动作为程序入口,芯片上电的时候将SD卡第一个扇区复制到芯片内部8KBIRAM,由于片内IRAM的容量限制,该程序只能实现最基础的功能,包括PLL初始化,SDRAM初始化,堆栈设置,和代码的搬移,如下流程示意图:
图5-1软件环境设置流程图
4.2指纹采集器接口设计
OP100-T采集器采用GC0307作为主控芯片,该芯片是一块高分辨率CMOS图形传感器,该传感器使用SCCB作为控制接口,提供YUV,RGB,YCbCr422等图像信号输出。
且提供多分辨率图像输出,在CIF分辨率下面可以达到120帧/秒,微控制器接口方面使用6410片内CAMERA作为图像输入口,采用IO口模拟SCCB控制时序。
●SCCB控制时序:
图5-3SCCB控制时序图
在图像数据接口方面6410提供了CAMERA接口,支持ITURBT-601/656YCbCr8位图像数据格式,最大支持输入像素达到4096*4096,且提供DMA和图像变换功能。
YCbCr图像传输时序:
图5-3ITU601视频信号时序图
其中VSYNC代表帧同步信号,HSYNC代表行同步,每帧图像包含由行图形数据组成,在6410片内提供DMA接口将图像数据搬移到SDRAM中,可以通过编码DMA通道将输入的YUV信号直接解码为RGB信号。
下图为OK6410的摄像头输入功能示意图:
图5-4CAMERA外设接口图
如图所示,OK6410为摄像头提供了两个DMA通道,通道的输入可以为内存和摄像头输入,其中,预览(PREVIEW)通道支持图像的旋转输出,两个通道均可以实现RGB至YCBCR的相互转换。
每个通道中均有4个乒乓存储器进行数据操作,乒乓存储器的原理是,当由一帧图像数据进入的时候,放入缓冲区1,第二帧数据进入,通过数据选择端口放入缓冲区2,且通过处理选择端口将缓冲区1内的数据解码为RGB颜色空间的数据输出,如此操作,可以实现数据的无缝输入输出。
下图为指纹采集和处理器的的硬件连接图:
图5-5指纹采集器和S3C6410之间的接口
5.3显示及UI功能的实现
指纹图像通过飞凌6410开发板板载4.3寸液晶屏显示,该液晶屏的分辨率为480*272,本设计采用6410集成的显示控制器来驱动,支持RGB,I-80,NTSC,PAL标准TV输出,同时提供了从内存到外设显存的DMA通道,在显示控制器初始化完成之后,只要写入显示缓冲区,相应的显示数据自动就会通过DMA通道送至IO口。
●GUI界面的设计
GUI界面采用按键+显示的控制方式,由于采用裸机编程,无图形库的支持,GUI界面采用在PC端实现生成图像数组,选择合适的扫描方式,编译进程序,在使用的时候直接显示数组中的内容。
第六章系统调试与测试
6.1指纹算法的验证:
为了方便验证指纹识别系统的效果,本设计在PC端设计了一个基于MFC的指纹测试程序,该程序完成了指纹识别各个功能的算法验证。
如下图所示:
图6-1上位机验证程序
本设计采用的算法都已经通过上位机验证完成,该程序可以完成每个步骤算法的单独验证效果。
在必要时候也可以作为上位机将指纹数据发送或者接受给下位机。
6.2指纹采集接口的调试部分
指纹采集接口主要包括YCBCR422和I2C标准总线两个部分,本文通过GPIO口模拟实现I2C协议的功能,
下面是实际测试的波形图:
图6-3STOP信号
●HSYNC与VSYNC时序:
图6-4行场同步信号
6.3系统运行的测试:
致谢
本文是在老师的悉心指导下完成的,从最初的选题到撰写、系统实现,老师都给了我很大的指导和帮助。
韩愈的《师说》里有这么一句话:
“师者,所以传道受业解惑也”,老师就是这么一位尽职的好老师。
他学识渊博,在专业上给予我很大的帮助,在研究遇到瓶颈时总能给我指点迷津。
除此之外他还同我们进行各方面的交流,教育我们做事该有的态度,培养我们的办事能力。
老师正直的为人和严谨的治学态度都深深的影响着我,我很庆幸能跟随老师做毕业设计,在此向老师表示由衷的感谢。
感谢大学四年所有给予我学习和生活上帮助的老师、同学,尤其是我们系的老师,他们精益求精的工作态度以及诲人不倦的师者风范是我学习的楷模。
更要感谢可爱的辅导员对我们无微不至的关怀,以及陪伴我四年的舍友、同学们。
感谢我的家人,感谢他们一直默默的支持着我,给了我物质和精神上的帮助,感谢他们的关怀、鼓励、支持和对我无私的付出。
参考文献