1、指纹识别技术研究指纹识别技术研究摘要摘要:随着生物识别技术的不断发展,人们发现每个人的指纹具有唯一性和不变性。 因此指纹识别技术逐步发展为一种新的身份识别方式,并且凭借其良好的安全可靠性,大 有取代传统身份识别方式的趋势。 本文简要介绍了指纹识别的基本步骤,分别是指纹图像预处理、指纹特征提取、指纹 匹配。在图像预处理中,依次介绍了规格化处理、图像增强、二值化处理和细化处理的方 法。预处理后将得到一幅宽度为一个像素的细化二值图像,然后通过特定的端点和交叉点 的特征进行指纹匹配。实验表明,该方法效果良好。 论文中采用 Matlab 编程实现全部算法。关键词关键词:指纹识别,图像处理,特征提取,特征匹配1引言引言传统的身份识别技术包括基于密码的身份识别技术和基于令牌的身份识别技术。但是 这两种方式都存在着一定的安全风险:令牌容易丢失,密码容易忘记,且它们都容易被窃 取或冒充。近年来,依赖人体特征的新型身份识别技术正在兴起,凭借其唯一且不变的特 点,生物识别技术逐步成为人们研究的热点。 而在生物识别技术中,指纹识别技术已经被广泛的研究和应用。它的基本原理框图如 图一所示。图 1 指纹识别的基本
2、原理框图2指纹图像预处理指纹图像预处理2.1 图像规格化 受采集设备参数和环境的影响,采集到的指纹图像可能总体对比度较差。图像归一化 的作用就是使所有指纹图像具有相同的灰度均值和方差,从而将每一幅图像的灰度调整到 统一的范围,方便后续处理。归一化的算法是: (1)先计算图像的平均值和方差。这部分工作主要通过统计图像中各点像素值得到该图 像的直方图,然后利用直方图来计算指纹图像的相关指标。11001( )( , )HWijM II i jWH11 2001( )( ( , )( )HWijVar II i jM IWH(2)指定期望经过处理后的图像均值和方差,计算归一化后的图像 G。指纹采集指纹图像预处理特征点提取特征点匹配输出显示2 0 02 0 0( ( , )( ), ( , ) ( , ) ( ( , )( ),Var I i jM IMI i jMVarG i j Var I i jM IMothersVar 图像规格化的 Matlab 程序如下(其中方差取 Var0=2000,M0=150):% 归一化 M=0;var=0;%图像的平均值和方差开始进行初始化for x=1:m
3、for y=1:nM=M+I(x,y);endendM1=M/(m*n);%计算图像的平均值for x=1:mfor y=1:nvar=var+(I(x,y)-M1).2;%计算图像的方差endendvar1=var/(m*n);for x=1:mfor y=1:nif I(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 原始指纹图像图 3 规格化后的指纹图像2.2 图像分割 指纹图像通常包括纹线区域和周边的无用区域。如果保留这些无用区域,会致使计算 冗余度增加。为此要先将其从待处理区域中去除。通常用的分离方法有像素领域特征的方 法和基于像素分布概率的方法等。本文采取对各像素邻域特征进行分析,然后分割图像算 法。 吧图像分成 T*T 的非重叠块,计算
4、每一块的灰度均值 M 和方差 Var,通过下列条件区 分前景与背景: (1)如果 MM1 且 Var=Var1,则认为前景,否则待定; (3)对所有分块划分完毕后,在对待定块进行判决。如果在 8 邻域中,背景景小于 等于 4 则认为是前景,否则是背景 在编程过程中通过几次调试后对图像进行 3*3 分块处理 Matlab 程序如下:% 分割 M =3; %3*3H = m/M; L= n/M;aveg1=zeros(H,L);var1=zeros(H,L);% 计算每一块的平均值 for x=1:H;for y=1:L;aveg=0;var=0;for i=1:M;for j=1:M;aveg=I(i+(x-1)*M,j+(y-1)*M)+aveg;endendaveg1(x,y)=aveg/(M*M);% 计算每一块的方差值for i=1:M;for j=1:M;var=(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y).2+var;endendvar1(x,y)=var/(M*M);endendGmean=0;Vmean=0;for x=1:Hfor y=1:LGm
5、ean=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;for x=1:Hfor y=1:Lif Gmean1aveg1(x,y)gtemp=gtemp+1;gtotle=gtotle+aveg1(x,y);endif Vmean1G2 1 1 1;1 1 1;%模板系数 均值滤波Im=double(I);In=zeros(m,n);% 创建一个全0的二维数组,m行n列for a=2:m-1;for b=2:n-1;In(a,b)=Im(a-1,b-1)*temp(1,1)+Im(a-1,b)*temp(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+
6、1)*temp(3,3);endendI=In;Im=zeros(m,n);% 创建一个全0的二维数组,m行n列for x=5:m-5;for y=5:n-5;%分别计算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-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+2)+I(x+2,y+4);sumi=sum1,sum2,sum3,sum
7、4,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;%则该像素点的脊线方向为summinelsesumf = summax;%否则为summaxendif sumf b%确定完方向后就根据该向场对图像进行二值化Im(x,y)=128;elseIm(x,y)=255;endendendfor i=1:mfor j =1:nIcc(i,j)=Icc(i,j)*Im(i,j);endendfor i=1:mfor j =1:nif (Icc(i,j)=128)Icc(i,j)=0;elseIcc(i,j)=1;end;endendfigure,imshow(double(Icc);title(二值化);得到的二值化图像如图 6:
8、图 6 二值化后的图像2.4 图像增强 在当前的指纹采集条件下,不可避免的会受到环境,皮肤上的油脂、水分、污渍的影 响,使采集到的指纹图像出现纹线粘连、纹线断裂等缺陷,对后续的指纹特征提取带来很 大困难。所以我们必须对指纹图像进行图像增强处理,例如分离粘连的纹线,连接断裂的 纹线,平滑纹线的边缘等,以保证指纹特征提取的可靠性。 实验中进行了初步去除空洞和毛刺的处理,程序如下: u=Icc;m,n=size(u) %去除空洞和毛刺for x=2:m-1for y=2:n-1if u(x,y)=0if u(x,y-1)+u(x-1,y)+u(x,y+1)+u(x+1,y)=3u(x,y)=1;endelse u(x,y)=u(x,y);endendendfigure,imshow(u)%title(去除毛刺) for a=2:m-1for b=2:n-1if u(a,b)=1if 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)+abs(u(a,b-
9、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(a,b+1)=0 %去除空洞和毛刺 u(a,b)=0;endendendendendfigure,imshow(u)%title(去除空洞)得到的去除毛刺后的图像和再去除空洞后的图像分别如图 7 和图 8:图 7 去除毛刺后的图像图 8 去除空洞后的图像2.5 图像细化 二值化后的纹线仍然具有一定的宽度,因为指纹识别只与纹线的走向有关,所以需要 对二值图像进行细化,以减少冗余信息,突出纹线的有效特征,便于后续的特征提取。 程序如下: v=u;se=strel(square,3);%创建形态学结构元素fo=imopen(v,se);%对图像进行开操作和闭操作v=imclose(fo,se); %对图像进行开操作和闭操作w=bwmorph(v,thin,Inf);%对图像进行细化figure,imshow(w)title(细化图)得到的图像如图 9:图 9 细化后的图像3特征点提取特征点提取3.1 找出所有的端点和交叉点 因为特征点必然是从端点和交叉点里找出,所以在得到细化的图像后,我们首先要找 出所有的端点和交叉点。 首先对通过定义函数 P.m 对图像中每个点的 8 邻域位置进行坐标定义,方便后续编程。P.m 程序如下: %-Sub functions-function j = P (img, x, y, i)% get pixel value based on chart:% 4 | 3 | 2% 5 | | 1% 6 | 7 | 8switch (i)case 1, 9j = img(x+
《指纹识别技术研究论文》由会员Bod****ee分享,可在线阅读,更多相关《指纹识别技术研究论文》请在金锄头文库上搜索。