当前位置: 代码迷 >> 综合 >> 【指纹识别】基于模板匹配算法实现指纹特征提取matlab源码
  详细解决方案

【指纹识别】基于模板匹配算法实现指纹特征提取matlab源码

热度:64   发布时间:2023-12-03 20:37:04.0

一、简介

模型参考这里。

二、源代码

clear all
clc
I=im2bw(imread('1.jpg'));%将读入的图像变为二值图像
subplot(2,2,1);imshow(I);title('原始指纹图像');%显示原始指纹
[M,N]=size(I);
for i=2:M-1for j=2:N-1if I(i,j)==0if  (I(i-1,j)==0&I(i,j+1)==0)|(I(i-1,j)==0&I(i,j-1)==0)|(I(i+1,j)==0&I(i,j-1)==0)|(I(i+1,j)==0&I(i,j+1)==0)I(i,j)=1;elseI(i,j)=0;endendend
end
%用已知的四种模板对图像进行匹配,进行细化后处理,使其真正达到占一个像素的
% 宽度
subplot(2,2,2);imshow(I);title('细化指纹图像');%显示细化后指纹
t=0;
for i=2:M-1for j=2:N-1if I(i,j)==0n=I(i-1,j-1)+I(i-1,j)+I(i-1,j+1)+I(i,j-1)+I(i,j+1)+I(i+1,j-1)+I(i+1,j)+I(i+1,j+1);if (n==7||n==5)t=t+1;x(t)=j;y(t)=i;%记录下特征点的位置endendend
end %用模板匹配法进行指纹特征点的提取,端点和分叉点
subplot(2,2,3);imshow(I);title('提取指纹中的特征点(端点和分叉点)')
hold on;plot(x,y,'r*');hold off;  %画出特征点
for i=1:t-1for j=i+1:t  %指纹特征去伪d=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);if d<3 %用距离阈值的方法去除距离较近的特征点x(i)=-1;y(i)=-1;x(j)=-1;y(j)=-1;endend
end
c=0;d=0;
for i=1:tif (x(i)>=10&x(i)<max(x)-10)&(y(i)>=10&y(i)<max(y)-10)  %去除边缘的特征点c=c+1;l(c)=x(i);d=d+1;h(d)=y(i);end
end
x=find(x);y=find(y);
subplot(2,2,4);imshow(I);title('去除伪特征点')
hold on;plot(l,h,'r*'); hold off;
?
?
?

三、运行结果

 

 

 

四、参考文献

[1]王崇文, 李见为, 周宏文,等. 指纹识别系统的设计与实现[J]. 计算机应用, 2001(12):63-65.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

  相关解决方案