✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
指纹识别技术是通过计算机实现的身份识别手段,也是当今应用最为广泛的生物特征识别技术。指纹识别最早应用在刑侦领域,近几年来已逐渐走向民用市场。同时,民用市场也对指纹识别技术提出了具有小型化、廉价的指纹采集设备,高速计算平台,更高的识别准确率等各方面的要求,以满足各种不同应用的需求。因此进行指纹识别算法的研究仍具有很高的实际意义。 本文主要对基于八方向Gabor滤波器的指纹识别算法进行了研究,实现了该算法从指纹参考点定位,确定感兴趣区域,规格化,八方向Gabor滤波,特征提取到特征比对的整个过程,最终的特征比对过程是建立在比对两个指纹特征向量(指纹码)的欧几里德距离上。
⛄ 部分代码
function [thetaz]=LL_angle2(img,x,y)
rc=0;thetaz=0;
while thetaz==0
if rc~=0
img=imrotate(img,rc);
end
[imgN,imgM]=size(img);
image=zeros(imgN,imgM);
R=width(x,y,img);
r=10*R;
for i=1:imgN %行
for j=1:imgM %列
if sqrt((j-x)^2+(i-y)^2)<r
image(i,j)=~img(i,j);
end
end
end
BW=bwmorph(image,'thin',Inf);
[H,theta,rho]= hough(BW);
P = houghpeaks(H,7,'threshold',ceil(0.4*max(H(:))));%检测投票结果
lines = houghlines(BW,theta,rho,P,'FillGap',5,'MinLength',7);%检测直线
for k = 1:length(lines)
len = norm(lines(k).point1 - lines(k).point2);%直线的长度
a(k)=len;
[~,t]=sort(a);
end
N=min(3,length(lines));thetax=zeros(1,N);
for i=1:N
thetax(i)=lines(t(length(t)-(i-1))).theta;
end
figure;subplot(121);imshow(BW);
subplot(122);imshow(BW);
hold on;
for i=1:N
xy{i}= [lines(t(length(t)-(i-1))).point1; lines(t(length(t)-(i-1))).point2];
plot(xy{i}(:,1),xy{i}(:,2),'LineWidth',2,'Color','blue')
end
temp=median(thetax);
n0=0;
for i=1:N
if(abs(thetax(i)-temp)<=15)
xtx(i)=thetax(i);
n0=n0+1;
else
xtx(i)=0;
end
end
if n0==N
thetaz=sum(xtx)/n0+rc;
if thetaz<-60
thetaz=thetaz+180;
end
else
thetaz=0;
end
rc=rc+10;
end
end
⛄ 运行结果
⛄ 参考文献
[1]郭浩, 欧宗瑛. 基于Gabor滤波的指纹增强方法研究[C]// 第七届"测量与控制在资源节约,环境保护中的应用"学术会议. 2003.
[2]孙嘉. 基于八方向Gabor滤波器的指纹识别算法[D]. 天津大学.