致 谢
时光如梭,随着毕业论文的完成,我的大学生涯也就要结束。回想我做毕业设计这段时间里,我的指导老师刘文博,对我耐心指导,严格要求,精益求精,在此致以最深的谢意。在撰写论文的这段时间里,我学到了很多我之前不懂的一些专业知识和技能,锻炼了我思考能力和操作能力,对我大学四年的学习有了一个比较全面系统的整理。
在毕业设计的完成过程中,室友和班上的所有同学,他们给我提供了有益的帮助、良好的学习和生活环境,非常感谢他们。
31
参考文献
[1] 李俊山,李旭.数字图像处理.北京:清华大学出版社,2007.4 [2] 阮秋琦.数字图像处理学.北京:电子工业出版社,2001.1
[3] 祝恩,版建平等.自动指纹识别技术.长沙:国防科技大学出版社,2006.5 [4] 查振元、朱华炳.电子门禁系统组成.机电产品开发与创新.2003,(2):13—14 [5] 胡士斌,杨卫平. 指纹图像复合分割算法研究[J]. 计算机工程与应用, 2006,40(12): 71273. [6] 李建华,马小妹,郭成安,基于方向图的动态闽值指纹图像二值化方法.大连理工大学学报.2002,42(5):626-628
[7] 家锋,唐降龙,赵泉.一个基于特征点匹配的联机指纹鉴别系统.哈尔滨工业大学学报,2002,34(1):132-136
[8] 刘文星,王肇圻,母国光.脊线跟踪及其在细化指纹后处理中的应用[J].光电子,激光,2002,13(2):184~187. [9] 王玮著,自动指纹识别系统关键技术研究,重庆,重庆大学光电工程学院,2007,80-82 [10] 罗希平,田捷.自动指纹识别的图像增强和细节匹配算法.软件学报,2002-5,13(5):
946-956 [11] 姜腾云.指纹识别门禁系统的matlab仿真实现.江门:五邑大学,2011. [12] 乔治宏.基于细节结构的指纹特征提取及匹配算法研究.北京:北京工业大学硕士学
位论文,2004-5.
32
附录A 预处理代码
function img = tuxiangyuchuli(path) M=0;var=0;
I=double(imread(path)); [m,n,p]=size(I); for x=1:m for y=1:n
M=M+I(x,y); end end
M1=M/(m*n); for x=1:m for y=1:n
var=var+(I(x,y)-M1).^2; end end
var1=var/(m*n); for x=1:m for y=1: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); end end end
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); %计算每一块的平均值 for x=1:H; for y=1:L;
aveg=0;var=0; for i=1:M;
for j=1:M;
aveg=I(i+(x-1)*M,j+(y-1)*M)+aveg; end end
aveg1(x,y)=aveg/(M*M); %计算每一块的方差 for i=1:M;
for j=1:M;
33
var=(I(i+(x-1)*M,j+(y-1)*M)-aveg1(x,y)).^2+var; end end
var1(x,y)=var/(M*M); end end
Gmean=0;Vmean=0; for x=1:H for y=1:L
Gmean=Gmean+aveg1(x,y); Vmean=Vmean+var1(x,y); end end
Gmean1=Gmean/(H*L); %所有块的平均值 Vmean1=Vmean/(H*L); %所有块的方差 gtemp=0;gtotle=0;vtotle=0;vtemp=0; for x=1:H for y=1:L
if Gmean1>aveg1(x,y) gtemp=gtemp+1;
gtotle=gtotle+aveg1(x,y); end
if Vmean1 vtotle=vtotle+var1(x,y); end end end G1=gtotle/gtemp;V1=vtotle/vtemp; gtemp1=0;gtotle1=0;vtotle1=0;vtemp1=0; for x=1:H for y=1:L if G1 gtemp1=gtemp1-1; gtotle1=gtotle1+aveg1(x,y); end if 0 vtemp1=vtemp1+1; vtotle1=vtotle1+var1(x,y); end end end G2=gtotle1/gtemp1;V2=vtotle1/vtemp1; e=zeros(H,L); for x=1:H 34 for y=1:L if aveg1(x,y)>G2 && var1(x,y) if aveg1(x,y)< G1-100 && var1(x,y)< V2 e(x,y)=1; end end end for x=2:H-1 for y=2:L-1 if e(x,y)==1 if 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; end end end end Icc = ones(m,n); for x=1:H for y=1:L if e(x,y)==1 for i=1:M for j=1:M I(i+(x-1)*M,j+(y-1)*M)=G1; Icc(i+(x-1)*M,j+(y-1)*M)=0; end end end end end figure, imshow(I(:,:,3)./max(max(I(:,:,3))));title('分割'); %************************************************************************ temp=(1/9)*[1 1 1;1 1 1;1 1 1]; % 模板系数、均值滤波 Im=double(I); In=zeros(m,n); for a=2:m-1; for 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); end end I=In; 35