一、简介
模型参考这里。
二、源代码
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.