指紋識別技術研究論文_第1頁
指紋識別技術研究論文_第2頁
指紋識別技術研究論文_第3頁
指紋識別技術研究論文_第4頁
指紋識別技術研究論文_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、指紋識別技術研究摘要:隨著生物識別技術的不斷發展,人們發現每個人的指紋具有唯一性和不變性。因此指紋識別技術逐步發展為一種新的身份識別方式,并且憑借其良好的安全可靠性,大有取代傳統身份識別方式的趨勢。本文簡要介紹了指紋識別的基本步驟,分別是指紋圖像預處理、指紋特征提取、指紋匹配。在圖像預處理中,依次介紹了規格化處理、圖像增強、二值化處理和細化處理的方法。預處理后將得到一幅寬度為一個像素的細化二值圖像,然后通過特定的端點和交叉點的特征進行指紋匹配。實驗表明,該方法效果良好。論文中采用Matlab編程實現全部算法。關鍵詞:指紋識別,圖像處理,特征提取,特征匹配傳統的身份識別技術包括基于密碼的身份識別

2、技術和基于令牌的身份識別技術。但是這兩種方式都存在著一定的安全風險:令牌容易丟失,密碼容易忘記,且它們都容易被竊取或冒充。近年來,依賴人體特征的新型身份識別技術正在興起,憑借其唯一且不變的特點,生物識別技術逐步成為人們研究的熱點。而在生物識別技術中,指紋識別技術已經被廣泛的研究和應用。它的基本原理框圖如圖一所示。圖1指紋識別的基本原理框圖2.指紋圖像預處理2.1 圖像規格化受采集設備參數和環境的影響,采集到的指紋圖像可能總體對比度較差。圖像歸一化的作用就是使所有指紋圖像具有相同的灰度均值和方差,從而將每一幅圖像的灰度調整到統一的范圍,方便后續處理。歸一化的算法是:(1) 先計算圖像的平均值和方

