基于matlab的指纹处理和识别程序
大家好,今天给大家介绍基于matlab的指纹处理和识别程序项目设计与原理。
文章目录:
1、项目简介
-
文件列表:
main.m--------主程序。
imgread.m-----图像读取函数。
imgchg.m------将真彩色图像转换为灰度图像的函数。
imgcut.m------图像分割函数。
imgflt.m------图像去噪滤波。
imgdir.m------计算方向图并进行方向滤波。
imgbin.m------图像二值化。
imgthi.m------图像细化。
imgpoi.m------指纹特征点提取。
imgcom.m------特征点比对。
imgres.m------得出比对结论并输出。
imgplot.m-----绘图函数。 -
另附两组共16幅指纹图像以供测试。
经测试,本程序指纹识别的准确度为66.9%。
测试所使用指纹样本为上述16幅样本图像。 -
内部设定参数分别为:
图像分割所用模板为5×5大小;av>0.6;u<0.01;
滤波采用默认参数的中值滤波;
图像二值化采用3×3模板,门限为模板覆盖各像素的均值;
图像细化所用形态学结构元素为se = strel(‘square’,1);
采用一次开运算和bwmorph轮廓提取函数细化;
特征点去伪所用门限为3像素。
特征点比对采用求相关系数的方法。 -
指纹识别技术中用到的相关知识 :
ß1.图像读取使用函数imread。
ß2.将真彩色图像转换为灰度图使用函数rgb2gray 。
ß3.图像分割。
ß4.图像去噪滤波(使用中值滤波法)。
ß6.图像二值化(即将灰度图像转化为二值图像)。
ß7.图像细化(即减少冗余信息,突出指纹主要特征)。
ß8.指纹特征点提取(对粗选的特征剪枝,去伪存真)。
ß9.特征点比对。
2、难度指数
本项目难度:中等难度
适用场景:相关题目的毕业设计及相关领域的应用研究
3、运行环境:
环境配置:
本项目所使用的MATLAB版本为MATLAB 7.8.0(R2009a)
注:可适配绝大部分matlab版本
项目技术:
图像分割算法 +中值滤波算法 + 图像二值化 + 一次开运算 + 轮廓提取算法+ 指纹特征点提取等等
4、项目详解:
提示:以下为项目的详细介绍,项目源码下载地址见文末~
4.1指纹的分类
指纹就是指腹上由凹凸的皮肤所形成的纹路。由人的遗传特性决定,虽然指纹人人皆有,但各不相同。当胎儿在母体内发育三至四个月时,指纹就已经形成,但儿童在成长期间指纹会略有改变,直到青春期14岁左右时才会定型。
指纹图案一般有三种基本图形:
环型(loop)、弓型(arch)、螺旋型(whorl)。
其他的指纹图案都是基于这三种基本图案。
环型:
弓型:
螺旋型:
4.2指纹的特征点
指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或转折。这些断点、分叉点和转折点就称为“特征点”。两枚指纹的特征点不可能完全相同,目前尚未发现有不同的人拥有相同的指纹,每个人的指纹也是独一无二。
指纹的特征点可分为6类,最典型的是终结点(端点)和分叉点。
端点(Ending) :一条纹路在此终结
分叉点(Bifurcation): 一条纹路在此分开成为两条或更多的纹路
分歧点(Ridge Divergence) : 两条平行的纹路在此分开
孤立点(Dot or Island) :一条特别短的纹路,以至于成为一点
环点(Enclosure):
一条纹路分开成为两条之后,立即有合并成为一条,这样形成的一个小环称为环点
短纹(Short Ridge) :一端较短但不至于成为一点的纹路
用数学方法证明指纹各不相同的是法国巴黎大学教授勃太柴。他在1910年证明了此特性。他把指纹特征点归为4种:起点、终点、分叉、结合。每个指纹约有100个特征点,经过组合排列,以4的100次方(4100)计算得出61位数,再以当时一个世纪内生存的人口约50亿计算,每人十指,最后算出结果为要经过50位数长的世纪才可能出现两枚重复的指纹。
4.3指纹识别技术应用方法(模式)
就应用方法而言,指纹识别技术可分为验证和辨识。
验证:就是通过把一个现场采集到的指纹与一个已经登记的指纹进行一对一的比对来确定身份的过程。指纹以一定的压缩格式存储,并与其姓名或其标识(ID,PIN)联系起来。随后在对比现场,先验证其标识,然后利用系统的指纹与现场采集的指纹比对来证明其标识是合法的。验证其实回答了这样一个问题:"他是他自称的这个人吗?"这是应用系统中使用得较多的方法。
辨识:则是把现场采集到的指纹同指纹数据库中的指纹逐一对比,从中找出与现场指纹相匹配的指纹。这也叫"一对多匹配"。辨识其实是回答了这样一个问题:“他是谁?”
指纹是人体独一无二的特征,其复杂度足以提供用于鉴别的特征。随着相关支持技术的逐步成熟,指纹识别技术经过多年的发展已成为目前最方便、可靠、非侵害和价格便宜的生物识别技术解决方案,对于广大市场的应用有着很大的发展潜力。
4.4指纹识别算法原理图:
4.4.1指纹图像的采集
目前所用的指纹图象采集设备,基本上基于三种技术基础:
光学技术、半导体硅技术、超声波技术
光学技术:
借助光学技术采集指纹是历史最久远、使用最广泛的技术。将手指放在光学镜片上,手指在内置光源照射下,用棱镜将其投射在电荷耦合器件(CCD)上,进而形成脊线(指纹图象中具有一定宽度和走向的纹线)呈黑色、谷线(纹线之间的凹陷部分)呈白色的数字化的、可被指纹设备算法处理的多灰度指纹图象。
光学的指纹采集设备有明显的优点:它已经过较长时间的应用考验,一定程度上适应温度的变异,较为廉价,可达到500DPI的较高分辨率等。缺点是:由于要求足够长的光程,因此要求足够大的尺寸,而且过分干燥和过分油腻的手指也将使光学指纹产品的效果变坏。
半导体硅技术(CMOS技术):
20世纪90年代后期,基于半导体硅电容效应的技术趋于成熟。硅传感器成为电容的一个极板,手指则是另一极板,利用手指纹线的脊和谷相对于平滑的硅传感器之间的电容差,形成8bit的灰度图象。
硅技术优点是可以在较小的表面上获得比光学技术更好的图象质量,在1cm×1.5cm的表面上获得200—300线的分辨率(较小的表面也导致成本的下降和能被集成到更小的设备中)。
缺点是易受干扰,可靠性相对差。
超声波技术:
为克服光学技术设备和硅技术设备的不足,一种新型的超声波指纹采集设备已经出现。其原理是利用超声波具有穿透材料的能力,且随材料的不同产生大小不同的回波(超声波到达不同材质表面时,被吸收、穿透与反射的程度不同),因此,利用皮肤与空气对于声波阻抗的差异,就可以区分指纹脊与谷所在的位置。
超声波技术所使用的超声波频率为1×104Hz—1×109Hz,能量被控制在对人体无损的程度(与医学诊断的强度相同)。超声波技术产品能够达到最好的精度,它对手指和平面的清洁程度要求较低,但其采集时间会明显地长于前述两类产品。
4.4.2指纹图像的预处理
指纹图像预处理的过程主要包括模式转换、图像分割、图像增强、二值化、细化。
模式转换:将采集到的真彩色图像转换为灰度图像,方便处理。
图像分割:去除主体图像周围背景部分,保留主要指纹图像。
图像增强:通过灰度变换、直方图修正、平滑、锐化等方法对图像进行处理,使指纹图像特征突出。
二值化:通过设定门限将灰度图像转化为只有0和1两个灰度级的二值图像,便于后续处理。
细化:使图像的每条纹线都变为单像素宽度的线,以减少冗余信息,突出主要特征。
4.4.3特征点的提取
指纹的特征点总共有六种,但最常见的是端点和分叉点,这两种特征点占绝大部分,所以实际操作中只需要提取这两种特征点就可以了。
方法:通过对模板中心像素以及其8 临域的观察,定义了端点模板和分叉点模板(如图所示)。使用这些模板与图像脊线上的像素点比对,从而实现纹理特征的提取。
4.4.3特征点的对比,得出结论
将两个样本中提取到的特征点进行比对。两个样本中特征点吻合的数量越多,说明两个样本相似度越高。对比对结果进行判断,即可确定两个样本是否来自同一个手指。
4.5.程序算法详解
4.5.1图像分割:
下图所示5×5的模板对图像进行运算,模板每次移动5个像素(保证模板不重叠),对模板下的25个像素点求平均值和方差。平均值大于0.6且方差小于0.01的,就可以认为是背景,将模板覆盖的全部 25个像素点置为“1”,使其变为白色的背景,如下图,其他值保持不变。
图像分割所用模板:
分割前的图像:
分割后的图像:
4.5.2图像二值化:
用3×3的模板对图像进行运算,求出模板覆盖部分的均值,若某像素大于均值,则置为“1”,否则置为“0”。二值化后,会产生很多噪声,所以对图像还要进行一次去噪操作。
4.5.3细化:
图像二值化后,指纹的纹线很粗,含有很多冗余信息。图像细化就是要把纹线收缩到单像素的点线,以减少冗余信息,便于后面的处理。
细化算法:
se = strel(‘square’,1); %创建形态学结构元素
fo = imopen (x,se); %对原图形进行开运算
%A对B开运算就是A被B腐蚀后的结果再被B膨胀
v = ~bwmorph (fo,‘thin’,inf);%提取二进制图像的轮廓
指纹图像细化后,还不完全是单像素的线,在分叉处任然存在冗余的像素点,这些点需要去除。
二值化后的图像:
细化后的图像:
4.5.4特征点提取:
根据如图所示模板判断特征点,将其保存到一幅空白图片中。
4.5.4特征点去噪:
提取出来的特征点中有许多伪特征点,这是由于前面过程中产生的噪声造成的。这些伪特征点有个特点,那就是它们之间的距离比较近,根据这一特点可以判断出伪特征点并删除,减少对后面判别产生的影响。
4.5.5最后判断
提取出特征点后,对两幅图像计算相关系数,相关系数越大图像越接近,可以设定一个门限,大于门限的判定为同一指纹,否则判定为不匹配。至此,一个指纹识别算法就完成了。
文章来源:https://www.toymoban.com/news/detail-449078.html
5、源码下载:
本项目及一些精选的matlab指纹识别项目源码如下,有需要的朋友可以点击进行下载文章来源地址https://www.toymoban.com/news/detail-449078.html
序号 | matlab指纹识别项目名(点击下载) |
---|---|
1 | 基于matlab的指纹处理和识别程序源码_指纹识别_matlab |
2 | 以GUI实现指纹的识别和匹配百分比(推荐)_GUI_指纹识别_matlab |
3 | PCA方法指纹识别的完整程序运行效果好_指纹识别_matlab |
4 | opencv指纹识别FVS_opencv_指纹识别_VC++ |
5 | matlab指纹识别源码_2套源码_指纹识别_matlab |
6 | matlab_fingerprint_指纹识别 |
7 | matlab_指纹识别程序源码_指纹识别 |
8 | matlab sourcecode for 指纹识别_指纹识别_matlab |
9 | FingerprintSourceCode_指纹识别_VC++ |
10 | 指纹识别源码加说明文档_指纹识别_matlab |
11 | 指纹识别的一套完整程序_figner_IMcode_mfile_matlab |
12 | 指纹识别的程序(vc++)_指纹识别_VC++ |
13 | 指纹识别_论文带源码(推荐)_matlab |
14 | 一个指纹识别论文及全源码_指纹识别_matlab |
15 | 纯CPP指纹识别_指纹识别_VC++ |
16 | 指纹识别技术及其实现_matlab |
17 | 基于Matlab的指纹识别程序_PR_fingerprint_matlab |
18 | 基于matlab的指纹识别程序源码.zip |
19 | matlab指纹识别系统完整源代码.zip |
到了这里,关于【老生谈算法】基于matlab的指纹处理和识别算法详解及程序源码——指纹识别算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!