【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

【老生谈算法】基于matlab指纹识别系统设计与算法原理(论文+程序源码)

大家好,今天给大家介绍基于matlab的指纹识别系统设计与算法原理(论文+程序源码)。

文章目录:

1、项目简介

  1. 指纹识别技术是生物特征识别领域中最为成熟的一门应用技术,具有悠久的历史。长期以来,指纹识别技术主要应用于刑事侦查与司法鉴定领域,不被大多数人所了解。计算机与信息处理技术的飞速发展,为这门历史悠久的应用技术开拓了更为广阔的市场,指纹识别技术与相关产品越来越多地应用于民用市场。

2、难度指数

本项目难度:中等难度
适用场景:相关题目的毕业设计及相关领域的应用研究

3、运行环境:

环境配置:
本项目所使用的MATLAB版本为MATLAB 7.8.0(R2016a)
注:可适配绝大部分matlab版本
项目技术:
归一化算法+图像分割+图像识别+平滑滤波+二值化+去空洞和毛刺算法+特征提取+特征匹配算法等等

4、项目详解:

提示:以下为项目的详细介绍,项目源码及项目设计文档下载地址见文末。

4.1生物特征识别技术简介
4.1.1生物特征识别的意义

生物识别技术(Biometric Identification Technology)是利用人体生物特征进行身份认证的一种技术。生物特征是唯一的(与他人不同)、可以测量或可以自动识别和验证的生理特性或行为方式,分为生理特征和行为特征。生物识别系统对生物特性进行取样,提取其唯一特征并进行身份认证。典型的生物识别系统的系统结构如下图

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

4.1.2生物特征识别分类

迄今为止,通过现代科学技术手段,被人们所发现的同时兼具”人各有异”、”终身不变”和”随身携带”这三个特点的人体生物特征主要有指纹、虹膜、人体细胞的遗传基因等。

此外还有一些虽然不能完全具备上述三个特点但尚在一段时间内具有”人各有异”特点的生物特征,如面容、掌纹、语音、行为等进行身份识别已成为目前的研究热点并发展为”生物检测学”的专门学科,其相关技术也被称为”生物特征识别技术”。

(1)虹膜识别
虹膜识别技术是利用虹膜的终身不变性和差异性来识别身份的。虹膜识别技术与相应的算法结合后,可达到很高的精度。
虹模是眼球内部含有色素的环形薄膜,它由结缔组织细胞和肌纤维等组成,中间部位是眼球。因眼球的颜色是由虹膜所含色素的多少而决定的,故称之为虹膜,旧称虹彩。
虹膜的结构在人出生前就确定下来了。虹膜识别技术是将虹膜的可视特征转换成一个512字节的虹膜代码,这个代码模板被存储下来以供后期识别使用。
由于虹膜代码是通过复杂的运算获得的,并能提供较多数量的特征点,因此虹膜识别的精度最高。整个识别的过程非常简单,虹膜的定位可以在一秒内完成。虹膜识别的技术缺点是,目前虹膜识别系统只是用统计学原理进行小规模的试验,尚未进行过世界范围的认证试验。此外,图像获取设备的价格昂贵,难以实现小型化。

(2)视网膜识别
视网膜识别技术使用激光来照射眼球的背面,以获得具有唯一性的视网膜特征。
视网膜是一些位于眼球后部十分细小的神经(一英寸的 1/50),它是人眼感受光线并将信息通过视神经传给大脑的重要器官,它同胶片的功能有些类似,用于生物识别的血管分布在神经视网膜周围,即视网膜四层细胞的最远处。
视网膜扫描设备要获得视网膜图像,使用者的眼睛与录入设备的距离应在半英寸之内,并且在录入设备读取图象时,眼睛必须处于静止状态,使用者的眼睛在注视一个旋转的绿灯时,录入设备从视网膜上可以获得 400个特征点,同指纹录入比较,指纹只能提供30到40个特征点用来录入,创建模板和完成确认。同虹膜识别技术一样,视网膜扫描可能是最可靠、最值得信赖的生物识别技术,但该技术未经过任何测试,而且是否会损伤使用者的眼球,还有待进一步研究。

(3)面部识别
面部识别技术通过对面部特征和它们之间的关系来进行识别,识别技术基于这些唯一的特征时是非常复杂的,这需要人工智能和机器知识学习系统,用于捕捉面部图像的两项技术为标准视频和热成像技术。标准视频技术通过一个标准的摄像头摄取面部的图像或者一系列图像,在面部被捕捉之后,一些核心点被记录,面部识别技术通常基于以下方法实现:
a.对面部外观特征进行分析。
b.对面部图像进行全局分析。
c.对面部热谱图像及面部的红外光谱图像中的特征进行分析。
尽管已有一些有关面部识别技术的实用产品,但目前面部识别系统对采集到的面部图像仍有一定的限制,如背景、光线、表情等,其大范围的识别正确率最高只在99%左右。因此面部识别技术主要适合应用于一些使用者为配合型的应用场合,在抗拒型人群以及完全无人工干预的场合,其使用效果仍不尽人意。

(4)签名识别
签名作为身份认证的手段已有上千年的历史了,而且我们都很熟悉在银行的格式表单中签名作为我们身份的标志。将签名数字化是这样一个过程,测量图像本身以及整个签名的动作在每个字母以及字母之间的不同的速度、顺序和压力,签名识别和语音识别一样,是一种行为测定学。
使用签名识别更容易被大众接受而且是一种公认的身份识别的技术。但随着经验的增长,性情的变化与生活方式的改变,签名也会随之而改变;为了处理签名的不可避免的自然改变,我们必须在安全方面加以妥协;用于签名的手写板结构复杂而且价格昂贵,因为和笔记本电脑的触摸板的分辨率有着很大的差异,我们在技术上很难将两者结合起来,很难将它的尺寸小型化。

(5)语音识别
语音识别也是一种行为识别技术,语音识别设备不断地测量、记录语音的波形和变化特征,再将现场采集到的语音与登记过的语音模板进行对比,最后做出判断。语音识别是基于生理学的声音特征,它与语言识别的区别是不对已说出的词语本身进行辨识,而是通过分析语音的惟一特点(例如发音的频率)来识别讲话者。它属于非接触的识别技术,用户可以很自然地接受。

和其他的行为识别技术一样,语音因为变化的范围太大,故而很难进行一些精确的匹配;语音会随着音量、速度和音质的变化(例如当你感冒时)而影响到采集与比对的结果。

(6)基因识别
DNA基因识别是迄今为止已知的最准确的生物识别方法之一。但实现该技术所需的设备非常复杂和昂贵,还需要有经过专门培训的专业技术人员来使用和操作这些设备,完成鉴定所花费的时间也较长,因此DNA基因识别还不能广泛地应用到日常生活的各个领域。

(7)指纹识别
指纹识别是目前生物检测学中研究最深入,应用最广泛,发展最成熟的技术。指纹识别作为识别技术已经有几个世纪的历史了。

指纹识别技术通过分析指纹的全局特征和指纹的局部特征,特征点如嵴、谷和终点、分叉点或分歧点,从指纹中抽取的特征值可以非常的详尽,以便可靠地通过指纹来确认一个人的身份。平均每个指纹都有几个独一无二可测量的特征点,每个特征点都有大约七个特征,我们的十个手指产生最少4900个独立可测量的特征。这足够来确认指纹识别是否是一个更加可靠的鉴别方式。

每种生物识别技术均有各自的优点和缺点,其实用性也与应用的领域密切相关。没有一种技术在任何工作环境下都优于其他技术。常用的各种生物特征识别技术的技术性能比较如表所示:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
由上面分析可知,指纹识别在各种生物特征识别领域中综合性能较好,因此指纹识别技术在认证系统中被广泛应用。

4.2指纹识别的原理和方法
4.2.1指纹识别技术简介

指纹识别技术从被发现起,就被广泛应用到契约等民用领域。由于人体指纹具有终身稳定性和唯一性,很快就被用于刑事侦查,并被尊为”物证之首”。但早期的指纹识别采用的方法是人工识别法。这项工作需要有一些经过专门训练的专业技术人员和有经验的指纹专家凭经验对指纹逐个对比,从而得出鉴定的结果。用这种方法进行指纹鉴定,不但效率低、速度慢,查找范围也很有限,远远不能满足现代社会的需要。

20世纪60年代末,以电子计算机技术为代表的信息技术逐步兴起,计算机技术开始进入指纹识别领域,为指纹鉴定的自动化带来了新的解决思路、新的实现方法和新的处理途径。美国开始有人提出用计算机图像处理和模式识别方法进行指纹分析以代替人工比对,这就是”自动指纹识别系统”(Automated Fingerprint Identification System,简称AFIS)。

到70年代,由于计算机的广泛应用及模式识别理论的发展,世界各国都争相开发使用自动指纹识别系统。20世纪70年代末一些实用系统已经出现,如加拿大警方首次应用激光进行指纹检验。日本立石电机公司80年代研制出了指纹核对机。美国人福勒80年代设计了指纹电子检验系统。

1982年日本NEC首次向警方提供了AFIS。目前世界上有30多家著名大学、科研机构、公司一直从事自动指纹识别系统方面研究[14]。
我国的指纹自动识别技术研究,已经经历了较长的发展历程。时至近日,自动指纹识别技术已经从单一系统的应用,发展到网络化的全面应用。

20世纪90年代末期,价格较低的指纹采集器、快速、匹配的算法发展为指纹技术用于个人身份识别提供了广阔的市场空间。指纹识别技术被广泛应用意味着它能在影响亿万人的日常生活的各个地方使用。通过取代个人识别码和口令,指纹识别技术可以阻止非授权;可以防止盗用ATM、蜂窝电话、智能卡、桌面PC、工作站及其计算机网络;在通过电话、网络进行的金融交易时可以进行身份认证;在建筑物或工作场所可以取代钥匙、证件、图章等。指纹识别技术的飞速发展及其广泛应用开创了个人身份鉴别的新时代。

4.2.2自动指纹识别技术的优势与前景

生物特征识别可以采用很多方法,如人像,指纹,虹膜和声纹等,而其中指纹识别在广泛性,持久性,独特性,防伪性和采集性等多方面都具有很强的优势,因此也成为了目前应用最为广泛的生物特征识别技术。
在惟一性方面,相对于面部、声音等识别技术,指纹因其特征数量较多,且特征定位精确度可以做得更高,故惟一性好;在稳定性方面,由于一个人在出生时指纹就已经被定型了,随着年龄的增长指纹永久不变,因此不变性较面部、声音等优越;在方便性方面,与虹膜、视网膜等采样难度较高的情况相比,指纹样本便于获取,采样成本较低,识别系统中硬件部分较容易实现,因此方便性相对较好。
商用指纹识别技术在中国的应用虽然还只有10年左右的时间,但已得到了很大的发展和进步。国内从业公司不断增加,理论研究不断得以增强,国产商品质量和档次不断提高,产品价格逐渐降低到合理水平,指纹识别应用领域已从简单的门禁扩展到门禁/考勤、金融、社会福利、计算机信息安全及ID证卡等多个领域,中国庞大的潜在市场吸引着越来越多的国内外投资者涉及这一领域。这一切都显示了中国指纹市场极其广阔的前景。

4.2.3指纹识别的采集及其参数

指纹具有惟一性(随身携带、难以复制、人人不同、指指相异)。根据指纹学理论,将两人指纹分别匹配上12个特征时的相同几率仅为1/1050 。指纹还具有终身基本不变的相对稳定性。指纹在胎儿六个月时已完全形成,随着年龄的增长,尽管人的指纹在外形大小、纹线粗细上会有变化,局部纹线之间也可能出现新细线特征,但从总体上看,同一手指的指纹纹线类型、细节特征的总体布局等无明显变化。指纹的这些特点为身份鉴定提供了客观依据。

