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

Matlab指纹识别(3)

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

指纹识别研究

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 | 8 switch (i) case {1, 9}

j = img(x+1, y); case 2

j = img(x + 1, y-1); case 3

j = img(x, y - 1); case 4

11

指纹识别研究

j = img(x - 1, y - 1); case 5

j = img(x - 1, y); case 6

j = img(x - 1, y + 1); case 7

j = img(x, y + 1); case 8

j = img(x + 1, y + 1); end

然后定义函数point.m来找出细化后图像的所有端点。 将一个点的8个邻域依次两两相减并取绝对值,并将所有结果相加,从细化图像的特征来说,和为2时为端点,和为6时为交叉点。

程序如下:

function txy=point(thin) count = 1;

txy(count, :) = [0,0,0];

siz=min(size(thin,1),size(thin,2)); for x=40:siz - 40 for y=40:siz - 40 if (thin(y, x) ) CN = 0; for i = 1:8

CN = CN + abs (P(thin, y, x, i) - P(thin, y, x, i + 1)); end if (CN == 2)

txy(count, :) = [x, y,2]; count = count + 1; end

if (CN == 6)

txy(count, :) = [x, y,6]; count = count + 1; end end end end

for i=1:count - 1 x(i) =txy(i, 1); y(i)= txy(i, 2); end

imshow(double(thin)); hold on;

12

指纹识别研究

plot(x,y,'.');

运行完程序后,将所有的端点和交叉点全部找出。定义的数组txy第一项为横坐标,第二项为纵坐标,第三项为2或6(2为端点、6为交叉点)。

得到的标出端点和交叉点的图像如图10:

图10标出端点和交叉点的细化图像

3.2 纹线光滑处理 在指纹图像预处理中,已经对指纹图像进行过去除毛刺和空洞的处理。这里通过定义函数guanghua.m进一步对细化后的图像进行光滑处理。基本原理为:找到每个端点,使其沿着纹线的方向移动5个像素,如果在5个像素之内遇到交叉点,则认为此端点为毛刺,去除此点。

guanghua.m程序如下:

function w=guanghua(thin,txy) for j=1:5

txy=point(thin);

pxy=txy(find(txy(:,3)==2),:); n=size(pxy,1); for i=1:n error=0;

error=walk(thin,pxy(i,1),pxy(i,2),5); if error==1

thin(pxy(i,2),pxy(i,1))=0; end end end w=thin; imshow(w);

13

指纹识别研究

光滑后的图像如图11所示:

图11 光滑后的图像

光滑完后需再次执行point函数来画出新的端点,如下图所示:

图12 光滑后标出端点和特征点的图像

3.3 去除图像边缘的端点

可以看出,在指纹图像的边缘,由于采集仪器的关系,不可避免的多出很多端点,一方面增加了后续工作量,另一方面还可能产生错误,所以有必要将这些边缘的端点去除。本实验中设计了cut函数来进行处理。

函数如下:

function txy=cut(thin,txy) s(8,8)=0;

14

指纹识别研究

delta(8,8)=0; n=size(txy,1); for i=1:8 for j=1:8

mp{i,j}=thin(1+31*(i-1):31+31*(i-1),1+31*(j-1):31+31*(j-1)); s(i,j)=sum(sum(mp{i,j}))/(31*31); mp{i,j}=(mp{i,j}-s(i,j)).^2; delta(i,j)=sum(sum(mp{i,j})); if delta(i,j)<=70 for k=1:n if

(txy(k,1)>=1+31*(i-1)&&txy(k,1)<=31+31*(i-1)&&txy(k,2)>=1+31*(j-1)&&txy(k,2)<=31+31*(j-1)&&txy(k,3)==2) txy(k,:)=[0,0,0]; end end end end end

txy=txy(find(txy(:,1)),:); plot(txy(:,1),txy(:,2),'ro');

得到的图像如下:

图13 去除图像边缘端点后的图像

3.4 找出特征点

3.4.1 single_point函数 经过光滑处理和去除边缘端点后进一步减少了端点和交叉点的个数。下面就要找出一些独特的端点来作为特征点。在一幅细化的指纹图上,如果一个端点的周围半径为r个像素的

15

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

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