基于DSP的纸币号码识别系统
近年来,钱币、特别是纸币被抢劫事件不断发生,严重影响了社会治安,也使银行在经济上受到了严重的损失。如果被抢劫的钱币不能在市场上流通,将从一个方面抑制银行抢劫事件的发生。其中一种解决方案是记录每一捆纸币的号码,将被抢劫的纸币号码建立一个数据库。在货币流通市场提供一种纸币号码自动识别装置,比如说与点钞机结合,将货币号码识别数据与被抢劫号码数据库比较,一旦有相同号码出现,便可确认目前流通的钱币为被抢劫的钱币,从而限制其流通,同时也有利于抢劫案件的侦破。另外,由于纸币号码的唯一性,通过识别纸币上的号码,可以帮助识别假币。国外有一种验钞打号机,可以对典型的纸币,比如美元、英镑等进行自动识别和号码打印,这种装置的典型识别速度为1张/秒。不过还没有点钞机附带号码自动识别装置的文献报道。
近些年,国内也有一些单位研制开发纸币号码自动识别装置,例如南京航空航天大学开发了一种基于单片机的纸币号码识别系统[3],利用线阵CCD实现纸币图象的采集,利用单片机实现号码的定位与识别。其主要问题是难以提高号码
针对以上情况,本文给出一种基于DSP的纸币号码识别系统,利用面阵CCD摄象机采集纸币号码图象,即每秒采集25幅图象,而目前的点钞机点钞速度为每秒十几张左右,从而可以实现与点钞机的配合使用。该系统由以下几个部分组成:(1)利用Philip公司专业视频解码器SAA7113实现纸币号码图像的数字化;(2)利用TI公司的数字信号处理器TMS320VC5410实现数字纸币号码图像的采集和处理;(3)利用TI公司的异步串行接口芯片TL16C550完成整个系统与PC机之间的通信。
2 硬件设计原理
基于DSP的纸币号码识别系统的工作原理:从面阵CCD摄像头摄取的纸币模拟视频图像,经专业视频解码器转换为数字图像。数字视频信号经图像缓存FIFO存入DSP的数据空间,作为后续图像识别的数据来源。视频解码器同时分离出行场同步信号和象素时钟参考信号,作为图像缓存模块的控制信号。为了保存和记录号码,经识别后的纸币号码数据存储在快速闪烁存储器FLASH中,或根据需要通过异步串口传送给PC机。复杂可编程逻辑器件CPLD在整个系统中起到全局逻辑控制和对采集的纸币图像实现开窗处理的作用。系统的总体结构框图如图1所示。
3 图像采集模块
3.1视频解码芯片SAA7113在系统中的应用
SAA7113是一种高集成度并且支持隔行扫描、多种数据输出格式的视频解码器,内置的I2C界面提供了简单的对芯片内部电路的控制功能。对SAA7113的控制主要包括对输入模拟信号的预处理、色度和亮度的控制,输出数据格式及输出图象同步信号的选择控制等。
在整个系统中对图象的识别处理主要是针对灰度图像进行的,在SAA7113所提供的多种数据输出格式中,RAW格式在8位输出管脚上直接输出与象素时钟相对应的象素灰度值,此种数据格式与其它格式相比对灰度图像的采集将更直接。
SAA7113的输出RTS0和RTS1是多功能复用管脚,通过对子地址寄存器SA12写入不同的控制字,可将两输出管脚配置为行同步、帧同步、奇偶场同步等不同的信号。在本系统中将RTS0设置为行同步信号,RTS1设置为场同步信号,同时SAA7113还输出象素时钟的同步参考信号LLC。
通过I2C总线协议对SAA7113的各个控制寄存器进行设置,使其满足系统要求。由于DSP芯片是处理型的器件,它的控制能力比较弱,通用I/O口比较少,而单片机具有很好的控制功能,因此对SAA7113的初始化工作使用AT89C51单片机来完成。AT89C51单片机内部无硬件I2C总线接口,在此将单片机的P1.0口设置为串行数据线SDA,P1.1设置为串行时钟线SCL,通过软件模拟I2C总线,对视频解码器SAA7113进行初始化,其硬件原理如图2所示。
3.2使用CPLD实现对图像的开窗处理
利用象素时钟LLC2和行同步信号HS实现行截取的VHDL程序:
process(LLC2,HS)
variable temp: std_logic_vector(10 downto 0);
begin
if(LLC2'event and LLC2='1') then
if(HS='1' )? then? temp:=temp+'1';
if(temp>80 and temp<241)
then Href<='1';
else Href<='0';
end if; else Href<='0';
end if; end if;
end process;
从SAA7113输出的数字视频图像为整幅图像,可是对识别有用的图像大小为40x200,为减少图像数据的存储量和处理量。通过调整CCD摄像头与点钞机之间的位置,利用视频解码器的行、场同步信号HS、VS和象素时钟参考信号LLC,使用VHDL语言,对感兴趣的图像区域进行开窗处理。具体做法为:在场信号VS为高的期间,对行信号HS进行计数, 使感兴趣的图像期间的场信号输出为高,在其它区域其场信号为低,这样得到新的场信号VREF。与场截取相类,利用行信号HS和象素时钟LLC2,得到新的行信号HREF。这样通过两个计数器实现了图像的开窗处理。本文给出了对图像进行开窗处理的框图,并给出了行截取的VHLD程序,对列的截取VHDL程序与行截取相类似。
3.3利用DSP实现图像的采集
SAA7113上电初始化之后将一直处于工作状态,其象素时钟参考信号LLC为27M
由于FIFO是没有片选的,对FIFO控制主要是对其读写信号有效的控制。FIFO写有效经CPLD图像截取后的行场同步信号以及象素时钟信号来控制。在FIFO写完一场图像数据之后,利用半满信号作为DSP的中断信号,通过中断服务子程序将图像数据存入DSP的数据空间作为识别处理的数据来源。对FIFO的读控制通过将其映射到DSP的I/O空间来实现,为了与其它器件进行区分使用地址线A15和A14参与译码。当FIFO的读信号为高时,数据总线为高阻状态,从而实现总线隔离。
4 DSP存储空间的设计
DSP芯片由于其改进的哈佛结构,处理速度快,特殊的DSP指令和快速地实现各种数字信号处理算法的特点,广泛地应用于各种图像处理系统中。在本系统选用TMS320VC5410作为中央处理器,该芯片的读写周期为10ns,具有丰富的片上资源[2]。
根据纸币号码图像大小和号码识别算法的要求,本系统在DSP外扩了一片64Kx16的RAM,其中0x0000—0x3fff的存储区映射到DSP的程序空间,0x8000—0xffff的存储区映射到DSP的数据空间。同时外扩了一片256Kx16的FLASH芯片SST39VF400A,根据DSP系统程序加载的特点,将FLASH地址为0x8000—0xffff的存储区在程序下载的过程中映射到DSP的数据空间,在程序加载的过程中映射到DSP的程序空间,其空间的区分通过DSP的通用I/O口XF来进行控制。FLASH的地址为0x0000—0x7fff和0x10000—0x1ffff和0x20000—0x2ffff的存储区映射到DSP的程序空间,作为识别的号码结果的记录存储而用。
5 利用TL16C550实现与PC机之间的通信
在图像采集调试及对号码的算法调试中,为了检验图像效果,需将图像在PC机中呈现出来。由于TMS320VC5410的串口是同步串行口,而与PC机通信却是异步串行收发,本文采用了异步串行收发器TL16C550来实现DSP与PC机之间的通信。TL16C550是TI公司生产的一种具有异步串行通信功能的大规模集成电路,通过对寄存器选择输入端A0、A1、A2的不同配置来实现对该器件的控制。
在本系统中将其映射到DSP的I/O空间0x8000的地址,将DSP的地址线A2、A1、A0与550的寄存器选择控制引脚A2、A1、A0相连,即通过对DSP的I/O空间地址为0x8000-0x8007的空间进行寄存器的访问。在TL16C550中接收和发送使用的是同一个中断信号INTRPT,对数据的接收和发送通过使能不同的中断,通过中断方式实现系统与PC机之间的通信。
6系统的软件设计
采用手工编写的汇编语言程序虽然具有执行速度快的优点,但用汇编语言编写程序特别是识别算法的程序将是比较费时费力的[4]。为了提高程序开发的效率,采用TMS320C54x的C语言进行软件开发[5]。整个系统的软件流程图如图6所示:
目前字符识别的算法很多,有背景特征点法,模板匹配法,结构特征分析判断法,神经网络识别算法等。结构特征分析判断法从字符的结构本身出发,检测号码的结构特征,具有快速分类的特点,根据系统速度的要求,本文对采集到的号码图像就采用了此种识别算法来完成纸币号码的识别。
7结束语
本系统通过使用TI公司的数字信号处理器实现纸币号码的采集,使用Altera公司的复杂可编程逻辑器件CPLD实现对图像的截取,图像采集效果非常好。该系统除有通用图像处理系统的功能外,特别适合动态图像的处理,具有极高的实时性。
参考文献:
1. TMS320C54X DSP Reference Set, Volume 1:CPU and Peripherals,Texas Instruments, ,1999
2. TMS320VC5410 Data book, Texas Instruments, ,2000
3. 刘建业等,纸币号码读入识别系统的单片机实现,工业控制计
4. 张庆峰,基于DSP的纸币号码识别系统的研究,哈尔滨工业大学硕士学位论文,2003
5. 刘益成等,TMS320C54X DSP应用程序设计与开发,北京航空航天大学出版社,2002
6. 张勇等,C/C++语言硬件程序设计,西安电子科技大学出版社,2003
评论