历史上的今天
今天是:2025年03月24日(星期一)
2018年03月24日 | 如何以DSP为核心设计纸币识别系统?
2018-03-24 来源:电子发烧友
纸币清分是银行的一项重要业务。 目前,国内很多银行使用的纸币清分机都是由国外进口的,价格昂贵。国产纸币清分机很少,而且功能都很有限,很难满足高速实时性的要求,尤其是能够用图像处理的方法来识别纸币的纸币清分机还刚刚起步。
为此,设计了一种纸币识别系统。该系统以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%的误差率作了研究,发现主要是由纸币的残缺引起的,它使纸币的长宽检测不准,或者破坏了图像的特征方向块分布。今后的工作将着重研究纸币残缺的识别。
上一篇:指纹方案的设计
下一篇:德国开发情感识别系统
史海拾趣
|
线路板上的弱电部分的地是通过PCB上的固定螺丝直接连接到设备外壳上,设备外壳连接大地,问题是,当设备的主回路(属强电部分,有开关管)工作时,pcb上弱电部分的某个器件收到干扰。当把pcb上的螺丝拆除,断开pcb的地与机壳的连接,故障解除。求助 ...… 查看全部问答> |
|
技术指标 这基本就是标准了吧 大家不要做个安全间距4mil的哦 没人能生产 当然我只知道这些啊 有不足之处请见谅 1层数1-6层2最大加工面积1000*600mm3最小板厚单 0.25mm —3.0mm 双层 4、6 ...… 查看全部问答> |
|
本来想通过服务器与模块间的相互确认来确定一侦数据是否上传成功,但是如果很多客户端同时上传就会给服务器造成很大压力,我采用的是,在单片机发给模块数据后留一段延时,等待模块自动上发,但是还是存在2个包在一起发了,导致超过的缓冲区,丢了不少数据 ...… 查看全部问答> |
|
evc4+sp4 用evc半年了,一直都是好好的,可最近不知道这么回事,编译连接到模拟器的时候就经常出现“服务器正在运行中 由于另一个程序正在运行中,此操作无法完成......” 有人说是内存的问题,可是看进程管理器PF使用率才400M而 ...… 查看全部问答> |
|
为什么led_d1, led_d2,led_d3 是在led_ctrl[0],led_ctrl[1],led_ctrl[2] 下降沿被触发,为什么不是上升沿被触发。下面是 程序,这是一个利用边缘脉冲检测进行 按键的操作。module lesson9( clk, & ...… 查看全部问答> |
|
大家在“LM4F232\\boards\\ek-lm4f232\\adc_lab”做实验时会不会在程序单步运行到 “GrStringDraw(&sContext,\"ADC Hands On Lab\", -1,1, 5, 0);” 时会进入到 FaultISR B &n ...… 查看全部问答> |
|
提议:免费申请DIY套件----关于建立DIY活动机制的建议 建议网站支持自发的DIY活动,为DIY活动提供必要的元器件等尽可能多的支持。 一、提倡申请DIY套件。凡在网站注册的、具有一定DIY能力的网友均可申请DIY套件。 二、DIY项目以器件应用、创意制作为主 三、网站根据申请人的项目,作全面衡量,决定是 ...… 查看全部问答> |
|
我用ADS+jlink调试Vxworks BSP 如图是运行到romstart函数处,但是显示的是反汇编代码,应该怎样操作才能使此处及之后的源码均显示为c代码? 小弟新手,刚接触Vxworks,请各位赐教啊~ [ 本帖最后由 1013850890 于 2013-12-12 17:10 ...… 查看全部问答> |




