前言:想要写出一篇引人入胜的文章?我们特意为您整理了计算机仿真纸币识别体系分析范文,希望能给你带来灵感和参考,敬请阅读。
一、引言
自2002年1月1日起正式发行的欧元,目前已成为欧元区3亿居民唯一法定的流通货币。随着我国金融业的日益发展和成熟,欧元在我国流通呈上升趋势,但在业务中如何鉴别欧元假币,是令银行及各用户感到头痛的一个问题。所以,开发一款新型的具有优良检伪性能和良好性介比的欧元鉴别仪,为用户提供方便、准确、实用的检测设备将会有很大的应用市场和前景。我们将要开发的鉴别仪的研制主要分为两个部分:纸币图像的读人识别和纸币的真伪鉴别。本文主要针对图像读人识别这个模块进行研究。在图像处理和识别理论的指导下,本文详细介绍了本课题图像识别预处理所采用的方法,探讨了如何用软件进行仿真,实验中我们用扫描仪扫描各个面值的欧元纸币作为研究对象,按图像处理和识别的步骤在C++Builder6.0环境下进行仿真。本文按照研究的过程和识别的流程,分别从版面分析、处理区域的确定、图像的平滑化、图像的二值化、字符分割等方面对图像识别预处理作了详细的描述。
二、仿真
1.版面分析
版面分析是实用识别软件不可缺少的组成部分,是识别的预处理技术之一,它是利用图像处理、人工智能等技术完成印刷品图像文件中文字域的分检工作。版面分析技术就是利用计算机自动地对印刷版面的图像数据进行处理和分析,标识出版面上的文字、图像、图形及表格区域的位置、属性和逻辑关系,以便识别器正确地操作到文字域进行识别。因此,版面分析是字符识别过程中一个非常关键的步骤,它为后面的字符识别提供了必要的原始材料信息,版面分析质量的好坏在很大程序上决定了字符识别率的高低。本课题中,相对于普通文档的版面,钱币的版面有很大的特殊性。首先,从信息分布上看,钱币的面值信息往往在一定位置上分布,从而可将币面分为一定的功能块,由于各功能块分布具有规律性,要进行处理的币面数值—币值,一般位于扫描图像的左下角区域。对于欧元的版面分析,完全可以借鉴以前的各种成熟算法,在本文中就利用字块之间的空白信息,对钱币进行版面分析。当字符串分成若干矩形区域后,可再对其中的信息进行处理。
2.处理区域的确定
分析各类面值的欧元钱币,币面上的币值信息在图像上的相对位置是稳定的。而且,在扫描时输人的图像一般是,钱币左侧的一个窄矩形,利用这些特点,可以在输入图像的左下方设定一个固定大小的处理区域,即为实际处理区域,在这个区域里,可以把所有的图片的币值字码框在里面。具体到本程序,取500欧元的币值区域125x88为标准区域,当窄矩形的右边和底端小于500欧元的边界时,相应地减小实际处理区域的大小,这样才可以保证处理区域在图像内。这样减小了后续处理的信息量,加快了处理的速度,便于后面更好地处理和识别。
3.图像平滑
图像中总是包含着各种各样的噪声,例如来自于纸币本身的被污染,来自于CCD的光子噪声,读出噪声等等,所以在从图像提取各种特征之前,有必要先除去这样的噪声。通常噪声产生的机理往往是未知的,而且有时即使知道了产生的机理,也不能对此有效地进行数学上的模型化。在这样的场合,可采用根据噪声所具有的一般性质进行噪声消除的平滑化(smoothing)的方法。图像平滑处理的方法主要有空间域法和频域法两大类。具体到实际处理过程,在空间域内可以用邻域平均来减少噪声;在频率域,由于噪声频谱通常多在高频段,所以多用各种低通滤波的方法来减少噪声,下面分别介绍两种方法。(l)中值滤波中值滤波是一种非线性的信号处理方法,在实际运算过程中不需要图像的统计特征,运用较为方便。中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各点灰度值的中值来替代指定点(一般为窗口中心点)的灰度值。对于偶数个元素,中值则是指排序后中间两个元素灰度值的平均值。中值滤波在一定条件下可以克服图像细节模糊,而且对滤除脉冲于扰和图像扫描噪声最为有效,得到较好的视觉效果。本文取输人图像点的3x3邻域,采用冒泡法,将9个灰度值按从小到大的顺序排列,取其排序后位于中间的像素值赋予中心像素,最后备份图像,准备显示。(2)低通滤波低通滤波是在频域上对图像进行平滑处理,其思路是保留图像空间频率的低频部分,减少图像的高频部分,这样一来可以降低图像中的视觉噪声,更易识别图像中的低频成份。低通滤波与中值滤波的思路不同。本文中低通滤波是通过卷积来实现。卷积可以简单地看成是加权求和的过程。卷积时使用的权用一个很小的矩阵来表示,矩阵与使用的区域大小相同,该权矩阵叫做卷积核。区域中的每一个像素分别与卷积核中的每一个元素相乘,所得乘积之和就为区域中心像素的新值。卷积核中各元素叫做卷积系数,卷积核中卷积系数的大小、方向及排列次序决定了卷积的图像处理效果。川针对本课题的具体情况,本文取的是3x3的正方形邻域。即取像素的周围9个像素的灰度平均值作为该像素的输出灰度值。为了尽量抑制图像中出现的模糊,本文在加权矩阵中心赋予较大的权重。在卷积的过程中,本文遇到了图像的边界问题。当在图像上逐个移动卷积核时,当卷积核移到图像的边界时,在原图像上就不能完整找到与卷积核中卷积系数相对应的9个图像像素,本文的解决方法是忽略图像边界区域。经实验证明,该方法是行之有效的。
4.二值化
二值化是预处理中非常重要的一步。本文在比较了多种图像二值化方法后,选择了使用性较广泛的基于灰度的数学期望的方法。基于灰度的数学期望的方法:通常情况下,图像的阑值被设置在灰度直方图的既明显又深的波谷的位置。事实上许多根据人眼主观判断可划分为目标和背景区的图像,其灰度直方图并不具备上述特点,可能的情况是灰度直方图的谷并不十分明显或者存在多个波谷,在这种情况下要得到正确的图像阂值是非常困难的,而实际上存在这样的可能性:虽然属于某一灰度级的象素数占总象素数的比例较小,但其对于二值化的效果却有较大的影响,因此需要对图像的灰度分布情况从整体上进行分析研究,从而确定阂值。分析一下数字图像的特点:在数字图像中每一个象素值均属于一个有限集,该集合即为可能的灰度等级。象素的取值情况不同,也形成了不同的图像。
5.字符串的定位
经过二值化后,现在的图像已基本可以满足我们的分割要求。分别对处理区域进行水平投影和垂直投影,可以求出字符串的位置。这种方法简单、直观、速度快。下面给出字符串定位的算法。本文定义了四个参数:t叩,bottom,left,reght。它们分别记录了定出的定符串位置。水平方向的算法步骤如下:(1)对经过预处理的固定区域进行水平投影;(2)按照固定区域的总行数从上到下的次序开始循环;(3)如果该行的投影值大于一个闽值t,,而下一行的投影值也大于阂值t,,就将该行的行数写人top作标记,跳出循环;(4)如果循环没有结束,跳回(3);(5)同理,从下向上搜索到bottom。(6)找出水平投影最大值的位置,分别向上、下搜索,如果该行的投影值小于闹值吸,则做标记,写人相应的t叩或bottom。由于印刷值字符笔划的水平方向的宽度比垂直方向的小,因此在垂直方向的投影只需要一个阑值即可。垂直方向的算法步骤如下:(l)经过预处理的固定区域进行垂直投影;(2)照固定区域的总列数从左到右的次序开始循环;(3)如果该行的投影值大于一个阑值tl,就将该行的行数写人left作标记,跳出循环;(4)如果循环没有结束,跳回(3);(5)同理,从右到左搜索到right。如果字符串的left、right与事先确定的处理区域的边缘相等,就将字符串的这个边缘向外扩展一个字符宽度,以防处理区域把个别字符事先去掉。
6.实验结果
前面讨论了版面处理和分割区域的字符串定位,下面给出了分步运行结果。其中图2-l是扫描图像经过二值化后的图像;图2一2是图像实际处理区域;图2一3是字符串区域。
7.字符分割
字符分割的任务是把多行或多字符图像中的每个字符从整个图像中切割出来成为单个字符。字符分割的算法很多,通常根据处理对象的不同有许多相应的方法。为了实现更好地分割,有关图像的总体知识和先验信息是很有用的,根据包含在图像中的信息,可以制定相应的判决准则和控制策略,使其完成自动分割,如对多行文本的处理,邮政部门对邮政编码和地址的识别,金融部门对支票签名手写字迹的分割识别等,都是针对具体的不同研究对象而采用不同的算法。传统的字符分割算法可以归纳为以上三类:直接的分割法,基于识别基础上的分割法,自适应分割线聚类法。由于本文处理的对象是相对类型较少、变化较小的钱币数值,所以采用简单的直接分割法。具体就是从定位出的字符串中直接找到每个字符的边界,之后对单个字符进行识别。经过以上的一系列处理后,现在图像基本满足分割要求。由于钱币有其自身的规格要求,各字符间具有一定间距,而这个间隔是我们最先可以想到的分割依据。当对整个字符串区域做竖直投影时,相邻字符间的间隔投影应正好处于波谷的位置。在理想情况时,此波谷值应为零,并且每个字符之间都应该有相应的波谷。利用这个零值的波谷可以很容易得到字符间的间隔,从而将字符串切分为单个字符,进行下一步的识别。本文中所用的算法为:定义两个数组mark〔〕,inteoal〔」,一个参数count。其中mark〔〕记录了通过字符串区域竖直投影得到的上一个字符结束位置,inierval【」记录了从上一个字符结束到下一个字符开始的间隔,而count则对mark〔〕和interval〔〕数组中写人的数字进行计数。考虑到钱币上的号码最多不过4个,就将数组的大小定义为4,算法步骤如下:(l)定义大小为4的两个零数组mark〔],interval仁];(2)对经过预处理的字符串进行竖直投影;(3)按照字符串图像的总列数开始循环;(4)如果该列的投影值大于一个阂值t,而下一列投影值小于t,则将下一列的值写人mark「],同时对coimt加1,表示写人了新的间隔标记;如果该列的投影值小于t,而下一列的投影值也小于t,则对interval〔eount」加1,此时inteoal〔〕数组中记录的字符间隔长度增加;(5)如果循环没有结束,跳回(4)。
三、结束语
我们已经做完了字符识别前的预处理工作,并得到了单个字符。下面就可以进一步对这些单个字符进行分析,以得到最终的识别结果。