天天看點

【指紋識别】基于matlab指紋圖像細節特征提取 【含Matlab源碼 227期】

二、指紋圖像的特征提取簡介

指紋圖像的特征提取是指紋識别的關鍵,而指紋比對通常基于細節點比對。指紋特征提取是從細化後的指紋圖中得到細節特征點(即端點和分叉點),此特征點含有大量的僞特征,既耗時又影響比對精度。本章采用了邊緣去僞和距離去僞,使得特征點去僞前後減小了近1/3,然後提取可靠特征點資訊,以便實作指紋比對。基于MATLAB實作的指紋細節特征提取方法,并給出了去僞算法,算法實作簡單快速,而且具有較高的準确率。

1 技術概述

指紋識别技術是一種應用前景非常樂觀的生物識别技術,國内外很多機構都在進行相關研究,盡管目前已有多種商用自動指紋識别系統在市場上銷售,但是不同商标的指紋識别機,指紋驗證識别的快速性、準确性和可靠性都是不同的,一方面是指紋采集的偏差,另一方面也是指紋識别算法的不同,指紋識别算法的好壞,嚴重影響到指紋識别的準确率。是以如何提高指紋識别的算法的有效性和魯棒性,一直以來是廣大學者的研究熱點以及難點。

在指紋自動識别系統中,首先是對指紋進行特征提取,然後根據特征及其互相之間的位置與拓撲關系在預先建立好的指紋庫中進行比對,進而檢索到比對指紋資訊。指紋的特征主要指紋脊線的某種構型,如端點、分叉點等,本章也主要是對指紋的端點以及分叉點進行分析。

介紹了一套基于MATLAB 2014a實作的指紋細節特征提取及其後處理算法,以MATLAB 2014a作為指紋圖像識别算法仿真的平台,具有較高的準确率,而且可以大大減小仿真的難度。

2 指紋識别系統的工作原理

【指紋識别】基于matlab指紋圖像細節特征提取 【含Matlab源碼 227期】

3 指紋細節特征的提取

指紋特征去僞操作主要是将備援的指紋特征的特征點濾除掉。

僞特征一半具有以下特點:大部分處于圖像邊緣;在圖像内部的僞特征點距離較近,兩個或多個僞特征同時存在于很小的區域内。

本章根據指紋圖像僞特征分布特點提出了兩種去僞方法:首先對于圖像邊緣的點,采用指紋圖像切割的方法,即對邊緣的點直接切除掉;然後利用最短距離門檻值法去除距離較近的特征點。

【指紋識别】基于matlab指紋圖像細節特征提取 【含Matlab源碼 227期】
【指紋識别】基于matlab指紋圖像細節特征提取 【含Matlab源碼 227期】

三、部分源代碼

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 指紋圖像細節特征提取
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear;
origin=imread('im2.bmp');
subplot(2,2,1);imagesc(origin);
colormap(gray); xlabel('(a)原始圖像')
I=im2bw(origin);  % 二值化
%細化指紋圖像,用比對模闆法
[M,N]=size(I);
for i=2:M-1
    for j=2:N-1
        if I(i,j)==0
            if (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;
            else
                I(i,j)=0;
            end
        end
    end
end
subplot(2,2,2);imagesc(I);
xlabel('(b)細化後的指紋圖像')
%特征點提取(端點或交叉點)
t=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==7|n==5)
                t=t+1;
                x(t)=j;
                y(t)=i;
            end
        end
    end
end
subplot(2,2,3);imagesc(I);
xlabel('(c)細化後的指紋圖像')
hold on;plot(x,y,'bo');hold off;   
for i=1:t-1
    for j=i+1:t   %指紋特征去僞
        d=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
        if d<6            %去除距離較近的特征點
            x(i)=-1;y(i)=-1;x(j)=-1;y(j)=-1;
        end
    end
end
thin_image=~bwmorph(binary_image,'thin',Inf);
figure;imshow(thin_image);title('Thinned Image');
% load('ridge.mat')
% load('bifurcation.mat')
% hold on
% plot(ridge_y,ridge_x,'r*')
% plot(bifurcation_y,bifurcation_x,'b.','markersize',8)

%% Minutiae extraction
s=size(thin_image);
N=3;%window size
n=(N-1)/2;
r=s(1)+2*n;
temp((n+1):(end-n),(n+1):(end-n))=thin_image(:,:);
outImg=zeros(r,c,3);           % For Display
outImg(:,:,1) = temp .* 255;
outImg(:,:,2) = temp .* 255;
outImg(:,:,3) = temp .* 255;
for x=(n+1+10):(s(1)+n-10)
    for y=(n+1+10):(s(2)+n-10)
        e=1;
        for k=x-n:x+n
            f=1;
            for l=y-n:y+n
                mat(e,f)=temp(k,l);
                f=f+1;
            end
      

四、運作結果

【指紋識别】基于matlab指紋圖像細節特征提取 【含Matlab源碼 227期】

五、matlab版本及參考文獻

1 matlab版本

2014a

2 參考文獻

[1] 蔡利梅.MATLAB圖像處理——理論、算法與執行個體分析[M].清華大學出版社,2020.

[2]楊丹,趙海濱,龍哲.MATLAB圖像處理執行個體詳解[M].清華大學出版社,2013.

繼續閱讀