识别报告.docx
《识别报告.docx》由会员分享,可在线阅读,更多相关《识别报告.docx(22页珍藏版)》请在冰豆网上搜索。
![识别报告.docx](https://file1.bdocx.com/fileroot1/2023-7/27/817eb56f-f1cb-471d-b93d-85db3209b6b6/817eb56f-f1cb-471d-b93d-85db3209b6b61.gif)
识别报告
电子信息科学与技术专业课程设计任务书
2012-2013学年第2学期第17周-19周
题目
指纹识别
内容及要求
1、对采集的指纹图像做各种处理方便寻找特征点进行识别。
如:
像素的扩大、二值化、细化等。
2、从处理过的指纹图像中寻找特征点
3、通过特征点与中心点的相对位置来判断此特征点是否与模板特征点相符。
4、最后通过相符特征点的数量来判别采集的指纹与模板的指纹是否出自同一人。
进度安排
学生姓名:
指导时间2013年月日至年月日
指导地点:
任务下达
20年月日
任务完成
20年月日
考核方式
1.评阅□ 2.答辩□3.实际操作√4.其它□
指导教师
系(部)主任
注:
1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。
2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。
摘要
指纹识别技术是生物识别技术的一种,正因为指纹具备唯一性和不变性等特征使得指纹识别技术已经被广泛的应用于身份鉴证等多种领域。
一般而言,一个指纹数字图像识别系统通常由指纹数字图像预处理、特征提取、保存指纹数字图像及指纹数字图像匹配等四部分过程构成。
本文对指纹数字图像识别系统的原理和基本过程进行了较为深入的分析与研究。
首先对指纹数字图像的分类、基本特征与识别原理进行了详细的论述。
其次,在指纹数字图像预处理部分,本文主要对预处理的各个步骤:
数字图像分割、数字图像增强、二值化、图像细化等含义及过程进行了详细的分析,并设计了一种合适的指纹数字图像预处理方案。
然后详细的论述了指纹数字图像的特征提取与匹配过程,其中指纹数字图像的特征提取是从细化后的指纹数字图像图中提取出端点和分叉点,即细节特征点,此特征点会包含大量的伪特征,这样会非常耗时并且降低匹配的精度,而采用边缘去伪和距离去伪的方法能使伪特征点减少近1/3,然后再提取可靠特征点信息,从而实现指纹数字图像匹配,本文采用了基于MATLAB实现的指纹数字图像细节特征提取方式。
在指纹数字图像匹配部分,本文采用基于细节点的指纹数字图像匹配算法,并进行了深入研究。
最后,通过对指纹数字图像识别系统算法的详细研究,本文利用MATLAB工具设计并实现了一个指纹数字图像识别系统,完成了对指纹数字图像的处理、特征提取,保存和匹配等功能,利用编码对指纹数字图像进行入库、匹配等操作,从而完成图像的识别来判断是否同一指纹,其比对结果令人满意。
【关键词】:
指纹识别、特指点匹配。
第1章设计要求
1.1功能要求
通过对采集指纹的处理提取特征点与模板比较,判断是否属于同一人之手。
在处理时为了提取特征点方便,应该把指纹像素增大,细化二值化等。
在对指纹识别时采取多种方法并且比较每种方法的优缺点。
最后总结出最佳方案。
掌握指纹识别的概念与实现过程框图;熟练掌握指纹图像的特征、特征提取、指纹识别方法。
构建指纹识别完整模型,包括图像获取、图形预处理、特征提取、图像识别各环节的软件算法;在图像预处理过程中,充分考虑图像去噪、图像增强等有关算法;同时,设计基于指纹识别的用户管理界面。
在消化吸收国内外研究成果的基础上,探讨指纹识别模型与算法的快速性、鲁棒性。
同时,针对构建的简单指纹图像数据库具有较好的识别效果,并考虑指纹门禁控制系统的实时性。
参照国内外同行取得的研究成果,不断改进算法模型。
针对实际应用,探讨该模型算法的优点;讨论指纹图像数据库的大小、系统容量、训练样本随机变化、以及选择不同算法时对识别率的影响;得出具有一般性指导意义的结论。
1.2平台要求
学会Matlab的基本使用。
通过Matlab软件完成指纹识别的各部分功能。
熟练掌握图像处理原理与模式识别原理。
熟练掌握MATLAB软件及该软件中的ImageProcessingToolbox及其编程技巧。
第2章系统组成及设计原理
2.1功能基本概述
图2-1功能框图
2.1.1扩大像素
由于图像太小会使指纹的纹路不清晰影响特这点匹配所以把各个像素点都扩充到4倍的区域。
如图2.2在第一个点处赋同样的值把各个值赋好只要在其它三个点处赋值,值为相邻已知像素大小的点平均
a
b
c
d
a
(a+b)/2
b
...
(a+c)/2
(a+b+c+d)/4
(b+d)/2
...
c
(c+d)/2
d
...
...
...
...
...
图2-1-1像素扩大
2.1.2二值化
为了便于区分纹路把中间的过渡像素的二值化处理,这样只存在于255和0便于处理相关数据。
1.将图像分成大小为N×N的小块,用上述方向图改进方法计算各小块的方向
;
2.对图像中的每一点
,以其所在块的方向
作为该像素点的方向
,并以该点为中心在其法方向上取
(
一般为奇数)的矩形窗,计算矩形窗内指纹方向每一列中像素点在法方向上的加权平均
,具体公式为:
(3.11)
其中coefficent为加权平均系数,满足
,
是k列上的第d个像素的位置。
3.对
中极大点或极小点附近的波动做平滑处理;
4.找出
极大点和极小点位置及对应的值,对极大值极小值求平均,将此平均值作为该点二值化门限,称其为动态阀值。
5.将当前像素点的加权平均灰度值(即
)与动态阀值进行比较,若小于动态阀值,同时,当前像素点在波形图极小点一个有限的邻域内,则当前像素点为脊线点,否则即为谷点,即:
(3.12)
其中
的取值与指纹读入器的分辨率有关,通常取为指纹周期的四分之一,本文取
。
若
的起伏很不明显,说明该区域属于无效区域或背景区域,整个区域的像素值置为255。
本算法在具体实现中可利用同一块中所有像素有同样方向的条件,推导出快速算法,防止一些点的重复扫描,大大缩短处理时间。
2.1.3细化
用于要辨别准确地纹路所以要使用一条细线代替原先纹路,可以更加准确地辨别与处理
图2-1-3 统一模块
如图2-1-3所示,左上角的
方窗(即
)为消除模板。
即,一黑色象素八临域与消除模板中的一个相匹配的话,该点被认为是可消除的点。
消除模板具体如下:
(A)(B)(C)(D)
(E)(F)(G)(H)
图2.10消除模块
图2-1-4消除模块图
(A)~(D)4个模板能有效去除边缘上的突出物,保证了细化后的指纹骨架处于指纹脊线中心,避免了细化后的指纹骨架出现毛刺。
除消除模板外,还需构造保留模板,保持纹线的连通性。
保持模板内容如下图所示:
(A)(B)(C)
(D)(E)(F)
图2.-1-5保留模块
具体算法如下:
从图像的左上角元素开始进行,每个像素(图中为
)均抽取出如图3-1-3所示的15个相邻像素,并且把其中8个邻域像素(
)与图3-1-4中的8个模板比较,如果和8个消除模板中的任意一个都不匹配时,保留;如果与8个中的任一个匹配,则抽取的元素再和上图中的6个保留模板进行比较,如果与其中任一个匹配的话,则
保留,否则
删去。
重复这个过程,直到没有一个像素的值被改变。
这种算法的具体实现可引入查表法,即对所要处理的像素周围模板内前15个点预先进行编码(用双字节15个位来表示,双字节的最低位存放
的值,依此类推,次最高位存放
的值),把编码值作为存储地址,按上述细化法则,预先在存储地址上存入相应的细化值(可用0、1表示,0表示保留,1表示删去)。
细化时,移动4x4的方窗内象素的编码地址去查找相应的细化值,用细化值替换当前像素值。
2.1.4、中心点的提取
对于特征点的匹配时要找一个基准点来对照比较这样更如意处理识别问题,所以取每个指纹上的中心点来作为基准点。
2.1.5、特征点的提取
对于纹路上的分差点和端点提取可以通过其的特点提取。
及在一个9宫格中一般只有一头进入一头出去。
如果发现有一头进入两头出去及分叉点,只有一头进入无出去及端点。
如此可以发现纹路覆盖9宫格三个格子的正常,覆盖4个格子的及分叉点,只覆盖2个格子的及端点。
特征提取一般是指提取指纹图像的局部特征,也就是细节点特征。
在基于细节点的指纹自动识别系统中,特征提取是在细化后的指纹图像上进行的。
特征提取的首要问题是确定细节点和它的位置,细节点的位置和细节点间的相对位置很重要,尽管每个指纹中包括将近80个细节,只要确定十几个细节点就己经足够用来识别了。
探测细节点的算法很简单。
M是待检测的点,
是它的八邻域,沿顺时针方向排列。
是细化后图像在
处的灰度。
如果M是端点,则它的八邻域满足:
,
(3.13)
如果M是分叉点,则它的八邻域满足:
,
(3.14)
这样我们就可以在细化后的图像中找到细节点(端点和分叉点),并记录它们在图中的相对位置。
2.1.6、特征点匹配
在匹配时可以采取特征点类型匹配,与中心点的距离匹配,与中心点的角度匹配。
用PointOfModel存取模板特征点的类型,相对中心点的距离,相对中心点的相位。
类型存在PointOfModel(i,1)=1表示为端点;0为分叉点。
距离的计算则为
其中px,py为特征点x,y坐标。
XofCenter和YofCenter为中心点坐标。
2.2预处理方案
预处理是将输入的(直接采集进来的)低质量、有噪音的指纹源图象处理成已细化了的清晰的二值图像[3]。
它的目的是减少低质量的图像对分类识别结果的影响,预处理中一般包括图像增强、滤波、二值化、细化等步骤。
预处理的方法通常有两种:
方法一:
先求方向图,后求频率图,最后由此得到的Gabor滤波器对图像进行滤波。
这种方法计算量比较大,在求频率图容易产生偏差,不利于单片机的实现。
方法二:
结合指纹图像自身的特点以及其源图像像素来确定该点是否为脊,直接准确地得到黑白二值的指纹脊图像。
这种方法对于从不同渠道获得的图像均有不错的效果。
在以上两种方法都要用到方向图,方向图是一种可直接从原灰度图像中得到的有用信息,在预处理、特征提取、指纹分类中有着重要意义。
我们总是在准确求得方向图的基础上运用各种滤波方法或直接找脊的方法来进行预处理。
方向图描述了指纹图像中每一像素点所在脊线或谷线在该点的切线方向,也可看作是指纹源图像的一种变化表示方法,既用纹线的方向来表示该纹线。
方向图分为两种:
一种是点方向图,表示源指纹图像中每一点脊线的方向:
另一种是块方向图,表示源指纹图像中每一块脊线的大致方向。
计算方向图的基本思想是:
在原灰度图像中每一点(或每一块在各个方向上的某个统计量(如灰度差、梯度等),根据这些统计量在各个方向上的差异,确定该点(块)的方向。
2.3方向调整
图2-3点方向示意图
设
是指纹图像中点
的灰度值,要计算该点的方向
,需要先求出
(该点临域沿d方向的灰度变化)。
=
,d=1,2,···,N(3.1)
其中:
是方向d上的第k个点;
是该点的灰度值,N是所取的方向数,n为每个方向上所取的邻点数。
这两个数的具体取值与图像的分辨率有关,一般取N=16,即取16个方向,n=8,即一个方向上取8个邻点。
点
的方向为
取值最小的方向。
对图像中的每一点求取点方向,这样便形成了指纹点方向图。
此方向求得的方向特点:
1.方向取值不是0~2
中的任意值,而是有限的几个数。
2.这种方向计算出的方向范围是0~2
,有利于求取指纹的走势。
(
与
认为是不同方向)
2.4识别方案的选择
方案一:
提取完特征点对模板中的一点在采集指纹中找一点与其相对中心点距离相差小于2,角度相差在-pi/4--pi/4且类型一样。
但发现在采集指纹中能找到20个与模板中的特征点相符的点则表明采集的指纹与模板指纹出自同一人之手。
在比较时要求对两指纹的角度是相同的。
及采样指纹满足
PointOfmatch(i,2)的个数为count1;
及模板指纹满足
PointOfModel(i,2)的个数count2;
两者只差
|count1-count2|<3
部分代码见附录。
流程图如下图2-4-1
N
Y
N
图2-4-1方案一流程图
方案二:
为了减少由于角度时系统算法变复杂则以中心点为中心画圆计算出处于此圆中的特征点个数。
但同一类型的特征点个数基本相符时则继续增大此圆的半径。
只要大部分圆内特征点基本符合则表明两指纹为同一人。
通过分析两种方案的优缺点,我采取同时使用两种方案。
使两种方案结合在一起这样可以更加准确地处理指纹识别的问题。
及特征点与中心点距离之差
|PointOfModel(i,2)-PointOfmatch(i,2)|<2
相位之差
|PointOfModel(i,3)-PointOfmatch(i,3)|部分代码见附录。
流程如下图2-4-2:
N
Y
N
Y
图2-4-2方案二流程图
最后总结出使用方案一和方案二的结合是系统的准确率和速率提高及当满足方案一时在调用方案二,只有两方案都通过则指纹通过。
第3章实验总结
3.1优缺点分析
对于方案一来说准确率不高且算法复杂执行效率不高。
但比起方案二准确率相对较高。
方案二算法简单执行效率高。
当两者结合会使准确率提高。
遇到大多数指纹执行效率也大大提高。
3.2实验收获
通过对本次课程设计的制作。
我学会了用Matlab软件的简单操作。
同时提高了我的C语言的编写能力。
对本次课设的主题有了相当的了解。
对指纹识别系统的基本思路有了清晰的认识。
从对其感到陌生到熟悉的过程有很到的收获,对我下次遇到陌生的问题是有了相当的适应能力与自信。
知道了遇到陌生的问题只要静下心来思考就会发现也就这么简单。
不用想的太复杂。
参考文献
【1】王建永.指纹图像的特征点提取与匹配【D】大连理工大学.2003。
【2】董日荣.指纹识别系统核心算法的研究【D】华南师范大学.2004。
【3】查振元、朱华炳.电子门禁系统组成.机电产品开发与创新.2003.
【4】刘莎、姜长生.构建基于IntelPXA255的指纹识别系统.微处理机.2005.
【5】李建华,马小妹,郭成安,基于方向图的动态闽值指纹图像二值化方法.大连理工大学学报.2002
【6】冯星奎,李林艳,颜祖泉.一种新的指纹图像细化算法.中国图像图形学报.1999
【7】吕凤军.数字图象处理编程入门一一做一个自己的Photoshop.北京:
清华大学出版社,1999
【8】刘文星,王雄沂,母国光.纹线跟踪及其在细化指纹后处理中的应用.光电子·傲光,2002
【9】刘家锋,唐降龙,赵泉.一个基于特征点匹配的联机指纹鉴别系统.哈尔滨工业大学学报,2002
【10】简兵,庄镇泉等.基于脊线跟踪的指纹图细节提取算法.电路与系统学报,2001
【11】罗希平,田捷.自动指纹识别的图像增强和细节匹配算法.软件学报,2002-5
【12】乔治宏.基于细节结构的指纹特征提取及匹配算法研究.北京:
北京工业大学硕士学位论文,2004-5.
附录部分核心代码及结果
1、记录模板在相应圆内的特征点个数
forj=10:
10:
200
count(j/10)=0;
count2(j/10)=0;
fori=1:
PointOfModelCount
if(PointOfModel(i,2)j-10)
ifPointOfModel(i,1)==1
count(j/10)=count(j/10)+1;
plot(Dpy(i),Dpx(i),'or');
else
count2(j/10)=count2(j/10)+1;
plot(Fpy(i-size(Dpx,2)),Fpx(i-size(Dpx,2)),'og');
end
end
end
End
2、记录采样指纹在相应圆内的特征点个数
forj=10:
10:
200
countt(j/10)=0;
countt2(j/10)=0;
fori=1:
PointOfMatchCount
if(PointOfMatch(i,2)j-10)
ifPointOfMatch(i,1)==1
countt(j/10)=countt(j/10)+1;
else
countt2(j/10)=countt2(j/10)+1;
end
end
end
End
3、判断在相应圆内特征点数量是否一致
Counto=0;
forj=10:
10:
200
disp(count(j/10));
disp(count2(j/10));
disp(countt(j/10));
disp(countt2(j/10));
if(abs(countt(j/10)-count(j/10))<3&abs(countt2(j/10)-count2(j/10))<3)
Counto=Counto+1;
end
end
4、当圆内特征点数量符合则进行比较单个特征点是否符合
ifCounto>15
fori=1:
8
Countt(i)=1;
end
fori=1:
PointOfModelCount
forj=1:
PointOfMatchCount
if((PointOfModel(i,1)==PointOfMatch(j,1))&(abs(PointOfModel(i,2)-PointOfMatch(j,2))<2))
5、找寻不同相位上的符合特征点数
if((abs(PointOfModel(i,3)-PointOfMatch(j,3))Model(1,Countt
(1))=i;
Countt
(1)=Countt
(1)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-pi/4)Model(2,Countt
(2))=i;
Countt
(2)=Countt
(2)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-pi/2)Model(3,Countt(3))=i;
Countt(3)=Countt(3)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-3*pi/4)Model(4,Countt(4))=i;
Countt(4)=Countt(4)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-pi)Model(5,Countt(5))=i;
Countt(5)=Countt(5)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-5*pi/4)Model(6,Countt(6))=i;
Countt(6)=Countt(6)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-6*pi/4)Model(7,Countt(7))=i;
Countt(7)=Countt(7)+1;
end
if((abs(PointOfModel(i,3)-PointOfMatch(j,3)-7*pi/4)Model(8,Countt(8))=i;
Countt(8)=Countt(8)+1;
end
end
end
End
6、对最多符合特征点数的相位把其符合特诊点标明
max=1;
fori=2;8
if(Countt(i)>Countt(max))
max=i;
end
end
if(Countt(max)>20)
Count=Countt(max);
fori=1:
Countt(max)-1
ifPointOfModel(Model(max,i),1)==1
plot(Dpy(Model(max,i)),Dpx(Model(max,i)),'or');
else
plot(Fpy(Model(max,i)-size(Dpx,2)),Fpx(Model(max,i)-size(Dpx,2)),'og');
end
end
disp('PointOfMatchpass');
else
disp('Notthesamefingerprint');
end
else
disp('Notthesamefingerprint');
end
holdoff;