matlab指纹特征提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图形图像处理课程
大作业
姓名:
班级:
学号:
目录
问题描述 (2)
摘要 (3)
正文 (3)
1、指纹细节特征提取 (4)
2、指纹图像的预处理..................................错误!未定义书签。
3、指纹图像的特征提取..............................错误!未定义书签。
4、指纹特征的去伪 (6)
5、指纹特征提取和识别MATLAB实现 (7)
总结 (9)
附录: (9)
Matlab图形界面操作
------指纹图像细节特征提取
问题描述
期末运用学习的matlab知识对指纹图像进行细节特征提取,实现如下功能。
●实现指纹图像的细化。
●实现指纹图像的特征点提取。
●实现特征图像的细化去伪。
●编写代码实现上述功能。
摘要:
本次任务旨在完成对指纹图像的细化、去伪和特征点的提取。采用了8邻域编码纹线跟踪算法,标注出端点和分叉点来进行特征提取。用matlab 软件实现功能。
正文
1、指纹细节特征提取
对于一幅指纹的原始图像,为了使后续特征提取的操作能够正常有效的进行,必须对原始指纹图像进行一定的处理,即对原始图像进行预处理,预处理后对图像进行特征提取,包括端点和分叉点。最后对图像进行指纹特征去伪。2、指纹图像的预处理
指纹图像的预处理一般包括二值化和细化处理过程
(1)二值化
所谓二值化就是将灰度图像转化为灰度值为0、1组成的黑白图像,0为背景灰度,1为纹线点灰度,它是指纹图像处理中重要的一步。由于指纹图像的方向特征、细节点位置等特征的提取以及匹配都跟像素点灰度值的多少没关系,只跟指纹图像的脊线的形状、走向有关系,因此二值化处理不会丢失指纹图像的特征信息,另外二值化还可以方便图像信息的存储,节约存储空间,并且方便了后续的计算处理。常用的二值化方法有:固定阀值法、局部自适应阀值法等。
(2)细化
细化是图象分析、信息压缩、特征提取、模式识别常用的基本技术。它是在不改变图像像素的拓扑关系的条件下,连续擦除图像边缘像素,使纹线最终成为一个像素宽。细化算法的迭代必须收敛且不能破坏纹线的连接性,不能引起纹线的逐步吞食,还要尽可能的保护指纹的细节特征,细化的骨架也要尽可能接近纹线中心线,要求算法简单、高效。常用的细化算法包括逐层剥离法、距离变换法。
代码实现:
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('细化后指纹图像')
3、指纹图像的特征提取
指纹图像的特征提取采用了8邻域编码纹线跟踪算法,标注出端点和分叉点来进行特征提取。传统的特征提取方法主要有两种:第一种是直接从原始指纹图像上进行细节特征提取,另一种是从细化后的指纹图像上进行特征提取。第一种算法比较复杂,受噪声干扰影响较大,特征点定位不精确,大多数系统都采用了第二种方法。
代码实现:
%特征点提取(端点或分叉点)
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==5|n==7)
t=t+1;
x(t)=j;
y(t)=i;
end
end
end
end
subplot(2,2,3);imagesc(I);
xlabel('指纹特征提取图像')
4、指纹特征的去伪
提取指纹图像的细节特征,是在细化图像进行的。由于图像质量和噪声的干扰,经过预处理后的细化图像上存在大量的伪特征点。
伪特征一般具有以下特点:大部分处于图像边缘;在图像内部的伪特征点距离较近,两个或多个伪特征同时存在于很小的区域内。根据指纹图像伪特征分布特点提出两种去伪方法:首先对于图像边缘的点,采用指纹图像切割的方法,即对边缘的点直接切除掉;然后利用最短距离阈值法去除距离较近的特征点。
代码实现:
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
c=0;
d=0;
for i=1:t
if(x(i)>=10&x(i)<165)&(y(i)>=10&y(i)<140)%去除边缘的特征点c=c+1;l(c)=x(i);d=d+1;h(d)=y(i);
end