图形图像处理课程
大作业
姓名:
班级:
学号:
目录
问题描述 (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
end
x=find(x);y=find(y);
subplot(2,2,4);imagesc(I);
xlabel('细化去伪后的指纹图像特征点') 5、指纹特征提取和识别MATLAB实现
图一(1)用匹配模板法细化指纹图像
图二(2)特征点提取图像
图三(3)去伪后指纹图像
图四
总结
通过指纹图像的特征提取和识别,进一步了解了图像处理。
刚开始有很多东西都做不出来,无法实现,最后在图书馆查找资料,结合书本知识,最终实现了指纹的特征提取。
附录
参考文献:
【1】余胜威.MATLAB优化案例分析与应用(进阶篇).清华大学出版社,2015【2】杨丹,赵海滨,龙哲.MATLAB图像处理实例详解.清华大学出版社,2013【3】实用matlab图像和视频处理Oge Marques.清华大学出版社
源代码:
clc,clear,close all
warning off
feature jit off
origin=imread('234.png');
subplot(2,2,1);imagesc(origin);
colormap(gray);xlabel('原始图像')
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('细化后指纹图像')
%
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('指纹特征提取图像')
hold on;plot(x,y,'bo');hold off;
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
end
x=find(x);y=find(y);
subplot(2,2,4);imagesc(I); xlabel('细化去伪后的指纹图像特征点') hold on;plot(l,h,'bo');hold off;。