指纹识别过程可以分为4个步骤:采集指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,取到指纹图像之后,要对原始图像进行初步的处理,使之更清晰。指纹辨识软件建立指纹的数字表示特征数据,软件从指纹上找到被称为”节点”(minutiae)的特征点,这些数据(通常称为模板),保存为1K大小的记录。最后,通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果。

4.2.4指纹图像的采集

指纹采集模式主要分为”离线式”和”在线式”两种。所谓”离线式”就是指在指纹采集时,利用某些中间介质(如油墨和纸张)来获取指纹图像,在通过一定的技术手段将图像数字化输入计算机,它属于非实时采集。目前”离线式”采集方式在大多数场合已经消失。所谓”在线式”是通过与计算机联机的先进指纹传感器的专用指纹采集设备,将真实的人体指纹直接变成数字图像数据,实时传输给计算机。

基于指纹传感器的”在线式”实时采集设备以其操作简单、实时性强、采集效率高、图像质量好等优点,广泛应用于自动指纹识别领域。
指纹传感器是采集指纹的装置,是一切自动指纹识别系统的必备设备,从原理上,目前见到的指纹传感器分下面3类:

(1)光学录入
它是最早开发的指纹输入装置,多采用红外主动光斜向照射指尖,利用全反射的原理,在反射方向接收指纹影像。指纹影像由CCD摄像头接收,输出的视频信号由图像采集卡数字化后输入计算机.近年来,也有用CMOS摄像头直接获取指纹图像的数字信号,通过计算机并口或USB口输入计算机。由于不需要附加卡,这种带USB口的CMOS指纹传感器有成本低且安装方便的特点,很受市场欢迎。

(2)硅晶体电容式传感器录入
硅晶体电容式传感器是最近在市场上才出现的。这些含有微型晶体的平面通过多种技术来绘制指纹图像。电容传感器通过电子度量设计来捕捉指纹。电容设备能结合大约100,000导体金属阵列的传感器,其外面是绝缘的表面,当用户的手指放在上面时,皮肤组成了电容阵列的另一面。电容器的电容值因两极间的距离而变化,这里指的是脊(近的)和谷(远的)之间的距离。压感式表面的顶层是具有弹性的压感介质材料,他们依照指纹的外表地形(凹凸)转化为相应的电子信号。硅晶体电容式不需要光线参与,小型化有优势,并且不需要指尖移动,而是一次成像如果能够克服目前一些产品容易受静电影响击穿(尤其在我国北方干燥季节)的缺陷,它将是未来最受欢迎的指纹传感器。

(3)超声波录入
超声波录入是目前采样效果最好的指纹采样设备,当超声波源发出超声波通过传感器表面达到手指表面时,会被反射回去。皮肤凹陷的部分与传感器表面间有较多的空气及杂质,会吸收一部分超声波。这样皮肤突起部分反射回的超声波比凹陷部分的更强,从而依据超声波的强弱形成指纹纹理图像。

最近几年,指纹传感器的价格已经剧烈的下降。至于体积,光学传感器的体积从6×3×3英寸降到3×1×1英寸。硅晶体电容式传感器的体积差不多是这样或者更小。在晶片上,集成电路的技术越来越高(如:数字化电路把指纹信号转化为数字信号强度),系统体积将越来越小,硅晶体电容式传感器的体积接近与手指大小所需要的体积,其长宽大约是1×1英寸高不到1英寸。在硅晶体电容式传感器之前,一些没有用到的机能是局部调整、软件控制、自动获取控制(AGC)技术。对于大多数光学设备,只能通过人工调整来改变图像的质量。

然而,硅晶体电容式传感器提供自动调节象素,行以及局部范围的敏感程度,从而提高图像的质量。AGC在不同的环境下结合反馈的信息产生高质量的图像。例如,一个不清晰(对比度差)的图像,如干燥的指纹,能够被感觉并增强灵敏度,在捕捉的瞬间产生清晰的图像(对比度好);由于提供了局部调整的能力,图像不清晰(对比度差)的区域也能够被检测到(如:手指压得较轻的地方)并在捕捉的瞬间为这些像素提高灵敏度。 硅晶体电容式传感器技术最重要的弱点在于,它们容易受到静电的影响,这使得晶体传感器有时会取不到图像,甚至会被损坏,另外,它们并不象玻璃一样耐磨损,从而影响了使用寿命。

总之,各种技术都具有它们各自的优势,也有各自的缺点。我们在下面给出三种主要技术的比较。

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
4.2.5指纹图像的参数

衡量一个指纹传感器的质量,可以通过考察其输出数字化后的指纹图像的质量来确定。指纹图像的主要参数有图像尺寸、图像分辨率和图像的灰度。

(1)图像的尺寸
图像的尺寸通常用长度(mm)×宽度(mm)来表示,如18mm×12.7mm,或者用垂直方向上的像素点数×水平方向上的像素点数来表示,如360×256点阵。图像尺寸和点阵数越大,则表示指纹传感器的采集区域越宽。用于民用领域的指纹传感器,大多采用平面采集方式,因而不要求较大的采集区域,一般不小于12.7mm×12.7mm或256*156点阵。

(2)图像分辨率
图像分辨率体现了对图像细纹之处的描述精度,通常用每英寸多少点像素(dpi)来表示。为了保障提取指纹特征的精确度,指纹图像应有较高的图像分辨率。一般不低于256dpi,要求较高的场合通常不低于500dpi。

