如何以DSP为核心设计纸币识别系统?
扫描二维码
随时随地手机看文章
纸币清分是银行的一项重要业务。 目前,国内很多银行使用的纸币清分机都是由国外进口的,价格昂贵。国产纸币清分机很少,而且功能都很有限,很难满足高速实时性的要求,尤其是能够用图像处理的方法来识别纸币的纸币清分机还刚刚起步。
为此,设计了一种纸币识别系统。该系统以DSP为核心处理器,结合图像传感器CCD和复杂可编程逻辑器件CPLD,并辅以高性能的模/数转换器AD9200,进行纸币图像的采集、处理。该系统主要针对人民币第四版和第五版的5元、10元、20元、50元、100元九种纸币进行识别,利用数字图像处理技术和改进的自组织映射神经网络(SOFM)提取纸币图像的长度、宽度、方向块特征,区分纸币的面值、正反面与正反向。最终完成的系统能达到较高的识别速度和识别率。
1 硬件设计
识别系统的总体硬件结构如图1所示。人民币的图像首先通过传感器CCD扫描后得到光电转换信号,并经过AMP的三倍放大;然后将放大的模拟信号经过模数转换器AD9200转换成为标准的数字信号,送入到CPLD缓存;最后通过EDMA通道输入到DSP的RAM中,在DSP中进行图像的处理和识别。整个系统的信号逻辑时序由CPLD来控制。 另外,还有一些辅助环节,如纸币输入输出装置、用户检测装置、复位装置等。
图1 识别系统的总体硬件结构框图
纸币图像的采集由CCD与A/D转换器组成。本系统采用线阵型CCD[1],它的采样速度较快、电路设计比较简单、体积小、时序也易于实现。根据系统对采集速度的要求,设置横向分辨率为4像素/毫米,共采集800个像素点;纵向的分辨率为1像素 /毫米。每张图像的高度不超过76毫米,两张纸币之间还有一定的间隔,实际采集100列。这样,每张图像的像素为800&TImes;100。纸币的进入与离开的判断使用红外线光电管检测。
人民币的图像经过采集和A/D转换后,暂存入CPLD芯片XC95144中,然后由DSP通过EDMA通道直接传输。整个采集和存储过程的时序信号是由XC95144产生的。CPLD需要编程实现的内部结构如图2所示。其中,ADCLK信号是发送给AD9200的时钟信号,SP、CP信号传送给CCD的移位寄存器作为启动脉冲和采样时钟脉冲。
图像的识别部分由数字信号处理器DSP[2]及相应的外围电路构成,其结构如图3所示。数字信号处理器DSP选用TI公司生产的TMS320C6711GFN150芯片,主频为150MHz。扫描采集到的纸币图像数据Data经EDMA存入静态存储器SRAM中,DSP对已存入SRAM的数据作一系列的识别算法运算,并将最终结果通过DSP的McBSP1口输出。
图2 CPLD的内部结构图
图3 DSP及相应的外围电路的结构图
2识别方法
2.1图像的定位与面值的识别
定位图像包括两个方面:图像边界及中心点的确定和图像倾斜度的校正。求取图像边界中心点的方法,采用自整个扫描的图像边界向内选取,确定纸币图像边界上的少数点,再对这些点进行直线拟合,从而确定纸币的四个边界。四个边界中心点的连线的交点即为图像的中心点。纸币图像的边界与扫描采集的图像的边界的夹角就是倾斜角。规定倾斜角超过17°地纸币,作为不可识别类。
确定了纸币图像的边界、中心点和倾斜角后,纸币的长度和宽度就能准确地计算出来。对于长宽差异小的人民币(比如4版5元与5版50元),则提取图像的区域特征加以区分比较,判别面值。
2.2 图像面向的识别
纸币正反面与正反向的识别在以往的纸币清分机系统中采用人工提取特征的识别方法,试验周期长,不具有适应性与系统性。本文采用自组织特征映射神经网络的方法,自动寻找纸币图像的特征分布,加以识别。
本系统的SOFM网络输入层为72个节点,输出层为4个节点。输入的是纸币图像的72维方向块特征数据向量,计算输出的是正面正向、正面倒向、反面正向、反面倒向四种面向标志。其中,获得方向块特征向量数据的方法是将纸币图像划分为72个块,对每个块按步长为4个像素取值作灰度平均,将灰度均值作为方向块的特征数据。本系统SOFM网络具体算法如下:
a. 对所有输入节点到输出节点的连接权值赋以初始化值,初始化学习系数α=0.5。
b. 对第m类币种网络输入样本数据Xm=[x1,x2,…,x72],m=1,2,…,9。
c. 计算输入Xm与所有输出节点连接权值Wj的距离:
d. 选择具有最小距离的节点j*作为获胜节点:dj*=min{dj}。
e. 调整输出节点j*与输入节点的连接权值和学习系数α:
以DSP为核心的纸币识别系统设计
式中,n为第m类币种样本数据个数。
f. 若第m类币种还有训练样本数据,转到 b;否则,转到g。
g. 若m≥9,训练结束;否则,转入第m+1类币种训练。
本系统是将需要识别的第四版与第五版人民币共九种主币分为九类处理的,所以对于每一类币种网络输出只存在四种面向标志相互竞争。根据这一点,可以改进算法:先将四个输出节点对应好四种面向标志,然后从同一个类纸币样本中选择每个面向的特征数据作为该面向的对应输出节点到输入节点的连接权值的初始值。
3 实验与总结
在实验中,共使用1800张人民币训练识别网络,每一类人民币200张,算上每张人民币的四个面向,可认为每一类纸币的训练样本为800个。另外,每一类人民币取400张做测试,共3600张,可认为测试样本是14400个。其中,表1为实验测试数据(未含不识别类处理)。不识别类主要是由倾斜角超过引起的,在实验中将它重新测试,直至识别出。
表1 实验测试数据
实验结果表明,本系统对纸币面值的识别率达100%,对面向的识别率达99.82%。纸币识别的速率达650张/分,满足了高速实时性。对0.18%的误差率作了研究,发现主要是由纸币的残缺引起的,它使纸币的长宽检测不准,或者破坏了图像的特征方向块分布。今后的工作将着重研究纸币残缺的识别。