当前位置:文档之家› 模式识别课matlab数字识别程序

模式识别课matlab数字识别程序

名 称: 模式识别
题 目: 数字‘3’和‘4’的识别
实验目的与要求:
利用已知的数字样本(3和4),提取样本特征,并确定分类准则,在用测试样本对分类确
定准则的错误率进行分析。进一步加深对模式识别方法的理解,强化利用计算机实现模式识
别。
实验原理:
1.特征提取原理:
利用MATLAN 软件把图片变为一个二维矩阵,然后对该矩阵进行二值化处理。由于“3”
的下半部分在横轴上的投影比“4”的下半部分在横轴上的投影宽,所以可以统计‘3’‘4’
在横轴上投影的‘1’的个数作为一个特征。又由于‘4’中间纵向比‘3’的中间‘1’的个
数多,所以可以统计‘4’和‘3’中间区域‘1’的个数作为另外一个特征,又考虑‘4’的
纵向可能会有点偏,所以在统计一的个数的时候,取的范围稍微大点,但不能太大。
2.分类准则原理:
利用最近邻对测试样本进行分类
实验步骤
1.利用MATLAN 软件把前30个图片变为一个二维矩阵,然后对该矩阵进行二值化处理。
2.利用上述矩阵生成特征向量
3.利用MATLAN 软件把后5个图片变为一个二维矩阵,然后对该矩阵进行二值化处理。
4.对测试样本进行分类,用F矩阵表示结果,如果是‘1’表示分类正确,‘0’表示分类错
误。
5.对分类错误率分析
实验原始程序:
f=zeros(5,2)
w=zeros(35,2)
q=zeros(35,2)
for i=1:35
filename_1='D:\MATLAB6p5\toolbox\images\imdemos\3\'
filename_2='.bmp'
a= num2str (i)
b=strcat(filename_1,a)
c=strcat(b,filename_2)
d=imread(c)
e=im2bw(d)
n=0
for u=1:20
m=0
for t=32:36
if(e(t,u)==0)
m=m+1
end
end
if(m<5)
n=n+1
end
end
w(i,1)=n
n=0
for u=1:36
for t=10:18
n=n+e(u,t)
end
end
w(i,2)=n
filename_1='D:\MATLAB6p5\toolbox\images\imdemos\4\'
filename_2='.bmp'
a= num2str(i)
b=strcat(filename_1,a)
c=strcat(b,filename_2)
d=imread(c)
e=im2bw(d)
n=0
for u=1:20
m=0
for t=32:36
if(e(t,u)==0)
m=m+1
end
end
if(m<5)
n=n+1
end
end
q(i,1)=n
n=0
for u=1:36
for t=10:18
n=n+e(u,t)
end
end
q(i,2)=n
end

z=zeros(5,2)
x=zeros(5,2)
for i=1:5
filename_1='D:\MATLAB6p5\toolbox\images\imdemos\3\'
filename_2='.bmp'
a= num2str (i+35)
b=strcat(filename_1,a)
c=strcat(b,filename_2)
d=imread(c)
e=im2bw(d)
n=0
for u=1:20
m=0
for t=32:36
if(e(t,u)==0)
m=m+1
end
end
if(m<5)
n=n+1
end
end
z(i,1)=n
n=0
for u=1:36
for t=10:18
n=n+e(u,t)
end
end
z(i,2)=n
filename_1='D:\MATLAB6p5\toolbox\images\imdemos\4\'
filename_2='.bmp'
a= num2str (i)
b=strcat(filename_1,a)
c=strcat(b,filename_2)
d=imread(c)
e=im2bw(d)
n=0
for u=1:20
m=0
for t=32:36
if(e(t,u)==0)
m=m+1
end
end
if(m<5)
n=n+1
end
end
x(i,1)=n
n=0
for u=1:36
for t=10:18
n=n+e(u,t)
end
end
x(i,2)=n
end
d1=10000*ones(5,2)
d2=10000*ones(5,2)
for i=1:5
for j=1:35
a=(w(j,1)-z(i,1))*(w(j,1)-z(i,1))+(w(j,2)-z(i,2))*(w(j,2)-z(i,2))
b=(q(j,1)-z(i,1))*(q(j,1)-z(i,1))+(q(j,2)-z(i,2))*(q(j,2)-z(i,2))
if(ad1(i,1)=a
end
if(bd1(i,2)=b
end
end
if(d1(i,1)f(i,1)=1
end
for j=1:35
c=(w(j,1)-x(i,1))*(w(j,1)-x(i,1))+(w(j,2)-x(i,2))*(w(j,2)-x(i,2))
d=(q(j,1)-x(i,1))*(q(j,1)-x(i,1))+(q(j,2)-x(i,2))*(q(j,2)-x(i,2))
if(d2(i,1)>c)
d2(i,1)=c
end
if(d2(i,2)>d)
d2(i,2)=d
end
end
if(d2(i,1)>d2(i,2))
f(i,2)=1
End
End
实验结果:
错误率为0.1,符合要求。
心得体会:
通过本次实验,使我们对模式识别有了更进一步的理解,并基本掌握了用计算机实现简单的
模式识别,达到了实验目的。

相关主题