(3)图像的灰度
采集设备与方法不同,所采集到的指纹图像也不同。绝大多数指纹图像是单色图像,我们把没有色调变化的单色图像称为二值图或黑白图,具有色调变化的单色图像称灰度图。灰度图含有更加丰富的图像信息,有利于指纹识别与对比。依照对色调变化的表现力,灰度图分为2bit、4 bit、6 bit、8 bit几个不同等级,一般较多采用的是8 bit (256级)灰度。

4.3指纹的特征

指纹分类是基于指纹脊或谷的整体流向以及指纹的核心点。指纹分类的主要目的是方便大容量指纹库的管理,并减小搜索空间,加速指纹匹配过程。我们定义了指纹的两类特征来进行指纹的验证:总体特征和局部特征。

4.3.1 指纹的总体特征
总体特征是指那些用人眼直接就可以观察到的特征,包括基本纹路图案:环型(loop),弓型(arch),螺旋型(whorl)。其他的指纹图案都基于这三种基本图案。

指纹的脊纹形式是适应之间的球状表面和半圆形顶端以及横行的指间屈基线生长的,除少数弓形纹之外,绝大多数是箕、斗型纹(约占95%),(三种纹形的大致分布概率如下表)

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
纹型是指纹的基本分类,是按中心花纹和三角的基本形态划分的。纹形从属于型,以中心线的形状定名。按我国是指纹分析法,指纹分三大类型(如图),五大种形态。可见,型与形是类与种的关系。
【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
(1) 箕形纹(Loop):有一条以上完整的基性线组成中心花纹。箕形线的对侧有一个三角的上下之线包围着中心花纹。按箕技的流向分为桡侧箕形纹(反箕)和尺侧箕形纹(正箕)两种。按中心花纹的结构形态又可分为普通箕、闭口箕、叶形箕、横箕和类似斗的箕。箕形纹中心和三角之间的距离和纹线数量多少不一,有的只有1-2条线,多数为十条线左右,个别的可达30余条。

(2)斗型纹(Whorl):中心花纹呈环、螺、曲状,由内向外扩展与上下包围线汇合形成两个以上的三角的纹线,称为斗型纹。分为环形、螺形、囊形、双箕形、杂形五种。斗型纹的中心花纹,在由一条环、螺、曲等纹线构成时,与两侧三角相对的弧形线凸面,必须是不折、不断的,并且不与来自从三角中的其它纹线相接。

(3)弓型纹(Arch): 由弓形线和横直线层叠而成,中心花纹与上下包围线无明显界限,因此也没有真正的三角区。分弧形和帐形纹两种。

(4)弧形纹:是由平缓的或略微突起的弧形线组成的一种结构简单的花纹形式。

(5)帐形纹:由平行的和突起的弧形线组成。花纹中部有直立的或倾斜的纹线,将弧形线撑起呈帐蓬状。
指纹类型的三类九种,是按我国现行的十指指纹分析法划分的。这是一种基本分类,也叫两极分类法。实际上指纹种类远不只这些。

4.3.2指纹的局部特征

局部特征是指指纹上的节点的特征,这些具有某种特征的节点称为特征点。两枚指纹经常会具有相同的总体特征,但它们的局部特征—特征点,却不可能完全相同。

指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或打折。这些断点、分叉点和转折点就称为”特征点”。就是这些特征点提供了指纹唯一性的确认信息。特征点的分类有以下几种(如下图),最典型的是端点和分叉点。

指纹特征示意图:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
很多研究者试图解决指纹分类问题,但至今分类算法的误识率仍较高。如何提高指纹分类的准确率在自动指纹识别研究中是一个较关键的问题。

4.3.3应用于指纹匹配的指纹特征

在指纹特征中由于中心点、三角点、端点、叉点、纹型、相对纹密度、纹曲率等元素的分布对于某一个特定人的指纹来说,在他的一生中永远不会改变,具有终生不变性和惟一性,因而被称为永久性特征。永久性特征在手指前端的典型区域(也被称为中心花纹区)中最为清晰和明显,其分布也最均匀,是指纹匹配的主要参数。

4.4指纹图像处理与识别

指纹图像处理与识别是自动指纹识别系统的核心技术,其研究已有很长的历史了,但是总体的思路变化不大。可以把识别算法大致分为下述3个步骤:

(1)图像预处理 原始指纹图像需要进行滤波除噪、脊线增强、动态二值化、方向信息计算、初分类、背景分割、纹线间隔估计等处理。图像预处理的效果好坏直接影响系统性能。个别应用还需要指纹图像的压缩编码。

预处理的目的是改善输入指纹图像的质量,以提高特征提取的准确性。预处理常基于方向图,方向图是指纹图像的近似描述,方向图的每一元素代表指纹图像中某个给定区域的纹理方向。原始指纹图像一般有很多噪声、断纹或纹线模糊等,需要进行图像增强(使用滤波技术)以改善质量。由于指纹的特征仅包含在纹线的形状结构中,所以,通过二值化和细化把深浅不一、宽度不同的纹线变成灰度相同的单像素宽的细纹线,以便于特征提取。

(2)指纹特征提取 包括纹线细化、特征点(交叉点、断点、中心点、三角点等)检测与分类、伪特征点消除、特征点特性参数计算、特征参数压缩编码、全局特征(“斗”、”箕”、”旋向”等)检测等步骤。特征提取算法应能适应噪声、畸变、位移、旋转、缺损、变形等常见的实际情况。

经预处理后的指纹图像通过相应的处理算法自动提取指纹的全局特征和细节特征。自动指纹识别系统中一般把指纹的类型分为弓、左箕、右箕、斗、杂和不可分六类。细节特征主要由其位置和方向确定,因此细节特征一般只考虑纹线的端点和分叉点(包括汇合点),眼和桥等也用相应的分叉点表示,不再特殊区分,在有的系统中,还将细节特征与中心之间、或细节特征之间的纹线数提取并记录下来。提取后的特征还需要进行后处理以去掉假特征。

