基于MATLAB的指纹识别系统

一、 课题介绍

随着网络信息化时代的快速发展,个人身份的数字化和隐性化水平也得到了提高。如何准确鉴定一个人的身份,保护信息安全是当今信息化时代必须解决的一个关键性社会问题。目前,我国的各种管理大部分使用证件、磁卡、IC卡和密码,这些手段无法避免伪造或遗失,密码也很容易被窃取或遗忘。这些都给管理者和使用者带来很大不方便。生物特征身份鉴别方法可以避免这些麻烦。因此,这一技术已成为身份鉴别领域的研究热点。

生物特征识别(BiometriCS)技术是指通过计算机利用人体所固有的生理特征或行为特征来进行个人身份鉴别。生理特征与生俱来,多为先天性的;行为特征则是习惯使然,多为后天性的。这里将生理和行为特征统称为生物特征,用于身份鉴别的生物特征应具有普遍性,即任何人都具有这一特征;唯一性,不同人的这一特征各不相同;稳定性,这一特征不随时间、外界环境等的变化发生改变;可接受性,用这一特征进行人体身份鉴别可以被人们接受和认可;防伪性,这一特征不易仿造、窃取。

二、 指纹识别研究的目的和意义

指纹识别作为一种生物鉴定技术,为人类的个体的定义提供了一个到目前为止最为快捷和可信的方法。随着指纹识别的普及,人们之间的信任成本将大大降低,提高人类社会活动的效率。在信息时代,一种安全便捷的身份认证方式显得越发重要。“在网络上,没有人知道你是一只狗,”在这种情况下,任何基于网络环境下的交往活动都被蒙上了一层技术意义的灰色。不可避免,所有基于这种网络技术基础之上的经济活动也因此被深深打上了不真实和不被信任的烙印。面对如此伟大的技术,人类对它的应用仅仅局限于虚拟网络群落中的狂欢,而不能真正对经济交往模式和效率起到推动作用,实在是遗憾。对于想从事和已经从事网络商务的公司来讲,确认交易人的身份是解决信用问题的第一步,而且是最重要的一步。对于淘宝网来讲,它能做的仅仅是通过身份证注册来保证交易人身份,这样的确是降低了身份冒用的及率,但不能不说这道防线是非常脆弱的。盗用他人身份证到淘宝上注册来骗取货款的案例层出不穷。对于阿里巴巴这样的大型B2B网站,即使他们在授予“诚信通”之前会对企业的注册资料等方面做详尽评估和考察,但是谁又能保证后续的交易者就是企业本身呢?毕竟,“诚信通”不能保证使用者的帐号和密码不会被盗取。这正是电子商务所面临的困境和瓶颈。Paypal已经推出通过指纹识别来进行网络支付。相信随着技术成熟和应用成本降低,除了支付之外的任何网络信任问题都可以指纹识别得到极大改善,从而体高人们在信息时代的行动效率。

从生物测量角度而言,指纹识别将是一种非常理想的工具,用来定位一个人的基本社会坐标原点。作为一个人,具有非常复杂的社会角色。在公司的时候,你可能是产品总监、员工等工作性角色;回到家,你就是丈夫、孩子、爸爸、舅舅、哥哥等血缘性角色;当参加公司年度运动会时,你又是一名长跑运动员。所有这些角色都是基于你的生物测量基础上的。社会公共管理中,必须有一个基础变量来确认一个人的基本身份。在过去的很长一段时间里,我们是通过户籍制度来进行管理和定义一个人的,一个从出生到死亡都是根据其出生地来定义和追溯其身份。这种方式的随意性很大,防伪性比较差,容易引起管理上的漏洞。在现实生活中,有些内地考生为了取得成绩优势,到偏远省份重新办理一套身份系统,包括户口、身份证、档案等。在很多情况下,一个人的真实身份是很难被分辨的。指纹识别作为一个人基本社会角色定位点,其方便性和准确性已经得到了全世界范围内的认可。通过各种各样的指纹识别系统,社会公共管理的职能得到了强化,效率得到了提高。原来的养老保险系统,冒领保险金现象比较严重。随着越来

