数字图像处理对指纹的预处理报告文档格式.docx
《数字图像处理对指纹的预处理报告文档格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理对指纹的预处理报告文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
指纹图像采集、指纹预处理、特征提取与匹配。
如图1-4所示。
指纹图像的预处理目的就是将自己感兴趣的目标区域保留下来,去除背景区域和没有用的部分,同时根据指纹目标区域中脊线的结构特征,采取较好的滤波方法,提高指纹脊线清晰度,平滑脊线边缘的毛刺和空洞,抑制图像噪声,保证指纹特征的可靠提取,并使灰度图像转化成黑白的二值图像,最终得到脊线结构清晰的单像素宽的二值图像。
本文预处理的主要流程如图2-1所示。
图像分割是从一幅图像中按一定规则将一些物体或区域加以分离,划分出我们感兴趣的部分或区域。
经过分割后的图像更容易进行进一步的分类、分析和识别处理。
图像分割要在指纹二值化和滤波及细化之前进行,如此可以减少计算的冗余量,提高指纹检测速度。
二值化就是将图像上的像素点的灰度值设置为0或1,也就是将整个图像呈现出明显的黑白视觉效果。
指纹图像中包括目标和背景还有众多噪声,要想从原始的指纹图像中提取出目标,一般用的方法是设定一个阈值T,用T将图像中像素数据分成两部分,若输入灰度图像的函数为:
通过求解阈值T,从而把图像f(x,y)分成目标和背景两个区域,其中大于T的像素群为目标区域,小于等于T的像素群为背景区域,阈值的选取原则是:
(1)尽可能的多保存图像信息;
(2)尽可能的减少噪声。
一个优秀的指纹识别系统不仅需要高的识别准确度,还需要高的识别速度,而影响识别速度的最主要因素就是指纹图像的滤波.
分割和滤波后的指纹图像再进行二值化处理后,脊线仍然有一定的宽度,指纹识别的匹配是只利用图像的点或线的特征,这些点或者特征只与脊线的走向或者纹理有关系,有一定宽度的二值化图像显得有些多余,所以需要对二值化图像进行细化处理,指纹二值化图像经过细化处理即可得到一个单一像素宽度的脊线,经过上述的细化处理,在后续的指纹特征提取和特征匹配的算法中大大的减少了计算的冗余量和出错率,使得指纹识别的速度和准确度有了很大的提高。
快速细化算法的原理为先判断出指纹的边缘,并沿着脊线的边缘对称的逐步删除像素,直至删除的剩下单个像素。
该算法速度快但不彻底。
它的算法为
(1)遍历整个指纹的图像,找出指纹图像脊线的边界点(图2-14中的X的八邻域为1P到8P)。
脊线上每一点的八邻域,脊线端点的八邻域中只有一个目标点,脊线连续点的八邻域有两个目标点,分叉点有三个目标点,且每点八邻域最多只有三个目标点,符合上述条件的才为单像素宽。
(2)当X点周围的点多于三个目标点时,将多余的点删除,依次删除到剩下三个时判断该点是否为分叉点,不是再删除,剩下两个点时,判断是否为连续点,不是时删除,当为一个点时不删除。
(3)循环寻找,直到没可删除的点为止。
3.图像处理方法的设计(要求提供matlab代码)
预处理代码
function
img
=
tuxiangyuchuli(path)
M=0;
var=0;
I=double(imread(path));
[m,n,p]=size(I);
for
x=1:
m
y=1:
n
M=M+I(x,y);
end
M1=M/(m*n);
var=var+(I(x,y)-M1).^2;
var1=var/(m*n);
if
I(x,y)>
=M1
I(x,y)=150+sqrt(2000*(I(x,y)-M1)/var1);
else
I(x,y)=150-sqrt(2000*(M1-I(x,y))/var1);
figure,
imshow(I(:
:
3)./max(max(I(:
3))));
title(‘归一化’)
%*************************************************************
M
=3;
%3*3
H
m/M;
L=
n/M;
aveg1=zeros(H,L);
var1=zeros(H,L);
%计算每一块的平均值
H;
L;
aveg=0;
i=1:
M;
j=1:
aveg=I(i+(x-1)*M,j+(y-1)*M)+aveg;
aveg1(x,y)=aveg/(M*M);
%计算每一块的方差
var=(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y)).^2+var;
var1(x,y)=var/(M*M);
Gmean=0;
Vmean=0;
L
Gmean=Gmean+aveg1(x,y);
Vmean=Vmean+var1(x,y);
Gmean1=Gmean/(H*L);
%所有块的平均值
Vmean1=Vmean/(H*L);
%所有块的方差
gtemp=0;
gtotle=0;
vtotle=0;
vtemp=0;
Gmean1>
aveg1(x,y)
gtemp=gtemp+1;
gtotle=gtotle+aveg1(x,y);
Vmean1<
var1(x,y)
vtemp=vtemp+1;
vtotle=vtotle+var1(x,y);
G1=gtotle/gtemp;
V1=vtotle/vtemp;
gtemp1=0;
gtotle1=0;
vtotle1=0;
vtemp1=0;
G1<
gtemp1=gtemp1-1;
gtotle1=gtotle1+aveg1(x,y);
0<
var1(x,y)<
V1
vtemp1=vtemp1+1;
vtotle1=vtotle1+var1(x,y);
G2=gtotle1/gtemp1;
V2=vtotle1/vtemp1;
e=zeros(H,L);
H
aveg1(x,y)>
G2
&
V2
e(x,y)=1;
aveg1(x,y)<
G1-100
x=2:
H-1
y=2:
L-1
e(x,y)==1
e(x-1,y)
+
e(x-1,y+1)
+e(x,y+1)
e(x+1,y+1)
e(x+1,y)
e(x+1,y-1)
e(x,y-1)
e(x-1,y-1)
<
=4
e(x,y)=0;
Icc
ones(m,n);
I(i+(x-1)*M,j+(y-1)*M)=G1;
Icc(i+(x-1)*M,j+(y-1)*M)=0;
title('
分割'
);
%************************************************************************
temp=(1/9)*[1
1
1;
1];
%
模板系数、均值滤波
Im=double(I);
In=zeros(m,n);
a=2:
m-1;
b=2:
n-1;
In(a,b)=Im(a-1,b-1)*temp(1,1)+Im(a-1,b)*temp(1,2)+Im(a-1,b+1)*temp(1,3)+Im(a,b-1)*temp(2,1)+Im(a,b)*temp(2,2)+Im(a,b+1)*temp(2,3)+Im(a+1,b-1)*temp(3,1)+Im(a+1,b)*temp(3,2)+Im(a+1,b+1)*temp(3,3);
I=In;
Im=zeros(m,n);
x=5:
m-5;
y=5:
n-5;
sum1=I(x,y-4)+I(x,y-2)+I(x,y+2)+I(x,y+4);
sum2=I(x-2,y+4)+I(x-1,y+2)+I(x+1,y-2)+I(x+2,y-4);
sum3=I(x-2,y+2)+I(x-4,y+4)+I(x+2,y-2)+I(x+4,y-4);
sum4=I(x-2,y+1)+I(x-4,y+2)+I(x+2,y-1)+I(x+4,y-2);
sum5=I(x-2,y)+I(x-4,y)+I(x+2,y)+I(x+4,y);
sum6=I(x-4,y-2)+I(x-2,y-1)+I(x+2,y+1)+I(x+4,y+2);
sum7=I(x-4,y-4)+I(x-2,y-2)+I(x+2,y+2)+I(x+4,y+4);
sum8=I(x-2,y-4)+I(x-1,y-2)+I(x+1,y+2)+I(x+2,y+4);
sumi=[sum1,sum2,sum3,sum4,sum5,sum6,sum7,sum8];
summax=max(sumi);
summin=min(sumi);
summ=sum(sumi);
b=summ/8;
(summax+summin+
4*I(x,y))>
(3*summ/8)
sumf
summin;
=summax;
>
b
Im(x,y)=128;
Im(x,y)=255;
j
=1:
Icc(i,j)=Icc(i,j)*Im(i,j);
(Icc(i,j)==128)
Icc(i,j)=0;
Icc(i,j)=1;
end;
figure,imshow(double(Icc));
二值化'
u=Icc;
[m,n]=size(u)
%去空洞和毛刺
m-1
n-1
u(x,y)==0
u(x,y-1)+u(x-1,y)+u(x,y+1)+u(x+1,y)>
=3
u(x,y)=1;
u(x,y)=u(x,y);
figure,imshow(u)
%title('
去毛刺'
)
u(a,b)==1
abs(u(a,b+1)-u(a-1,b+1))+abs(u(a-1,b+1)-u(a-1,b))+abs(u(a-1,b)-u(a-1,b-1))+abs(u(a-1,b-1)-u(a,b-1))+abs(u(a,b-1)-u(a+1,b-1))+abs(u(a+1,b-1)-u(a+1,b))+abs(u(a+1,b)-u(a+1,b+1))+abs(u(a+1,b+1)-u(a,b+1))~=1
%去空洞
if(u(a,b+1)+u(a-1,b+1)+u(a-1,b))*(u(a,b-1)+u(a+1,b-1)+u(a+1,b))+(u(a-1,b)+u(a-1,b-1)+u(a,b-1))*(u(a+1,b)+u(a+1,b+1)+u(a,b+1))==0
%去毛刺
u(a,b)=0;
去空洞'
%*************************************************************************
v=~u;
se=strel('
square'
3);
fo=imopen(v,se);
v=imclose(fo,se);
%对图像开操作和闭操作
img=bwmorph(v,'
thin'
Inf);
%对图像进行细化
figure,imshow(img)
细化图'
)
4实验结果