【指紋識別】基于模板匹配實(shí)現(xiàn)指紋識別含Matlab源碼
1 簡介
指紋識別技術(shù)是生物識別技術(shù)的一種,正因?yàn)橹讣y具備唯一性和不變性等特征使得指紋識別技術(shù)已經(jīng)被廣泛的應(yīng)用于身份鑒證等多種領(lǐng)域。一般而言,一個(gè)指紋數(shù)字圖像識別系統(tǒng)通常由指紋數(shù)字圖像預(yù)處理、特征提取、保存指紋數(shù)字圖像及指紋數(shù)字圖像匹配等四部分過程構(gòu)成?! ”疚膶χ讣y數(shù)字圖像識別系統(tǒng)的原理和基本過程進(jìn)行了較為深入的分析與研究。首先對指紋數(shù)字圖像的分類、基本特征與識別原理進(jìn)行了詳細(xì)的論述。其次,在指紋數(shù)字圖像預(yù)處理部分,本文主要對預(yù)處理的各個(gè)步驟:數(shù)字圖像分割、數(shù)字圖像增強(qiáng)、二值化、圖像細(xì)化等含義及過程進(jìn)行了詳細(xì)的分析,并設(shè)計(jì)了一種合適的指紋數(shù)字圖像預(yù)處理方案。然后詳細(xì)的論述了指紋數(shù)字圖像的特征提取與匹配過程,其中指紋數(shù)字圖像的特征提取是從細(xì)化后的指紋數(shù)字圖像圖中提取出端點(diǎn)和分叉點(diǎn),即細(xì)節(jié)特征點(diǎn),此特征點(diǎn)會包含大量的偽特征,這樣會非常耗時(shí)并且降低匹配的精度,而采用邊緣去偽和距離去偽的方法能使偽特征點(diǎn)減少近1/3,然后再提取可靠特征點(diǎn)信息,從而實(shí)現(xiàn)指紋數(shù)字圖像匹配,本文采用了基于MATLAB實(shí)現(xiàn)的指紋數(shù)字圖像細(xì)節(jié)特征提取方式。在指紋數(shù)字圖像匹配部分,本文采用基于細(xì)節(jié)點(diǎn)的指紋數(shù)字圖像匹配算法,并進(jìn)行了深入研究。最后,通過對指紋數(shù)字圖像識別系統(tǒng)算法的詳細(xì)研究,本文利用MATLAB工具設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)指紋數(shù)字圖像識別系統(tǒng),完成了對指紋數(shù)字圖像的處理、特征提取,保存和匹配等功能,利用編碼對指紋數(shù)字圖像進(jìn)行入庫、匹配等操作,從而完成圖像的識別來判斷是否同一指紋,其比對結(jié)果令人滿意。
2 部分代碼
function [X1,Y1,X2,Y2]=find_feature(I,x0,y0,radius)
[M,N]=size(I);
t=0;
k=0;
for i=2:M-1
? ?for j=2:N-1
? ? ? ?if I(i,j)==0
? ? ? ? ? ?n=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==5)%分叉點(diǎn)
? ? ? ? ? ? ? ?t=t+1;
? ? ? ? ? ? ? ?x1(t)=j;
? ? ? ? ? ? ? ?y1(t)=i;
? ? ? ? ? ?end
? ? ? ? ? ?if (n==7)%端點(diǎn)
? ? ? ? ? ? ? ?k=k+1;
? ? ? ? ? ? ? ?x2(k)=j;
? ? ? ? ? ? ? ?y2(k)=i;
? ? ? ? ? ?end
? ? ? ?end
? ?end
end
%去除距離較近的特征點(diǎn)
for i=1:t-1
? ?for j=i+1:t
? ? ? ?d=sqrt((x1(i)-x1(j))^2+(y1(i)-y1(j))^2);
% ? ? ? ? if d<20
% ? ? ? ? ? ? x1(i)=-1;y1(i)=-1;x1(j)=-1;y1(j)=-1;
% ? ? ? ? end
? ?end
end
for i=1:k-1
? ?for j=i+1:k
? ? ? ?d=sqrt((x2(i)-x2(j))^2+(y2(i)-y2(j))^2);
% ? ? ? ? if d<10
% ? ? ? ? ? ? x2(i)=-1;y2(i)=-1;x2(j)=-1;y2(j)=-1;
% ? ? ? ? end
? ?end
end
%保留中心點(diǎn)半徑之內(nèi)的點(diǎn)
for i=1:t
% ? ? d(i)=sqrt((x1(i)-x0)^2+(y1(i)-y0)^2);
% ? ? ?if(d(i)<radius)
? ?X1(i)=x1(i);
? ?Y1(i)=y1(i);
% ? ? ?end
end
for i=t:1000
% ? ? d(i)=sqrt((x1(i)-x0)^2+(y1(i)-y0)^2);
% ? ? ?if(d(i)<radius)
? ?X1(i)=0;
? ?Y1(i)=0;
% ? ? ?end
end
for i=1:k
? ? d(i)=sqrt((x2(i)-x0)^2+(y2(i)-y0)^2);
? ? if(d(i)<radius)
? ?X2(i)=x2(i);
? ?Y2(i)=y2(i);
? ? end
end
end
3 仿真結(jié)果
4 參考文獻(xiàn)
[1]秦楓. 基于MATLAB的指紋識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 電子科技大學(xué).