77范文网 - 专业文章范例文档资料分享平台

Matlab指纹识别(4)

来源:网络收集 时间:2019-03-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

指纹识别研究

圆内没有任何端点或交叉点,那么随着r的逐渐变大,这样的点会越来越少,也就越来越独特。于是我们设计了一个函数single_point来找出这样的点。 程序如下:

function [pxy2,error]=single_point(txy,r) error=0; x=txy(:,1); y=txy(:,2); n=length(x); d(1:n,1:n)=0; for j=1:n for i=1:n if (i~=j)

d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2); else

d(i,j)=2*r; end end end

[a,b]=min(d); c=find(a>r); pxy2=txy(c,:);

pxy2=pxy2(find(pxy2(:,3)==2),:); t=size(pxy2,1); if t==0 error=1 else

plot(x,y,'b.'); hold on

plot(pxy2(:,1),pxy2(:,2),'r.'); end

比如在执行[pxy2,error]=single_point(txy,20)后,会显示出下图:

16

指纹识别研究

图14 执行single-point函数后Matlab的显示情况

由运行结果可知,有3个端点满足周围半径为20个像素的圆内没有任何端点和交叉点的条件。

这三个点在下图中用红点标出。

图15 满足条件的特征点

3.4.2 walk函数

在此,我们还定义了一个walk函数,用于进一步找出特征点,它的作用是判断离某一端点num距离是否有另一端点。

函数如下:

function [error,a,b]=walk(thin,x0,y0,num) error=0; thin(y0,x0)=0; t1=0;

17

指纹识别研究

for n=1:num if error==1 break; else x=x0; y=y0;

for x=x0-1:x0+1 if error==1 break; else

for y=y0-1:y0+1

t1=sum(sum(thin(y0-1:y0+1,x0-1:x0+1))); if (t1==0||t1>=2) error=1;

a=x0; b=y0; break; else

if (thin(y,x)==1&&(x-x0)^2+(y-y0)^2~=0)

if (t1>=2 ) error=1; break ; else thin(y,x)=0; x0=x; y0=y; a=x0; b=y0;

plot(x0,y0,'r.') end end end end end end end end

3.4.3 last1函数

综合以上两个找特征点的函数,可以设计一个新的last1函数。通过执行

[pxy3,error2]=last1(thin,r,txy,num)可以找出周围半径为r个像素的圆内没有任何端点或交叉点,并且沿纹线走num个像素内没有另一个端点或交叉点的端点。

18

指纹识别研究

程序如下所示:

function [pxy3,error2]=last1(thin,r,txy,num) error=0;

[pxy2,error]=single_point(txy,r); n=size(pxy2,1); l=1; error2=0; for i=1:n

[error,a,b]=walk(thin,pxy2(i,1),pxy2(i,2),num); if error~=1

pxy3(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+'); end end

得到的Matlab运行结果显示为:

图16 last1函数的运行结果

得到的图像如下:

19

指纹识别研究

图17 执行last1函数后指纹图像的显示

其中红色的端点为满足single_point函数的端点,红色的纹线为沿上述端点走一定距离后的纹线,一部分可以一直走到规定距离(这些即是要找的特征点),还有一部分走到端点或叉点停止。

至此,每幅指纹图像的特征点均可找出。

4.特征点匹配

4.1 纹线长度匹配 上面,我们已经可以找出每幅指纹图像的特征点,并画出一段纹线。下面就是匹配的问题了。在此,我们设置了三层匹配。 首先是纹线长度匹配。对于上面找出的特征点和纹线,每沿着纹线走5个像素测量一下到原始端点的距离。由distance函数得到。

function d=distance(x0,y0,num,thin) num2=fix(num/5); for i=1:num2

[error,a,b]=walk(thin,x0,y0,5*i); if error~=1

d(i)=sqrt((a-x0)^2+(b-y0)^2); else break; end end

最后会得到一个装有长度信息的数组。试想如果两幅指纹图中的指纹是一样的,则它们会包含相同的特征点和从这个特征点出发画出的纹线,则这两个长度数组对应位置的比例应基本相等(考虑到老师所给的24幅指纹图像大小相同,这个比例应近似为1);最终的函数中定义了一个数f=(sum(abs((d1./d2)-1))),所以f值越接近于0,这两幅图像的匹配度越高。

20

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Matlab指纹识别(4)在线全文阅读。

Matlab指纹识别(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/540439.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: