您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > matlab指纹特征提取
图形图像处理课程大作业姓名:班级:学号:1目录问题描述...............................................2摘要...................................................3正文...................................................31、指纹细节特征提取...............................42、指纹图像的预处理...............错误!未定义书签。3、指纹图像的特征提取.............错误!未定义书签。4、指纹特征的去伪...................................................................................65、指纹特征提取和识别MATLAB实现.........................................7总结...................................................9附录:.................................................92Matlab图形界面操作------指纹图像细节特征提取问题描述期末运用学习的matlab知识对指纹图像进行细节特征提取,实现如下功能。实现指纹图像的细化。实现指纹图像的特征点提取。实现特征图像的细化去伪。编写代码实现上述功能。3摘要:本次任务旨在完成对指纹图像的细化、去伪和特征点的提取。采用了8邻域编码纹线跟踪算法,标注出端点和分叉点来进行特征提取。用matlab软件实现功能。4正文1、指纹细节特征提取对于一幅指纹的原始图像,为了使后续特征提取的操作能够正常有效的进行,必须对原始指纹图像进行一定的处理,即对原始图像进行预处理,预处理后对图像进行特征提取,包括端点和分叉点。最后对图像进行指纹特征去伪。2、指纹图像的预处理指纹图像的预处理一般包括二值化和细化处理过程(1)二值化所谓二值化就是将灰度图像转化为灰度值为0、1组成的黑白图像,0为背景灰度,1为纹线点灰度,它是指纹图像处理中重要的一步。由于指纹图像的方向特征、细节点位置等特征的提取以及匹配都跟像素点灰度值的多少没关系,只跟指纹图像的脊线的形状、走向有关系,因此二值化处理不会丢失指纹图像的特征信息,另外二值化还可以方便图像信息的存储,节约存储空间,并且方便了后续的计算处理。常用的二值化方法有:固定阀值法、局部自适应阀值法等。(2)细化细化是图象分析、信息压缩、特征提取、模式识别常用的基本技术。它是在不改变图像像素的拓扑关系的条件下,连续擦除图像边缘像素,使纹线最终成为一个像素宽。细化算法的迭代必须收敛且不能破坏纹线的连接性,不能引起纹线的逐步吞食,还要尽可能的保护指纹的细节特征,细化的骨架也要尽可能接近纹线中心线,要求算法简单、高效。常用的细化算法包括逐层剥离法、距离变换法。代码实现:I=im2bw(origin);%二值化%细化指纹图像[M,N]=size(I);fori=2:M-1forj=2:N-1ifI(i,j)==05if(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;elseI(i,j)=0;endendendendsubplot(2,2,2);imagesc(I);xlabel('细化后指纹图像')3、指纹图像的特征提取指纹图像的特征提取采用了8邻域编码纹线跟踪算法,标注出端点和分叉点来进行特征提取。传统的特征提取方法主要有两种:第一种是直接从原始指纹图像上进行细节特征提取,另一种是从细化后的指纹图像上进行特征提取。第一种算法比较复杂,受噪声干扰影响较大,特征点定位不精确,大多数系统都采用了第二种方法。代码实现:%特征点提取(端点或分叉点)t=0;fori=2:M-1forj=2:N-1ifI(i,j)==0n=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;6y(t)=i;endendendendsubplot(2,2,3);imagesc(I);xlabel('指纹特征提取图像')4、指纹特征的去伪提取指纹图像的细节特征,是在细化图像进行的。由于图像质量和噪声的干扰,经过预处理后的细化图像上存在大量的伪特征点。伪特征一般具有以下特点:大部分处于图像边缘;在图像内部的伪特征点距离较近,两个或多个伪特征同时存在于很小的区域内。根据指纹图像伪特征分布特点提出两种去伪方法:首先对于图像边缘的点,采用指纹图像切割的方法,即对边缘的点直接切除掉;然后利用最短距离阈值法去除距离较近的特征点。代码实现:fori=1:t-1forj=i+1:td=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);ifd6%去除距离较近的特征点x(i)=-1;y(i)=-1;x(j)=-1;y(j)=-1;endendendc=0;d=0;fori=1:tif(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);end7endx=find(x);y=find(y);subplot(2,2,4);imagesc(I);xlabel('细化去伪后的指纹图像特征点')5、指纹特征提取和识别MATLAB实现图一(1)用匹配模板法细化指纹图像8图二(2)特征点提取图像图三(3)去伪后指纹图像图四9总结通过指纹图像的特征提取和识别,进一步了解了图像处理。刚开始有很多东西都做不出来,无法实现,最后在图书馆查找资料,结合书本知识,最终实现了指纹的特征提取。附录参考文献:【1】余胜威.MATLAB优化案例分析与应用(进阶篇).清华大学出版社,2015【2】杨丹,赵海滨,龙哲.MATLAB图像处理实例详解.清华大学出版社,2013【3】实用matlab图像和视频处理OgeMarques.清华大学出版社10源代码:clc,clear,closeallwarningofffeaturejitofforigin=imread('234.png');subplot(2,2,1);imagesc(origin);colormap(gray);xlabel('原始图像')I=im2bw(origin);%二值化%细化指纹图像[M,N]=size(I);fori=2:M-1forj=2:N-1ifI(i,j)==0if(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;elseI(i,j)=0;endendendendsubplot(2,2,2);imagesc(I);xlabel('细化后指纹图像')%t=0;fori=2:M-1forj=2:N-1ifI(i,j)==011n=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;endendendendsubplot(2,2,3);imagesc(I);xlabel('指纹特征提取图像')holdon;plot(x,y,'bo');holdoff;fori=1:t-1forj=i+1:td=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);ifd6%去除距离较近的特征点x(i)=-1;y(i)=-1;x(j)=-1;y(j)=-1;endendendc=0;d=0;fori=1:tif(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);endendx=find(x);y=find(y);12subplot(2,2,4);imagesc(I);xlabel('细化去伪后的指纹图像特征点')holdon;plot(l,h,'bo');holdoff;
本文标题:matlab指纹特征提取
链接地址:https://www.777doc.com/doc-2290541 .html