3、差。這部分工作主要通過統計圖像中各點像素值得到該圖像的直方圖,然后利用直方圖來計算指紋圖像的相關指標。1H1W1M(I)WHi0I(i,j)j0Var(I)1WHH1W1(I(i,j)M(I)2(2)指定期望經過處理后的圖像均值和方差,計算歸一化后的圖像G。Varo(I(i,j)M(I)2Mo.10,I(i,j)MG(i,j)圖像規格化的VarVaro(I(i,j)M(I)2Mo、,othersVarMatlab程序如下(其中方差取Var0=2000,M0=150):%歸一化M=0;var=0;%圖像的平均值和方差開始進行初始化forx=1:mfory=1:nM=M+I(x,y);endend

4、M1=M/(m*n);%計算圖像的平均值forx=1:mfory=1:nvar=var+(I(x,y)-M1),A2;班算圖像的方差endendvar1=var/(m*n);forx=1:mfory=1:nifI(x,y)=M1I(x,y)=150+sqrt(2000*(I(x,y)-M1)/var1);%處理后的圖像均值elseI(x,y)=150-sqrt(2000*(M1-I(x,y)/var1);%處理后的圖像方差endendendfigure,imshow(uint8(I);%顯示歸一化后的圖像帶入指紋圖像Zhiwen1.bmp后得到的原始圖像和歸一化圖像見圖2和圖3:圖2原始指紋圖

5、像圖3規格化后的指紋圖像2.2 圖像分割指紋圖像通常包括紋線區域和周邊的無用區域。如果保留這些無用區域,會致使計算冗余度增加。為此要先將其從待處理區域中去除。通常用的分離方法有像素領域特征的方法和基于像素分布概率的方法等。本文采取對各像素鄰域特征進行分析,然后分割圖像算法。吧圖像分成T*T的非重疊塊,計算每一塊的灰度均值M和方差Var,通過下列條件區分前景與背景:(1) 如果MM1且VarVar1,則認為背景(2) 如果M=Var1,則認為前景,否則待定;(3) 對所有分塊劃分完畢后,在對待定塊進行判決。如果在8鄰域中,背景景小于等于4則認為是前景,否則是背景在編程過程中通過幾次調試后對圖像進

6、行3*3分塊處理Matlab程序如下:%分割M=3;%3*3H=m/M;L=n/M;aveg1=zeros(H,L);var1=zeros(H,L);%計算每一塊的平均值forx=1:H;fory=1:L;aveg=0;var=0;fori=1:M;forj=1:M;aveg=I(i+(x-1)*M,j+(y-1)*M)+aveg;endendaveg1(x,y)=aveg/(M*M);%計算每一塊的方差值fori=1:M;forj=1:M;var=(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y),A2+var;endendvar1(x,y)=var/(M*M);enden

7、dGmean=0;Vmean=0;forx=1:Hfory=1:LGmean=Gmean+aveg1(x,y);Vmean=Vmean+var1(x,y);endendGmean1=Gmean/(H*L);湎有塊的平均值Vmean1=Vmean/(H*L);湎有塊的方差gtemp=0;gtotle=0;vtotle=0;vtemp=0;forx=1:Hfory=1:LifGmean1aveg1(x,y)gtemp=gtemp+1;gtotle=gtotle+aveg1(x,y);endifVmean1var1(x,y)vtemp=vtemp+1;vtotle=vtotle+var1(x,y);

8、endendendG1=gtotle/gtemp;V1=vtotle/vtemp;gtemp1=0;gtotle1=0;vtotle1=0;vtemp1=0;forx=1:Hfory=1:LifG1aveg1(x,y)gtemp1=gtemp1-1;gtotle1=gtotle1+aveg1(x,y);endif0var1(x,y)G2&var1(x,y)M1且VarVah,則認為背景e(x,y)=1;end哪口果M=Var1,則認為前景,否則待定ifaveg1(x,y)G1-100&var1(x,y)V2e(x,y)=1;endendendforx=2:H-1fory=2:L-1ife(x,

9、y)=1ife(x-1,y)+e(x-1,y+1)+e(x,y+1)+e(x+1,y+1)+e(x+1,y)+e(x+1,y-1)+e(x,y-1)+e(x-1,y-1)(3*summ/8),則該像素點的脊線方向為summin,否則為summax.確定完方向后就根據該向場對圖像進行二值化。%莫板系數均值濾波Matlab程序如下:%二值化temp=(1/9)*111;111;111;Im=double(I);In=zeros(m,n);%創建一個全0的二維數組,mf亍n列fora=2:m-1;forb=2:n-1;In(a,b)=Im(a-1,b-1)*temp(1,1)+Im(a-1,b)*t

10、emp(1,2)+Im(a-1,b+1)*temp(1,3)+Im(a,b-1)*temp(2,1)+Im(a,b)*temp(2,2)+Im(a,b+1)*temp(2,3)+Im(a+1,b-1)*temp(3,1)+Im(a+1,b)*temp(3,2)+Im(a+1,b+1)*temp(3,3);endendI=In;Im=zeros(m,n);%創建一個全0的二維數組,m彳fn列forx=5:m-5;fory=5:n-5;%分別af算8個方向上的經過處理后的灰度值sum1=I(x,y-4)+I(x,y-2)+I(x,y+2)+I(x,y+4);sum2=I(x-2,y+4)+I(x-

11、1,y+2)+I(x+1,y-2)+I(x+2,y-4);sum3=I(x-2,y+2)+I(x-4,y+4)+I(x+2,y-2)+I(x+4,y-4);sum4=I(x-2,y+1)+I(x-4,y+2)+I(x+2,y-1)+I(x+4,y-2);sum5=I(x-2,y)+I(x-4,y)+I(x+2,y)+I(x+4,y);sum6=I(x-4,y-2)+I(x-2,y-1)+I(x+2,y+1)+I(x+4,y+2);sum7=I(x-4,y-4)+I(x-2,y-2)+I(x+2,y+2)+I(x+4,y+4);sum8=I(x-2,y-4)+I(x-1,y-2)+I(x+1,y

12、+2)+I(x+2,y+4);sumi=sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8;summax=max(sumi);%羥過處理后的灰度值,找到他們中最大值summin=min(sumi);播過處理后的灰度值,找到他們中最小值summ=sum(sumi);b=summ/8;%滿足(summax+summin+4*I(x,y)(3*summ/8)if(summax+summin+4*I(x,y)(3*summ/8)sumf=summin;%W該像素點的脊線方向為summinelsesumf=summax;%貝U為summaxendifsumfb%確定完方向后就

13、根據該向場對圖像進行二值化Im(x,y)=128;elseIm(x,y)=255;endendendfori=1:mforj=1:nIcc(i,j)=Icc(i,j)*Im(i,j);endendfori=1:mforj=1:nif(Icc(i,j)=128)Icc(i,j)=0;elseIcc(i,j)=1;end;end二值化);endfigure,imshow(double(Icc);title(得到的二值化圖像如圖6:圖6二值化后的圖像2.4 圖像增強在當前的指紋采集條件下,不可避免的會受到環境,皮膚上的油脂、水分、污漬的影響,使采集到的指紋圖像出現紋線粘連、紋線斷裂等缺陷,對后續的指

14、紋特征提取帶來很大困難。所以我們必須對指紋圖像進行圖像增強處理,例如分離粘連的紋線,連接斷裂的紋線,平滑紋線的邊緣等,以保證指紋特征提取的可靠性。實驗中進行了初步去除空洞和毛刺的處理,程序如下:u=Icc;m,n=size(u)%去去除空洞和毛刺forx=2:m-1fory=2:n-1ifu(x,y)=0ifu(x,y-1)+u(x-1,y)+u(x,y+1)+u(x+1,y)=3u(x,y)=1;endelseu(x,y)=u(x,y);endendendfigure,imshow(u)%title(去除毛刺)fora=2:m-1forb=2:n-1ifu(a,b)=1ifabs(u(a,b

15、+1)-u(a-1,b+1)+abs(u(a-1,b+1)-u(a-1,b)+abs(u(a-1,b)-u(a-1,b-1)+abs(u(a-1,b-1)-u(a,b-1)+abs(u(a,b-1)-u(a+1,b-1)+abs(u(a+1,b-1)-u(a+1,b)+abs(u(a+1,b)-u(a+1,b+1)+abs(u(a+1,b+1)-u(a,b+1)=1端點if(u(a,b+1)+u(a-1,b+1)+u(a-1,b)*(u(a,b-1)+u(a+1,b-1)+u(a+1,b)+(u(a-1,b)+u(a-1,b-1)+u(a,b-1)*(u(a+1,b)+u(a+1,b+1)+u

16、(a,b+1)=0刺u(a,b)=0;endendendendendfigure,imshow(u)%title(去除空洞)%找%去除空洞和毛7和圖8:得到的去除毛刺后的圖像和再去除空洞后的圖像分別如圖圖7去除毛刺后的圖像圖8去除空洞后的圖像2.5 圖像細化二值化后的紋線仍然具有一定的寬度,因為指紋識別只與紋線的走向有關,所以需要對二值圖像進行細化,以減少冗余信息,突出紋線的有效特征,便于后續的特征提取。程序如下:v=u;se=strel(square,3);%&J建形態學結構元素fo=imopen(v,se);%對圖像進行開操作和閉操作v=imclose(fo,se);%對圖像進行開操作和閉

17、操作w=bwmorph(v,thin,Inf);%對圖像進行細化figure,imshow(w)title(細化圖)得到的圖像如圖9:圖9細化后的圖像3.特征點提取3.1 找出所有的端點和交叉點因為特征點必然是從端點和交叉點里找出,所以在得到細化的圖像后,我們首先要找出所有的端點和交叉點。首先對通過定義函數P.m對圖像中每個點的8鄰域位置進行坐標定義,方便后續編程。Pm程序如下:%Subfunctionsfunctionj=P(img,x,y,i)%getpixelvaluebasedonchart:%4|3|2%5|1%6|7|8switch(i)case1,9j=img(x+1,y);ca

18、se 2j=img(x+1,y-1);case 3j=img(x,y-1);case 4j=img(x-1,y-1);case 5j=img(x-1,y);case 6j=img(x-1,y+1);case 7j=img(x,y+1);case 8j=img(x+1,y+1);end然后定義函數point.m來找出細化后圖像的所有端點。將一個點的8個鄰域依次兩兩相減并取絕對值,并將所有結果相加,從細化圖像的特征來說,和為2時為端點,和為6時為交叉點。程序如下:functiontxy=point(thin)count=1;txy(count,:)=0,0,0;siz=min(size(thin,

19、1),size(thin,2);forx=40:siz-40fory=40:siz-40if(thin(y,x)CN=0;fori=1:8CN=CN+abs(P(thin,y,x,i)-P(thin,y,x,i+1);endif(CN=2)txy(count,:)=x,y,2;count=count+1;endif(CN=6)txy(count,:)=x,y,6;count=count+1;endendendendfori=1:count-1x(i)=txy(i,1);y(i)=txy(i,2);endimshow(double(thin);holdon;plot(x,y,.);運行完程序后,

20、將所有的端點和交叉點全部找出。定義的數組txy第一項為橫坐標,第二項為縱坐標,第三項為2或6(2為端點、6為交叉點)。10:得到的標出端點和交叉點的圖像如圖圖10標出端點和交叉點的細化圖像3.2 紋線光滑處理在指紋圖像預處理中,已經對指紋圖像進行過去除毛刺和空洞的處理。這里通過定義函數guanghua.m進一步對細化后的圖像進行光滑處理。基本原理為:找到每個端點,使其沿著紋線的方向移動5個像素,如果在5個像素之內遇到交叉點,則認為此端點為毛刺,去除此點。guanghua.m程序如下:functionw=guanghua(thin,txy)forj=1:5txy=point(thin);pxy=

21、txy(find(txy(:,3)=2),:);n=size(pxy,1);fori=1:nerror=0;error=walk(thin,pxy(i,1),pxy(i,2),5);iferror=1thin(pxy(i,2),pxy(i,1)=0;endendendw=thin;imshow(w);光滑后的圖像如圖11所示:圖11光滑后的圖像光滑完后需再次執行point函數來畫出新的端點,如下圖所示:圖12光滑后標出端點和特征點的圖像3.3 去除圖像邊緣的端點一方本實可以看出,在指紋圖像的邊緣,由于采集儀器的關系,不可避免的多出很多端點,面增加了后續工作量,另一方面還可能產生錯誤,所以有必要

22、將這些邊緣的端點去除。驗中設計了cut函數來進行處理。函數如下:functiontxy=cut(thin,txy)s(8,8)=0;delta(8,8)=0;n=size(txy,1);fori=1:8forj=1:8mpi,j=thin(1+31*(i-1):31+31*(i-1),1+31*(j-1):31+31*(j-1);s(i,j)=sum(sum(mpi,j)/(31*31);mpi,j=(mpi,j-s(i,j).A2;delta(i,j)=sum(sum(mpi,j);ifdelta(i,j)=1+31*(i-1)&txy(k,1)=1+31*(j-1)&txy(k,2)r);

23、pxy2=txy(c,:);pxy2=pxy2(find(pxy2(:,3)=2),:);t=size(pxy2,1);ift=0error=1elseplot(x,y,holdonb.);r.);plot(pxy2(:,1),pxy2(:,2),end比如在執行pxy2,erro4=single_point(txy,20)后,會顯示出下圖:pxyZ42LOS111error=圖14執行single-point函數后Matlab的顯示情況由運行結果可知,有3個端點滿足周圍半徑為20個像素的圓內沒有任何端點和交叉點的條件。這三個點在下圖中用紅點標出。圖15滿足條件的特征點3.4.2 walk函數

24、在此,我們還定義了一個walk函數,用于進一步找出特征點,它的作用是判斷離某一端點num距離是否有另一端點。函數如下:functionerror,a,b=walk(thin,x0,y0,num)error=0;thin(y0,x0)=0;t1=0;forn=1:numiferror=1break;elsex=x0;y=y0;forx=x0-1:x0+1iferror=1break;elsefory=y0-1:y0+1t1=sum(sum(thin(y0-1:y0+1,x0-1:x0+1);if(t1=0|t1=2)error=1;a=x0;b=y0;break;elseif(thin(y,x)

25、=1&(x-x0)A2+(y-y0)A2-=0)if(t1=2)error=1;break;elsethin(y,x)=0;x0=x;y0=y;a=x0;b=y0;plot(x0,y0,r.)endendendendendendendend3.4.3 last1函數綜合以上兩個找特征點的函數,可以設計一個新的last1函數。通過執行pxy3,error2=last1(thin,r,txy,num)可以找出周圍半徑為r個像素的圓內沒有任何端點或交叉點,并且沿紋線走num個像素內沒有另一個端點或交叉點的端點。程序如下所示:functionpxy3,error2=last1(thin,r,txy,n

26、um)error=0;pxy2,error=single_point(txy,r);n=size(pxy2,1);l=1;error2=0;fori=1:nerror,a,b=walk(thin,pxy2(i,1),pxy2(i,2),num);iferror=1pxy3(l,1)=pxy2(i,1);pxy3(l,2)=pxy2(i,2);pxy3(l,3)=pxy2(i,3);l=l+1;error2=0;plot(pxy2(i,1),pxy2(i,2),r+);endend得到的Matlab運行結果顯示為:Ip工error22=(thirr10Ttxy.4C.-gT=67942inigg

27、2134542rror2=圖16last1函數的運行結果得到的圖像如下:圖17執行last1函數后指紋圖像的顯示其中紅色的端點為滿足single_point函數的端點,紅色的紋線為沿上述端點走一定距離后的紋線,一部分可以一直走到規定距離(這些即是要找的特征點),還有一部分走到端點或叉點停止。至此,每幅指紋圖像的特征點均可找出。4 .特征點匹配4.1 紋線長度匹配上面,我們已經可以找出每幅指紋圖像的特征點,并畫出一段紋線。下面就是匹配的問題了。在此,我們設置了三層匹配。首先是紋線長度匹配。對于上面找出的特征點和紋線,每沿著紋線走5個像素測量一下到原始端點的距離。由distance函數得到。fun

28、ctiond=distance(x0,y0,num,thin)num2=fix(num/5);fori=1:num2error,a,b=walk(thin,x0,y0,5*i);iferror=1d(i)=sqrt(a-x0)A2+(b-y0)A2);elsebreak;endend最后會得到一個裝有長度信息的數組。試想如果兩幅指紋圖中的指紋是一樣的,則它們會包含相同的特征點和從這個特征點出發畫出的紋線,則這兩個長度數組對應位置的比例應基本相等(考慮到老師所給的24幅指紋圖像大小相同,這個比例應近似為1);最終的函數中定義了一個數f=(sum(abs(d1./d2)-1),所以f值越接近于0,

29、這兩幅圖像的匹配度越高。4.2 三角形邊長匹配找到一個特征點后,可以找出距離其最近的2個端點或交叉點,與原特征點構成三角形,若兩幅圖像的三角形邊長比例相等(本實驗中都為1),則說明這兩幅圖像匹配。其中,找到距離最近的端點的函數find_point如下所示:functionpxy=find_point(x0,y0,txy,num)x=txy(:,1);y=txy(:,2);n=length(x);l(1,n)=0;lnn=1;pxy(num,:)=0,0,0;fori=1:nl(i)=sqrt(x(i)-x0)A2+(y(i)-y0)A2);endll=sort(l);fori=1:numxia

30、o=ll(i+lnn);nn=find(l=xiao);lnn=length(nn);pxy(i,:)=x(nn(1),y(nn(1),txy(nn(1),3);endplot(x0,y0,bo);x0;y0;holdonplot(pxy(:,1),pxy(:,2),ro);在最終程序中定義了一個數ff=(sum(abs(dd1./dd2)-1),所以ff值越接近于0,這兩幅圖像的匹配度越高。4.3 點類型匹配找到一個特征點后,在其周圍找到40個端點或交叉點,統計這40個點中端點和交叉點的個數。若兩幅圖中端點占的比例近似相同,則兩幅圖像相匹配。在最終函數中定義了一個數fff=abs(f11-f

31、21)/(f11+f12),所以fff值越接近于0,這兩幅圖像的匹配度越高。最終程序如下(里面調用到前面一些函數):closeall;ticclear;thin1=tuxiangyuchuli(zhiwen8.bmp);thin2=tuxiangyuchuli(zhiwen9.bmp);figure;txy1=point(thin1);txy2=point(thin2);w1,txy1=guanghua(thin1,txy1);w2,txy2=guanghua(thin2,txy2);thin1=w1;thin2=w2;txy1=cut(thin1,txy1);txy2=cut(thin2,t

32、xy2);pxy31,error2=last1(thin1,8,txy1,60)pxy32,error2=last1(thin2,8,txy2,60)error=1;num=20;cxy1=pxy31;cxy2=pxy32;d1=distance(cxy1(1,1),cxy1(1,2),num,thin1);d2=distance(cxy2(1,1),cxy2(1,2),num,thin2);f=(sum(abs(d1./d2)-1);iff=0.5error=0;elseerror=1;endc11=find_point(cxy1(1,1),cxy1(1,2),txy1,1);c12=find_point(cxy1(1,1),cxy1(1,2),txy1,2);c21=find_point(cxy2(1,1),cxy2(1,2),txy2,1);c22=find_point(cxy2(1,1),cxy2(1,2),txy2,2);cxy1(2,:)=c11;cxy1(3,:)=c12(2,:);cxy2(2,:)=c21;cxy2(3,:)=c22(2,:);x11=cxy1(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論