(3)指纹特征比对 即比较现场提取的某一个指纹特征点集合和原先建立的数据库中的某一个指纹特征点集合的相似程度。通常用代价函数(或匹配能量)来表示相似程度,取合适的门限将给出该两组指纹特征是否来自同一枚指头的判断。特征比对的方法有点图松弛匹配方法、最小距离图法和Delaunay三角形化变换等。

4.5指纹识别算法的实现
4.5.1指纹图像的预处理

精确的指纹识别高度依赖于对脊线纹理结构、细节特点信息的辨识。然而,在指纹自动识别过程中,由于手指本身的因素和采集条件等各种原因的影响,从指纹传感器上采集到的原始指纹会不同程度地受到各种因素干扰,图像中往往包含很多的噪声,造成指纹图像质量严重下降。

在实际应用中,指纹图像质量不佳,尤其是噪声高、坏区多和对比度差的劣质指纹图像对指纹细节特征点提取过程的精确度影响很大。具体表现有:指纹模糊不清造成指纹纹线间的粘连、模糊或断裂,会导致产生虚假的指纹细节特征点;遗漏或忽略了正确的细节特征点;在有关描述细节特征点的位置和方向等属性时产生严重失真。因此指纹图像质量的高低直接关系到细节特征点提取的有效性和可信性,影响系统在匹配时的拒认率和误识率,从而最终影响整个系统识别的结果。

由此可知,在进行指纹分类和细节特征匹配之前一定要先对采集到的指纹图像进行针对性的预处理。预处理是指纹自动识别系统中的最重要的一步,它的好坏直接影响着指纹识别的效果。预处理的目的就是去除图像中的噪声,把它变成一幅清晰的点线图,增强图像的可识别性,便于提取正确的指纹特征。图像的预处理大致可以划分为以下几步:
平滑滤波,归一化,二值化。主要流程如下图

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
4.5.2图像的平滑
指纹图像预处理的过程是从对原始指纹图像的灰度图进行平滑处理开始的。平滑处理就是通过选择适当的滤波程序对原始指纹图像进行滤波处理,滤掉图像中不必要的高频成分。其主要作用是尽量保持图像中纹路边缘完好的前提下,去除原始指纹图像中一些离散、孤立的高对比度像素点在后续的指纹图像处理过程中可能造成的计算与分析误差,同时也可以尽量消除指纹图像中由于图像噪声存在而导致的纹路中脊线上呈现的许多的微小疵点。

G.T.Candela使用二维FFT变换滤波法。这些方法主要是针对离线采集的指纹图像比较合适,对计算机的性能要求比较高。而对于指纹图像质量比较差,对比度小,指纹重叠区域小,而且处理的是活体实时采集的指纹图像,这就需要一些更有效,速度更快的指纹图像增强算法。本文采取的直方图均衡化来实现图象的增强。

直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。对图像空间域点的增强过程是通过增强函数t=EH(s)来完成的,t、s分别为目标图像和原始图像上的像素点(x,y),在进行均衡化处理时,增强函数EH需要满足两个条件:

(1)增强函数EH(s)在0≤s≤L-1的范围内是一个单调递增函数,这个条件保证了在增强处理时没有打乱原始图像的灰度排列次序;

(2)对于0≤s≤L-1应当有0≤EH(s)≤L-1,它保证了变换过程中灰度值的动态范围的一致性。同样的,对于反变换过程s=EH-1(t),在0≤t≤1时也必须满足上述两个条件。通过该函数可以完成s到t的均匀分布转换。

在实际处理变换时,一般先对原始图像的灰度情况进行统计分析,并计算出原始直方图分布,然后根据计算出的累计直方图分布tk,按式tk=[(N-1)* tk+0.5]对其取整并得出源灰度Sk到tk的灰度映射关系,其中N为灰度的级数。重复上述步骤,得到所有的源图像各灰度级到目标图像各灰度级的映射关系,再按照新的映射关系对源图像各点像素进行灰度转换,即可完成对源图的直方图均衡化。

具体方法是:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
上述求和区间为0到k,根据该方程可以由原图像的各像素灰度值直接得到直方图均衡化后各像素的灰度值。下图给出了用Matlab处理的一幅指纹图像直方图均衡化前后的指纹图像和直方图。

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
从处理前后的图像可以看出,许多在原始图像中看不清的细节在直方图均衡化处理后所得的图像中都变得十分清晰。

4.5.3图像的归一化

对平滑后的指纹图像,要对其进行更高强度的平滑处理,求出其平均灰度的分布规律。从频域分析的角度上描述,则是求出该图像的低频分量的分布规律。

首先,以待处理指纹图像的分辨率和指纹的平均纹密度参数,确定考察中的一个局部像素的邻近区域窗口值的有效范围大小。然后逐个对原始灰度图中的所有像素及其邻近区域进行计算,根据给定的平滑强度系数得出平滑后的指纹灰度图。该部分具体处理仍可采用平均滤波器来完成。所不同的是,在该平均域滤波中,当前处理像素点的模板即参考邻域窗口,其域值取值范围较图像平滑时所选择的窗口值(window为一)的模板大。其相应处理程序的数学模型可以有下列公式来描述:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
其中,I为平滑处理后的指纹图像,G为平滑处理后的灰度分布图。Window的取值范围与指纹图像的纹密度有关,不同年龄、性别、人种的指纹密度不同。当指纹图像为亚裔人的指纹图像,若指纹图像的分辨率为500像素/英寸时,window值取16,平滑效果较为理想。

利用高强度处理后的指纹平均灰度分布图,可以进一步求出像素的灰度平均值与像素周围灰度变化的平均值,从而得到归一化图像。

该过程可由下列公式来描述:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
这里I为平滑后的指纹图像,G为高强度后的灰度分布图,V为指纹灰度变化的梯度分布图,R为归一化后的指纹图像。Window的取值范围可与前述的平滑处理公式取相同的值或相近值。

