1 简介
指纹识别技术是生物识别技术的一种,正因为指纹具备唯一性和不变性等特征使得指纹识别技术已经被广泛的应用于身份鉴证等多种领域。一般而言,一个指纹数字图像识别系统通常由指纹数字图像预处理、特征提取、保存指纹数字图像及指纹数字图像匹配等四部分过程构成。 本文对指纹数字图像识别系统的原理和基本过程进行了较为深入的分析与研究。首先对指纹数字图像的分类、基本特征与识别原理进行了详细的论述。其次,在指纹数字图像预处理部分,本文主要对预处理的各个步骤:数字图像分割、数字图像增强、二值化、图像细化等含义及过程进行了详细的分析,并设计了一种合适的指纹数字图像预处理方案。然后详细的论述了指纹数字图像的特征提取与匹配过程,其中指纹数字图像的特征提取是从细化后的指纹数字图像图中提取出端点和分叉点,即细节特征点,此特征点会包含大量的伪特征,这样会非常耗时并且降低匹配的精度,而采用边缘去伪和距离去伪的方法能使伪特征点减少近1/3,然后再提取可靠特征点信息,从而实现指纹数字图像匹配,本文采用了基于MATLAB实现的指纹数字图像细节特征提取方式。在指纹数字图像匹配部分,本文采用基于细节点的指纹数字图像匹配算法,并进行了深入研究。最后,通过对指纹数字图像识别系统算法的详细研究,本文利用MATLAB工具设计并实现了一个指纹数字图像识别系统,完成了对指纹数字图像的处理、特征提取,保存和匹配等功能,利用编码对指纹数字图像进行入库、匹配等操作,从而完成图像的识别来判断是否同一指纹,其比对结果令人满意。
2 部分代码
function varargout = func_preproc(varargin)
A = varargin{1};
% A=imread('a.bmp');
A=rgb2gray(A);
j=medfilt2(A);
% figure,imshow(j);
B=imadjust(A,[0.2 0.8]);
% figure;
% subplot(2,2,1);imshow(A);
% subplot(2,2,2);imhist(A);
% subplot(2,2,3);imshow(B);
% subplot(2,2,4);imhist(B);
[x,y]=size(B);
m=double(B);
N=sqrt(100)*randn(x,y);
I=m+N;
for i=1:x
for j=1:y
if (I(i,j)>255)
I(i,j)=255;
end
if (I(i,j)<0)
I(i,j)=0;
end
end
end
z0=max(max(I));
z1=min(min(I));
T=(z0+z1)/2;
TT=0;
s0=0;n0=0;
s1=0;n1=0;
allow=0.5;
d=abs(T-TT);
count=0;
while(d>=allow)
count=count+1;
for i=1:x
for j=1:y
if(I(i,j)>=T)
s0=s0+I(i,j);
n0=n0+1;
end
if(I(i,j)<T)
s1=s1+I(i,j);
n1=n1+1;
end
end
end
T0=s0/n0;
T1=s1/n1;
TT=(T0-T1)/2;
d=abs(T-TT);
T=TT;
end
seg=zeros(x,y);
for i=1:x
for j=1:y
if(I(i,j)>=T)
seg(i,j)=1;
end
end
end
% figure;
% imshow(seg);
BW1=bwmorph(seg,'spur');
BW2=bwmorph(BW1,'fill');
BW3=bwmorph(BW2,'clean');
% figure;
% imshow(BW3);
varargout{1} = BW3;
3 仿真结果
4 参考文献
[1]孙玉明,王紫婷. 基于Matlab的指纹识别系统的研究与实现[J]. 电脑知识与技术:学术版, 2009, 5(12):2.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。