课 程 设 计 说 明 书
题目: 手写数字识别的实现
学院(系): 电气工程学院
年级专业: 08-自动化仪表
学 号: ************
学生姓名: 付成超
指导教师: 林洪彬 程淑红
教师职称: 讲师 讲师
2010年 12 月 24 日
燕山大学课程设计(论文)任务书
院(系):电气工程学院 基层教学单位:自动化仪表系
学 号 | 080103020179 | 学生姓名 | 付成超 | 专业(班级) | 自动化仪表 | ||
设计题目 | 手写数字识别实现 | ||||||
设 计 技 术 参 数 | 通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方 法,有较高的识别率 | ||||||
设 计 要 求 | 设计图像中不同数字的识别方法,可以先从两个数字的识别开始,尽量 实现多个不同数字的识别。设计中应该有自己的思想、设计体会 | ||||||
工 作 量 | 1.分析图像特征,查阅相关资料,根据图像的特征提出解决问题的思路。 2.查阅相关资料,学会MATLAB的编程方法 3.根据解决思路,编辑程序,根据调试结果,修改相应思路,找出最佳解决方案 | ||||||
工 作 计 划 | 周一 分析图像,查阅各种资料,提出可行的解决方案。 周二 熟悉MATLAB软件,学会软件的简单编程方法。 周三 根据可行的方法,编写程序,调试并修改方案。 周四 根据调试结果,选取最佳方案并完成设计论文。 周五 进一步完善设计论文,准备论文答辩。 | ||||||
参 考 资 料 | [] MICHAEL SIPSER著,张立昂等译,《计算理论导引》,机械工业出版社,2000。 [2] 王晓龙,关毅等编,《计算机自然语言处理》,清华大学出版社,2005。 [3] R.C.Gonzales等著,阮秋崎等译,《数字图像处理》,电子工业出版社,2002。 [4] 王文杰等编,《人工智能原理》,人民邮电出版社,2003。 | ||||||
指导教师签字 | 基层教学单位主任签字 |
燕山大学课程设计评审意见表
指导教师评语:
成绩:
指导教师:
年 月 日 |
答辩小组评语:
成绩: 评阅人: 年 月 日 |
课程设计总成绩: |
答辩小组成员签字: 赵彦涛、吴飞、林洪斌、程淑红 2010年 12 月 24 日 |
摘要:
数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用 计算机对其进行处理的过程。图像中手写阿拉伯数字的识别和其他模式的识别所采用的方法是多种多样的。本文论述了图像中手写阿拉伯数字的识别过程,并对手写数字识别的三种方法(基于规则的方法、基于统计的方法和基于神经网络的方法)进行了简要介绍和分析,并通过实例重点对基于规则的方法进行了描述。最后是对这些方法的简要评价。
关键字:
二值化 投影 矩阵 目标定位 matlab
3、程序..........................................................................................................5
1. 手写数字图像识别简介
手写阿拉伯数字识别是图像内容识别中较为简单的一个应用领域,原因有被识别的模式数较少(只有0到9,10个阿拉伯数字)、阿拉伯数字笔画少并且简单等。手写阿拉伯数字的识别采用的方法相对于人脸识别、汉字识别等应用领域来说可以采用更为灵活的方法,例如基于规则的方法、基于有限状态自动机的方法、基于统计的方法和基于神经网络的方法等。本文的开始部分先对手写阿拉伯数字识别的整个处理流程进行论述,而这个流程也可以用于图像中其他模式的识别。当然这个处理流程也不是唯一的,可以根据不同的模式识别应用场景进行与之不同的预处理流程。
2.正文: 手写数字图像识别的主要流程
在本文中,对图像进行设计中,对图像进行了以下四步处理。
第一步:对源图像进行黑白二值化处理,如图1。
图1:0数字的二值化(左)和1的二值化处理(右)
第二步:将图像在水平方向上和竖直方向上进行投影,这样通过投影图形就可以区分1和0的特征。如下图1和2:
图1:0图像的投影
图2:1图像的投影
第三步:用投影计算出区域的横纵坐标,将其分为九份。定位出数字所在图像中的位置,提取该部分进行分析。
图1:1所在区域(左)和0所在的区域(右)
第四步: 数字0和1的特征比较与识别
在0和一的比较中发现,在分成的九个区域的中间区域,0中间区域灰度为0,1中间区域灰度为1。
3.程序
I=rgb2gray(i);%%%%彩色图像转化为灰度图像
fmax2=double(max(max(I)));
fmin2=double(min(min(I)));
L2=(fmax2-(fmax2-fmin2)/3)/255;
A=im2bw(I,L2);
for x=1:256
for y=1:256
if(A(x,y)==0)
T(x,y)=1;
else T(x,y)=0;
end
end
end %%%二值化
T1=T.';
i1=sum(T);
i2=sum(T1); %%%投影
for x=1:256
if (i1(x)==0&&i1(x+1)>0)
a1=x,
break;
end
end
for x=a1:256
if (i1(x)>1&&i1(x+1)==0)
a4=x+1,
break;
end
end
for y=1:256
if (i2(y)==0&&i2(y+1)>0)
b1=y,
break;
end
end
for y=b1:256
if (i2(y)>1&&i2(y+1)==0)
b4=y+1,
break;
end
end %%%分别取坐标
a2=a1+(a4-a1)/3;
a3=a4-(a4-a1)/3;
b2=b1+(b4-b1)/3;
b3=b4-(b4-b1)/3; %%%分成九分
for x=1:256
for y=1:256
if(x>b2&&x break; else w=0; end end end 4.体会 通过上面的分析,我们可以看出,基于规则的方法,相对较为简单,比如手写阿拉伯数字识别等识别对象较少的情况,有比较少的时间复杂度和比较高的识别正确率,这种方法的关键在于规则的定义对模式是否有较高的区分度。样本库的规模越大,样本的分布越接近于实际情况,数字识别的正确率越高。这次的课程设计,虽然只是研究手写数字的识别,我们一个组的人相互相互讨论,交换意见和建议,并且包括了基础知识的积累、理论的成型、MATLAB语言编写和程序的使用、理论过程的MATLAB程序实现,和期间程序的不断编写和调试,可以说让我们对于MATLAB的数字图像处理整个过程都有了一个很完整和客观的认识。 在课设中我学习到了团队的作用,只有不断的学习,不断的去思考,不断的去寻求答案,不断的去实践,你才会真的掌握一种技术。 感谢老师这几天的指导,感谢这几天和我一起完成课设的同学们。我将会铭记这次宝贵的经验和这几天所有得到的快乐。