图所示为用Matlab处理的高强度滤波后指纹图像的灰度分布,图所示为归一化处理后的指纹图像。

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
归一化处理使图像有一致方差,具有统一的背景与前景色调,它不会改变指纹图像中的脊线纹理信息。

4.5.4图像的纹理方向

指纹图像是一种带有纹理特性的图像,图像中每一个局部图形以至于每一个像素都带有一定程度的方向性,方向矢量分布图是指指纹图像的一种变换表示形式。方向矢量的分布图对于指纹图像的处理十分重要,其主要原因是他完整地描述了指纹图像的一个重要特性,即纹理的方向性。为了便于分析和处理,在沿指定区域或指定像素为中心,以window直为半径的参考邻域中,3600方向上灰度变化梯度最小的方向定义为该指定区域或指定像素的方向。

关于计算指纹方向图像的点方向图的方法,B.M.Mthre在1987年提出了方向图分解方法。采用下列公式来表示:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

另一种方法是通过峰值点来识别纹线的存在性。这一方法对清晰的纹线十分理想,但对于三角点及灰度均匀区域,峰值不明显。
本文采用计算较为简单的八方向场法,像素八个方向示意图:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

具体步骤为:先用下列公式来分别求出指纹图像中各个像素的灰度变化的梯度值在D[0]00(1800)、D[1]450 (2250)、D[2]900 (2700)、D[3]1350 (3150)八个方向上的分量:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

式中,I为指纹图像,window为参考邻与的窗口值。
灰度变化的梯度值在00(1800)方向上的分量:dh[0]=d[0]
灰度变化的梯度值在450 (2250) 方向上的分量:dh[1]=d[1]/
灰度变化的梯度值在900 (2700) 方向上的分量:dh[2]=d[2]
灰度变化的梯度值在1350 (3150) 方向上的分量:dh[3]=d[3]/
然后通过矢量合成来求出各个方向灰度变化的梯度值,取值最小的方向,即灰度变化梯度最小的方向就是像素点的方向。

下图是通过快速二维傅利叶变换后的频域处理来得到的方向图。
指纹图形块方向分布图:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
4.5.5图像的二值化

指纹图像的二值化就是从一个具有纹理灰度变化的指纹图像生成另一个只有两种色调的黑白分明的指纹图像。二值化操作使得指纹灰度中,相对色调较浅的谷纹线部分被转成了白色,而相对较深的脊纹线部分被转成了黑色。使具有灰度的图像变成只有黑白两种色调的二值化图像,图像的灰度层次从原来的256级减少到2级,相应地图像也从8bit格式转成1bit的格式。

图像的预处理中,二值化是最为重要的一部分,一般二值化处理会在指纹图像的纹理增强(定向滤波)过程中多次反复调用。通常二值化和定向滤波是交叉进行的,二值化结果的质量直接影响到后续工作的质量。良好的二值化图像应是使原图像纹路突出,去噪声,最主要的是保留指纹原图像的细节特征。

但是二值化的过程中,若相关的参数和阈选取不当,也会造成指纹信息的损失或产生错误特征。因此二值化过程中的相关参数和阈值,必须通过大量的实验数据来进行分析,谨慎选用。长期以来,有许多的人对指纹图像二值化方法和效果进行过研究,提出了不同的方案。其中A.Rosenfield和A.B.Kak提出采用适当的阈值对指纹图像进行分析,在指纹灰度直方图中效果较好。Boukarouba提出了直方图和分布曲线曲率相结合的方法,处理了具有多峰直方图的指纹图像。D.Marr等利用边沿窗口提取纹线轮廓,进而实现图像分解,对连续变化的灰度图效果较好。

在原始指纹灰度图中,指纹脊纹路的灰度值并不是一直不变的,在图像的不同区域有着不同的分布规律。不能简单的采用一个固定的阈值来进行二值化。采用”局部自适应的阈值(Locally Adaptive Thresholding)”的方法,对原始灰度图中的所有像素逐个进行考察,并根据每个待判定像素邻近区域的其他像素的灰度分布情况来调整其二值化的阈值,最终得出二值化指纹图像。

本文采取迭代阈值的方法对指纹图像进行阈值分割,这种方法是以自适应的阈值对指纹图像进行二值化处理。在图像处理中,反复地用一种运算直至条件满足而得到输出图像的方法称为迭代。迭代阈值方法如下:
(1)设定初始灰度阈值T(如令T=127),把指纹图像的灰度值分为两组R1和R2。
(2)计算两组的平均灰度值u1和u2。
(3)重新设定新的灰度阈值T。新的T定义为:T=(u1+u2)/2。
(4)依据新的T对指纹图像进行阈值分割。

二值化处理后的指纹图像如图所示。

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

4.5.6纹线细化

指纹图像处理中物体的形状信息是十分重要的,为了提取指纹图像特定区域的特征,对指纹图像通常需要采用细化算法处理,得到与原来指纹图像形状近似的由简单的弧或曲线组成的图形,这些细线处于物体的中轴附近,这就是所谓的指纹图像的细化。

细化方法不同,细化结果就有差异。在指纹识别中要求在不改变原来指纹图像的拓朴连通性的同时,细化的结果应为严格的八邻域图像骨架;纹线中除去特征点以外,每个像素均只与相邻两个像素为八邻域,抹去任意一像素都将破坏纹线的连接性。

概括起来说就是纹线细化处理要满足收敛性、连接性、拓朴性、保持性、细化性、中轴性、快速性的要求。目前为止,关于细化方法的研究工作已有很多成果,所采用的方法从使用的观点来看,比较多的是采用模板匹配的方法(如迭代法、OPTA单连通法等)。这种方法是根据某个像素的局部邻域(如3×3,5×5等)的图像特征对其进行处理,此外也有采用边缘搜索编码[37] 、外轮廓计算以及神经网络等细化方法。

