基于MATLAB的指纹识别系统

21世纪是信息化时代,在这个特殊的时代,我们的生活中电子设备越来越多,比如,笔记本电脑, ATM取款机,考勤系统,门禁系统和各种智能卡,网络中的网上银行,人人网账号等,都需要验证身份。对个人身份识别技术的要求不断提高,如果没有安全可靠和快捷的身份识别技术,电子商务、网上购物等就存在重大隐患。目前许多身份验证系统都采用“用户名+密码”的方式来进行用户访问控制,但此方法存在诸多隐患,比如密码被窃取、破解或遗忘。因此我们在与机器交互时急需一种准确、安全快捷的识别技术来取代现有的身份验证。
指纹识别
指纹识别的流程:

  • 指纹图像采集
  • 指纹预处理
  • 特征提取
  • 指纹的匹配

指纹图像的采集,本文选取了五种指纹图像,具体如图所示,
数据集
指纹的预处理是为了准确可靠找到图像的特征,以保障后续的指纹匹配与分类。这主要包括灰度图像滤波去噪、二值化、二值化图像去噪、指纹的细化处理等。
在这里插入图片描述


%---------------取图像的中心点------------------------
[XofCenter,YofCenter] = centralizing(EnhanceFingerPrint);
%---------------二值化图像-----------------------------
[BinarizationFingerPrint,theta]=orientation(EnhanceFingerPrint);
%----------------进行中值滤波处理----------------------
AfterFilt=median_filter(BinarizationFingerPrint);
%----------------二值化图像细化处理--------------------
ThinFingerPrint=thinning(AfterFilt);

指纹的特征提取,用3x3的模板逐点对细化后的指纹图像的脊线进行检测,就可以初步选出所有的细节特征,记录下这些细节特征的类型和位置坐标,以便于下一步的剪枝处理。先去除伪特征端点,得到想要的特征点和中心点。特征端点用’o’标注,特征分叉点用’+‘标注,中心点用红色’*'标注。
在这里插入图片描述

%------------------------特征提取-------------------------------
[dimx,dimy]=size(temp);
Tsum=zeros(dimx,dimy);
for i=2:dimx-1
    for j=2:dimy-1
	    Tsum(i,j)=temp(i-1,j-1)+temp(i-1,j)+temp(i-1,j+1)+temp(i,j-1)+...
		          temp(i,j+1)+temp(i+1,j-1)+temp(i+1,j)+temp(i+1,j+1);
	end
end
%-----------------求可能的特征点集------------------------------
dpcount1=0;
fpcount1=0;
for i=21:dimx-20
    for j=21:dimy-20
	    if temp(i,j)==0&Tsum(i,j)==1785
	    dpcount1=dpcount1+1;
		dpx1(dpcount1)=i;
		dpy1(dpcount1)=j;
        elseif temp(i,j)==0&Tsum(i,j)==1275&((temp(i-1,j)==0&temp(i,j+1)==0&temp(i+1,j-1)==0)|...
		                                     (temp(i-1,j)==0&temp(i,j-1)==0&temp(i+1,j+1)==0)|...
		                                     (temp(i-1,j+1)==0&temp(i,j-1)==0&temp(i+1,j)==0)|...
		                                     (temp(i-1,j-1)==0&temp(i,j+1)==0&temp(i+1,j)==0)|...
	   ((temp(i-1,j)==0|temp(i-1,j-1)==0|temp(i-1,j+1)==0)&temp(i+1,j-1)==0&temp(i+1,j+1)==0)|...
	   (temp(i-1,j+1)==0&(temp(i,j-1)==0|temp(i-1,j-1)==0|temp(i+1,j-1)==0)&temp(i+1,j+1)==0)|...
	   (temp(i-1,j-1)==0&temp(i-1,j+1)==0&(temp(i+1,j)==0|temp(i+1,j-1)==0|temp(i+1,j+1)==0))|...
	   (temp(i-1,j-1)==0&(temp(i,j+1)==0|temp(i-1,j+1)==0|temp(i+1,j+1)==0)&temp(i+1,j-1)==0))
		fpcount1=fpcount1+1;
		fpx1(fpcount1)=i;
        fpy1(fpcount1)=j;
        end
    end
end	

指纹的匹配,根据得到的特征端点和特征点进行分类,特征端点分类为1,特征分叉点分类为2;建立特征端点相对中心点的距离向量,和特征分叉点相对中心点的距离向量;建立特征端点相对中心点的方向向量,和特征分叉点相对中心点的方向向量。按相同的原理得到待匹配指纹的特征点和特征端点。选用点类型匹配,找到一个指纹细化图像的特征点后,在该端点周围找到四十个端点或者交叉点,统计在这四十个特征点中端点的个数和交叉点的个数。若有两幅指纹细化图像中的端点所占的比例近似相同,则两幅图像相匹配,越近似,则越相同。
在这里插入图片描述

%------------------------指纹匹配-------------------------------
 if (PointOfModel(i,1)==PointOfMatch(j,1))&(abs(PointOfModel(i,2)-PointOfMatch(j,2))<2)&...
         (abs(PointOfModel(i,3)-PointOfMatch(j,3))<pi/4|abs(PointOfModel(i,3)-PointOfMatch(j,3))==pi/4)
            Count=Count+1;
            y(Count)=PointOfModel(i,2)-PointOfMatch(j,2);
            z(Count)=PointOfModel(i,3)-PointOfMatch(j,3);
            %不同图像匹配的维度不同,容易出现错误,省略掉
            if PointOfModel(i,1)==1
                plot(Dpy(i),Dpx(i),'or');
            else
                %plot(Fpy(i-size(Dpx,2)),Fpx(i-size(Dpx,2)),'og');
                plot(Fpy(abs(i-size(Dpx,2))),Fpx(abs(i-size(Dpx,2))),'og');
            end    
        end

经过测试,识别率准确率可以达到95%以上。
本文MATLAB GUI 界面如下,
在这里插入图片描述
如需转载,请注明作者出处,谢谢。qq-134-170-3358

  • 32
    点赞
  • 203
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
目录 摘要…………………………………………………………………………………4 Abstract……………………………………………………………………………4 第一章 绪论………………………………………………………………………5 1.1研究背景…………………………………………………………………5 1.2国内外研究现状…………………………………………………………6 1.3研究的目的和意义………………………………………………………8 1.4研究内容…………………………………………………………………9 第二章 指纹识别系统概述………………………………………………………10 2.1指纹识别的基本原理……………………………………………………10 2.2指纹识别系统工作流程…………………………………………………10 2.3指纹识别技术的方法……………………………………………………12 2.3.1神经网络指纹识别算法…………………………………………12 2.3.2滤波特征和不变矩指纹识别算法………………………………12 2.3.3指纹匹配算法……………………………………………………13 第三章 指纹图像预处理…………………………………………………………15 3.1图像规格化………………………………………………………………15 3.2图像分割…………………………………………………………………16 3.3图像二值化………………………………………………………………19 3.4图像增强…………………………………………………………………21 3.5图像细化…………………………………………………………………23 第四张 特征点提取………………………………………………………………26 4.1找出所以的端点和交叉点………………………………………………26 4.2纹线光滑处理……………………………………………………………28 4.3去除图像边缘和端点……………………………………………………29 4.4找出特征点………………………………………………………………30 4.4.1 single_point函数……………………………………………30 4.4.2 walk 函数………………………………………………………32 4.4.3 last1 函数…………………………………………………….33 第五章 特征点匹配……………………………………………………………….35 5.1纹线长度匹配……………………………………………………………35 5.2三角形边长匹配…………………………………………………………35 5.3点类型匹配………………………………………………………………36 第六章 实验过程………………………………………………………………….38 第七章 总结……………………………………………………………………….45 参考文献……………………………………………………………………………45 致谢…………………………………………………………………………………47

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路上的追梦人

您的鼓励就是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值