图形图像处理大作业2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

期末大作业报告
课程名称:数字图像处理
设计题目:手写数字识别
学院:信息工程与自动化学院
专业:计算机科学与技术
年级: 2012 学生姓名:和云山(学号 201210405106)指导教师:王剑
日期: 2015.6.19
教务处制
摘要
随着信息技术的发展,信息建设在我国取得了迅猛的发展,数字识别技术的应用需求越来越广泛。

数字识别一般通过特征匹配及特征判别的方法来进行处理,前者一般适用于规范化的印刷体字符识别,现今该技术基本成熟;后者多用于手写字符识别,其研究还处于探索阶段,识别率还比较低。

因此,本文主要阐述手写数字识别技术。

人工神经网络技术在今年取得了巨大的发展,它具有的高度非线性,使我们能表达一些至少是目前尚无法用计算理论表达清楚的外部世界模型;同时,神经网络所具有的自学习,自组织能力使我们能在与外部世界的交互作用下,实现无法用当前的计算理论表达清楚的功能;对于那些无法建立精确数学模型的系统,神经网络有着独特的优势。

本文基于BP神经网络的方法来实现手写体数字识别。

首先对图像进行灰度化、二值化、平滑去噪、归一化、细化的预处理。

然后采用逐像素特征提取法提取数字图像特征。

最后是BP神经网络分类器的建立和识别过程,对训练后的网络模型进行测试,得出训练样本的识别率为98%,测试样本达到78%的识别率。

关键词:数字识别;预处理;BP神经网络
一、实验原理
手写体数字识别常规预处理和特征提取方法
1.1 手写体数字识别的识别过程
手写体数字识别时,使用不同的方法,处理的步骤可能并不完全相同。

但是就一般情况看,一个完整的识别系统,在识别时大致要经过以下几个处理阶段,如图3-1所示。

图1-1 识别过程图 1.2 手写体数字识别的常规预处理方法
神经网络为手写体数字识别提供了一个强有力的手段。

目前,在神经网络模式识别中根据对输人样本的表达方式的选择有下面两大类:一类是直接将数字图像经数值化处理之后得到的像素点原始样本作为神经网络的输入;另一类则是对这种原始像素点构成的原始输人样本再作进一步的预处理或变换。

虽然,在某些情况下,人们采用第一类样本表达获得了较好的识别结果,但这种输人方式,通常使得网络分类器结构的复杂程度大大增加,所以,对原始样本进行预处理,己成为神经网络模式识别成功的一个很重要的方面。

对于手写体数字的预处理,人们己作了许多工作,但归根结底有下面几步:
首先是将手写体数字转化为m ×n 像素点矩阵形式,再经二值化处理,可以得到原始的输入表达方式。

接下来,对一原始样本表达进行一些常规变换,包括平滑、规格化和细化。

最后则是对样本进行各种的变换得到不同的特征以构成输入样本。

相当于传统模式识别中特征提取与选择,论文中称这一过程为特征变换。

特征变换的方法有许多,主要是获得数字主体特征,如数字宽度、长度及各笔划的长短、粗细和边缘轮廓特征。

常规处理之后再进行特征变换的预处理方法,目前广泛用于手写体数字识别中。

原始数据
图像预处理
灰度化
细化 特征提取
识别
识别结束 二值化
平滑去噪
原始文档 归一化
1.2.1 图像的灰度化
灰度化是指将图像处理成只含有亮度信息,不含有色彩信息的图像,就是把含有亮度和色彩的彩色图像变换成灰度图像的过程。

因为在图像预处理中,人们只关心笔画,而不关心其色彩。

而且256色的位图的调色板内容过于复杂,使得图像处理的许多算法都没有办法展开。

所以,要将图像进行灰度化处理。

要将彩色图像转换成灰度图像,首先要找出彩色图像的颜色值:R 、G 、B 。

然后,通过公式
Y =0.11*R +0.59*G +0.3*B (1-1)
即可得到亮度值Y 。

再令:R=G=B=Y 。

则得到的新图像就是灰度图像。

灰度化处理在许多图像处理中是很重要的一步,他的结果就是后续处理的基础。

所以,对图像正确的灰度化处理很重要。

