邮政编码识别系统的设计毕业论文.doc
河南师范大学新联学院本科毕业论文 邮政编码识别系统的设计The design of postal code identification system专业名称: 电子信息工程 年级班别: 2009级 姓 名: 指导教师: 2013年4月目录摘 要21 前言41.1 课题研究的背景和意义41.2 数字图像处理技术51.3 课题研究的内容62 系统结构概述72.1软件平台概述72.2功能模块的划分73 图像的采集83.1 分辨率的选择83.2 采样频率的设置83.3 物距的选择84 邮件上邮码签图像的提取94.1图像数据的抽样94.2图像背景的滤出114.3邮码签的定位114.4 图像灰度分布特征的求解与算法124.5 邮政编码区域的提取145 数字识别系统的设计175.1系统流程图175.2程序实现185.2.1图像的预处理185.2.2用神网络进行字符识别236 测试和程序运行286.1测试及识别过程286.2程序运行296.3注意事项32结 论33参考文献34致 谢35摘 要随着邮政业务技术的发展,邮政设备的推广使用工作有了很大的进展,使我国的邮政业务处理水平有了很大的提高,邮政业务处理正走向机械化、自动化和网络化。一个高速、高效的邮政处理体系正在形成。本文正是基于如今的形式,设计了一套便于邮件处理的系统,以提高工作效率,减轻人工工作量。这套系统的设计包括了图像采集、图像预处理、图像初步提取和邮政编码识别这四个主要的组成部分,本文把重点研究放在了数字的识别上。在这个过程中,用到了好多图像处理中的相关技术,比如灰度化、二值化、图像内容自动调整、去离散点、图像的缩放、细化、曲线平滑、曲线去枝桠操作等,最后还使用了神经网络对提取到的数字信息进行分析判断。本文通过相关软件的设计,达到了对采集到的图像进行智能识别的目标。这使邮件地分拣过程更加高效,促进了邮件分拣的自动化程度。关键词: 抽样;图像分割;二值化;模式识别ABSTRACTWith the development of postal services technology, promoting use of postal equipment has made a lot of progress in its work, the level of postal service in China has been greatly improved, postal services are heading for mechanization, automation and networking.A high speed and efficient postal system is taking shape. This article is based on the forms, design a message handling system, in order to enhance efficiency, reduce manual workload. The system design includes a preliminary extraction of image acquisition, image processing, image and zip code to identify the four main components of this article on focused research on digital identification. In this process, used a lot of image processing technology, such as grayscale, binary, image content automatically, go to the discrete points, image zoom, fine-grained, smooth curve, curve branch operations, and finally using neural network for extraction to the analysis of digital information. This article through the software design, reaching collected image intelligently identify the target.The mail sorting process more efficient, facilitating automation of mail sorting.Key Words:Sampling; Image Acquisition; Binarization; Pattern Recognition1 前言1.1 课题研究的背景和意义近年来,随着邮政业务,技术的发展,邮政设备的推广使用工作有了很大的进展,使我国的邮政业务处理水平有了很大的提高,邮政业务处理正走向机械化、自动化和网络化。一个高速、高效的邮政处理体系正在形成。计算机网络、数据库技条形码技术、模式识别技术以及与计算机相协调的打印技术和设备的发展,大大推动了邮政自动化的进程。许多技术都被应用到信函分拣的机械和电子设备中,极大的提高了信函的分拣速度与效率,降低了出错的几率,减轻了许多工作人员的工作压力。但是,我国邮政设备整体的自动化程度还很低,与世界先进水平也有一定的差距。我国普遍存在的是最原始的人工处理的情况,处理速度很慢。众多的事实证明,采用高新技术、提高邮件处理设备的自动化程度是加快邮件处理传递速度、减少邮件处理成本和提高邮政分拣效率的重要手段。因此邮件分拣自动化的技术就很值得仔细研究。信件、包裹等的收寄工作是邮政部门的一项重要任务。当前,许多的信件、包裹等的分拣工作主要是有人工完成的,这样的工作效率较低,而成本却较高。特别是近几年,随着网络购物的迅猛发展,邮购将迎来高峰,那时,工作量将急速增加,包裹的分拣将回更加耗时耗力,目前的分拣处理能力将远远不能够满足市场的要求了。所以,研究出高效率、高自动化程度且实用性强的包裹分拣设备就成为邮政行业、快递行业迫在眉睫的问题,这对刺激我国消费,推进我国邮政、快递事业的发展就具有很重要的意义了。1.2 数字图像处理技术1) 概念数字图像处理(DigitalImageProcessing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。2) 发展情况20世纪20年代,图像处理首次应用于改善伦敦和纽约之间海底电缆发送的图片质量。到20世纪50年代,数字计算机发展到一定的水平后,数字图像处理才真正引起人们的兴趣。1964年美国喷气推进实验室用计算机对“徘徊者七号”太空船发回的大批月球照片进行处理,收到明显的效果1。20世纪60年代末,数字图像处理具备了比较完整的体系,形成了一门新兴的学科。20世纪70年代,数字图像处理技术得到迅猛的发展,理论和方法进一步完善,应用范围更加广泛。在这一时期,图像处理主要和模式识别及图像理解系统的研究相联系,如文字识别、医学图像处理、遥感图像的处理等。20世纪70年代后期到现在,各个应用领域对数字图像处理提出越来越高的要求,促进了这门学科向更高级的方向发展。特别是在景物理解和计算机视觉(即机器视觉)方面,图像处理已由二维处理发展到三维理解或解释。近年来,随着计算机和其它各有关领域的迅速发展,例如在图像表现、科学计算可视化、多媒体计算技术等方面2的发展,数字图像处理已从一个专门的研究领域变成了科学研究和人机界面中的一种普遍应用的工具。3)研究内容数字图像处理的主要研究内容3,根据其主要的处理流程与处理目标大致可以分为图像信息的描述、图像信息的处理、图像信息的分析、图像处理的编码以及图像信息的显示等几个方面具体包括以下的研究方向:图像数字化图像增强图像几何变换图像恢复图像重建图像隐藏图像变换图像编码图像识别与理解1.3 课题研究的内容1) 确定邮件表面图像数据的采集方案。2) 观察邮件表面图像的特点,研究图像的预处理算法,取出图像分析的干扰因素,研究邮件表面码签的图像特点,寻找快速的邮码签定位算法。3) 分析邮政编码的图像特征,研究其在邮码签图像区域中的定位算法。4) 针对印刷体邮政编码的特点结合数字分割与识别算法研究适用于邮政编码识别的分割和识别算法,本文运用神经网络来进行数字识别。5) 编制系统的软件和算法的分析试验软件。2 系统结构概述2.1软件平台概述Microsoft Visual C+,(简称Visual C+、MSVC、VC+或VC)微软公司的C+开发工具,具有集成开发环境,可提供编辑C语言,C+以及C+/CLI等编程语言。VC+整合了便利的除错工具,特别是整合了微软视窗程式设计(Windows API)、三维动画DirectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C+ 20084。Visual C+以拥有“语法高亮”,IntelliSense(自动编译功能)以及高级除错功能而著称。比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译及建置系统以预编译头文件、最小重建功能及累加连结著称。这些特征明显缩短程式编辑、编译及连结的时间花费,在大型软件计划上尤其显著5。2.2功能模块的划分1) 图像采集 运用摄像头对传输带上的邮件进行拍照,获取初步的图像信息,为后面邮码签图像的提取提供素材。2) 邮码签图像提取图像预处理模块通过分析由图像采集模块提供的图像原始信息,寻找图像数据中的有用信息,剔除图像数据中的无用信息。然后通过边沿提取、几何特征分析,获得邮签码的位置信息、倾斜角度,并对邮签码图像进行比例缩放、旋转和邮政编码定位、提取。3) 邮政编码识别 基于BP神经网络设计程序,通过设计的软件对提取出的邮码签图像的数字进行最后的识别。3 图像的采集本系统主要的图像采集参数有:摄像头分辨率、采样频率、物距等。3.1 分辨率的选择为达到文字识别的效果,每个字符至少有810点阵。而我国邮码签上通常使用的最小字体是5号,大小为23mm,所以只要达到102dpi的分辨率就能满足要求,但在图像处理过程中,必然会发生信息损失,因此要求采用较高分辨率进行补偿。所以一般的摄像头只要比以上分辨率稍大就可以。现在市场上一般的摄像头是130万像素,所以大多都是符合本系统的。3.2 采样频率的设置对邮件可以进行定时拍照,每间隔0.1s拍一次,即采样频率为10Hz。3.3 物距的选择由于采样频率为10Hz,故可以在传送速度为1m/s的传送带上间距0.1m或者0.1m的整数倍进行物体的摆放,这样就刚好可以使摄像头每次刚好拍到邮件表面的邮码签。4 邮件上邮码签图像的提取4.1图像数据的抽样 1)由于从图像采集卡中获取的一幅图像的数据量相当大(典型值为25MB),再加上系统的高实时性要求,所以,通常的预处理工作比如低通滤波、边沿增强、灰度均衡等等算法的运算量都是非常巨大的。举一个简单的例子:如平滑滤波,它的作法是对于任一像素,将其及其周围的8个像素(共9个像素)构成的灰度矩阵进行模板运算。模板运算在图像处理中经常要用到,可以看出,它是一项非常耗时的运算。以模板为例,每个像素完成一次模板操作要用9个乘法,8个加法,1个除法。对于一幅 (宽度高度)的图像,就是9n2个乘法,8n2个加法和n2个除法,算法复杂度为n2的函数,这对于25MB的大图像来说,运算量是非常巨大的,根本不可能实时完成。即使设法将2维模板运算转换成1维模板运算,虽然可显著提高运算的速度,然而依然是不适合大图像的实时处理的。因此,为了解决上述问题,必须对图像数据进行抽样,减少图像像素点6。关于图像抽样的算法较多,比较常用的是采用金字塔法,又叫多解析(Multiresolution)方法.它是使用同一幅图像的几种不同解析度的拷贝描述方法。用多解析算法可以提供图像细节的抽象描述。多解析技术应用于灰度和二值图像分析,便可以得到所谓的图像金字塔。图像金字塔是一个图像系列。顶层阵列的大小为l:底层阵列是大小为2n2n的整幅图像;中间各层的解析度大小为2k2k,k=l,2,.,n-1。中间层图像是用一种自底向上的方法建立的。第k层的像素fk(i,j),由第k+l层的四个相邻像素得到7: (4-1)这里,g为一个映射函数。它可以是取局部均值、局部最大值、局部中值、或者局部形态变换等作为映射关系,这种映射关系也可以理解为对图像的一种抽样重组。在计算机的存储实现上,用四叉数的数据结构描述金字塔的图像数据结构,位于四叉数最末段的节点表达了整幅图像的实际信息,它的上一级节点表达,它的4个子节点的图像抽样信息,最顶端的根节点表达了整幅图像的抽样信息。这样每一个层次都反映整幅图像的特征,位置越低的层表达的信息越详细,位置越高的层表达的信息相对粗略。但它的主要缺陷是占用多余的存储空间来保存树的关系结构。 另外的一种抽样方法是栅条抽样,即沿图像的某一维方向,等距离等宽度地提取栅条图像,构成抽样图像。当抽样方向同线阵CCD的扫描方向一致时,实际上等同于降低采样频率,把图像像沿扫描方向压缩。 考虑到在后续处理中要避进行背景滤除,栅条抽样有利于获得背景的统计信息,因此,本系统采用栅条抽样。 图像采集模块从图像采集卡获取整幅图像数据并存放在系统内存中(数据结构为二维数组),预处理模块从该二维数组中提取n条水平条状数据。假定条高度(即数组的行数)为Ht;,条长度(即数组的列数)为W1,下面以n=7为例,加以说明,如图3-1所示 :Y轴传送带运送方向光带光带栅条光源像邮件像X轴 图4-1 栅条抽样4.2图像背景的滤出如果摄像头采用两个高压钠灯作为辅助光源,而传送带采用的是黑色的橡胶带,所以由钠灯发出的强光经传送带表面反射,会在摄像头的焦平面上形成两个很亮的区域。采用线阵CCD作为光敏器件时,会在最终获得的图像的固定区域沿传送带运动方向会产生两条很亮的光带,而且由于传送带有凸凹不平的表面,所以这两条光带并不均匀。对实际采集图像进行分析发现,当传送带没有载运邮件的时候,摄像头捕捉到的图像已经包含相当多的灰度成分,这对以后的处理是不利的。上述图像实际上是通常所说的“背景”。 在有背景的图像中,光源在传送带上的“背景像”已经严重地影响到了邮件所成的像。因此,在进行图像变换处理之前,必须设法消除背景的影响。通常的背景剔除算法是在已知背景图像的前提下,将实际图像(包含前景图像)同背景图像作“异或”运算8。经过“异或”运算后,光带会被明显削弱,前景图像就会变得更加清晰。4.3邮码签的定位普通的邮码签一般为矩形白纸,包含黑字印刷体汉字(地址信息)和数字(邮政编码),粘贴位置一般在邮件的中央,但也存在其他可能。对于这种情况,定位方法一般是首先确定从整幅图像中找到包含邮件图像的有效区域,缩小对象范围,然后再在这一较小区域中搜寻包含邮码签的区域。由于邮码签特征不够明显(相对于第二种情况而言)及位置的随意性(相对于第一种情况而言),所以给邮码签的发现算法的准确性带来了极大的困难,同时又由于目标图像数据量巨大,又为如何提高算法的速度带来了难题。 考察实际邮件表面的状况,发现在邮件表面,不仅有邮码签,同时还有可能有包装带、图形文字污损、破损等实体的像,这些像都会影响邮码签的定位。因此算法必须能币确区分真正的邮码签区域和伪邮码签区域。为了有效地区分包含邮码签的区域,必须总结出能描述邮码签特征的相关判据。经过对大量包状邮件表面外观的统计和分析,总结出以下判据: 1)邮码签的几何形状为矩形,简称几何形状判据; 2)长宽有一定的范围,简称几何尺寸判据; 3)码签颜色为白色,上有黑色文字,它的灰度值同邮件表面的灰度有较大差异,简称灰度能量判据。 首先先从整幅图像中找到灰度发生变化的不连续区域,例如邮码签、包装带、破损、折叠、阴影、透明胶带等实体的像,然后在这些备选区域中根据上述三个判据,确定要求的邮码签区域。同时具备上述特征的区域,可以认为是邮码签区域。任一判据不满足,均认为不是邮码签区域。例如,邮件表面的包装带,一般为自色,它的像为矩形,但是长宽不符合邮码签的几何尺寸判据条件(几何形状过于细长):邮件表面如果出现大面积的破损,破损处的像的灰度值较低,可通过灰度能量判据排除,同时它的形状也可能不规则,所以,也可用几何形状进行排除;邮件表面粘贴的透明胶带,由于胶带表面反光强烈,因此,它的像灰度值很高,可能超过邮码签的灰度范围,即使恰好在邮码签的灰度范围中,但很可能它的形状(即长宽尺寸)不符合邮码签的条件。通过上述三个判据的判定,一般可找到正确的邮码签区域。如果结果中有多个区域被判定为邮码签区域,即算法的结果不唯一,可分两种情况分别对待:系统要求进行多目标处理和系统要求进行单目标处理。针对前一种情况,由于多个目标具有近似的特征,可为三个判据设定加权因子,计算每一各选区域的权值,然后进行排序,权值较大的认为是要求区域。但是加权因子的值需要根据大量实测数据统计获取,本文暂不作讨论。对于后者,各备选区域差异较大,一般满足三判据的可认定为邮码签区域,如果出现多个结果,为了提高整个系统的识别率,可在后续的邮政编码提取过程中判断这若干个结果哪一个为真。针对多判据综合的方法,必须针对每一判据制定各自的算法。因此,问题归结为矩形区域的发现、矩形几何尺寸的判断、灰度能量集中区域的寻找。然后,通过这三种算法的结果综合出最终结果。由于判据二依赖于判据一的结果,所以可将两者加以合并,得出最终的求解模型,即求解图像中符合尺寸要求的矩形连通域和求解图像中灰度能量集中区域的点集合。4.4 图像灰度分布特征的求解与算法首先引入一个灰度能量的概念:由于像素点的灰度值是一个0255之间的整数值,它代表了该像素点对光源的反射强度。换句话说,就是光线投射在成像焦平面的能量强度,所以某像素点的灰度值可理解为该点的灰度能量,同理,推广到区域,可以用某一区域的灰度均值反映该区域的次度能量。灰度能量法的基本思路是:假定目标区域的灰度值同非目标区域的灰度值有一个较大的差值,通过计算灰度能量集中区域,发现要求目标区域的位置。实际应用中,邮码签一般为灰度值较高的白色,邮件包装袋、箱为灰度值较低的棕色、褐色等,所以对邮件表面图像的灰度进行能量统计,在邮码签的位置将出现一个峰值。这样,搜索邮码签位置的工作归结为求解图像的灰度能量峰值。进行灰度能量的统计所要运用到的计算是求均值,也就是进行大量的加法和少量的除法,计算速度较快。但是由于原始图像的尺寸太大,所以仍有必要进行抽样统计,抽样统计可以在前述的栅条抽样的基础上沿x方向再抽样,形成如图4-2所示的白色小正方形抽样区域,这样就可对每一抽样区域进行灰度能量统计,得出整幅图像的灰度能量分布。很明显,落在图中的倾斜矩形区域中的小正方形区域的灰度能量统计值要明显高于落在黑色背景区域中的小诈方形区域的灰度能量统计值。通过分析整幅图像的厌度能量分向,设定一个阈值范围,落在该域值范田中的小正方形区域,认为有可能是邮码签区域。由于在后续的算法综合中,每一小正方形区域的灰度能量统计值都将作为一个“种子”投入由几何特征法得到的矩形区域表决器中,所以必须保证有足够数量的小正方形区域参与表决”,换言之,必须保证纵向和横向的栅条抽样密度。 图4-2 灰度能量统计法原理 计算方法仍然运用表决器进行,即根据几何特征法得出的若干个备选矩形区域设立同样数量的表决器,然后遍历根据灰度能量法所得出的灰度能量分布值,如果某一坐标位置的灰度能量分布值满足邮码签的灰度阈值范围,同时又落在上述备选区域中,那么就在该区域对应的表决器中投一票(加一)。遍历结束后,就可得到反映每一备选区域是否是邮码签区域的一个表决值,显然,表决值越大,相对于二表决器的区域是邮码签的可能性就越大。通过设定一个阂值,可得到邮码签区域判定结果。算法综合流程如图4-4所示。4.5 邮政编码区域的提取经过预处理模块的处理,从采集卡获取的整幅图像信息已减少为邮码签的有效图像信息,如图4-3所示。 图4-3 邮码签图像信息由于邮政编码一定位于邮码签的左上角,所以一种方法是直接从邮码签信息中提取左上角矩形区域,如图4-5中虚线所示。这种方法比较简单易行,然而,它带来的弊病是显而易见的,就是如果邮政编码的区域不在理想位置,就会发生误提取,进而严重影响后续识别工作。另外一种方法的思路是采用灰度投影加分块矩阵的方法。这种方法把图像分割成若干个小的区域,然后针对每一小区域进行灰度投影。开始灰度能量统计结果取第i个灰度可疑点的坐标位置( )点( )落在第i个矩形内吗?第j个表决器j加1j=j+1j<MAX j?i=i+1i<MAX i?找出值最大的表决器,其对应的矩形即为可能的邮码签区域图4-4 算法流程图 图4-5 邮政编码提取示意图如图4-6所示的邮码签分别沿x、y方向作灰度投影,得到图4-6-c、图4-6-b,显然,在邮政编码的位置上出现了灰度谷底,通过次度阈值分割,就可比较准确地获得邮政编码的坐标位置。如果考虑到邮码签表面的大块污染,例如邮码签由可能加盖有邮戳,因此会产生干扰,这样就会得出错误的结果。解决的方法是对图4-2进行分块处理,然后对每一分割出的小块进行灰度投影,然后再将结果根据邮政编码图像的特征加以组合,就可排除邮戳等的干扰。根据对多个实验样本的实验优选,分块的尺寸大小为88mm时,效果较好。分块从图像的左上角外始,沿水平方向进行,遇到边界换行,不足88mm的边角区域舍弃。这样,若干小块中就会包含文本区,通过分析这些小块在整个分块矩阵中的位置,就得到文本行的区域范围9。 图4-6 邮政编码行的灰度投影曲线图5 数字识别系统的设计对于提取出的拥有邮政编码的区域进行识别实际上就是对图像中的印刷体数字智能识别。系统在实现的过程当中,先分解成两个大块,就是图像预处理模块和数字识别模块。其中图像像预处理块在对图像进行了一系列变换后把最后提取到的数字字符提交给数字识别模块,然后进行识别并给处结果。在这里用到了很多先进的图像预处理技术及神经网络技术。 5.1系统流程图本系统总的流程结构如图5-1所示。图5-1 系统总流程图 其中图像预处理的流程如图5-2 所示。图5-2 图像预处理流程图 神经网络数字识别的具体流程如图5-3 所示。图5-3 神经网络数字识别流程图5.2程序实现整个系统的程序实现分为图像预处理和神经网络识别两大模块。在图像预处理的过程当中,我们采用了许多图像处理的技术,最后把每个数字的特征提取出来。这些技术包括图像数据读取、图像的灰度化、二值化、图像的调整、离散噪声点的去除、字符的切分、图像的缩放、字符的细化、字符的平滑、图像的求梯度等图像处理技术,最后是数字字符特征的提取。其结果再利用神经网络(这里我们选用BP网络)进行字符识别。利用神经网络进行字符识别的过程主要包括网络的训练、数据的读取、字符的判定、结果的输出。5.2.1图像的预处理刚刚读入的图片如图5-4所示。图5-4初始图片 (1)256色位图灰度化由于256色的位图的调色板内容比较复杂,使得图像处理的许多算法都没有办法展开,因此有必要对它进行灰度处理。所谓灰度图像就是图像的每一个象素的R、G、B分量的值是相等的。彩色图像的每个象素的R、G、B值是不相同的,所以显示出红绿蓝等各种颜色。灰度图像没有这些颜色差异,有的只是亮度上的不同。灰度值大的象素点比较亮(象素值最大为255,为白色),反之比较暗(象素值最小为0,为黑色)。图像灰度化有各种不同的算法,比较直接的一种就是给象素的rgb 值各自一个加权系数,然后求和;同时还要对调色板表项进行相应的处理。要注意的是,最后得到的结果一定要归一到0255 之内。因为这是每个字节表示图像数据的极限。经过灰度处理后的256色位图如图5-5所示。图5-5 经过灰度处理的文件(2)灰度图像二值化在进行了灰度化处理之后,图像中的每个象素只有一个值,那就是象素的灰度值。它的大小决定了象素的亮暗程度。为了更加便利的开展下面的图像处理操作,还需要对已经得到的灰度图像做一个二值化处理。图像的二值化就是把图像中的象素根据一定的标准分化成两种颜色。在系统中是根据象素的灰度值处理成黑白两种颜色。和灰度化相似的,图像的二值化也有很多成熟的算法。它可以采用自适应阀值法,也可以采用给定阀值法。系统中采用的是给定阀值的方法。因为考虑到所要进行处理的图像大多是从印刷出版物上扫描得来的底色大多为白色所以我们将这个阈值固定为220,读者也可以根据实际的情况来自己进行阈值的设定。执行结果如图5-6所示图5-6 二值化后的图片(3)图像的梯度锐化由于需要处理的图像大多有印刷出版物上扫描而来所以在很多的情况下字体模糊,对识别造成了一定的困难,所以有时我们要对图像进行锐化处理使模糊的图像变得清晰起来,同时可以对噪声起到一定的去除作用。图像锐化的方法有很多,有一种是微分法 ,有一种是高通滤波法,我们在这里所采用的梯度锐化的方法就属于微分法的一种。在这里我们采用Roberts梯度算子对图像进行锐化。定义如下 :设原始图像上的点为。定义在处的梯度矢量为: (5-1)设一个判定阈值为,变化后的图像定义为: (5-2)通过公式可以看出梯度锐化可以让模糊的边缘变得清楚 同时选择合适的阈值还可以减弱和消除一些细小的噪声。本程序中给出了梯度锐化的完整代码,也可以根据实际需求、读入图片的质量来选择决定是否使用梯度锐化。事实证明,梯度锐化具备一定的去噪声能力,但同时会对字符的边缘有所损伤。所以建议在图片中字符较为细小的时候不要使用梯度锐化。经过梯度锐化处理后的图片如图5-7所示。图5-7 梯度锐化后的图像从处理的结果也可以看出图像的边缘变得清晰而且少了很多细小的杂点,但是梯度锐化有其自身的缺陷。当处理的图像边缘很细的时候可能造成边缘信息的损失(如图5-8所示),所以务必注意,要根据实际情况酌情处理。图5-8 对边缘较细的图像进行梯队锐化的结果(4)去除离散的杂点噪声图像可能在扫描或者传输过程中夹带了噪声,去噪声是图像处理中常用的手法。通常去噪声用滤波的方法,比如中值滤波、均值滤波。但是那样的算法不适合用在处理字符这样目标狭长的图像中,因为在滤波的过程中很有可能会去掉字符本身的象素。系统采用的是去除杂点的方法来进行去噪声处理的。具体算法如下:扫描整个图像,当发现一个黑色点的时候,就考察和该黑色点间接或者直接相连接的黑色点的个数有多少,如果大于一定的值,那就说明该点不是离散点,否则就是离散点,把它去掉。在考察相连的黑色点的时候用的是递归的方法。执行后的结果如图5-9所示。图 5-9 去除离散杂点噪声后的图像(5)整体倾斜度调整因为读进来的图像可能存在倾斜,所以必须对它进行调整,使得字符都处于同一水平位置,那样即便利字符的分割也可以提高字符识别的准确率。调整的算法主要是根据图像上左右两边的黑色象素的平均高度来的。一般来说,众多的字符组成的图像它的左右两边的字符象素的高度应该是处于水平位置附近的,如果两边字符象素的平均位置有比较大的起落,那就说明图像存在倾斜,需要进行调整。具体来说,首先要分别计算图像左半边和右半边的象素的平均高度,然后求的斜率,根据斜率重新组织图像,里面包含了一个从新图像到旧图像的象素的映射。如果新图像中的象素映射到旧图像中时超出了旧图像的范围,则把新图像中的该象素置白色。经过倾斜度调整后的图像如图5-10所示。图5-10 经过倾斜度调整后的图像(6)字符分割系统在读进来的图像中一般会含有多个数字,识别的时候只能根据每个字符的特征来进行判断,所以还要进行字符分割的工作。这一步工作就是把图像中的字符独立的分割出来。具体的算法如下:第一步,先自下向上对图像进行逐行扫描直至遇到第一个黑色的象素点。记录下来。然后再由上向下对图像进行逐行扫描直至找到第一个黑色象素,这样就找到图像大致的高度范围。第二步,在这个高度范围之内在自左向右逐列进行扫描,遇到第一个黑色象素时认为是字符分割的起始位置,然后继续扫描,直至遇到有一列中没有黑色象素,则认为这个字符分割结束,然后继续扫描,按照上述的方法一直扫描直至图像的最右端。这样就得到了每个字符的比较精确宽度范围。第三步,在已知的每个字符比较精确的宽度范围内,按照第一步的方法,分别进行自上而下和自下而上的逐行扫描来获取每个字符精确的高度范围。进行字符分割后并画上边框的图像如图5-11所示。图5-11 经过字符分割后并画上边框的图像(7)图像的归一化处理因为扫描进来的图像中字符大小存在较大的差异,而相对来说,统一尺寸的字符识别的标准性更强,准确率自然也更高,标准化图像就是要把原来各不相同的字符统一到同一尺寸,在系统实现中是统一到同一高度,然后根据高度来调整字符的宽度。具体算法如下:先得到原来字符的高度,跟系统要求的高度做比较,得出要变换的系数,然后根据得到的系数求得变换后应有得宽度。再得到宽度高度之后,把新图像里面得点按照插值得方法映射到原图像中。图像标准归一化的高度和宽度信息可以通过一个对话框由读者自行输入,但是为了以后特征提取的时候处理方便,进行BP网络训练的时候缩短训练的时间,标准化的宽度和高度不要设置的过大。本系统中去归一化宽度为20,高度为40。归一化执行效果如图5-12所示。图5-12 对图像进行归一化处理(8)图像的紧缩重排经过标准归一化处理后的各个字符在图像中的位置不定,要它进行特征提取时处理起来比较麻烦,所以要把归一化后的字符进行紧缩重排,以形成新的位图句柄,以方便下一步的特征提取的操作。程序执行效果如图5-13所示。图 5-13 图像紧缩重排后的效果至此已经基本完成图像的预处理。此外,还可以采用些别的方法以更好的达到预处理的效果,比如可以对字符进行光滑处理等。5.2.2用神网络进行字符识别 (1)BP神经网络简介 图5-14 神经元 神经网络简介:人工神经网络(Artificial Neural Network,ANN),也称为神经网络(Neural Networks,NN)。即从生物学神经系统的信号传递而抽象发展而成的一门学科。在神经网络中,最基本的单元就是神经元,如图5-14。神经元由三部分组成:树突、细胞体和轴突。树突是树状的神经纤维接受网络,它将电信号传递给细胞体,细胞体对这些输入信号进行整合并进行阀值处理。轴突是单根长纤维,它把细胞体的输出信号导向其他的神经元。神经元的排列拓扑结构和突触的连接强度确立了神经网络的功能。形象的说,神经网络是由大量处理单元(神经元 Neurons)广泛连接而成的网络,是对人脑的抽象、简化和模拟,反映人脑的基本特性。它能够通过学习过程从外部环境中获取知识,并且它内部的很多的神经元可以用来存储这些已经学到的知识10。图5-15 神经元抽象成的数学模型如图5-15所示,神经元的输入是信号P,经过一个累加器累加后的信号送入一个激活函数f,从而得到这个神经元的输出a。这个神经元的输出a同时又可以作为下一个或多个神经元的输入,从而将神经信号成网络分散状的传递出去。一个神经元可以接受多个输入,所以把神经元表示成为矢量、矩阵形式更容易去处理分析实际问题。以上是对一个单层神经网络的描述。一般就实际情况而言,多层网络用处要广的多,如BP网络。在多层网络中,一般至少有3个层:一个输入层、一个输出层、一个或多个隐层。多层网络可以解决很多单层网络无法解决的问题,比如多层网络可以用来进行非线性分类,可以用来做精度极高的函数逼近,只要有足够多的层和足够多的神经元,这些都可以办到。一个多层网络的输入和输出层的神经元个数是由外部描述定义的。例如如果有4个外部变量作为输入,那网络就要有4个输入。神经网络有好多种,比如径向基网络、BP网络,Hopfield 网络等。本系统采用的是最为广泛运用的BP网络,如图5-16所示。图5-16 多层BP网络示意图神经网络的激励函数。激励函数将输出信号压缩在一个允许的范围内,使其成为有限值,通常神经元输出的范围在【0,1】或者【1,1】的闭区间上。常用的基本激励函数有阈值函数、分段线性函数、Sigmoid 函数。其中Sigmoid 函数也称为s型函数,它是人工神经网络中用的最多的激励函数。S型函数的定义如下11: (5-3)神经网络的反馈调节。在误差信号的反向传播中,网络不断的修正各个节点的权值。设有含n个节点的BP网络,采用s型激励函数12。为简单起见,可以假设网络只有一个输出y,任一节点的输出为,并设有N个样本(k = 1,2,N),对某一输入,网络的输出为,节点i的输出为,节点j的输入为13: (5-4)使用平方型误差函数: (5-5)其中为网络之实际输出,定义如下: