数字图像课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理》课程设计报告
——手写阿拉伯数字的识别1、课程设计目的
1)、提高分析问题、解决问题的能力,进一步巩固数字图像处理系统中的基本原理
与方法。
2)、掌握文献检索的方法与技巧。
3)、熟悉掌握一门计算机语言,可以进行数字图像的应用处理的开发设计。
2、方法综述
字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。
本次实验是对手写的阿拉伯数字进行识别,主要步骤包括预处理模块(其中用到图像分割方法),特征提取和利用人工神经网络(具体运用BP 神经网络方法)进行数字的识别。
2.1图像分割:
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。
它是由图像处理到图像分析的关键步骤。
现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。
2.1.1基于阈值的分割方法
灰度阈值分割[1]法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。
阈值分割方法实际上是输入图像f到输出图像g的如下变换:
其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。
由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。
阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。
阈值分割的优点是计算简单、运算效率较高、速度快。
在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。
人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。
2.1.2基于边缘的分割方法
图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。
这种不连续性称为边缘。
不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。
对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。
因此常用微分算子进行边缘检测。
常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh 算子等。
在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。
这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。
由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。
因此用微分算子检测边缘前要对图像进行平滑滤波。
2.1.3基于小波变换的分割方法
小波变换是近年来得到了广泛应用的数学工具,它在时域和频域都具有良好的局部化性质,而且小波变换具有多尺度特性,能够在不同尺度上对信号进行分析,因此在图像处理和分析等许多方面得到应用。
基于小波变换的阈值图像分割方法的基本思想是首先由二进小波变换将图像的直方图分解为不同层次的小波系数,然后依据给定的分割准则和小波系数选择阈值门限,最后利用阈值标出图像分割的区域。
整个分割过程是从粗到细,有尺度变化来控制,即起始分割由粗略的L2(R)子空间上投影的直方图来实现,如果分割不理想,则利用直方图在精细的子空间上的小波系数逐步细化图像分割。
分割算法的计算馈与图像尺寸大小呈线性变化。
2.2特征提取
特征提取是计算机视觉和图像处理中的一个概念。
它指的是使用计算机提取图像信息,决定每个图像的点是否属于一个图像特征。
特征提取的结果是把图像上的点分为不同的子集,这些子集往往属于孤立的点、连续的曲线或者连续的区域。
2.2.1结构特征提取方法
采用结构特征提取对字符进行结构分析从而达到识别的目的,是一种非常直观的方法,其思想与人认字的原理有点相象,但又有所不同。
其基本思想是:字符可以逐级分解成部件、笔划乃至笔段,识别时可以自底向上,由象素得到笔段,由笔段结合成笔划,由笔划构成部件,由部件组成字符,逐级分析字符图象的结构,根据各元素的属性、数量及其相互关系,便可以判定待识字符。
目前研究较成熟,效果比较好的是基于笔划和基于笔段分析的手写体字符识别。
2.2.2统计特征提取方法
从统计模式识别的观点来看,字符识别实际上是一个模式分类问题,人对自然物体的识别,是建立在对该物体进行学习、特征分析的基础上的,计算机模式识别的过程与人的
识别过程有着相识的地方。
实际上就是一种通过学习或者其它方法,形成一个一记忆知识库,进行模式识别时,清晰地表达出一种从物体到记忆知识库的映像,从而得到识别结果。
人在进行物体识别时,是利用大脑中通过学习形成的记忆库,对识别的物体进行一种黑箱式的映像,从记忆库中找出相匹配的类别。
计算机要把人类识别物体时的这种黑箱式的映像表达出来,一般是由两个步骤来完成的:第一步,以适当的特征来描述物体,即由xi、f(xi)的映像;第二步,计算机执行某种运算完成由f(xi)*c(x)二X的映像。
2.2.3纹理特征提取方法
纹理特征和颜色特征类似,它也是一种整体性的特征.近些年来,对纹理分析方法的各种理论或方法在纹理特征提取中的应用已经基本成形,Tuceryan和Jain把纹理特征提取方法归纳为5类,即结构方法、信号处理方法、几何方法、模型方法和统计方法.这种分类方法被大多学者采纳.灰度共生矩阵(GLCM)是被广泛应用的纹理提取算法,是分析图像的基础,它运用统计学中的概率来反映图像灰度有关方向和间隔等整体信息
2.3.识别的方法
本次实验采用人工神经网络的方法进行识别,人工神经网络(Artificia Neural Network)至今还没有一个比较科学和权威的定义。
有一种定义是:“人工神经网络是生理学上的真实人脑神经网络的结构和功能,以及若干基本特征的某种理论抽象,简化和模拟而构成的一种信息处理系统。
”从系统观点看,人工神经网络是由大量神经元通过极其丰富和完善的联接而成的,模拟大脑的基本特性的自适应非线性动态系统。
神经元之间的连接方式不同,神经网络的结构形态也就不同。
具体的生理学上的定义本文不再展开赘述。
2.3.1 BP神经网络
神经网络的应用已经渗透到各个领域中,包括金融、股票预测,自动控制,
机器人,模式识别,计算机视觉和图像处理,信号处理等等,其中软件模拟的BP网络是应用最多、最成功的网络。
本次课程设计是基于BP神经网络对手写阿拉伯数字进行识别,故下文介绍关于BP神经网络的概念。
BP(Back Propagation)网络又叫误差反向传播网络,是由美国加利福尼亚大学的PDP 小组提出的一种神经网络算法,实现了Minsky和Papert认为不能实现的多层网络的设想。
BP算法的基本思想是,学习过程由信号的正向传播与误差的反向传播两个过程组成。
正向传播时,输入样本从输入层传入,经各隐藏层逐层处理后,传向输出层。
若输出层的实际输出与期望的输出(教师信号)不符,则转入误差的反向传播阶段。
误差反传是将输出误差以某种形式通过隐藏层向输入层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
这种信号正向传播与误差反向传播的各层权值调整过程,是周而复始地进行的。
权值不断调整的过程,也就是网络的学习训练过程。
此过程一直进行到网络输出的误差减少到可接受到的程度,或进行到预先设定的学习次数为准。
2.3.2BP网络的优缺点
BP网络的算法是最著名的多层前向网络训练算法,尽管存在收敛速度慢,局部极值等缺点,但可通过各种改进措施来提高它的收敛速度,克服局部极值现象。
而BP网络算法的优点也是显而易见的,它具有简单,易行,计算量小,并行性强等特点,目前仍是许多数字识别的优选算法。
3、实验结果与分析
3.1系统的流程图
基于BP神经网络的手写体数字识别系统大致可以分为输入、预处理、特征提取、BP神经网络识别4个部分。
输入包括数字样本集扫描输入和待识别数字输入,先用数字样本集扫描输入图像经预处理后特征提取的特征向量来训练神经网络,再用训练好的神经网络来识别待识别数字。
预处理部分包括二值化、分割,再对预处理后二值点阵图像进行特征提取。
最后将所提取的特征量输入训练好的神经网络进行识别,输出识别结果。
基于BP神经网络的手写体数字识别系统的结构及流程如图2所示。
图2:手写阿拉伯数字识别系统的流程图
3.2预处理模块
由于扫描输入的图像一般为RGB格式,预处理首先需要将其转化为二值化的图像,即只包含“0”、“1”的矩阵形式。
先将原始图像转化为灰度图像,通过函数rgb2gray来实现,再通过函数im2bw转化为二值图像,然后对二值化后的图像进行分割处理,本实验采用基于字符连通域的分割。
由于对数字的书写有一定要求,两个字符之间不能出现连笔的情况,因此可以对二值图像各个分离部分进行标注来分割字符,用函数bwlabel来实现。
用函数regionprops来度量图像区域属性,包括属性BoundingBox(表示各标注区域的最小矩形)和Centroid(表示各区域的质心)。
通过对各个区域标注及各个区域起点坐标和区域范围(包括宽度和高度)的确定来截取字符,所用函数为imcrop,最后调用函数imresize对图像进行归一化处理。
通过归一化以消除各数字在位置和大小上的差异,从而提高识别的准确率。
归一化处理后的字符便可进行特征向量提取。
部分程序代码如下所示:
function img = edu_imgpreprocess(I)
Igray = rgb2gray(I);
Ibw = im2bw(Igray,graythresh(Igray));%将图像转化为二值图像
function bw2 = edu_imgcrop(bw)
% 对图像进行裁剪(Crop the image to the edge)
bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]);
x1=1;
y1=1;
x2=x2temp;
y2=y2temp;
图1:原始的图像图2:进行预处理之后的过程和图像
3.3特征提取:
通过粗网格方法来提取特征,粗网格特征是一组注重字符图像整体的分布特征,此种特征对噪声具有极强的抑制能力。
首先对分割后的字符归一化为70×50的点阵,然后将此矩阵等分为7×5的网格,接着依次统计每一个网格内黑像素点(即“1”)的个数,得到一个以数字表示的7×5维的网格特征,将7×5维特征矩阵转变为一维特征,最后对其进行归一
化操作。
特征提取的是预处理之后图像上的像素点,然后送入到预设和训练好的BP神经网络进行识别。
如图3所示,黑色的小点为所定义的7*5的网格特征,图中较明显的黑色点为所提取的特征、
图3:对4进行特征提取
相关代码:
function lett = edu_imgresize(bw2)
% This function will take the cropped binary image and change it to 5 x 7
% character representation in single vector.
bw_7050=imresize(bw2,[70,50]);%重新定义尺寸
%粗网格的特征提取方法
for cnt=1:7
for cnt2=1:5
Atemp=sum(bw_7050((cnt*10-9:cnt*10),(cnt2*10-9:cnt2*10)));
lett((cnt-1)*5+cnt2)=sum(Atemp);
end
end
lett=((100-lett)/100);%特征向量的归一化
lett=lett
图4:实验中对7进行特征提取所得到的图像
3.4数字的识别
本实验采用BP网络的方法进行数字的识别,BP网络的基本结构如图5所示,网络由不同层次的节点集合组成,每一层节点的输出送到下一层节点。
这些输出值由于连接权不同而被放大、衰减或抑制。
除了输入层外,每一节点的输入为前一节点输出值的加权和。
每一节点的激励输出值由节点输入、激励函数及闭值决定。
图5:BP网络模型
BP网络的学习算法使用梯度搜索技术,以期望网络的实际输出与期望输出的均方差最小。
网络的学习是一种在误差反向转播的同时修正的过程。
学习过程应包括两个阶段:前向计算阶段和反向调整阶段。
在具体的实验过程中采用三层BP神经网络来实现。
通过实验测试设定隐含层神经元数目为10,所以只需分类10个数字,设定输出层神经元数目为10。
隐含层神经元的传递函数采用S型对数函数logsig,输出层神经元传递函数也采用S 型对数函数logsig,此神经网络的训练函数采用trainlm,性能函数采用sse,训练步数最长设为5000,性能目标设为0.01。
通过训练好的神经网络能对需要识别的数字进行识别。
具体的代码如下所示:
function net = edu_createnn(P,T)%创建神经网络
alphabet = P;
targets = T;
[R,Q] = size(alphabet);
[S2,Q] = size(targets);
S1 = 10;S2=10;
net = newff(minmax(alphabet),[S1 S2],{'logsig''logsig'},'trainlm');
net.LW{2,1} = net.LW{2,1}*0.01;
net.b{2} = net.b{2}*0.01;
net.performFcn = 'sse';
net.trainParam.goal = 0.01;
net.trainParam.show = 20;
net.trainParam.epochs = 5000;
net.trainParam.mc = 0.95;
P = alphabet;
T = targets;
[net,tr] = train(net,P,T);
图6:GUI界面及实验结果
3.5实验分析
在本次课程实验中我对0到9这10个手写的数字进行识别,在实验过程中,发现该系统没办法达到百分之百的准确率,进行多次程序的调试这个问题仍然没办法得到改进。
例如该系统有时会将8识别为1,将7识别为3,或者将7识别为2,但是对于4,5,6这三个数,识别的准确率能达到百分之百。
存在错误的原因可能是在特征提取时一些手写的数字在7*5这个模版中体现的不够独一性,可以提高特征提取的维数,比如改成16*16模版进行提取,这样可能可以提高识别的准确率。
还有一个原因可能是网络结构过于简单,本次实验采用了传统的BP网络对样本进行了分类,要适应各种变体是比较困难和不稳定的。
在实际的应用中,可以采用多种方法改进BP网络的分类性能。
比如说,对BP算法进行改进,组建多级BP网络,构建集成型神经网络,将支持向量机和BP网络结合等。
实验中通过0-9这10个数字进行比对的具体准确率,如下表所示:
5、课程设计总结与体会
通过本次的课程设计使得我对手写阿拉伯数字识别系统的设计和运行有了深入的了解,也使得我对数字图像处理这个课程有了深入的探索。
在整个设计过程中,我认为最重要的是要有整体规划的思想,先对课题进行需求的分析,分成几个模块进行设计和编程,最后设计一个GUI界面将各个模块整合到一个系统中,完成课程设计题目的要求。
在这个过程中我深化了课本所学习到的理论知识,也通过在网上查询资料和文献学习到了课本以外的知识,这开拓了我的见识。
在老师的指导下我通过对代码进行分析提高了编程能力,但是涉及一些比较细致的参数设置还没有深入地研究过,有待提高。
6、参考文献
1荣辉.张济世.人工神经网路及其现状与展望《电子技术应用》1995年第10期
4一5页
1 T,J,Sejnowiski,C,R,Rosenberg”Paralle Netwoeks that Learn to Pronounce English Test”,Complex Systems,1987:1 145-168
1 陈明,赵瑞清.BP神经网络的比例训练.计算机学报,1993(8)
1 靳蕃,范俊波,谭永东。
神经网络与神经计算机.西南交大,1991
1 庄镇泉,王煦法,王东生.神经网络与神经计算机.北京:科学出版社,1992
6:毛群.王少飞.基于matlab的神经网络数字识别系统实现.中国西部科技.2010(09).
7:施少敏.马彦恒.陈建泗.基于BP网络的数字识别方法.兵工自动化.2006.25.10
8:朱曼丽.孙志锋.孙志林.一种基于神经网络的数字识别方法.计算机工程与应用.2002.12 9:乔宝明张晓莉高志才基于matlab识别0-9数字图像的新方法.技术与创新管理.2009.3 10:许捍卫.王成.一种简单的数字识别方法研究.河海大学测量工程系。