单片机指纹识别系统的实现.docx
- 文档编号:6369855
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:27
- 大小:38.94KB
单片机指纹识别系统的实现.docx
《单片机指纹识别系统的实现.docx》由会员分享,可在线阅读,更多相关《单片机指纹识别系统的实现.docx(27页珍藏版)》请在冰豆网上搜索。
单片机指纹识别系统的实现
1 绪论
1.1指纹识别的历史与发展前景
1.2指纹识别中的基本概念与技术困难
1.3系统总体设计方案和论文结构
2 纹图像处理及特征提取与实现
2.1 方法概述
2.2方向图的计算
2.2.1求点方向图
2.2.2由点方向图求块方向图的算法
2.2.3最小均方估计块方向算法
2.3指纹图像的滤波
2.4基于方向图的动态阀值指纹图像二值化方法
2.5指纹图像的细化算法
2.6特征提取及其后处理
2.6.1特征点的提取
2.6.2假特征点的去除
2.6.3.细节点信息的提取及记录
2.6.4指纹识别中细节点的匹配
3 指纹识别系统的硬件设计
3.1功能描述
3.2系统硬件结构概述
3.3 AT89S51单片机的结构与特点
3.4指纹识别系统硬件电路设计
3.5电源电路的设计
3.6指纹采集器介绍及工作方式
3.7单片机和PC机的通讯功能
4.指纹识别系统软件设计
4.1算法的软件实现
4.2指纹识别系统软件的编制
4.3指纹传感器初始化设置
4.4 指纹识别系统串口通信
4.4.189S51串行口工作方式
4.4.2PC机主程序(函数)
4.4.3单片机图像处理设计
致谢
参考文献
1 绪论
1.1指纹识别的历史与发展前景
19世纪初,科学研究发现了至今仍然承认的指纹的两个重要特征,一是两个不同手指的指纹纹脊的式样(radgepattern)不同,另外一个是指纹纹脊的式样终生不改变。
这个研究成果使得指纹在犯罪鉴别中得以正式应用。
主要代表性的事件有:
1896年阿根廷首次应用,然后是1901年的苏格兰,20世纪初其他国家也相继应用到犯罪鉴别中。
20世纪60年代,由于计算机可以有效的处理图形,人们开始着手研究利用计算机来处理指纹。
从那时起,自动指纹识别系统AFIS(AutomatedFingerprintIdentificationSystem)在法律实施方面的研究和应用在世界许多国家展开。
20世纪80年代,个人电脑、光学扫描这两项技术的革新,使得它们作为指纹取像的工具成为现实,从而使指纹识别可以在其他领域中得以应用,比如代替IC卡。
现在(90年代后期),低价位取像设备的引入及其飞速发展,可靠的比对算法的发现为个人身份识别应用的增长提供了舞台。
相对于其他身份鉴定技术,指纹识别技术之所以优于其他身份鉴定技术而被广泛采用的原因:
1.指纹是独一无二的,两人之间不存在着相同的指纹:
2.指纹是相当固定的,不会随年龄、健康状况的变化而改变;
3.指纹样本易于采集,难以伪造,便于开发,实用性强;
4.每个人十指的指纹皆不相同,可以利用多个指纹构成多重口令,提高系统的安全性;
5.指纹识别中使用的模板并非最初的指纹图像,而是由图像提取的关键特征,使所需存储的信息量减小,而且在实现异地确认时,可以大大减少网络传输负担,支持网络功能。
可以看出,指纹识别技术相对于其他识别方法有许多独到之处,具有很高的实用性和可行性。
因此,指纹识别成为最流行、最方便、最可靠的身份认证方式,己经在社会生活的诸多方面得到广泛应用。
1.2指纹识别中的基本概念与技术困难
指纹图像其实是比较复杂的,它有着许多不同于其他图像的特征。
与人工处理不同,现代的生物识别技术并不直接存储指纹的图像(一是考虑到隐私权,二是由于储存空间),而是记录从指纹源图像中提取到的特征,指纹识别算法最终都归结为在指纹图像上找到并比对指纹的特征。
我们定义了指纹的两类特征来进行指纹的验证:
总体特征和局部特征。
总体特征是指那些用人眼直接就可以观察到的特征,包括:
基本纹路图案:
环型(loop),拱型(arch),漩涡型(whorl)。
其他的指纹图案都基于这三种基本图案。
仅仅依靠图案类型来分辨指纹是远远不够的,这只是一个粗略的分类,但通过分类使得在大数据库中搜寻指纹更为方的,这只是一个粗略的分类,但通过分类使得在大数据库中搜寻指纹更为方便。
指纹图像类别比例是这样的:
漩涡型(包括whorl doublewhorl)占27.9%,环型(包括rightloop, leftloop)占65.5%,拱型(包括arch, tentedarch)占6.60I0。
目前指纹识别技术还有很多困难。
例如:
当三维的指纹被指纹录入设备扫描成二维的数字图像时,会丢失一部分信息、,手指划破、割伤、弄脏、不同干湿程度以及不同的按压方式,还会导致指纹图像的变化,这给可靠的特征提取带来了相当地困难。
例如传统的基于细节点的识别方法,是依靠提取指纹脊线上的细节点,然后对其位置和类型进行匹配,来识别指纹的(详细描述在第三章中),而噪声会影响特征提取准确度,增加错误的特征点或丢失真正的特征点。
当噪声很大时,就要增加图像增强算法来改善图像的质量,但很难找到一种增强算法能够适应所用的噪声,多种增强算法又会大幅增加算法运行时间,不好的增强算法又会增加人为特征。
当噪声增大时,提取了许多虚假细节点,还有可能丢失细节点。
这就是传统的基于细节点识别算法的不足之处之一,因为它只利用了指纹图像中的一小部分信息—细节点位置和方向,作为特征进行匹配,丢失的蕴涵在图像中的其他丰富的结构信息。
不难想象,基于这种方法的识别算法,很难全面适应指纹的变化。
1.3系统总体设计方案和论文结构
硬件平台大致可以分为5个部分:
成像系统(传感器FPS200)、核心部分(AT89S51单片机)、RAM、EEPROM等器件。
工作原理:
指纹经传感器采集后,由传感器直接转成RGB格式,并且数据传输到MCU。
MCU需要执行大量的模式识别和图像处理相关计算。
固化的程序存储在EEPROM中,这些指令控制了整个指纹识别系统的工作流程。
RAM为内存存储临时数据。
这就构成数据通道。
在指纹算法方面,研究了基于细节点特征指纹自动识别系统的各部分构成以及指纹图像的预处理和细节特征提取。
文章第一部分首先介绍了基于细节点特征的指纹识别系统的构成及原理。
重点研究了其预处理过程,其中包括指纹图像预滤波、方向图计算、基于方向图的指纹图像滤波和指纹图像二值化。
最后介绍了对二值化后的指纹图像细化的方法。
第二部分介绍了硬件系统的结构,如:
单片机的连接方法,外设寄存器选取,串口通信的实现等等 。
第三部分介绍了指纹识别系统的软件流程及与PC机接口通信的实现。
2 纹图像处理及特征提取与实现
2.1 方法概述
特征提取
基于细节点特征的指纹自动识别技术是目前这方面研究中的主流,这种系统的实现有以下一些步骤如图2.1:
预处理是将输入的(直接采集进来的)低质量、有噪音的指纹源图象处理成已细化了的清晰的二值图像[1]。
它的目的是减少低质量的图像对分类识别结果的影响,预处理中一般包括图像增强、滤波、二值化、细化等步骤。
预处理的方法通常有两种:
方法一:
先求方向图,后求频率图,最后由此得到的Gabor滤波器对图像进行滤波。
这种方法计算量比较大,在求频率图容易产生偏差,不利于单片机的实现。
方法二:
结合指纹图像自身的特点以及其源图像像素来确定该点是否为脊,直接准确地得到黑白二值的指纹脊图像。
这种方法对于从不同渠道获得的图像均有不错的效果。
在以上两种方法都要用到方向图,方向图是一种可直接从原灰度图像中得到的有用信息,在预处理、特征提取、指纹分类中有着重要意义。
我们总是在准确求得方向图的基础上运用各种滤波方法或直接找脊的方法来进行预处理。
方向图描述了指纹图像中每一像素点所在脊线或谷线在该点的切线方向,也可看作是指纹源图像的一种变化表示方法,既用纹线的方向来表示该纹线。
方向图分为两种:
一种是点方向图,表示源指纹图像中每一点脊线的方向:
另一种是块方向图,表示源指纹图像中每一块脊线的大致方向。
计算方向图的基本思想是:
在原灰度图像中每一点(或每一块在各个方向上的某个统计量(如灰度差、梯度等),根据这些统计量在各个方向上的差异,确定该点(块)的方向。
2.2方向图的计算
2.2.1求点方向图
设是指纹图像中点的灰度值,要计算该点的方向,需要先求出(该点临域沿d方向的灰度变化)。
图2.2点方向示意图
=, d=1,2,···,N (2.1)
其中:
是方向d上的第k个点;
是该点的灰度值,N是所取的方向数,n为每个方向上所取的邻点数。
这两个数的具体取值与图像的分辨率有关,一般取N=16,即取16个方向,n=8,即一个方向上取8个邻点。
点的方向为取值最小的方向。
对图像中的每一点求取点方向,这样便形成了指纹点方向图。
此方向求得的方向特点:
1.方向取值不是0~2中的任意值,而是有限的几个数。
2.这种方向计算出的方向范围是0~2,有利于求取指纹的走势。
(与认为是不同方向)
2.2.2由点方向图求块方向图的算法
把点方向图分成大小的块,对每一块计算方向直方图(横坐标的方向取到的N个值,纵坐标为取这些方向的象素个数),方向直方图中的峰值所对应的方向,即该块的方向。
2.2.3最小均方估计块方向算法
代表指纹图像在处的灰度值步骤:
1.将图像分成大小为的块。
这里M的大小以包含一脊一谷(即一周期)为宜;
2.计算块中每个像素在x轴和y轴上的梯度和。
这里用简单的梯度算子:
=
(2.2)
(2.3)
3.用下面公式计算块的方向,
且 (2.4)
当的块中或为零的比率很大时,块方向应直接设为0或,这样块中的每一个像素的方向都等于。
(A)原始图像 (B)改进前的结果 (C)改进后的结果
图2.3 指纹图像的方向图
4.在计算指纹图像方向图多采用块与块直接不重叠的方式,但这样求出的块方向仅由该块所包含的像素点所决定,没有考虑其周围像素点的影响,很容易造成方向的不连续性。
于是我们采用在计算方向图时,采用块重叠的方式。
这样可以使方向图精度可以大大提高。
5.方向图平滑
这里我们采用将方向图正交分解后分别进行滤波的方法对它进行平滑,实验证明这种方法比一般用的中值滤波和加权平滑的方法的效果好。
计算步骤:
1) 将方向图转变为连续的向量场:
(2.5)
(2.6)
这里,分别是向量场x,y方向上的分量。
2) 实现低通滤波:
(2.7)
(2.8)
这里W是一个大小为的二维低通滤波器,一般使用的均值滤波。
3)平滑后的方向场为:
(2.9)
2.3指纹图像的滤波
在指纹处理中用到滤波器,主要在于去除图像噪声,增强图像质量,即增强指纹脊与谷的对比度,修补图像——连接脊中出现的断点、去除图像中的叉连现象。
指纹图像滤波有两种方法:
方法一:
利用Gabor滤波器的参数可利用指纹的方向性和纹理性,用Gabor滤波器来作为带通滤波器,去除噪音,增强脊谷结构。
这种算法难点在于需要计算图像的频率图——将指纹图像看成由脊和谷组成的周期图像,在每一个局部领域内都会有一个相对固定准确的频率。
这种算法的缺点在于:
求频率图导致计算量比较大,而且频率容易产生偏差;
方法二:
这种方法也是我们采用的滤波方法。
这是一种简单但效果良好的上下文滤波器,上下文滤波法也是基于方向图的,这是一系列上下文相关的滤波器,使用时根据某一快的方向从一系列滤波器中选择一个相应的滤波器来对这一块进行滤波。
其他方向的滤波器可以通过旋转得到。
一个基本的滤波器由两部分组成:
平均滤波器和分离滤波器。
平均滤波器的作用主要是连接边中出现的断点,而分离滤波器可以去除图像中的叉连现象。
(断裂和叉连的情况;如I右图2.4所示)。
滤波器的大小由指纹图像中脊线的周期决定,在我们的试验中,周期取为5,因而这里以Sx5大小的滤波器为例。
水平方向的平均滤波器的权值如右图2.5所示,其中系数满足:
。
经过平均滤波器过滤的图像,其中每一点的灰度由其临近的24个像素的灰度值共同决定。
即对于第i行j列的点的灰度值的处理如下:
图2.4断裂与叉连 图2.5平均滤波器的权值
(2.10)
若图像中出现断点,即这一点的灰度值比周围点都小得多,则经过平均滤波器的处理,它的灰度值就接近邻近点的灰度值了,所以平均滤波器有连接断点的作用。
分离滤波器的权值如图2.6所示,其中参数:
P+2Q+2R=0。
分离滤波器处理图像过程与平均滤波器相同,图像中的叉连点是把相邻的两条脊线连接起来的点,所以叉连点的上下点灰度值较大,而其同一行上的邻点的灰度值较小,通过分离滤波器的处理,叉连点的灰度值会明显降低,所以分离滤波器有去除叉连点的作用。
一个基本滤波器要求具备上述两种功能,它的作用相当于平均滤波器加分离滤波器,所以它的权值如右图2.7,其中参数:
K=X十P,L=Y+Q, M=Z+R。
为归一化权值,基本滤波器的每个权值都需要除以该滤波器所有权值的总和。
图2.6分离滤波器的权值 图2.7基本滤波器的权值
用方向滤波器进行滤波去噪时,根据块方向图中的该块的方向,选用相应的滤波器(将水平方向的滤波器旋转块方向的角度后得到),进行滤波。
2.4基于方向图的动态阀值指纹图像二值化方法
二值化是指纹图像预处理中必不可少的一步。
常用的二值化方法有固定阀值法、自适应阀值法、局部自适应阀值法等,这些方法仅仅利用了图像的灰度信息,对指纹图像的二值化效果很不理想;现有的大部分指纹图像预处理方法都是经过滤波处理后再进行二值化,这样就需要对图像进行两次扫描,不利于处理速度的提高。
将指纹图像自身的方向结构特点与源图像灰度值变化特点结合起来,确定对图像中每一像素点二值化的动态阀值。
这种方法取代了一般指纹图像预处理中无效区域分割、滤波、增强、二值化等步骤,一次完成图像的二值化功能。
实验结果也表明,该方法得到的二值化图像能够基本保持源图像上的特征点不丢失,确保了以后的特征提取和比对的正确性和可靠性。
指纹局部图如:
(A) 原始图像 (B)谷脊变化波形图
图2.8指纹谷脊变化波形图
方框Y方向是该块的指纹方向,x方向是其法线方向。
以法线方向上各像素点的灰度值做一曲线,可得到近似于正弦的波形图,如图2.8(B)所示。
显然,该波形图的波谷对应指纹图像的脊线(指纹图像中暗的纹线),而波峰则对应指纹图像的谷(指纹图像中亮的纹线)。
若所考察的当前像素点恰好落在波谷上,则该点就是指纹脊线点,若所考察的当前像素点恰好落在波峰上,则该点就是指纹谷点,而谷点到脊点间像素灰度的变化几乎呈线性,正是基于指纹图像在结构上和像素灰度变化上的这些特点,本文提出了下述指纹图像二值化方法:
1.将图像分成大小为N×N的小块,用上述方向图改进方法计算各小块的方向;
2.对图像中的每一点,以其所在块的方向作为该像素点的方向,并以该点为中心在其法方向上取(一般为奇数)的矩形窗,计算矩形窗内指纹方向每一列中像素点在法方向上的加权平均,具体公式为:
(2.11)
其中coefficent为加权平均系数,满足 ,是k列上的第d个像素的位置。
3.对中极大点或极小点附近的波动做平滑处理;
4.找出极大点和极小点位置及对应的值,对极大值极小值求平均,将此平均值作为该点二值化门限,称其为动态阀值。
5.将当前像素点的加权平均灰度值(即)与动态阀值进行比较,若小于动态阀值,同时,当前像素点在波形图极小点一个有限的邻域内,则当前像素点为脊线点,否则即为谷点,即:
(2.12)
其中的取值与指纹读入器的分辨率有关,通常取为指纹周期的四分之一,本文取。
若的起伏很不明显,说明该区域属于无效区域或背景区域,整个区域的像素值置为255。
本算法在具体实现中可利用同一块中所有像素有同样方向的条件,推导出快速算法,防止一些点的重复扫描,大大缩短处理时间。
2.5指纹图像的细化算法
指纹图像二值化后,纹线仍具有一定的宽度,而指纹识别只对纹线的走向感兴趣,不关心它的粗细。
为了进一步压缩数据,得到更精确的细节特征,提高识别的准确性,对指纹图像进行细化处理是不可忽略的。
所谓细化,就是从原来的图中去掉一些点,但仍要保持原有的形状。
实际上,是保持原图的骨架。
指纹图像的细化是指删除指纹纹线的边缘像素,使之只有一个像素宽度,细化时应保证纹线的连接性、方向性和特征点不变,还应保持纹线的中心基本不变。
一种好的细化方法应满足下列条件:
1.迭代必须收敛的。
(收敛性)
2.不破坏纹线的连接性。
(连接性)
3.不引起纹线的逐步吞食。
(拓扑性)
4.保护指纹的细节特征。
(保持性)
5.骨架纹线的宽度为1个像素。
(细化性)
6.骨架尽可能接近条纹中心线。
(中轴性)
7.算法简单、速度快。
(快速性)
图2.9 统一模块
下面介绍一种适合于指纹图像细化的算法,这种方法满足上面的细化条件,而且可以提出快速算法。
这种算法采用模板,如图2.9所示,左上角的方窗(即)为消除模板。
即,一黑色象素八临域与消除模板中的一个相匹配的话,该点被认为是可消除的点。
消除模板具体如下:
(A)~(D) 4个模板能有效去除边缘上的突出物,保证了细化后的指纹骨架处于指纹脊线中心,避免了细化后的指纹骨架出现毛刺。
除消除模板外,还需构造保留模板,保持纹线的连通性。
保持模板内容如下图2.11所示:
具体算法如下:
从图像的左上角元素开始进行,每个像素(图中为)均抽取出如图2.9所示的15个相邻像素,并且把其中8个邻域像素()与图2.10中的8个模板比较,如果和8个消除模板中的任意一个都不匹配时,保留;如果与8个中的任一个匹配,则抽取的元素再和图2.11中的6个保留模板进行比较,如果与其中任一个匹配的话,则保留,否则删去。
重复这个过程,直到没有一个像素的值被改变。
这种算法的具体实现可引入查表法,即对所要处理的像素周围模板内前15个点预先进行编码(用双字节15个位来表示,双字节的最低位存放的值,依此类推,次最高位存放的值),把编码值作为存储地址,按上述细化法则,预先在存储地址上存入相应的细化值(可用0, 1表示,0表示保留,1表示删去)。
细化时,移动4x4的方窗内象素的编码地址去查找相应的细化值,用细化值替换当前像素值。
2.6特征提取及其后处理
2.6.1特征点的提取
特征提取一般是指提取指纹图像的局部特征,也就是细节点特征。
在基于细节点的指纹自动识别系统中,特征提取是在细化后的指纹图像上进行的。
特征提取的首要问题是确定细节点和它的位置,细节点的位置和细节点间的相对位置很重要,尽管每个指纹中包括将近80个细节,只要确定十几个细节点就己经足够用来识别了。
探测细节点的算法很简单,如图2.12所示的3x3模板就可以用来确定特征的位置。
M是待检测的点,是它的八邻域,沿顺时针方向排列。
是细化后图像在处的灰度。
如果M是端点,则它的八邻域满足:
, (2.13)
如果M是分叉点,则它的八邻域满足:
, (2.14)
这样我们就可以在细化后的图像中找到细节点(端点和分叉点),并记录它们在图中的相对位置。
2.6.2假特征点的去除
这样得到的特征中存在由指纹质量、摄入噪声等原因造成的很多假特征,如下图2.12所示(a)和(b)中产生了假的端点;(c)和(d)中形成了错误的断开和连接;(e)中显示的是一个由不平滑的脊引起的毛刺,出现了假端点和假分叉两种特征:
(f)~(g)是几种错误连接的例子,分别称为桥形、三角形、梯形结构。
图2.12假特征
针对上面这些假特征,我们采用了非常简单的方法:
计算特征点间的距离,如果距离值小于所给的阀值,则认为特征点为假特征点。
这种算法实现起来也很简单:
扫描特征点的某一邻域,如果该邻域中出现其他特征点的话,将该特征点与出现的特征点同时去除,如此循环几次,当没有特征点被删去时,处理完成。
这种方法中邻域的选取很重要,如果取得比较小,则可能起不到去除假特征点的作用;如果取得比较大的话,则可能将真正的特征点也一并删去。
在具体实现中,我们取其半径为脊宽的一半。
2.6.3.细节点信息的提取及记录
对每一个细节点,我们记录如下信息:
1.细节点的x,y坐标。
2.细节点的方向,这个方向就是该细节点所在的块的块方向。
3.细节点的类型,即脊线端点或脊线分叉点。
4.细节点对应的脊线。
细节点对应的脊线用该脊线上的采样点来表示,采样的距离约为脊线间的平均距离。
分叉点对应的脊线是与该细节点的方向最近的那条,端点对应的脊线就是该细节点所在的脊线。
采样点用该点与对应细节点的距离,和连接该点与对应细节点的直线与对应细节点方向的夹角来表示,的取值范围在-180到180度之间。
下图给出了细节点对应的脊线与脊线上的采样点的例子。
在细节匹配中,对应脊线将被用来对两个平面点集进行校准,而且,校准的参数,也就是两个点集中任意一对脊线间的旋转角度,将被用来作为判断它们所对应的细节点能否看作匹配的细节点的条件。
图2.13细节点的对应脊线
2.6.4指纹识别中细节点的匹配
细节匹配一般在极坐标系中进行,因为指纹图像的非线性形变往往呈放射状,在某个区域内的形变比较大,然后非线性地向外扩张,因而,在极坐标中能更好地描述非线性形变;另外,在极坐标中不需要考虑输入图像与模板图像的参照点之间的平移,将一对对应点的坐标相对于参照点转换为极坐标时,平移就被抵消了;还有,在极坐标系中显然比在直角坐标系中更便于处理两幅图像间的旋转[6]。
细节点集的校准:
令 (2.14)
表示模板图像中的M个细节点,
(2.15)
表示输入图像中的N个细节点。
为了把细节点转移到极坐标系中去,需要在模板细节点集和输入细节点集中各选一个参照点作为相应的极坐标系中的原点,并算出其它细节点相对于参照点的极坐标。
由于事先不知道模板点集与输入点集的对应关系,需要考虑所有可能的参照点对。
对模板点集中的每一点和输入点集中的每一点,定义为将和当作参照点对时,从输入图像到模板图像的旋转角度。
如果,和可以被当作一对对应点,即它们分别对应的脊线相似性到了一定程度,则将取0度到360度间的一个值,否则,我们定义取值为400,以表示和不能是一对对应点。
如果和是不同类型的细节点,也就是说它们一个是端点,一个是分叉点,则它们不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 指纹识别 系统 实现
![提示](https://static.bdocx.com/images/bang_tan.gif)