从处理的过程来看,主要可以分为串行和并行两类,前者对图像中当前像素处理依据其邻域内像素的即时化结果,且不同的细化阶段采用不同的处理方法;后者对当前的像素处理该像素及其邻域内各像素的前一轮迭代处理的结果,自始至终采用相同的细化准则。

对于任意形状的区域,细化实质上是腐蚀操作的变体,细化过程中要根据每个像素点的八个相邻点的情况来判断该点是否可以剔除或保留。

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
上图给出了当前需要处理的像素点在不同的八邻域条件下的情况,可以看出:
(1)不能删,因为它是个内部点,我们要求的是骨架,如果连内部点也删了,骨架也会被掏空的;
(2)不能删,和(1)是同样的道理;
(3)可以删,这样的点不是骨架;
(4)不能删,因为删掉后,原来相连的部分断开了;
(5)可以删,这样的点不是骨架;
(6)不能删,因为它是直线的端点,如果这样的点删了,那么最后整个直线也被删了,剩不下什么;
(7)不能删,因为孤立点的骨架就是它自身。

总结上图,有如下的判据:
(1)内部点不能删除;
(2)孤立点不能删除;
(3)直线端点不能删除;
(4)如果P是边界点,去掉P后,如果连通分量不增加,则P可以删除。

我们可以根据上述的判据,事先做出一张表,从0到255共有256个元素,每个元素要么是0,要么是1。我们根据某点的八个相邻点的情况查表,若表中的元素是1,则表示该点可删,否则保留。查表的方法是,设白点为1,黑点为0;左上方点对应一个8位数的第一位(最低位),正上方点对应第二位,右上方点对应的第三位,左邻点对应第四位,右邻点对应第五位,左下方点对应第六位,正下方点对应第七位,右下方点对应的第八位,按这样组成的8位数去查表即可。考虑当前像素点的各种八邻域的情况,我们可以得到一个细化操作查找表,该表在下面的细化算法中详细介绍。

为了避免分裂指纹图像,细化的过程分为两个步骤,第一步是正常的腐蚀操作,但是它是有条件的,也就是说那些被标记的可除去的像素点并不立即消去;在第二步中,只将那些消除后并不破坏连通性的点消除,否则的话保留这些边界点。以上的步骤是在一个3×3邻域内运算,可以通过查表实现细化的操作。算法的实现步骤如下:

(1)定义一个3×3模板和一个查找表,模板和查找表分别如下:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
细化查找表:
【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

(2)对二值图像从上到下、从左到右进行扫描;该过程结束后再对图像进行从左到右,从上到下的扫描;如果图像中当前像素点的灰度值为”0″,且其左右(第一次扫描过程考虑左右像素点)或上下(第二次扫描过程考虑上下两个像素点)两个像素点中有任意一个为”255″则转至步骤(3),否则回转到步骤(2);

(3)该像素点为中心的3×3区域内的各个像素值和定义的模板中的权值进行卷积求和,得到查找索引值k;

(4)根据这个索引值k得到表里相应的数据,如果为”1″,那么该像素点的灰度值设为”255″,如果为”0″,则该像素点的灰度值为”0″。

(5) 图像从头至尾扫描二遍后,如果该次扫描修改了图像中的点,则跳转至步骤二,开始新的一轮扫描。否则图像细化结束。

细化处理后的指纹图像:

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
上图是一幅经过细化处理后的指纹图像,和原图像比较可知,细化后的指纹图像脊线的宽度由5到8个像素被压缩到一个像素,以便于后续特征提取的处理过程能够对脊线的断点和分叉点进行精确定位。

4.6指纹图像的特征提取和特征匹配
4.6.1特征提取

指纹识别系统的自动化水平,在很大程度上依赖于系统提取细节特征的准确性。指纹细节特征有多种类型,从其概率分布图来看,以二分叉点和端点最为常见。端点和分叉点是指纹的基本细节特征点,他们的集合构成特征集,用来唯一标识指纹。

指纹特征提取的方法可以简单的分为直接从灰度指纹图像提取特征和从细化二值指纹图像提取特征。典型的直接从灰度图像提取特征的算法是对灰度指纹纹线进行跟踪,根据跟踪结果寻找特征的位置和判断特征的类型。该类算法虽然省去了复杂的预处理过程,但是特征提取算法却十分复杂,而且由于噪声等因素的影响,特征定位也不够准确。

目前大多数系统采用了从细化二值图像提取特征的方法,该方法比较简单,在得到可靠的细化二值图像后,根据细化后的二值图上每一点的交叉数,确定出端点和分叉点两种特征点,提取出特征点相应的坐标位置、种类、方向等有用信息。

典型的方法是邻域判定法,该方法用一个3×3的模板便可将端点和分叉点提取出来。对于细化后的二值图像,对每个点值计算其交叉数(Cn)。一点R的交叉数Cn 定义在一个3×3的模板上,模板如图所示

【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
R是待检验的点,如果R是端点,则它的8邻域点满足:
【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别
如果M是分叉点,则它的8邻域点满足:
【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

这样就可以找到特征点,并记录它们的类型和位置。
求出特征点后,再根据平均纹线距离等信息对所得特征点进行有效性检验,去除伪特征点,保留真特征点。然后以特征点的坐标(x,y),及特征点的方向d,结合其邻域情况(邻域内的特征点数、相对位置、脊线上特征点所处位置的纹曲率、特征点邻域内的脊线纹密度等等),可以构成该指纹细节特征点的特征向量。将所有的特征向量进行筛选后留下50到80个特征向量,构成指纹特征模板。

4.6.2特征点匹配

指纹匹配主要是细节特征的匹配。依靠指纹本身决定的可靠参考坐标系,可以提高指纹匹配的效率。指纹中心处具有很高的不可定向性程度,其附近的纹线方向多变。据此,我们利用方向图和不可定向性图设计和实现了指纹自动定位的快速算法。该算法能够确定指纹中心点的位置和方向,自动定位率在98%以上。对于用活体指纹采集仪输入的指纹,自动定位率更高。用同样的方法,我们还可以准确提取指纹的下中心及左、右三角点等形态特征与辅助定位信息。

