资源简介
使用OPTA细化算法,对指纹图像进行细化,为后面的特征提取与匹配打下坚实的基础
代码片段和文件信息
% clear;
clc;
A=imread(‘fingerprint.jpg‘);
I=double(imresize(A[512 512]));
J=double(size(512512));
sum=0;
for i=1:512
for j=1:512
sum=sum+I(ij);
end
end
T=sum/(512*512);
for i=1:512
for j=1:512
if I(ij)>T
J(ij)=1;
else
J(ij)=0;
end
end
end
% imshow(I[])
% title(‘原图‘)
figureimshow(J[])
title(‘二值化后的图‘)%首先要对指纹图象进行二值化
G=double(size(515515));
for i=2:513
for j=2:513
G(ij)=J(i-1j-1);
end
end
for i=2:513
G(i1)=J(i-11);
G(i514)=J(i-1512);
G(i515)=J(i-1512);
G(1i)=J(1i-1);
G(514i)=J(512i-1);
G(515i)=J(512i-1);
end
G(11)=J(11);
G(1514)=J(1512);
G(1515)=J(1512);
G(5141)=J(5121);
G(5151)=J(5121);
G(514514)=J(512512);
G(515515)=J(512512);
t=0;
H=zeros(512512);
% W=zeros(512;G);
while (t<=10)%选10为界仅是根据这副图所得的测试最小值
for i=2:513
for j=2:513
% W(t;ij)-W(t-1;ij)==0)
% p1=G(i-1j-1);
% p2=G(i-1j);
% p3=G(i-1j+1);
% p4=G(ij-1);
% p5=G(ij);
% p6=G(ij+1);
% p7=G(i+1j-1);
% p8=G(i+1j);
% p9=G(i+1j+1);
% p10=G(ij+2);
% p11=G(i+2j);
if (G(ij)==0)
if (G(i-1j-1)==1&&G(i-1j)==1&&G(i-1j+1)==1&&G(ij-1)==0&&G(ij)==0&&G(ij+1)==0&&G(i+1j)==0)
if ((G(i-1j)==1&&G(ij)==0&&G(i+1j)==0&&G(i+2j)==1)||(G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(ij+2)==1))
G(ij)=0;
else
G(ij)=1;
end
elseif (G(i-1j-1)==1&&G(i-1j)==0&&G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(i+1j-1)==1&&G(i+1j)==0)
if ((G(i-1j)==1&&G(ij)==0&&G(i+1j)==0&&G(i+2j)==1)||(G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(ij+2)==1))
G(ij)=0;
else
G(ij)=1;
end
elseif (G(i-1j)==0&&G(i-1j+1)==1&&G(ij-1)==0&&G(ij)==0&&G(ij+1)==1&&G(i+1j)==0&&G(i+1j+1)==1)
if ((G(i-1j)==1&&G(ij)==0&&G(i+1j)==0&&G(i+2j)==1)||(G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(ij+2)==1))
G(ij)=0;
else
G(ij)=1;
end
elseif (G(i-1j)==0&&G(ij-1)==0&&G(ij)==0&&G(ij+1)==0&&G(i+1j-1)==1&&G(i+1j)==1&&G(i+1j+1)==1)
if ((G(i-1j)==1&&G(ij)==0&&G(i+1j)==0&&G(i+2j)==1)||(G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(ij+2)==1))
G(ij)=0;
else
G(ij)=1;
end
elseif (G(i-1j)==1&&G(i-1j+1)==1&&G(ij-1)==0&&G(ij)==0&&G(ij+1)==1&&G(i+1j)==0)
if ((G(i-1j)==1&&G(ij)==0&&G(i+1j)==0&&G(i+2j)==1)||(G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(ij+2)==1))
G(ij)=0;
else
G(ij)=1;
end
elseif (G(i-1j-1)==1&&G(i-1j)==1&&G(ij-1)==1&&G(ij)==0&&G(ij+1)==0&&G(i+1j)==0)
if ((G(i-1j)==1&&G(ij)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4080 2006-12-15 16:40 optaxihua.m
----------- --------- ---------- ----- ----
4080 1
- 上一篇:matlab gui
- 下一篇:模糊熵Matlab程序
评论
共有 条评论