越多的地方实施了指纹养老金发放系统,这一现象得到了彻底改善,没有当事人的指纹,对应的养老金是不可能被领取的。深圳罗湖口岸,指纹出入境系统的实施大大提高了通关效率,过关旅客再也不需要拿着身份证排长队等待检查。

指纹识别承载了很多的社会意义,从最根本上来讲,是可以良好的判断和定义一个人的真实生物身份。从而降低社会活动中的信任成本,从根本上改变经济和社会交往模式改变,提高效率。指纹识别作为一种生物鉴定技术,为人类的个体的定义提供了一个到目前为止最为快捷和可信的方法。

随着指纹识别技术的日渐成熟,图像处理及模式识别界曾一度认为自动指纹识别问题已经得到很好的解决。但实际上,指纹识别的核心技术仍然存在许多尚

未解决的难题,尤其是对残缺、污损指纹图象进行识别的鲁棒性和适应性方面不

能令人满意。指纹识别系统将随着更小更廉价的指纹输入设备的出现、计算能力

更强更廉价的硬件以及互联网的广泛应用而进一步拓宽应用。其中,能适应在线

应用的自动指纹识别系统的算法有待进一步改进,多种指纹识别方法的集成应用

以及包括指纹识别在内的多种生物特征鉴定技术的集成应用也将是今后研究的

发展方向。因此,自动指纹识别技术现在是,未来几年仍将是一个重要的、极具

挑战性的模式识别研究课题。

三、指纹识别的基本原理

指纹其实是比较复杂的。与人工处理不同,许多生物识别技术公司并不直接存储指纹的图象。多年来在各个公司及其研究机构产生了许多数字化的算法(美国有关法律认为,指纹图象属于个人隐私,因此不能直接存储指纹图象)。但指纹识别算法最终都归结为在指纹图象上找到并比对指纹的特征。

1.指纹的特征

我们定义了指纹的两类特征来进行指纹的验证:总体特征和局部特征。在考虑局部特征的情况下,英国学者E.R.Herry认为,只要比对13个特征点重合,就可以确认为是同一个指纹。

总体特征:总体特征是指那些用人眼直接就可以观察到的特征,包括:基本纹路图案环型(loop),弓型(arch),螺旋型(whorl)。其他的指纹图案都基于这三种基本图案。仅仅依靠图案类型来分辨指纹是远远不够的,这只是一个粗略的分类,但通过分类使得在大数据库中搜寻指纹更为方便。

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

2.指纹的特征点

指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或打折。这些断点、分叉点和转折点就称为“特征点”。就是这些特征点提供了指纹唯一性的确认信息。

四、算法流程

指纹识别技术主要涉及四个功能:读取指纹图象、提取特征、保存数据和比对。

系统开始,通过指纹读取设备读取到人体指纹的图象,取到指纹图象之后,要对原始图象进行初步的处理,使之更清晰。接下来,指纹辨识软件建立指纹的数字表示特征数据,一种单方向的转换,可以从指纹转换成特征数据但不能从特征数据转换成为指纹,而两枚不同的指纹不会产生相同的特征数据。软件从指纹上找到被称为(minutiae)的数据点,也就是那些指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。因为通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。有的算法把节点和方向信息组合产生了更多的数据,这些方向信息表明了各个节点之间的关系,也有的算法还处理整幅指纹图像。总之,这些数据,通常称为模板,保存为1K大小的记录。无论它们是怎样组成的,至今仍然没有一种模板的标准,也没有一种公布的抽象算法,而是各个厂商自行其是。

最后,通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果。指纹识别系统框图如图2.1所示。

图2.1 指纹识别系统工作原理框图

五、 matlab仿真实验结果与分析

本课题通过matlab仿真软件分别对神经网络指纹识别算法、滤波特征和不变矩指纹识别算法、指纹匹配算法进行仿真实验与分析。

5.1 算法matlab仿真结果

图3.1 原始指纹图像

图3.2 经过神经网络和高斯滤波的指纹图像

图3.3 经过不变矩的指纹图像

图3.4 经过匹配细化后的指纹图像

5.2 结果分析

试验结果显示:

LVQ神经网络模型的优势在于网络结构简单,只通过内部单元的互相作用,就可以完成十分复杂模式识别的分类处理,具有很好的模式识别特性。

滤波特征和不变矩指纹识别算法的优势在于它是基于直接线性变换的,因而无需确定与应用相关的自适应参数。矩技术类型很多,现已被应用于图像分类与识别处理的许多方面。从数学角度上看,矩是很简单的。它的局限性在于无法对特定的目标特性进行精细计算,而且只能被应用于全局目标识别任务中。

指纹匹配算法具有速度快、指纹模板小的优点,但是容易受指纹图像噪声干扰。基于全局特征匹配方式主要使用指纹纹理特征,具有特征稳定、信息丰富的优点,但是匹配精度不高、指纹模板比较大。

六、源代码

function out = go_to_next_element(in, path);

% called by end_track()

% with the input image and the path list, it will track to the next

% connected element of the ridge

[ix,iy] = size(in);

[length, dummy] = size(path);

next_x = 0;

next_y = 0;

flag = 0;

% length is the length of the path

%simply go to the next element

if (path(length,1) <4)

flag = 1;

end;

if (path(length,1) > 197)

flag =1;

end;

if (path(length,2) <4)

flag = 1;

end;

if (path(length,2) > 197)

flag =1;

end;

if flag == 0

[next_x,next_y] = find_next(in,path);

end;

%add it to the path

path(length+1,1) = next_x;

path(length+1,2) = next_y;

out = path;
程序2:

function [out, real_end ] =end_track(in,end_list,branch_list)

% 2/12

% this function will use the input image and the end_list to generate the

% output image ( cleaned ) and the list of real minutiae ( end points )

%

% out --- output image

% real_end --- real minutiae (end points)

% in --- input image

% end_list --- the list of valid and invalid end points

real_end = zeros(1,3);

end_count = 0;

'end_track'

out = in;

[number_of_end, dummy] = size(end_list);

for i=1:number_of_end

%path is a list of the tracked element in the currently

%tracking ridge

path = zeros(1,2);

path(1,1) = end_list(i,1);

path(1,2) = end_list(i,2);

if is_single(path(1,1),path(1,2),out) == 1

%it is a single point (pore) it should be invalid minutia

% and will be removed

out(path(1,1),path(1,2)) = 0;

else

% loop for n times , n > max path length value

flag = 0;

for j=1:25

path = go_to_next_element(in, path);

% check two conditions here

% if any one of the condition match

% break the loop

[len ,ddummy] = size(path);

curr_x = path(len,1);

curr_y = path(len,2);

% three conditions will break the loop.

if is_a_end_point(curr_x,curr_y,end_list) == 1

'---> is a end'

%need to delete it from output image

%

flag = 1;

break;

elseif is_a_branch_point(curr_x,curr_y,branch_list) == 1

'--->is a branch'

%need to delete it from output image

%

flag =1;

break;

elseif curr_x == 0 & curr_y == 0

'---> curr is 0'

flag = 1;

break;

end;

% no break

j

end; %end of the 25 loop

% the path length of the ridge is

% longer than 24 pixels

% it consider as a valid minutia (end points)

% store it in the real_end

if flag == 0

[ path_length, dddd] = size(path);

mean_x = 0;

mean_y = 0;

for k = 1:path_length

mean_x = mean_x + path(k,1);

mean_y = mean_y + path(k,2);

end;

mean_x = mean_x / path_length;

mean_y = mean_y / path_length;

theta = atan2( (mean_x - path(1,1)),(mean_y - path(1,2)) );

end_count = end_count +1;

real_end(end_count,1) = path(1,1);

real_end(end_count,2) = path(1,2);

real_end(end_count,3) = theta;

end;

end; %else%

i

end;

