基于MATLAB软件的指纹识别研究
基于MATLAB软件的指纹识别研究
人的指纹各不相同,里面藏着很多秘密。指纹可以用来确定人的身份,广泛用于刑侦、加密、考勤等领域,最近还出现了用指纹进行手机解锁等应用。还有一些人声称指纹与人的健康、性格、命运等都有一定的联系。指纹传统上以图像格式存储,一般占用较多的空间,且图像里面的像素信息并不易用来进行分析或比对。为发现指纹中隐藏的秘密,我们需要有一种方法来描述指纹的内在结构、具体形态和其它特征并將其用最少的字节数来存储于计算机中。
指纹具有普遍性、唯一性和不变性的特点,使得指纹识别技术成为目前世界公认的最可靠的个人身份认证技术之一,本文主要对指纹特征进行了研究,最终得出指纹所唯一确定的指纹密码的数学表示以及指纹分类的方法。在合理的假设下,首先利用软件对指纹原图像进行预处理,包括指纹分割、二值化、去毛刺和空洞以及细化四个步骤,得到细化后的指纹图像。基于细化后的图像提取出指纹特征点,给出合理的指纹密码。然后根据指纹的总体特点,利用基于奇异点的指纹分类方法,对指纹进行了分类。
一、指纹图像的预处理
在指纹采集过程中由于手指本身的因素和采集条件等各种原因的影响,从指纹传感器上采集到的原始图像会不同程度地受到各种因素的干扰,图像中往往包含有很多噪声,造成指纹图像质量严重下降。为了改善图像、去除噪声干扰、有效的提取指纹特征,必须进行图像预处理。
二、图像分割
参考链接[如无效 ,请留言 提醒]
MATLAB指纹识别.zip-专业指导文档类资源-CSDN下载MATLAB指纹识别。计算两个指纹的端点,分叉点,及匹配度,判别是不是同一个人的。更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/m0_65908410/72028991
图像分割的目的是为了将指纹前景区域和背景区域分离开,避免在噪声和背景区域中提取特征,提高特征的准确性。根据前景图像中指纹脊和谷的灰度差比较大,局部灰度方差也很大,而背景区域的值很小这一特性,本文采用方差法对图像进行分割。具体算法如下:
将输入的指纹图像划分为互不重叠的子块,对每一分块进行处理。
1.计算每一子块图像的平均灰度值
2.计算每一图像子块的方差
3.对于每一图像子块,当大于所有子块的平均方差时,将其设定为背景区域;否则,作为前景保留其灰度值。由于在不同的分块尺寸下,指纹图像分割后的图像效果各不相同:如果选取的分块尺寸太大,不能有效的去除背景區域,分割效果不准确;如果选取的分块尺寸太小,又会误去太多前景区域。故本文运用以3*3的分块尺寸对指纹作出指纹分割图。
三、二值化
图像的二值化是通过设定阀值把灰度图像变成仅用两个值分别表示图像的目标和背景的二值图像。假设一幅灰度图的像素值为,设有一阀值,则:
。
四、细化
指纹图像二值化后,会引入空洞和毛刺等伪特征,其纹线宽度也不均匀,会影响到指纹特征的提取。因此,为避免二值化引入的毛刺空洞等伪特征带来的影响,保护指纹的细节特征,对所得的二值化图进行去毛刺和空洞。
五、特征点提取
在预处理中得到的细化图中提取指纹细节特征,主要有指纹图像的分叉点和端点。具体算法如下:
将细化后的指纹图像按照3*3的分块尺寸进行划分,其中目标检测像素点用代表,而、、、…、是在像素点的八个邻域像素点。为计算方便,这里将目标点的设定为1,则采用如下公式:
然后统计像素点的8个邻域中值为1的像素点个数,由此可得到:如果的8个邻域中有且仅有一个值为1的像素点,则,称为端点;如果的8个邻域中有两个值为1的像素点,,称为连续点;如果的8个邻域中有三个值为1的像素点,,称为分叉点。连续点即为指纹的纹路。
六、指纹图像的密码表示
将问题的解题方法用软件编程实现,对指纹依次进行预处理、特征点提取,最终得到其相对应的指纹密码。首先对指纹进行预处理,在所得指纹细化图的基础上,对指纹的细节特征进行提取,即运用8-领域算法找出指纹图像中的端点及分叉点。并运用仿真实现指纹图像特征点的提取。由指纹特征点提取图可得出各个特征点的位置坐标,即为指纹所唯一确定的指纹密码。根据已经找出了指纹细化图像中的特征点,画出了一段独特的脊线,在图像中用红色来标示。
七、建立基于奇异点的指纹分类模型
在实际情况中指纹图像中存在很大的噪声,在指纹图像的预处理过程中,不可能去除所有的噪音声,所以不能仅以奇异点的位置和数目进行指纹的分类。然而对于指纹图像中噪声比较严重的部分,甚至可能因为检测定位不准或检测不到,造成错误分类。
设为中心点的个数,为三角点的个数,基于奇异点的指纹分类规则如下:当且时,则为弓型;当且时,则为螺旋型;当且时,则根据方向图求与中心点垂直方向以及中心点与三角点连线的方向:若
,则为帐拱型;若,则为左旋型;若,则为右旋型;当且时,根据方向图,
沿方向以步长为5采样五个像素点,其方向分别为,,,,,计算方向偏移:
若,则为左旋型;若,则为右旋型。如果以上条件都不满足,则说明指纹图像质量太差,拒绝分类。
八、法提取奇异点
给定指纹图像的任意一点,在其邻域内做一条包围该点的闭合曲线,沿该闭合曲线逆时针旋转一周,通过计算得到的旋转角度总和不同对应了不同类型的点,中心点对应的值为180度,三角点对应的值为负180度,而一般图像区域点对应
值为0度。提取奇异点的具体步骤如下:
取一条封闭数字曲线计算值。取当前点为中心,距离为1的点组成的曲线,长度为4。按如下公式计算值:
封闭曲线的长度大小关系到奇异点定语的准确性。取一条与点距离为1的点组成的曲线,曲线长度为4。由于在数字处理图像中,所有图像均以矩阵形式存在,所取的曲线上的点坐标都是整数,取点距离为1,长度为4的曲线还能保证计算值的过程中用到的点均严格满足在这条曲线上,从而保证了计算的精确性。对指纹的每一像素点,根据以上所求得的值,设置奇异判据如下:若,则该点为中心点;若,则该点为三角点;否则该点为非奇异点。
九、指纹分类
根据基于奇异点的指纹分类模型,最终将指纹进行分类。
十、GUI界面设计
基于MATLAB软件的指纹识别研究相关推荐
- 基于matlab的汽车牌照识别研究
1 引言 随着我国交通运输的不断发展,智能交通系统(Intelligent Traffic System,简称ITS)的推广变的越来越重要,而作为ITS的一个重要组成部分,车辆牌照识别系统(vehic ...
- matlab指纹图像采集,基于MATLAB实现的指纹图像预处理
西南民族大学学报·自然科学版第 34 卷第 4 期 Journal of Southwest University for Nationalities⋅Natural Science Edition ...
- 基于MATLAB的答题卡识别软件设计
基于 MATLAB 的答题卡识别软件设计 课题意义 随着教育技术的飞速发展,考试普遍使用答题卡来记录答案,采用计算机自动识别答案卡信息,计算考生的成绩,可以减少阅卷人的工作量.本文利用 Matlab ...
- matlab编程模拟乐器产生乐音,一种MATLAB软件对乐音识别自动配置的分析研究
2015年 l2月 第 44卷 第 12期 机械设计与制造工程 Machine Design and Manufacturing Engineering Dec.2015 Vo1.44 No.12 D ...
- 金相图像处理 matlab,基于MATLAB软件的图像处理技术 毕业论文.doc
基于MATLAB软件: 在图像工程中,图像处理.图像分析.图像理解是其研究的三个重要层次.图像处理是图像目前发展的主体技术,它强调的是图形之间的转换.图像的灰度处理是图像处理的最基础理论之一,本文基于 ...
- 基于matlab的硅晶体模型,基于Matlab的图像处理技术识别硅太阳电池的缺陷
第 44 卷 第 7 期 2010 年 7 月 上 海 交 通 大 学 学 报 JOURNAL OF SHANGHAI J IAOTON G UNIVERSITY Vol. 44 No. 7 Jul. ...
- 基于matlab的手写体数字识别系统,基于matlab的手写体数字识别系统研究
基于matlab的手写体数字识别系统研究 丁禹鑫1,丁会2,张红娟2,杨彤彤1 [摘要]随着科学技术的发展,机器学习成为一大学科热门领域,是一门专门研究计算机怎样模拟或实现人类的学习行为的交叉学科.文 ...
- matlab自动识别技术,基于Matlab的车牌自动识别技术研究与实现
基于Matlab的车牌自动识别技术研究与实现 密 级 一般学 号 080605101院.(系) 计算机科学与工 程学院学 位申请人 :指 导 教 师 :学 科 专 业 : 软件工程学 位 类 别 : ...
- java数字图像处理开题报告,基于MATLAB的数字图像处理算法研究与仿真开题报告...
基于MATLAB的数字图像处理算法研究与仿真开题报告 毕 业 设 计 (2013 届) 题 目基于 MATLAB 的数字图像 处理算法研究与仿真 学 院 物理电气信息学院 专 业 通信工程 年 级 0 ...
最新文章
- git - 简易指南
- 《机器学习与数据科学(基于R的统计学习方法)》——2.11 R中的SQL等价表述...
- js过滤HTML标签以及空格
- linux 查看网络连接数
- 自定义eachFile遍历文件夹文件
- 如何修改桌面,收藏夹,我的文档等等的存储位置
- 银河计算机网络,Python脚本之socket
- 山东省能源产业项目动态及未来投资决策建议报告2021版
- yum安装nginx php mysql_yum安装nginx+mysql+php
- java secretkey_Java中的SecretKeyFactory类 | 学步园
- c++中类型用new和不用new的区别
- python画统计图代码_Python使用统计函数绘制简单图形实例代码
- linux应用程序安装PPT免费序,linux下应用程序安装的总结
- java编程一般类抽象类的定义,Java编程基础抽象类
- c语言编程输出数组元素之和,C语言 输出一个数组中,所有元素之和为0的子序列...
- java jolt tuxedo_Java通过Jolt调用Tuxedo服务
- B2C,B2B,c2c是什么?
- 2021-09-06 网安实验-编码解码-凯撒密码,QWERTY键盘编码
- SOA面向服务的架构设计
- Spring中Singleton模式的线程安全