点模式匹配是模式识别中的一个有名的难题。它是对于两个含有不同数量的点集P:{p1, p2, … pm } 和Q:{q1, q2, … qn} ,如何找出它们之间的匹配关系。因此,一个好的点模式匹配算法应该能够有效地解决两个点集间的几何不变量问题。人们对一般的点模式匹配提出很多算法,比如松弛算法,其中有的文献只处理了点模式间因平移带来的偏差,其中计算复杂度为O(n4);也有文献处理了因平移和旋转带来的误差,其计算复杂度为O(n6);另外有文献不仅考虑到位移和旋转误差,还处理了因伸缩尺度不同而带来的误差,但其计算复杂度达到了O(n8)。对于50-50的点匹配,很多算法要花去几分钟的时间。

点模式匹配中的两个点集P和Q,其中P从第一幅图像抽取,有m个特征点构成,Q从第二幅图像抽取,有n个特征点构成,即P={p1, p2, … pm } 和Q={q1, q2, … qn}。它们之间的匹配就是找到一个校准函数G(tx, ty, s, θ),使两个点集有最大数量点对之间存在稳定的一一对应关系,即G(pi)=qb。而在实际应用中,点的相对位置存在误差,G(pi)不可能完全等于qb,所以一般用

Original: https://blog.csdn.net/m0_53407570/article/details/125135188
Author: 阿里matlab建模师
Title: 【老生谈算法】基于matlab指纹识别系统设计与算法原理详解(论文+程序源码)——指纹识别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/794028/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • pygame实现 飞机大战-第三版-仿写版

    目录 一、功能介绍: 二、原代码 (一)精灵定义部分 (二)游戏运行部分 三、代码解析 (一)游戏开始界面的实现 (二)双人单人游戏控制 (三)利用自定义事件 (四)利用精灵Spr…

    Python 2023年9月24日
    028
  • 如果公司线上系统突然宕机了,怎么才能确保MQ消息不丢失?

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年10月11日
    044
  • 用Python做童年回忆的游戏 贪吃蛇

    为了让大家对python产生兴趣,不让大家学编程枯燥无味,所以今天老袁还是准备了一个小游戏给大家来玩玩,喜欢的可以跟着我敲代码哟。那么废话不多说了直接开始吧! 我们选择好开发工具 …

    Python 2023年9月24日
    026
  • Flask-SQLAlchemy—-自定义查询条件的使用方法—ORM(7)

    文章目录 * – + 0.故事背景 + 1.filter_by()的特殊用法 + 2.如果通过继承,在基类里面定义查询方法 + 3.初始化的模型类的时候先定义一些字段,…

    Python 2023年8月15日
    035
  • 【Pygame小游戏】《坦克大战》,那些童年的游戏你还记得几个呢?

    前言 🚀 作者 :”程序员梨子”🚀 文章简介 :本篇文章主要利用pygame模块写的一款坦克大战小游戏啦!🚀 文章源码获取 : 为了感谢每一个关注我的小可爱…

    Python 2023年9月19日
    071
  • matplotlib 自带绘图样式效果展示速查(全)

    matplotlib 自带绘图样式效果展示速查(28种,全) 目 录: 一、matplotlib 自带所有绘图样式效果展示 0、 【没有加style时的绘图风格】 1、 【加&#8…

    Python 2023年9月2日
    053
  • 网页跟随系统 dark mode (暗黑模式) 的实现

    经过几十年的沉默, dark mode(暗黑模式) 又回到了我们面前,越来越多的 APP 有了暗黑主题,越来月多的操作系统原生添加了 “全局暗黑模式”, 那…

    Python 2023年6月10日
    048
  • Python处理重复、缺失值

    使用Python处理数据的重复、缺失值 1 导入模块 先导入一些常用的模块 import numpy as np import pandas as pd import seabor…

    Python 2023年8月31日
    050
  • 面试 | Java 算法的 ACM 模式

    经常在 LeetCode 上用核心代码模式刷题的小伙伴突然用 ACM 模式可能会适应不过来,把时间花在输入输出上很浪费时间,因此本篇笔记对 Java 算法的 ACM 模式做了个小总…

    Python 2023年6月3日
    058
  • 【C++】spdlog光速入门,C++logger最简单最快的库

    Very fast, header only, C++ logging library. 一个header-only的C++日志库,十分高效且易用。 获取安装方式 使用样例 #in…

    Python 2023年10月18日
    034
  • C++ 调用matplotlibcpp 绘图配置说明

    环境:ubuntu20 , vscode 1、配置python环境,安装python3; sudo apt-get install python3-dev 2、配置 numpy 和…

    Python 2023年9月1日
    043
  • 0 基础 Java 自学之路(2021年最新版)

    微信搜索【程序员囧辉】,关注这个坚持分享技术干货的程序员。 如果你想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路。 本文会持续更新,建议收藏。 在 CSDN 上经…

    Python 2023年9月16日
    052
  • 什么是架构

    ; 一、前言 架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。架构描述语言(ADL)用于描述软件的体系架构。 软件架构(software…

    Python 2023年9月15日
    030
  • JavaScript 设计模式及代码实现——代理模式

    代理模式 1 定义 为其他对象提供一种代理以控制对这个对象的访问 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 2 …

    Python 2023年10月23日
    049
  • ChatGPT体验和教程

    啊哦~你想找的内容离你而去了哦 内容不存在,可能为如下原因导致: ① 内容还在审核中 ② 内容以前存在,但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

    Python 2023年11月7日
    052
  • 【Django】Django路由urls详解

    例 : urlpatterns = patterns(”, url(r’^hello/$’,hello), ) 我们在写URL时实际上写的是正则…

    Python 2023年8月5日
    031
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球