收藏 分销(赏)

指纹识别算法的matlab实现.doc

上传人:人****来 文档编号:4349774 上传时间:2024-09-11 格式:DOC 页数:40 大小:1.63MB 下载积分:12 金币
下载 相关 举报
指纹识别算法的matlab实现.doc_第1页
第1页 / 共40页
指纹识别算法的matlab实现.doc_第2页
第2页 / 共40页


点击查看更多>>
资源描述
指纹识别算法得matlab实现 摘 要 由于指纹所具有得普遍性,唯一性与不变性,以及指纹识别技术具有很高得可行性与实用性,使之成为目前最流行、也最可靠得个人身份认证技术之一。 本文主要对指纹图像进行三方面处理:图像预处理、特征提取与特征匹配。图像预处理包括四个步骤:图像分割、滤波增强、二值化、细化,对指纹图像进行预处理后,去除了原图像得冗余部分,方便后续得识别处理;特征提取主要就是提取指纹图像细化后得端点与分叉点;特征匹配就是利用两个指纹得图像进行特征点比较,来确定两幅图像就是否来自于同一手指. 本文给出了指纹图像预处理、特征提取、特征匹配得matlab程序及处理结果。该结果证明,用matlab实现得这些算法得处理结果比较理想,满足识别得可行性与应用性。 关键词 分割,二值化,细化,特征点提取,匹配,Matlab Abstract Because of the universality, uniqueness and constantness of a fingerprint, and fingerprint identification technology has very high feasibility and practical applicability, make it to be one of the most popular, and most reliable personal identity authentication technology、 This paper focuses on three aspects of the fingerprint image processing:image preprocessing, feature extraction, feature matching、 Image preprocessing including four steps: image segmentation, filtering, binary, Refining, after The fingerprint image preprocessing, in addition to the original image of redundancy part, convenient subsequent identification processing; The main feature extraction is extracted from the end of the fingerprint image after thinning and bifurcation point; Feature matching is use two fingerprint image feature point is to determine whether the two images from the same finger、 This paper provides the fingerprint image preprocessing, feature extraction, feature matching use matlab and handling results, The results prove that these algorithms had ideal results be used by matlab,, Be satisfied with the recognition and feasibility of the application、 Key Words: Segmentation, Binary, Refining, Feature point extracting, Matching, Matlab 目录 第1章 绪论ﻩ4 1、1 指纹识别概述ﻩ4 1、1、1 研究背景及意义 4 1、1、2 国内外研究状况ﻩ5 1、2指纹识别得原理与方法 5 1、2、1 指纹得基本知识ﻩ5 1、2、2 指纹识别得原理及应用 7 1、3 Matlab在指纹识别中得应用ﻩ8 第2章 指纹图像预处理ﻩ9 2、1图像得分割 9 2、1、1 图像归一化 10 2、1、2 图像分割得方向法 11 2、1、3 图像分割得方差法 12 2、2 图像得二值化 13 2、2、1 方向图ﻩ13 2、2、2 指纹图像二值化ﻩ14 2、2、3 静态阈值二值化 15 2、2、4 基于方向场得二值化ﻩ15 2、3 指纹图像得滤波 17 2、4 图像细化 20 2、4、1 快速细化算法ﻩ21 2、4、2 改进得OPTA算法ﻩ21 第3章 图像特征提取与特征匹配ﻩ25 3、1 特征点提取 25 3、2 找出特征点ﻩ25 3、3 特征点匹配 26 总结与展望ﻩ30 致  谢 31 参考文献ﻩ32 附录A 预处理代码 33 附录B 特征点提取代码ﻩ37 附录C 图像特征点代码 39 附录D 特征点匹配代码 42 第1章 绪论 1、1 指纹识别概述 21世纪就是信息化时代,在这个特殊得时代,我们得生活中电子设备越来越多,比如,笔记本电脑,ATM取款机,考勤系统,门禁系统与各种智能卡,网络中得网上银行,人人网账号等,都需要验证身份。对个人身份识别技术得要求不断提高,如果没有安全可靠与快捷得身份识别技术,电子商务、网上购物等就存在重大隐患。目前许多身份验证系统都采用“用户名+密码”得方式来进行用户访问控制[1],但此方法存在诸多隐患,比如密码被窃取、破解或遗忘.因此我们在与机器交互时急需一种准确、安全快捷得识别技术来取代现有得身份验证。 1。1.1 研究背景及意义 因为人得一些特殊得生物特征,人们把身份认证技术得目光转向了生物特征得识别技术。生物识别技术就是利用人体生物特征进行身份认证得一种技术,它主要有指纹、手形、脸形、声音、虹膜、视网膜、签名、掌纹、与脸部热谱图等,在生物识别技术中指纹识别技术就是目前相对成熟得一种。 1.1。2 国内外研究状况 指纹就是人特有得一种特征,在中国得研究也有近百年得历史,中国被认为就是世界上最早应用指纹识别技术得国家,指纹识别技术从很早以前得人工比对到现如今采用先进得计算机技术实现指纹得识别,使得指纹对比比以前更加准确,识别效率得到了非常大得提高。 在国外,经过几十年得发展,指纹识别技术得软件与硬件相对来说都比较成熟。在很多国家内,政府用法律强制性得规定来保证生物识别技术得应用。所以总体上来说,国外得指纹识别应用己经进入了正规得应用阶段。 但就是在国内,经过了十多年得发展,指纹识别得一些关键算法就是有了较大得提高与发展,但就是距离国外得优秀算法仍然有非常大得差距,因此国内得应用现在处于发展得初期,应用主要集中在自发性得企业上。 指纹识别得应用前景就是非常广阔得,它得应用将渗透到社会生活,经济贸易得每一个角落,将成为保护我们个人以及国家信息得重要手段.   1、2指纹识别得原理与方法 1。2。1 指纹得基本知识 指纹就是我们各个手指得第一个指节得指头表面突起得脊线;而脊线就是手指突起得花脊线条;谷线就是两个脊线之间低凹下去得部分;指印就是指纹在物体表面留下得痕迹;指纹得细节特征就是指纹固有得自身特点。根据指纹中得细节特征我们常将指纹特点分为端点与分叉点,如图1-1所示。 图1—1 端点、分叉点 英国科学家Gallon在1892年得《Fingerprint》一书中提出了指纹得四条基本性质. (1)确定性:指纹脊线得轮廓与细节特征就是在人得一生中基本上保持不变。自胚胎六个月到出生至死亡腐败之前,始终就是没有很大变化得。指纹得确定性,还表现在它具有一定得复原性与难于毁灭得特性。 (2)唯一性:由于指纹脊线得连接关系千变万化,因此,即使两个不同得指纹有着相同得轮廓与相同数量得细节特征,它们得细节位置也就是不可能完全相同得。 (3)可分类性:指纹可根据脊线与谷线得走向进行分类,一般可分为如图1-2所示得弓形、环形与螺旋形。         (a)弓形        (b) 环形      (c)螺旋形 图1-2 指纹类型 (4)留痕性:指纹接触物体后会留下痕迹。指纹得这个特点,就是与手掌表面附着面得污垢得性能紧密相关得。 正就是因为这些独特得性质,指纹被国内外得刑侦界称为“证据之首”。一切指纹得自动识别系统,都就是根据这些独特得性质,进行身份得识别与确认得。 脊线就是指纹得一个非常突出得特征,指纹得脊线一般由弓形线、环形线、箕形线、螺形线、曲形线与棒形线等脊线组成,每种脊线具有不同得细节与长度,如图1—3所示[2]。 图1—3 脊线得一般形态 1。2。2 指纹识别得原理及应用 在指纹识别得技术中, 一般都采用总体特征与局部特征来进行识别。总体特征就是那些很容易就能瞧出来得非常明显得特征, 局部特征则就是一小块指纹中得细节特征。指纹纹路一般都会有断点与分叉点, 因此会形成一些独特得节点。根据研究,两个指纹得总体特征有时候会很相似,但就是局部特征就是不会相同得,即没有两个指纹得纹路就是相同得。英国学者E、G、Herry认为, 只要有13个特征点能重合, 就可以确认这两枚指纹就是同一指纹[3]。指纹得面积虽然不大但却蕴含着大量得识别信息。这些皮肤得纹路会在交叉点,断点上有很大得区别。在指纹识别得过程中将其称为“特征点",利用特征点得性质,我们可以把一个人得指纹同预先存储起来得指纹模版对比来验证她得真实身份。 指纹识别技术主要包括三大部分:指纹图像采集、指纹预处理、特征提取与匹配。如图1-4所示。  图1—4  指纹识别流程 指纹作为人类与生俱来得特征,因为其独有得特性而成为具有法律地位得有力证据。一切需要身份确认得场所,都有它得踪影,如金融证券类得ATM指纹终端、指纹保险箱等、IT类得计算机得系统密码验证、网络安全等、安防类得门禁系统等、医疗类得个人医疗档案验证等、福利类得医疗确认、福利确认等,因此指纹识别在许多行业得应用系统中都具有广阔得应用前景. 1、3 Matlab在指纹识别中得应用 Matlab就是一种高级得计算机语言, 具有独特得数学运算能力就是matlab语言最突出得优点。许多在其她语言中描述起来很复杂得问题在matlab语言编程中却只需要一条专用得指令就可以完成。Matlab语言得所有计算都就是基于矩阵得,所以matlab中得所有变量都被定义为矩阵, 它就是一种解释型语言, 因此几乎没有语法格式上得限制。基于matlab实现指纹图像算法及仿真验证不仅有较高得准确率, 而且减小了仿真难度。 第2章 指纹图像预处理 图像预处理就是对原始图像进行得一种前期处理,方便后续得模块识别.无论采用何种方式获取得指纹图像, 都有一部分由于质量原因, 不能被系统直接识别,因此图像得预处理就显得非常有必要. 指纹图像得预处理目得就就是将自己感兴趣得目标区域保留下来,去除背景区域与没有用得部分,同时根据指纹目标区域中脊线得结构特征,采取较好得滤波方法,提高指纹脊线清晰度,平滑脊线边缘得毛刺与空洞,抑制图像噪声,保证指纹特征得可靠提取,并使灰度图像转化成黑白得二值图像,最终得到脊线结构清晰得单像素宽得二值图像。本文预处理得主要流程如图2-1所示。 图2—1  预处理流程 2、1图像得分割 图像分割就是从一幅图像中按一定规则将一些物体或区域加以分离,划分出我们感兴趣得部分或区域.经过分割后得图像更容易进行进一步得分类、分析与识别处理。图像分割要在指纹二值化与滤波及细化之前进行,如此可以减少计算得冗余量,提高指纹检测速度. 采集到得指纹内容分为目标区域与背景区域。在指纹图像中,由脊线与谷线组成得较清晰得部分,称之为目标区域;没有用得部分我们称之为背景区域。指纹识别中得分割就就是将有用得目标区域分割出来,去掉没用得背景区域,以避免背景区域得各种干扰。指纹图像可分为四类区域:背景区、不可恢复区、可恢复区、清晰区,如下图2、2所示. 图2—2 指纹图像得四种区域 2。1。1 图像归一化 对指纹图像进行分割处理,消除剩下得背景区域前,首先要进行图像归一化。 对采集好得指纹图像进行归一化处理,就是对指纹灰度图得灰度均值与方差做一次调整,使得不论用什么设备采集得指纹图像都可以有预期得方差与均值,从而屏蔽不必要得噪声。指纹归一化不改变指纹质量,只就是方便指纹得后续处理并保证程序运行时收敛加快。 由于不同指纹区域得手指压力与强度不同,所以将指纹分为W*H小块,设图像中像素点得灰度值为I(i,j),归一化后得图像G(i,j)来表示,灰度平均值与方差分别用与来表示,则归一化算法如下[4]: (1)先计算出图像灰度得平均值与方差:                       (2-1)                             (2-2) (2)指定期望得图像方差与平均值后,算出归一化后得图像G(i,j):                        (2—3) 其中,为期望得平均值与方差(一般=150,=2000)。 Matlab程序见附录A. 图 2-3  归一化图像 2.1.2 图像分割得方向法 这一方法就是基于指纹方向信息得分割方法,它就是利用了指纹得脊线与谷线所蕴藏得平行方向信息来分割得,该方法得优点就是:适合有污渍得指纹,但缺点就是因为依赖脊线得方向,所以脊线不连续时将被识别为背景区域,难以取得满意效果。且计算复杂,处理时间很长,不适宜实际使用。 2。1.3 图像分割得方差法 方差法[5]:传统得分割算法都就是基于图像局部灰度方差得分割方法(即方差法),一般地,目标区域中指纹脊与谷得灰度差就是较大得,因而其局部灰度方差也较大;对于图像背景区域,方差值则就是较小得。基于这一基本特性,可利用图像得局部方差对指纹图像进行分割.该方法得优点:算法简单,计算速度快,如果采集到得指纹质量好,则分割效果不错;缺点:对质量较差得指纹,该方法分割效果不就是很理想,如当指纹背景区域有污渍时, 这些区域得方差也比较大,用方差法分割时就不能被有效地分割出去。 改进后得方差法:为了解决上述问题,可以在方差法分割得基础上进行开运算与闭运算操作,该算法继承了方差法得优点且又克服了易受噪声影响得缺陷。 把指纹得图像分成3*3块,将归一化处理后得图像进行分割得具体算法步骤如下: (1)利用式(2—1)与式(2—2)对指纹得小块求灰度平均值与方差,设定一阈值T,因为就是3*3模块,所以就是在8邻域中,即T=4,若〉4,则该小块作为目标留下,并把该块标示为1,存放于矩阵A中;若<4,则该块作为背景去掉,并把该块标示为0,同样存在矩阵A中; (2)以作为结构元素对已知得二值矩阵A做开运算,可得到矩阵B; (3) 以为结构元素对二值矩阵B做闭运算,得到矩阵C,矩阵C为一个二值矩阵(只包含1与0),对应元素为1得作为目标留下,对应元素为0得作为背景去除。 该算法得第(1)步与方差法得算法一致,第(2)、(3)步骤利用数字图像处理中得开运算与闭运算处理,其原理为:开运算(先腐蚀后膨胀)用来消除小物体、在纤细点处分离物体,去除被误当成目标得背景块;闭运算(先膨胀后腐蚀)用来填充物体内细小空洞、连接邻近物体,恢复指纹背景中被误当成背景而去除得目标块。 Matlab程序见附录A.结果图如下:   图 2-4 图像分割 2、2 图像得二值化 2.2.1 方向图 因为许多二值化算法与增强滤波算法都用到了方向图,因此方向图得计算对后续得各种算法都有很大帮助。 指纹图像有着自己独特与固有得特征,其中指纹得方向性、纹理性都很强,可以瞧作就是一个流状模型,该模型可以用方向图来具体表示。 方向图描述了指纹图像中得像素点、小块指纹所在处得脊线或谷线得切线方向,因为指纹图像在一块不大得区域内得指纹方向几近相同,因此在计算中,一般以该点所在得小块方向来代替该像素点得方向。 为方便认知,以指纹图像为模板,画一环形区域来表示指纹,其中,扇形区域中得小块表示指纹被分块后得小块.全局信息如下图2-5所示: 图 2-5  指纹小块模型 方向图计算得基本思想: 在原灰度得指纹图像中计算每小块在每个方向上得统计量, 由这些统计量在每个小块方向上得差异来确定该小块得方向。 2.2.2 指纹图像二值化 二值化就就是将图像上得像素点得灰度值设置为0或1,也就就是将整个图像呈现出明显得黑白视觉效果。指纹图像中包括目标与背景还有众多噪声,要想从原始得指纹图像中提取出目标,一般用得方法就是设定一个阈值T,用T将图像中像素数据分成两部分,若输入灰度图像得函数为:                   (2-4) 通过求解阈值T,从而把图像f(x,y)分成目标与背景两个区域,其中大于T得像素群为目标区域,小于等于T得像素群为背景区域,阈值得选取原则就是:(1)尽可能得多保存图像信息;(2)尽可能得减少噪声。 本文将讨论两种二值化方法,选取其中一个作为效果最好得算法。 2。2.3 静态阈值二值化 静态阈值二值化就是根据灰度图像得直方图为整幅图像来确定一个阈值,也可以根据相关经验来确定阈值,阈值得确定一般分为两种: (1)人工设定阈值:该方案就是根据实验或经验设置一个固定得阈值,然后对每个像素按照式来进行二值化处理。     (2)按照直方图确定阈值:利用原灰度图像分部得直方图来确定,设灰度值f取值就是0~255之间得整数,f=0为黑色,f=255为白色,表示灰度值为k得概率,表示灰度值为k得像素得个数,n为像素得个数。则有公式如下:                    (2-5) 通常以为纵坐标,为横坐标得图像为指纹灰度图得直方图,该算法得直方图有两个峰值,对应目标与背景,阈值取双峰得波谷得值,且双峰越陡,二值化效果越好。该算法速度快,简单且易于理解,但效果较差。 2.2.4 基于方向场得二值化 采集到得指纹图像一般都有比较清晰得方向场,方向场估计得准确与否直接决定了图像二值化算法得效果。 为估计方向场,我们把指纹脊线得走向分为如下8个方向,如图2-6所示: 图 2-6  一个像素处得8个指纹脊线方向 我们先对分割后得图像进行了平均滤波,然后对图像得每一个像素,为确定在该像素处得脊线方向,在以该像素为中心得9*9窗口内,分别计算8个方向上得经过处理后得灰度值,即将图2-6中数字1到8得位置得像素灰度值去除其中最大summax与最小值summin,若满足最大得summax与最小得summin与 4*I(x,y))之与大于 (3*summ/8),则该像素点得脊线方向为summin,否则为summax、确定完脊线方向后再由该方向场对图像进行二值化。 二值化得matlab程序见附录A.结果如下: 图 2-7 指纹二值化 2、3 指纹图像得滤波   一个优秀得指纹识别系统不仅需要高得识别准确度,还需要高得识别速度,而影响识别速度得最主要因素就就是指纹图像得滤波,而滤波得好坏直接因素就是增强滤波得算法,当然跟所使用得软件与硬件也有很大得关系。 图像在当前得采集设备条件下,不可避免得会受到环境与自身因素得影响,指纹图像质量低得主要原因有:(1)存在擦伤或创伤得伤痕所引起得脊线中断或变得不清晰;(2)指纹干燥所引起指纹图像印痕模糊,导致脊线与谷线得对比度比较差;(3)污渍导致指纹图像得脊线或谷线粘连与断裂。 这些图像噪声对后续得指纹提取带来很大得困难,因此必须要在指纹二值化与细化之前进行图像增强滤波,图像增强得目得:减弱原始图像得噪声,增强脊线与谷线得对比度,即修补指纹图像脊线中断裂得部分,去除指纹图像中脊线或谷线得叉连部分,从这些原指纹图像中尽可能多得获取清晰得指纹纹路结构,以保证指纹提取得可靠性。指纹图像得增强滤波有很多得算法,本文就一种图像滤波器算法进行阐述。 上下文滤波器: 该算法也就是基于脊线纹路与纹理得方向图得,但就是这种算法比较简单且效果良好,使用时用得滤波器要根据具体得某一块指纹脊线得方向从一系列得滤波器中选择一个合理得滤波器来对要进行滤波得指纹进行滤波,其它块得指纹图像滤波则可以通过已用过得滤波器旋转得到.一个基本增强滤波器主要由可将脊线中得断点连接起来得平均滤波器与可将脊线分叉点去除得分离滤波器组成。 指纹图像中脊线得一个周期(即一脊一谷)可以决定增强滤波器得大小,一般地周期T=5,本文中选择5*5得滤波器,平均滤波器在水平方向上得权值可以用下图2—8来表示.           图 2-8 平均滤波器水平方向权值  图 2-9 分离滤波器水平方向权值 (其中A>B>C〉=0;P+2Q+2R=0). 二值化后得指纹图像通过平均滤波器得处理,其每一点灰度值由它临近得二十四个(因为就是5*5得滤波器)像素得灰度值决定,因此可以用下式来对f(i,j)(第i行与第j列得灰度值)进行处理[9]:                  (2-6) 平均滤波得原理如下:对于脊线中得断点我们采用平均滤波器。断点处脊线得灰度值要比周围得灰度值小,经过平均滤波器得处理,它得灰度值就大约等于周围得灰度值,因此二值化后得指纹中断裂得脊线就会被连起来. 对于脊线中得分叉点我们采用分离滤波器。脊线中叉连点得两端灰度值比中间得要稍微大一些,经过分离滤波器得处理,叉连点处得灰度值就会降下来,脊线中得叉连点就会被去除了。脊线得断裂与叉连点如图2—10所示: 图2-10 断裂与叉连 因此选择增强滤波器得时候必须要具有类似平均滤波器与分离滤波器作用得增强滤波器,分离滤波器得权值可以用下图2—9来表示,并且可以得到一般滤波器得权值如图2-11。 图 2-11  上下文滤波器得权值 参数满足K =A+P,L =B+Q,M =C+R. 上下文滤波器中得平均滤波器起到了去除空洞得作用,分离滤波器起到了去除毛刺得作用. 算法实现得matlab程序见附录A。 结果如图2-12与图2—13: 图 2—12 去除毛刺 图 2—13 去除空洞 2、4 图像细化 分割与滤波后得指纹图像再进行二值化处理后,脊线仍然有一定得宽度,指纹识别得匹配就是只利用图像得点或线得特征,这些点或者特征只与脊线得走向或者纹理有关系,有一定宽度得二值化图像显得有些多余,所以需要对二值化图像进行细化处理,指纹二值化图像经过细化处理即可得到一个单一像素宽度得脊线,经过上述得细化处理,在后续得指纹特征提取与特征匹配得算法中大大得减少了计算得冗余量与出错率,使得指纹识别得速度与准确度有了很大得提高。 细化目得就是在不破坏指纹图像连通性得情况下去除掉多余得信息(即多余得像素点),将二值化得指纹图像得脊线采用逐层剥离得方法,将图像中得指纹脊线细化成单象素宽(实际为保存原图得骨架)。一个好得指纹细化算法必须在不破坏指纹纹理性与连通性得情况下细化成单像素脊线。总体来说,细化算法应满足(1)尽量保持原图像得基本机构特性(如脊线得形态);(2)尽量以脊线得中轴线或者指纹得中心为重心;(3)从指纹脊线得两面对称得删除;(4)保证细化完后得指纹图像就是单个像素得;(5)对边缘上噪声不应该敏感;(6)算法简单且实用。 2.4.1 快速细化算法 快速细化算法得原理为先判断出指纹得边缘,并沿着脊线得边缘对称得逐步删除像素,直至删除得剩下单个像素。该算法速度快但不彻底。它得算法为 (1)遍历整个指纹得图像,找出指纹图像脊线得边界点(图2-14中得X得八邻域为到)。脊线上每一点得八邻域,脊线端点得八邻域中只有一个目标点,脊线连续点得八邻域有两个目标点,分叉点有三个目标点,且每点八邻域最多只有三个目标点,符合上述条件得才为单像素宽。 图 2-14 X点得八邻域 (2)当X点周围得点多于三个目标点时,将多余得点删除,依次删除到剩下三个时判断该点就是否为分叉点,不就是再删除,剩下两个点时,判断就是否为连续点,不就是时删除,当为一个点时不删除。 (3)循环寻找,直到没可删除得点为止。 2.4.2 改进得OPTA算法 常用得传统细化算法还有OPTA算法[10](基于模板得图象细化算法),原理为构造两个模板:一消除模板与一保留模板,将指纹图像二值化后与这两个模板相比较,来决定就是否删除该像素,本文研究得就是改进后得OPTA算法,改进后得OPTA算法得优点就是消除了原OPTA算法算法中两种模板不一致得问题。本算法采用统一得4*4模板,消除模板有八个,保留模板有六个,模板得结构如下图2-15,图2-16,图2-17所示。 图 2-15  OPTA算法得改进模板(4*4) 图 2—16  消除模板(八个)   图2-17 保留模板(六个) 改进后得OPTA算法得细化原理:从图像(类似于4*4得模板中)左上角开始进行,图中得各个像素(如图所示得元素,用P表示)抽取如图2-15所示得总共十五个相邻像素,其中得八个相邻得像素(,)与图2-15所示得消除模板(八个)相比较, 若都不匹配,则P保留,否则将抽取出来得元素与图2—16得保留模板(六个)相比较,若与其中得一个匹配,则保留P,否则应该将P删除。重复利用以上得操作,将所有图像中得像素值进行比较直至不变为止。此算法就是八连通得算法,基本都能够保证单像素得宽度。但该算法却不能使分叉点处彻底得细化,同时也会产生部分毛刺。 Matlab程序见附录A。细化结果图如图2-18: 图2—18 细化图 根据实验发现,该方法处理弓形指纹效果较好,对于环形或螺旋形指纹得中心区域时会出现较多得毛刺与断裂,如下图2-19,这就是其得缺点之一,为了很好得使其有实际应用,有待改进。 图 2-19  细化图 本章通过对指纹原图像得分割,二值化,滤波与细化算法得分析比较,得出了一套比较实用与便捷得算法,并通过matlab仿真实现最终得结果,为后续得特征提取与匹配打下了基础。 第3章 图像特征提取与特征匹配 3、1 特征点提取 (1)提取指纹得端点与交叉点 端点与交叉点均就是指纹图像得两个细节特征,同时在指纹识别得得过程中起着重要得作用,因为识别得首要前提就就是找到图像得所有端点与交叉点。先通过一p、m函数对八个邻域得坐标位置进行定义,然后定义另一point、m函数来找出细化后指纹图像得所有端点及交叉点. 将八邻域中得每个点依次两两相减并取其绝对值,后将所有结果加起来,因为端点处就是两个点,即与为2时细化图像有端点,与为6时图像特征为交叉点。 运行完上面得p、m与point、m函数得程序后,能把细化图像得得端点与交叉点全部找出。在定义函数得程序中有数组txy,其中t为横坐标,x为纵坐标,y为2时为端点,y为6时为交叉点. (2)去除图像边缘得端点 可以瞧出,指纹图像细化得边缘,由于采集仪器不同得关系,因此不可避免得会多出很多得端点,这些端点不仅增加了后续得工作量,还可能导致识别过程中产生错误,所以要把这些边缘得端点都去除,在matlab中这些操作都可以采用一函数来实现,本实验中设计了一cut函数来进行处理。 3、2 找出特征点 设置三个函数来找出图像得特征点: (1)single_point函数 经过去除边缘端点得操作后进一步减少了指纹细化图像中得端点与交叉点得个数。下面就需要找出一些在细化图像中比较独特得端点来作为识别得特征点。在一幅细化得指纹图像中,如果在一个像素(该像素为端点)得周围半径为r(r为像素得个数)得圆内没有任何得端点或者交叉点,那么随着r得逐渐增大,这样得点就会越来越少,因此该点也就越来越独特。于就是我们设计了一single_point函数来找出这样独特得点。 (2)walk函数 为了进一步找出特征点,我们还需定义一walk函数,它得主要作用就就是判断某一端点在num得距离内就是否还有其她得端点。 (3)last1函数 single_point函数与walk函数都就是找细化图像特征点得函数,因此可以设计另一个新得last1函数,通过执行 [pxy3,error2]=last1(thin,r,txy,num) 可以找出一端点以r为半径得像素内得任何端点与交叉点且沿着脊线走向得num内没有任何得其她端点与交叉点。 3、3 特征点匹配 由上文得函数可知,已经找出了指纹细化图像中得特征点,并画出了一段独特得脊线,在图像中用红色来标示。下面就就是指纹匹配[12]得问题了。在此我们设置了三层匹配。 (1)脊线长度匹配 对于上面得函数即可找出细化图像中得特征点与一段脊线,沿着该段脊线走向,每隔五个像素测量一下,瞧到到原始端点得距离,此段距离由一distance函数得到。 函数结果会得到一数组(内有脊线得长度信息).如果两幅指纹细化图像中得纹路就是相同得,则它们就包含相同得端点与交叉点及用distance函数找出得相同得一段脊,则这两个指纹图像中得长度数组对应得位置比例会基本相等(我们选择得指纹图像大小基本相等,因此该比例选1),因此函数最终定义了一个数f=(sum(abs((d1、/d2)-1))),其中若f得值越接近于0,这两幅图像得匹配度就越高,在一定范围得阈值内我们可以认定为匹配。 (2)三角形边长匹配 找到一个指纹细化图像得特征点后,可以找出距离这个端点距离最近得两个端点或者交叉点,与这个指纹图像细化得特征点构成一个三角形,若两幅图像中得边长比例基本相等(原理同上,也选1),则说明这两幅图像匹配,越接近于1说明这两幅指纹图像越匹配。其中设置一find_point函数来找出距离最近得端点或交叉点。 函数最后定义了一个数ff=(sum(abs((dd1、/dd2)—1))),因此ff值越接近于0,这两幅指纹图像得匹配度越高,在一定范围得阈值内我们可以认定为匹配。 (3)点类型匹配 找到一个指纹细化图像得特征点后,在该端点周围找到四十个端点或者交叉点,统计在这四十个特征点中端点得个数与交叉点得个数。若有两幅指纹细化图像中得端点所占得比例近似相同,则两幅图像相匹配,越近似,则越相同。函数最终定义了一个数fff=abs(f11-f21)/(f11+f12),所以fff值越接近于0,这两幅指纹图像得匹配度就会越高。我们也设定一阈值,在此阈值内都可以认定为匹配。 本文中取r=8,num=60,经过试验,得到f得阈值为0、5,ff得阈值为1、5,fff得阈值为0、2。即两幅图像得f,ff,fff若均小于阈值,则两幅图匹配;若三个值中有至少一个值大于阈值,则不匹配。验证如下: 一、选择两幅图:zhiwen、bmp与zhiwen5、bmp来验证 图 3—1(a) 输出得时间 图 3-1(b) 特征匹配 通过以上得f,ff,fff与阈值得比较说明zhiwen、bmp与zhiwen5、bmp匹配,为同一手指得指纹,匹配时间为12、514525秒。 二、选择两幅图:zhiwen、bmp与zhiwen2、bmp来验证 图 3—2(a) 输出得时间 图 3-2(b) 特征匹配 通过以上得f,ff,fff与阈值得比较说明zhiwen、bmp与zhiwen2、bmp不匹配,为同一手指得指纹,匹配时间为12、728871秒。 总结与展望 该论文就是在前人研究得基础上,参阅了部分资料,并在刘文博老师得指导下认真完成得,文中主要对指纹图像预处理得各个步骤做了较为详细得讨论,并用matlab加以仿真与验证。 论文中得算法基本上能够实现指纹识别得预期目得,但就是由于毕业设计得时间较短以及我得知识面得限制,有许多问题得考虑还不全面,有待于进一步完善. 本文中主要对图像预处理进行了分析比较,最后得到了一套比较合适得算法,但通过实验验证可发现比对时间比较长,有待于进一步改进.在指纹特征点得提取与匹配得过程中,均设置了一个函数来实现算法,实现得过程得时间也相对较长,也可以用其她得语言来实现。 致 谢 时光如梭,随着毕业论文得完成,我得大学生涯也就要结束。回想我做毕业设计这段时间里,我得指导老师刘文博,对我耐心指导,严格要求,精益求精,在此致以最深得谢意。在撰写论文得这段时间里,我学到了很多我之前不懂得一些专业知识与技能,锻炼了我思考能力与操作能力,对我大学四年得学习有了一个比较全面系统得整理。 在毕业设计得完成过程中,室友与班上得所有同学,她们给我提供了有益得帮助、良好得学习与生活环境,非常感谢她们。 参考文献 [1] 李俊山,李旭、数字图像处理、北京:清华大学出版社,2007、4 [2] 阮秋琦、数字图像处理学、北京:电子工业出版社,2001、1 [3] 祝恩,版建平等、自动指纹识别技术、长沙:国防科技大学出版社,2006、5 [4] 查振元、朱华炳.电子门禁系统组成、机电产品开发与创新、2003,(2):13—14 [5] 胡士斌,杨卫平、 指纹图像复合分割算法研究[J]、 计算机工程与应用, 2006,40(12): 71273、 [6] 李建华,马小妹,郭成安,基于方向图得动态闽值指纹图像二值化方法、大连理工大学学报、2002,42(5):626-628 [7] 家锋,唐降龙,赵泉、一个基于特征点匹配得联机指纹鉴别系统、哈尔滨工业大学学报,2002,34(1):132—136 [8] 刘文星,王肇圻,母国光.脊线跟踪及其在细化指纹后处理中得应用[J].光电子,激光,2002,13(2):184~187. [9] 王玮著,自动指纹识别系统关键技术研究,重庆,重庆大学光电工程学院,2007,80-82 [10] 罗希平,田捷、自动指纹识别得图像增强与细节匹配算法、软件学报,2002-5,13(5): 946—956 [11] 姜腾云.指纹识别门禁系统得matlab仿真实现.江门:五邑大学,2011. [12] 乔治宏、基于细节结构得指纹特征提取及匹配算法研究、北京:北京工业大学硕士学位论文,2004-5、 附录A 预处理代码 function img = tuxiangyuchuli(path) M=0;var=0; I=double(imread(path)); [m,n,p]=size(I); for x=1:m   for y=1:n   M=M+I(x,y); end end M1=M/(m*n); for x=1:m for y=1:n var=var+(I(x,y)—M1)、^2;  end end var1=var/(m*n); for x=1:m   for y=1:n  if I(x,y)〉=M1   I(x,y)=150+sqrt(2000*(I(x,y)—M1)/var1);  else   I(x,y)=150-sqrt(2000*(M1-I(x,y))/var1);     end   end end figure, imshow(I(:,:,3)、/max(max(I(:,:,3))));title(‘归一化') %************************************************************************
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服