1.2.2 二值化
图像的二值化就是把图像中的像素根据一定的标准划分成黑白两种颜色。

即将图像上的点的灰度置为0或255,使整个图像呈现出明显的黑白效果。

在数字图像处理中,二值化处理图像后,有利于再对图像做进一步处理时,图像只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。

二值化法的基本公式是:

⎨⎧<≥=T j i f T j i f j i g ),(..........0),(..........1),( (1-2)
g(i,j)为二值后(i,j)点的值,f(i,j)为灰度图像在(i,j)点的灰度值,T 为阈值。

阈值的选择是图像二值化的关键。

根据T 的选择方式不同可以分为:整体阈值二值化法、局部阈值二值化法、动态阈值二值化法等[6]。

当T 为常数时我们称为整体阈值法,整体阈值法要对于不同的样本图像要根据实际情况来设定阈值。

因为所采集的样本大部分底色都是白色,所以要将阈值定的大一些。

整体阈值法有很多缺点,不能根据每个字符来选择最佳阈值,整体阈值一旦给定就不能更改了。

但是这种方法是最简单的,而且速度也是最快的。

当数字图像清晰,轮廓明显,干扰很小时,这是一种非常有效的二值化方法。

还有一种由灰度值直方图确定整体阈值的方法。

这种方法根据图像和背景的灰度值自动确定整体阈值。

局部阈值法是用与坐标相关的一组阈值来对图像各部分分别进行分割,适用于光照条件不均匀的情况。

采用整体阈值法对图像进行二值化,效果不太理想时,局部阈值选择法有可能得到较为满意的二值化结果。

但其实现速度较慢,且不能保证字符笔划的连通。

动态阈值法的阈值选择不仅取决于像素点的位置和灰度值,而且还与该像素点的坐标位置有关。

由于充分考虑了每个像素点邻域的特征,因此能够很好地突出背景和目标的边界,这种方法可以处理低质量甚至单峰直方图图像。

对数字图像而言,其笔画和背景的区分是比较明显的,而且,动态阈值法计算时间长,因此,在数字识别中很少采用。

1.2.3 平滑去噪
平滑去噪就是除去孤立的噪声点、填充前景区域中的孤立白点、删除字符边缘线上的小凸起并填充凹陷,以利于后续算法的进行。

图像平滑去噪是数字图像处理中的重要环节和步骤。

噪声会给以后的工作带来很多不便。

因此,在处理图像的时候就要尽量去除图像中夹带的噪声。

去噪效果的好坏直接影响到后续的图像处理工作,如字符切分、特征提取等。

目前比较经典的图像去噪算法主要有以下三种:
1.均值滤波算法
均值滤波算法也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。

有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。

2.中值滤波
中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。

中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。

其算法简单,时间复杂度低,但其对点、
线和尖顶多的图像不宜采用中值滤波。

很容易自适应化。

3.维纳滤波
维纳滤波是使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。

对于去除高斯噪声效果明显。

1.2.4 书写的倾斜矫正
手写体数字,可能会出现倾斜,如果不进行倾斜矫正,同一字形在不同倾斜角度下的图像将体现为不同的模板,势必加大训练负担,降低识别率。

为了减弱这个因素的影响,采用了倾斜矫正,使矫正后字的上端与下端水平位置对齐。

最简单的矫正方法就是在转换为电子图像时手动进行矫正,使数字图像尽量摆放正。

用计算机进行矫正,我们只要计算出倾斜的角度就可以进行倾斜矫正,通常使用的矫正方法是投影法。

投影法是基于对投影图形状进行分析的方法。

其基本方法是计算每个倾斜角度的投影形状,并定义一个目标函数,实际的倾斜角度就是使目标函数最优。

由于这种方法需要计算每个倾斜角度的投影形状,要使得倾斜估计精度较高,这种方法的计算量非常大。

此外Hough变换法和邻近法也是倾斜矫正的方法。

1.2.5数字图像分割
如果一幅数字图像中是由多个数字组成,那我们就要进行图像分割,把每一个数字单独分割出来。

图像分割是指把图像分成各具特性的独立区域并提取出特定目标的技术和过程。

在数字图像处理中,就是把图像中的字符独立的分割出来。

预处理中人们只关心字符图像中的图形,其他的部分对识别是没有用的,而且图像中一般会含有多个数字,识别的时候只能根据每个数字的特征单独进行判别,因此需要对图像进行字符分割,把图像中的字符独立的分割出来。

图像分割是数字图像处理中的一项关键技术,它使得其后的图像分析,识别等高级处理阶段所要处理的数据量大大减少。

分割字符首先自下向上对图像进行逐行扫描直至遇到第一个黑色的像素点,记录下来,再由上向下对图像进行逐行扫描直至找到第一个黑色像素点,这样就找到图像大致的高度范围。

然后在这个高度范围之内在自左向右逐列进行扫描,遇到第一个黑色像素点时认为是字符分割的起始位置,再继续扫描,直至遇到有
一列中没有黑色像素点,则认为这个字符分割结束,再次继续扫描,直到扫描到图像的最右端。

这样就得到了每个字符的比较精确的宽度范围。

1.2.6 图像的归一化处理
归一化是预处理中非常重要的一环,由于原始图像在大小方面存在着很大的差异,必须进行归一化处理,使其具有相同的大小,有利于减少网络训练的时间,提高识别的准确率。

归一化的方法主要有两种,线性归一化和非线性归一化。

线性归一化在字符识别中应用很多,实现的方法是对像素坐标进行线性变换,首先把原来字符的高度宽度与要归一化的高度宽度做比较得出变换系数,然后把标准图像中的点按照插值的方法影射到原图像中,将不同尺寸的图像转换成事先规定的大小的图像。

这种方法的优点是简单易行,缺点是没有考虑字符的特征分布,不能吸收字符的形变,有时甚至会加剧原始图像的形变或产生新的形变。

但是在小类别数的分类问题中,它仍然不失为一种有效的方法。

非线性归一化方法是为了能够最大限度地吸收原始图像中的形变,在进行归一化时,考虑利用原始图像中的典型特征,并根据这些特征进行非线性变换。

1.2.7 图像的细化
在识别中只关注手写数字图形中的线型之间的组织关系,而不关心线的粗细。

相同数字的几幅图像由于他们的笔画线条的粗细不同,使得他们的差别很大,将它们的笔画线条进行细化以后,统一到相同的宽度,如一个像素宽度时,这些图像的差距就不那么明显,容易提取字符的骨架特征,可以提高字符识别的效率和正确率。

细化的算法很多,按细化后图形的连续性分,有四邻连接算法,八邻连接算法和混合连接算法,四邻连接指的是水平垂直四个方向连接,八邻连接是水平垂直四个方向加上相邻四角四个方向。

按细化处理过程分,有串行、并行和串并行处理法,用m×m(一般为3×3)窗口对某一像素进行检测时,如该点是可删除点,立即删除,则为串行细化处理,它的删除要影响到后续点的检测,通常我们并不使用;如对边缘点全部检测完毕后,再同时改变所有可删除点的值,则为并行细化处理;串、并行处理是两者的混合。

按处理方式分,由单方向,双方向和四方向细化法,愈是方向多的细化处理方式,细化的速度愈快。

1.3特征提取
特征提取是整个字符识别系统的关键,识别算法是根据选取特征的种类来进行选择的。

所选取的特征是否稳定,是否代表一类字符的特点,是系统识别率高低的关键。

对于手写体数字,根据抽取特征的方法一般将其分为三类:逐像素特征提取法、结构特征提取法和统计特征提取法[7]。

逐像素特征提取法最为简单,就是对预处理后的图像进行逐行逐列的扫描。

当遇到黑色像素时取其特征值为1,遇到白色像素时取其特征值为0,这样当扫描结束以后就形成了一个维数与图像中像素点的个数相同的特征向量矩阵。

这种特征提取方法的特点是算法简单,运算速度快,可以使BP网络很快的收敛,训练效果好,缺点是适应性不强。

但可以通过加大训练样本数目的方法来增强其适应性。

采用结构特征提取对字符进行结构分析从而达到识别的目的,是一种非常直观的方法,其思想与人认字的原理有点相象,但又有所不同。

其基本思想是字符可以逐级分解成部件、笔划乃至笔段,识别时可以自底向上,由像素得到笔段,由笔段结合成笔划,由笔划构成部件,由部件组成字符,逐级分析字符图象的结构,根据各元素的属性、数量及其相互关系,便可以判定待识字符。

目前研究较成熟,效果比较好的是基于笔划和基于笔段分析的手写体字符识别。

对不同的字符手写样本,尽管人书写风格千变万化,然而,笔划与笔划之间的位置关系、以笔划为基元的字符的整体拓扑结构是不变的,人认字就是抓住了这些本质不变的特征,因此能适应不同的书写风格的文字。

所以,基于笔划来自动识别字符一直是手写体字符识别研究的一类主要研究方法。

从统计模式识别的观点来看,字符识别实际上是一个模式分类问题,人对自然物体的识别,是建立在对该物体进行学习、特征分析的基础上的,计算机模式识别的过程与人的识别过程有着相似的地方。

实际上就是一种通过学习或者其它方法,形成一个记忆知识库,进行模式识别时,清晰地表达出一种从物体到记忆知识库的映像,从而得到识别结果。

二丶实验步骤
基于BP 算法的手写体数字识别的实现
2.1 基于BP 神经网络手写体数字识别的过程
首先获取样本,经过预处理获得点阵图像,选取图像特征,将特征输入BP 神经网络,经过训练获得输出,如果没有得到预期的期望值,算出误差,调整神经网络各阶层的权值,直到得到期望值为止。

识别过程如图4-1所示。

图2-1 识别过程图
2.2 样本准备
本文研究手写体数字的识别问题,选用了50个手写体数字图片样本作为训练样本,用来训练BP 神经网络。

测试样本用来验证BP 神经网络模型的识别能力。

图4-2为样本举例。

样本 预处理 点阵图像
特征提取
特征向量
选取特征
BP 网络训练
权值初始化 调整网络权值
输出
比较 误差
期望输出
图2-2手写数字样本举例
2.2.1 灰度化
本系统通过MATLAB的函数rgb2gray()来实现彩色图像的灰度化,图4-2灰度化后的图像如图4-3所示。

图2-3灰度化后的图像
4.2.2 二值化
我们可以通过im2bw()来实现图像的二值化,im2bw()中的阈值参数是和灰度图像的灰度值除以255之后的值进行比较的值,当灰度图像的灰度值除以255之后大于阈值时为白色,小于阈值时为黑色。

因为通常背景较白,所以阈值设为0.7,二值化后的图像如图4-4所示。

图4-4二值化后的图像
2.2.3平滑去噪
由于需要识别的图像大多是通过扫描而来,所以在很多的情况下字体模糊,对识别造成了一定的困难,所以我们需要对图像进行锐化处理使模糊的图像变得清晰起来。

本系统采用的是中值滤波的方法,用MATLAB的函数medfilt2()对图
像进行平滑去噪。

平滑去噪后的图像如图4-5所示。

图2-5平滑去噪后的图像
2.2.4 数字图像归一化
我们在进行数字图像识别的时候,只关心图像中心的数字部分,而不关心其周边的空白部分,所以我们对图像进行归一化。

本文采用的方法是:将图像逐行扫描,找到出现黑色像素的最小行rowmin 和最大行rowmax,同理找到colummin和colummax。

然后以rowmin、rowmax、colummin、colummax为边界截取出新的图像。

因为手写的图像中数字大小存在较大的差异,而本系统进行识别的要求是图像30×30像素,这就要把原来各不相同的字符统一到30×30像素。

将提取后的图像高度和宽度中的最大值与标准大小进行比较,得到要变换的比率。

把原图像按照变换的比率产生归一化后的图像,如图4-6所示。

图2-6归一化后的图像
2.2.5 细化
在使用MATLAB函数imresize()进行细化时,要先将原图像进行反色处理,等细化完后在反色回归原色,这样的细化效果较好。

细化后的图像如图4-7所示。

图2-7 细化后的图像
2.3 特征提取
将处理后的数字图象采用逐像素特征提取的方法,对图像进行逐行逐列扫描,当遇到黑色像素时取特征值为1,遇到白色像素时取其特征值为0,即扫描结束后形成1个维数与图像中像素点的个数相同的特征向量矩阵。

以数字“3”为例,
得到的特征值如图4-8所示。

图2-8由预处理图像得到特征值
2.4神经网络结构参数的选择与确定
2.4.1 输入层神经元个数和输出层神经元个数的确定
网络的输入层神经元个数和输出层神经元个数根据应用的具体要求来设定,输入层节点数目取决于数据的维数,如本系统采用逐像素特征提取方法,而图像为30×30像素,所以输入层神经元的个数为900个。

因为要识别10个数字,因此一般输出选择为10×1的矩阵,输出层神经元个数为10,分别对应0~9,即当数字图像0~9输入神经网络后在输出神经元对应的位置上为1,其他的位置为0;也可以采用8421编码,这种方法输出层神经元降为4个。

本系统采用第一种方法。

2.4.2 隐层数
一般认为,增加隐层数可以降低网络误差,提高精度,但也使网络复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向。

Hornik等早已证明:若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的MLP网络能够以任意精度逼近任何有理函数。

显然,这是一个存在性结论。

在设计BP网络时可参考这一点,应优先考虑3层BP网络(即有1个隐层)。

一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。

2.4.3 隐层节点数
在BP网络中,隐层节点数的选择非常重要,它不仅对建立的神经网络模型的性能影响很大,而且是训练时出现“过拟合”的直接原因,但是目前理论上还没有一种科学的和普遍的确定方法。

目前多数文献中提出的确定隐层节点数的计算公式都是针对训练样本任意多的情况,而且多数是针对最不利的情况,一般工程实践中很难满足,不宜采用。

事实上,各种计算公式得到的隐层节点数有时相差几倍甚至几十倍。

为尽可能避免训练时出现“过拟合”现象,保证足够高的网络性能和泛化能力,确定隐层节点数的最基本原则是:在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐层节点数。

研究表明,隐层节点数不仅与输入、输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的型式以及样本数据的特性等因素有关。

在确定隐层节点数时必须满足下列条件:
1.隐层节点数必须小于N-1(其中N为训练样本数),否则,网络模型的系统误差与训练样本的特性无关而趋于零,即建立的网络模型没有泛化能力,也没有任何实用价值。

2.训练样本数必须多于网络模型的连接权数,一般为2-10倍,否则,样本必须分成几部分并采用“轮流训练”的方法才可能得到可靠的神经网络模型。

总之,若隐层节点数太少,网络可能根本不能训练或网络性能很差;若隐层节点数太多,虽然可使网络的系统误差减小,但一方面使网络训练时间延长,另一方面,训练容易陷入局部极小点而得不到最优点,也是训练时出现“过拟合”的内在原因。

2.5仿真结果
对采集的手写数字样本进行特征提取之后,分为训练样本和测试样本,训练样本用来训练网络并建立分类器模型,测试样本用来分析网络模型的分类精度和泛化能力。

根据上一节的分析:BP网络选择三层结构,隐含层节点选择25,训练最大步数3000,训练学习率0.05,显示网格数10,隐含层激励函数选择Logsig 函数,使用函数traingdx进行训练,训练网络的收敛程度如图4-9所示,可以看出:训练步数为254步,达到了收敛误差要求。

图2-9 BP网络的训练过程
BP网络建立好以后,我们用50个测试样本和50个训练样本对训练好的BP 网络进行识别研究,训练样本的识别率为98%,测试样本的识别率为78%。

建立好的BP网络已经对训练样本进行了自学习,故网络模型对训练样本的识别较高,由于手写体数字的变动性较大,随意性较强,很多字体容易混淆,故造成测试样本的识别率较低。

总结
手写体数字识别是多年来的研究热点,也是一项极具研究价值的课题。

手写体数字识别研究的最终目标是设计出速度快、精度高的识别算法并运用到实际工作中。

一般情况下,当涉及到数字识别时,人们往往要求识别器有很高的识别可靠性。

因此针对这类问题的处理系统设计的关键环节之一就是设计出高可靠性和高识别率的手写体数字识别方法。

在过去的数十年中,研究者们提出了许许多多的识别方法。

然而,到现在为止,还没有哪个手写体数字识别器达到完美的识别效果。

相关文档
最新文档