基于FPGA高速字符识别的算法分析与应用
2011-05-10刘小园
刘小园
(罗定职业技术学院,罗定 527200)
0 引言
数字图像处理技术发展迅速,应用于各个行业和领域,已成为当前研究的热点课题。数字图像处理方法的研究源于两个主要应用领域:其一是为了便于人们分析而对图像信息进行改进;其二是为使机器自动理解而对图像数据进行存储、传输及显示。人们的研究热点主要在于对算法处理方便,由于数字图像的海量信息和复杂算法实现时的反复运算,对于单线程的CPU来说要付出昂贵的代价。而FPGA的灵活性和强大的并行处理能力能以较小的硬件开销实现图像的处理过程。人们已在近期内开展这方面的研究,文献[1]讨论了用FPGA实现快速中值滤波算法,分析利用Sobel算子和系统级并行流水线进行图像边缘检测硬件电路设计的优点和可行性。文献[2]应用提高程序效率、实现快速运算的一种方法,并设计了一个利用中值滤波进行图像预处理的系统,之后进行了仿真和实验验证。所见研究都集中于图像预处理方面,而在图像最终识别方面研究甚少。
1 图像采集
本文以实际项目钞票流转智能监控系统为依托,利用CIS(接触式图像传感器)获取钞票、支票和转账单的图像信息,由FPGA和ARM组成了实时图像处理识别系统,利用FPGA构建了各种噪声去除、图像增强、图像预处理、模板匹配等图像硬件处理器,实现对26个英文字母和10个阿拉伯数字的实时识别。在匹配算法的基础上,利用FPGA大规模的布尔代数并行计算特性,实现了识别的时钟周期级别的识别速度。在大幅度降低了硬件成本的同时大幅度提高了识别的速度。由于钞票流转智能监控系统特殊的工作要求,图像采集是由高速CIS来完成的。CIS采集与其它图像传感器不同,它成像物距几乎为零,按照实物与图像1:1的比例来完成的,所以采集到的字符图像大小缩放和形变非常小,为后期的识别减少了大量的图形校正工作。在实验过程中加入定位装置以后,经过几千次的采集实验,均未出现字符图像较大形变的现象。
2 图像降噪
中值滤波既能消除图像中的噪声,而且还能较好地保持图像的边缘。因此,本系统采用中值滤波来降噪。中值滤波的基本原理是把数字图像中一点的值用该点的一个邻域(即滤波窗口)中各点值的中值代替。所以,在实际的中值滤波设计中,主要的工作就是确定邻域形状及大小,选择合理的方法找出中值即可。根据实际处理速度、处理效果和器件资源要求,本文选用的是3×3邻域窗口。传统的中值滤波算法,是使用冒泡法对滤波窗口内像素值排序找出中值来实现的,需经过12级的比较排序找出中值,也就是说,至少要经过12个时钟周期的延时。本文所使用的排序方法对传统方法进行了改进[3],它基于三输入排序单元(每个三输入单元又是由若干二输入单元构成)。其指导思想并不是对整个邻域窗口内所有的像素值进行排序,而是直接找出其中的最大值、最小值和中间值,并不管其他像素值的排列顺序。排序过程如1图所示。
图1 排序过程图
这种方法比前一种方法减少了逻辑资源的占用,却和前一种方法一样能找出中值。本设计模块共进行了三级排序操作,每一级采用了流水线缓存技术,使得每一组3×3邻域窗口内的输入像素值在每一时钟节拍都得到处理,保证了模块的处理频率。
3 图像增强
锐化处理主要是突出图像中的细节或者增强被模糊了的细节,这些模糊是图像采集时不可避免的。基于微分的细节锐化滤波器是应用很广而又相对容易实现的锐化滤波器,其中二阶微分处理对细节有较强的响应,对线的响应阶梯性强,非常适合字符识别图像的锐化处理。拉普拉斯算子是一种各向同性二阶微分滤波器,其响应与图像的突变方向无关[4]。二元图像函数f(x, y)的拉普拉斯变换定义为:
在x轴和y轴方向上的离散形式可表示为:2f=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)
如以3×3掩模为基础(原图如图2所示),将对角线上的项也加以考虑,其锐化效果将更加明显(如图3所示),拉普拉斯的离散形式表达式为:
4 图像识别的预处理
4.1 图像的二值化
图像二值化的关键在于阈值T的选择既门限处理。设图像f(x,y),有笔划的部分的f(x,y)小,白背景部分的f(x,y)大。二值化可以通过设定灰度阈值来完成,即当f(x,y)值比预定阈值大时,看成背景,以0表示;否则看成笔划,以1表示。这样,经过门限处理后,各点重新表示为:
由于人民币号码字符与背量灰度差异较大,所以二值化阈值T的可选择范围较广。取T=158对图3的处理如图4所示。
图4 二值化后
4.2 图像的垂直切分
号码字符的垂直切分,就是从垂直方向上将号码中的字符分离开来。最基本的分割原理基于字符间存在一个垂直投影值接近于0的区域这一特征。因为有两种类型,应先在系统内制定两个切分模板M1,M2,再从标准模板中派生出一系列子模板M'。子模板用于垂直切分位置的匹配。设子模板M'中有k个字符,于是有k+1条切分线。设切分线在垂直投影直方图H上对应的位置分别是:s1,s2,…,s(k+1)。切分线si的切分权重为wi,对应的直方图投影为mi。决策函数f定义为
4.3 水平切分
水平切分就是要确定号码上每个字符的上下边界。当垂直切分完成后,由垂直切分线可以确定某个字符所在的垂直方向的条形区域。把这一区域向水平方向作投影,就能确定字符的大致水平边界。以此计算各个字符的高度并统计相近高度的字符数,从而找到具有最多字符个数的相似组。凡与相似组相近高度的字符区设置为有效。
5 图像识别
5.1 字符规格化处理
字符规一化包括位置和大小两方面。位置处理又分重心和外框处理两种。重心归一化后字符的重心位于图像中心;外框归一化是将字符的外框移到图像的规定位置上。重心计算是全局的,抗干扰能力强,不会造成字形失真,但对一些分布不匀的字符如9、6等失真;边框搜索是局部性的,易受干扰影响,因此可考虑在边框搜索的基础上结合重心处理[5]。大小归一化采用了二值图像快速采样的线性算法,建立坐标映射关系表。原始图像(大小为Col*Row)中(x.y)处的像素点在规一化图像(大小为Size*Size)中对应的坐标(X,Y)有如下关系:
5.2 基于FPGA的匹配矩阵构建
在识别的过程中,本文运用FPGA的异或门来判别实现,从而进一步大幅度地提高了识别的速度。在进行识别之前的切分阶段已经将字符的尺寸统一为高7像素,宽5像素,字符模板的尺寸也按照这样的要求事先设计好。
将字符模板T叠放在待测图S上。比较T和S的内容。若两者一致,则T和S之差为零,可用以下测度来衡量T和S的相似度。
上述匹配过程如果由CPU来完成,对每一个像素点只能串行操作,而且每一个像素点的匹配都需要3-4个总线周期。这样就占用了大量的时间和硬件资源,使系统的成本大幅上升。FPGA的布尔代数运算突出,具有高速并行运算能力,总线带宽几乎不受限制,而且成本很低。如果我们构建一个由异或门组成的矩阵来完成匹配的过程,那么一次匹配就只需要一个时钟周期就可以完成。如果我们构建25个匹配矩阵(人民币实际只用了除V以外的25个大字英文字母),就可以在一个时钟周期内完成一个字符识别的匹配过程。
由图5可见,匹配矩阵的匹配结果直接由35位位加法器完成,CPU只需检测XSD[6..0]的结果就可以得出相似度最高的字母。
图5 加法器
6 结束语
图像识别处理的实时应用越来越多,如人脸识别、高速票据处理等。传统的实时图像处理算法和方法实现的代价太高,而且同样的算法在不同的实现平台上实时性也会有巨大差异。此外,真正实用的实时系统不仅能够满足核心的算法设计要求,而且还适应于不同的应用场合。比如可以扩展系统使之具备信号输入模块、实时控制模块、网络通信模块等等。一个图像识别系统的处理时间,一方面和算法所采用的实现策略有关,另一方面也和系统的架构和硬件性能有关。对于实时图像识别系统的实现,基于计算机CPU体系结构和操作系统不适合实时大量的图像快速处理的要求;而面向算法的高性能DSP处理器的并行结构相对于微机而言开发周期比较长,算法的灵活性也比较差。综合考虑开发成本、灵活性、实时性以及系统的集成度等方面因素,本文采用了ARM+FPGA系统,能很好的满足高速实时图像处理的要求。
[1] 王耀南.计算机图像处理与识别技术[J].2001,6,1.
[2] 胡爱明,周孝宽.车牌图像的快速匹配识别方法[M].计算机工程与应用,2003.
[3] 方翰华,陈新华,沈国新,焦汉明.基于FPGA图像滤波算法硬件化设计[J].电子测量技术,2009,12:68-71.
[4] Rafacel C.Gonzalez,Richard E.Woods Digital Image Processing Second Edition,2007.
[5] 王欣,殷肖川,周翔翔.一种改进的模版匹配识别算法[M].计算机工程与应用,2007.