基于MATLAB的指纹识别系统相关推荐

  1. matlab 函数return_基于MATLAB的指纹识别系统【论文,GUI】

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  2. matlab 二值化_基于MATLAB的指纹识别系统[GUI界面+万字技术文档+语音播报]

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  3. 基于MATLAB的人脸识别系统

    基于MATLAB的人脸识别系统 一.课题背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除 ...

  4. matlab 指纹,一种基于matlab的指纹识别方法

    一种基于matlab的指纹识别方法 [技术领域] [0001 ] 本发明涉及指纹识别领域,特别涉及一种基于MTLAB的指纹识别方法. [背景技术] [0002] 传统的安防系统主要采用基于令牌或密码的 ...

  5. 基于matlab的指纹识别程序

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于matlab的指纹识别程序 前言 一.程序思路是什么? 二.预处理步骤 1.指纹图像的灰度化处理 2.指纹图像的归一化与分割处理 ...

  6. 基于matlab指纹识别论文,毕业论文-基于Matlab的指纹识别

    毕业论文-基于Matlab的指纹识别 1 毕 业 论 文 基于 Matlab 的指纹识别 姓 名 院(系) 专业班级 学 号 指导教师 职 称 论文答辩日期 2 摘摘 要要 随着科学技术的不断发展,自 ...

  7. 基于matlab的人脸五官边缘检测方法,基于MATLAB的人脸识别系统的设计

    基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...

  8. 基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

    基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位.字符分割和字符识别三个主要部分.本文首先确定车辆 ...

  9. matlab speex的语音处理模块_基于MATLAB的条形码识别系统[GUI,可识别几十个图片]...

    1.1 应用MATLAB识别条形码总体设计 本设计为基于MATLAB的条形码识别系统,带有一个GUI界面. GUI设计界面 1.1.1 程序总体设计思路 在上节中我们简单的介绍了MATLAB的发展以及 ...

  10. 基于Matlab的车牌识别系统完整版课论文分享 快看

    基于Matlab的车牌识别系统 一.设计原理 车辆车牌识别系统的基本工作原理为:将摄像头拍摄到的包含车辆车牌的图像通过视频卡输入到计算机中进行预处理,再由检索模块对车牌进行搜索.检测.定位,并分割出包 ...

最新文章

  1. java redis 下载_redis Java源代码 redis.rar - 下载 - 搜珍网
  2. html修改headicon,index.html
  3. 盘点52个全球人工智能和机器学习重要会议
  4. 六年级下计算机课ppt课件ppt课件,信息技术六年级《第7课 机器人沿线行走》ppt课件(苏科版)...
  5. 使用数据库的压测工具super-smack测试mysql数据库性能
  6. 好象现在才开始热爱生活了
  7. pytorch 中的 split
  8. 【IT运维】自动化运维是什么意思?有什么作用?
  9. ALSA之Codec注册过程
  10. 计算机中word繁体字转简体字,word简繁体怎么转换的两种方法
  11. 批量删除多个 Excel 空白工作表
  12. 为什么好多人说uc浏览器是最牛的浏览器?
  13. 联想微型计算机beta2,联想的两款Detachable 2-in-1新品,可能是我未来会买的移动办公/床头娱乐本...
  14. [Luogu] 逆序数P5149 会议座位
  15. Docker学习之路02:阿里云镜像加速器
  16. Altium designer2020基础使用教程
  17. 史上最全软件测试工程师常见的面试题总结(四)【多测师_王sir】
  18. java 如何将base64 转成图片并保存,返回地址入库
  19. L2-015 互评成绩
  20. Pytorch的22个激活函数

热门文章

  1. linux安装CAS认证服务器
  2. 怎么样选择合适的CFA备考资料
  3. 品质qc工程图_QC工程图 (品管)
  4. 计算机二级Office选择题考题大全【掌握】
  5. Java 18 新特性
  6. AI之DS:人工智能领域之数据科学领域六大实践场景(金融信用违约、反欺诈模型、客户偏好洞察、智能推荐、精准营销、客户流失管理)所对应的机器学习算法总结(持续更新)
  7. 质量管理体系五大核心工具
  8. 手工制作夜光星星的方法
  9. ShaderForge插件介绍详解
  10. mhdd测试hdd硬盘软件,硬盘检测工具(HDDScan)