基于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
    点赞
  • 202
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: Matlab指纹识别GUI(Graphical User Interface)是基于Matlab编程语言开发的一种指纹识别系统。该系统利用MATLAB图形用户界面(GUI)为用户提供友好的图形化界面,使得用户可以轻松地进行指纹识别相关的功能操作。 在Matlab指纹识别系统中,用户可以通过GUI界面上传指纹图像,对指纹图像进行前处理、特征提取和匹配等处理,并获取指纹识别结果。该系统主要包含三个部分:指纹采集、指纹预处理和特征提取与匹配。其中,指纹采集模块用于获取指纹图像,指纹预处理模块用于对指纹图像进行噪声去除、增强和分割等操作,特征提取与匹配模块则用于提取指纹图像中的特征信息并与数据库中存储的指纹特征进行比较匹配,从而实现指纹识别的功能。 除了以上提到的核心功能外,Matlab指纹识别GUI还支持多种指纹识别算法的实现,如基于图像处理的指纹识别算法、基于模式识别指纹识别算法等。同时,该系统还提供了丰富的数据可视化功能,可以帮助用户更直观地了解指纹识别相关的数据信息。总的来说,Matlab指纹识别GUI是一种简单易用、功能丰富的指纹识别系统,可以为用户提供可靠、高效的指纹识别功能。 ### 回答2: Matlab指纹识别GUI是一种基于Matlab开发的人机交互指纹识别系统。它通过图形用户界面(GUI)的形式,直观地向用户展示指纹识别的结果,同时提供了友好、便捷、高效的操作方式。 Matlab指纹识别GUI主要是通过图像处理与模式识别技术实现指纹的自动识别。它的运行流程主要包括图像获取、预处理、特征提取、特征匹配等多个环节。用户可以通过GUI界面输入或导入指纹图像,在系统自动识别指纹后,输出匹配程度高的指纹图像。 此外,Matlab指纹识别GUI还提供了多种数据处理功能,包括指纹性质分析、指纹分类和比对等。用户可以通过这些功能了解指纹的特征和性质,进而对指纹进行更为精准的分析和比对。 总之,Matlab指纹识别GUI是一种功能强大、易于操作的指纹识别系统,它为指纹识别领域的研究和应用提供了便捷的支持。 ### 回答3: Matlab是一种流行的高级编程语言,非常适合进行图像处理和识别任务。在指纹识别领域中,Matlab也被广泛应用。Matlab指纹识别GUI是一种基于Matlab开发的图形用户界面,提供了一系列的交互式工具,便于用户进行指纹图像的处理和识别Matlab指纹识别GUI的主要功能包括指纹图像的预处理、特征提取、特征匹配和识别等。用户可以通过鼠标和键盘等交互方式来完成指纹图像的选择、缩放、旋转和滤波等操作。同时,Matlab指纹识别GUI也提供了多种特征提取和匹配算法,包括基于纹线、小块、方向和网格等特征提取算法,以及基于比对、相似性和模板匹配等特征匹配算法。 Matlab指纹识别GUI还支持多种图像文件格式的导入和导出,包括JPEG、PNG、BMP等常见格式。用户可以方便地将处理过的指纹图像保存为图像文件,也可以将识别结果以文本或Excel文件的形式输出。 需要注意的是,在使用Matlab指纹识别GUI时,用户需要具备一定的Matlab编程基础和图像处理知识。同时,为了提高识别准确度,用户还需要根据具体的需求进行参数调整和算法优化,以获得最佳的识别效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路上的追梦人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值