模式识别课matlab数字识别程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
名称:模式识别
题目:数字‘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(a d1(i,1)=a end if(b d1(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 实验结果: