基于FPGA的人民币冠字识别系统

申请号 CN201611165429.1 申请日 2016-12-16 公开(公告)号 CN106652167A 公开(公告)日 2017-05-10
申请人 西安电子科技大学; 发明人 王崇剑; 杨克虎;
摘要 本 发明 公开了一种基于FPGA的人民币冠字识别系统,主要解决 现有技术 集成度低和速度慢的问题,其包括上、下两个图像 传感器 (1)、两路A/D转换器(2)、FPGA单元(3)、两路 驱动器 (4)、SDRAM 存储器 (5)、FPGA外扩的USB 接口 (6)以及FPGA外扩的网络接口(7);FPGA检测到 电机 转动时通过驱动器打开图像传感器的 光源 ,图像传感器输出的模拟图像 信号 经过A/D转换后送给FPGA,FPGA完成对人民币图像的 数据采集 、冠字图像搜索、冠字 图像识别 ,并将识别结果输出给外部设备。本发明使用FPGA单元作为主处理器, 硬件 结构简单,处理速度快,可用于A类点钞机及人民币清分机。
权利要求

1.一种基于FPGA的人民币冠字识别系统,包括:
上、下两个图像传感器(1)、两路A/D转换器(2)、FPGA单元(3)、两路驱动器(4)、SDRAM存储器(5)、FPGA外扩的USB接口(6)以及FPGA外扩的网络接口(7),图像传感器为接触式图像传感器,A/D转换器(2)将图像传感器(1)的模拟信号转为数字信号,驱动器(4)控制图像传感器(1)的光源,其特征在于:
FPGA单元(3)包括:
制模(31):用于控制驱动器(4)的打开或者关闭;
图像采集模块(32):其与A/D转换器相连,用于完成数字图像的采集;
SDRAM接口模块(33):用于实现SDRAM接口控制逻辑,将图像采集模块(32)采集的图像存入SDRAM存储器(5)中,响应冠字图像提取模块(35)给出的读取命令,将人民币图像中的冠字图像从SDRAM中读出,送给冠字识别模块(36)进行冠字识别;
冠字图像搜索模块(34):用于完成对冠字图像区域位置的判断,并通过人民币图像边缘信息计算人民币图像的旋转度;
冠字图像提取模块(35):用于将冠字图像搜索模块得出的图像位置和角度信息转换为SDRAM的地址送给SDRAM接口模块,SDRAM接口模块读取相应地址的冠字图像送给冠字图像识别模块(36);
冠字图像识别模块(36):用于完成冠字图像的识别工作,即先对冠字图像进行二值化操作,再根据冠字子图的边缘信息进行冠字图像分割,最后对分割出的冠字子图使用模板匹配的方式进行识别;
片上处理器模块(37):用于将冠字图像识别模块(36)识别出的冠字号码通过USB接口(6)和网络接口(7)发送给外部设备。
2.根据根据权利要求1所述的系统,其中冠字图像搜索模块(34)包括:
人民币图像二值化子模块(341),进钞方向判断子模块(342),正反图像判断子模块(343)、进钞角度计算子模块(344)以及冠字图像位置计算子模块(345);
人民币图像二值化子模块(341),用于对输入的人民币图像进行二值化,二值化后的图像同时送给进钞方向判断子模块(342)、正反图像判断子模块(343)以及进钞角度计算子模块(344);
进钞方向判断子模块(342),用于判断人民币的进钞方向,即判断人民币是正向进钞还是反向进钞,并将判断结果送给冠字图像位置计算子模块(345);
正反图像判断子模块(343),用于判断人民币正面图像是由上方图像传感器得到还是下方图像传感器得到,并将判断结果送给冠字图像位置计算子模块(345);
进钞角度计算子模块(344),用于计算人民币图像的旋转角度,并将计算结果送给冠字图像位置计算子模块(345);
冠字图像位置计算子模块(345),用于根据进钞方向信息、正反图像信息以及进钞角度,计算冠字图像在整张人民币图像中所在的位置。
3.根据权利要求1所述的系统,其中冠字图像识别模块(36)包括:
冠字图像二值化子模块(361),用于使用最大类间方差算法对冠字图像进行二值化,并将二值化后的图像送给冠字图像分割子模块(362);
冠字图像分割子模块(362),用于对二值化图像进行分割,并将分割后的图像送给冠字图像识别子模块(363);
冠字图像识别子模块(363),用于使用模板比对算法对分割后的冠字图像进行识别。

说明书全文

基于FPGA的人民币冠字识别系统

技术领域

[0001] 本发明属于数字处理技术领域,具体是一种基于FPGA的人民币冠字号码识别系统,可用于A类点钞机及人民币清分机。技术背景
[0002] 人民币的冠号和数字编号是用来记录人民币发行序列的,由于冠字号码具有唯一性,因此在人民币出入库时记录每张人民币的号码,建立币码档案,可以使金融部等有效跟踪人民币在社会的流通情况,并进行有效监管,从而有利于解决类似抢劫运钞车、洗钱等重大社会问题。按照国家标准要求,行等金融行业必须配备具有冠字号码提取、识别功能的A类点钞机。
[0003] 我国冠字号码提取及识别技术起步较晚。但最近几年发展迅速。其中大多数是基于接触式图像传感器图像采集和冠字码识别系统。识别系统基本上基于DSP或者专用处理芯片的冠字识别方案,这些方法基本能满足当前的识别要求,但是这些系统或识别速度较低,或系统集成度较差,不利于设备的小型化和高集成度的要求。
[0004] 成都术有科技有限公司在其申请专利“基于DSP的高速人民币冠字号码提取及识别系统”(公开号CN103729934A,申请号CN201410004812.3)中公开了一种基于FPGA+DSP的系统架构,这种系统架构方法使用FPGA完成图像采集,使用DSP作为主处理器完成图像处理图像识别的相关工作。由于DSP只能串行完成数据处理,因此在处理速度上具有天然的劣势。
[0005] 宁波术有科技有限公司在其申请专利“一种高速人民币冠字号码识别系统及其实现方法”(公开号CN104103119A,申请号CN201410313854.5)公开了采用USB3.0控制芯片+FPGA的系统架构,这种架构方法使用FPGA完成图像采集和冠字号码定位,使用USB3.0控制芯片固化代码完成图像识别工作。这种系统架构方法使用USB3.0芯片完成高速图像处理和计算工作,相对于以DSP为主的处理方案是一个革新。缺点在于使用USB3.0芯片对设备接口做个严格限定,只能适用于USB接口的应用场合,并且系统的集成度不高,可扩展性差。
[0006] 技术方案
[0007] 本发明的目的在于提供一种基于FPGA的人民币冠字识别系统,主要解决现有的人民币冠字号码提取及识别系统存在系统集成度低、成本高、处理速度慢的问题。
[0008] 为实现上述目的,本发明基于FPGA的人民币冠字识别系统,包括上、下两个图像传感器、两路A/D转换器、FPGA单元、两路驱动器、SDRAM存储器、FPGA外扩的USB接口以及FPGA外扩的网络接口,图像传感器为接触式图像传感器,A/D转换器将图像传感器的模拟信号转为数字信号,驱动器控制图像传感器的光源,其特征在于:
[0009] FPGA单元包括:
[0010] 控制模:用于控制驱动器的打开或者关闭;
[0011] 图像采集模块:其与A/D转换器相连,用于完成数字图像的采集;
[0012] SDRAM接口模块:用于实现SDRAM接口控制逻辑,将图像采集模块采集的图像存入SDRAM存储器中,响应冠字图像提取模块给出的读取命令,将人民币图像中的冠字图像从SDRAM存储器中读出,送给冠字图像识别模块进行冠字识别;
[0013] 冠字图像搜索模块:用于完成对冠字图像区域位置的判断,并通过人民币图像边缘信息计算人民币图像的旋转度;
[0014] 冠字图像提取模块:用于将冠字图像搜索模块得出的图像位置和角度信息转换为SDRAM的地址送给SDRAM接口模块,SDRAM接口模块读取相应地址的图像送给冠字图像识别模块;
[0015] 冠字图像识别模块:用于完成冠字图像的识别工作,即先对冠字图像进行二值化操作,再根据字符的边界信息进行字符分割,并对分割完毕后的图像进行模板比对,完成对冠字图像的识别;
[0016] 片上处理器模块:用于将冠字图像识别模块识别出的冠字号码通过USB接口和网络接口发送给外部设备。
[0017] 进一步,所述冠字图像搜索模块包括:
[0018] 人民币图像二值化子模块,用于将输入人民币图像转为二值化图像输出;
[0019] 进钞方向判断子模块,用于判断人民币的进钞方向,即判断人民币是正向进钞还是反向进钞,并将判断结果送给冠字图像位置计算子模块;
[0020] 正反图像判断子模块,用于判断人民币正面图像是由上方图像传感器得到还是下方图像传感器得到,并将判断结果送给冠字图像位置计算子模块;
[0021] 进钞角度计算子模块,用于计算人民币图像的旋转角度,并将计算结果送给冠字图像位置计算子模块;
[0022] 冠字图像位置计算子模块,用于根据进钞方向信息、正反图像信息以及进钞角度,计算冠字图像在整张人民币图像中所在的位置。
[0023] 进一步,所述冠字图像识别模块包括:
[0024] 冠字图像二值化子模块,用于使用最大类间方差算法对冠字图像进行二值化,并将二值化后的图像送给冠字图像分割子模块;
[0025] 冠字图像分割子模块,用于对二值化图像进行分割,并将分割后的图像送给冠字图像识别子模块;
[0026] 冠字图像识别子模块,用于使用模板比对算法对分割后的冠字图像进行识别。
[0027] 本发明与现有技术相比具有以下收益与效果:
[0028] (1)结构简单
[0029] 已有发明在硬件电路上采用FPGA+DSP或者FPGA+外部处理器的设计方案,本发明硬件电路只使用FPGA完成设计目标,硬件结构简单,有效节省单板面积;
[0030] (2)处理速度快
[0031] 本发明使用FPGA完成图像识别工作,与其他发明使用DSP或其他处理器完成图像识别工作相比,由于FPGA采用流线技术和并行处理技术,因此提高了图像识别的速度。附图说明
[0032] 图1为本发明系统的结构框图
[0033] 图2为本发明中的FPGA单元框图。
[0034] 图3为本发明的FPGA单元中冠字图像搜索模块框图。
[0035] 图4为本发明的FPGA单元中冠字图像识别模块框图。
[0036] 图5为本发明中对二值化后冠字图像按列求和的序列图。

具体实施方式

[0037] 下面结合实施例对本发明做进一步详细说明,但本发明的实施方式不限于此。
[0038] 参照图1,本发明所述系统包括:图像传感器1、A/D转换器2、FPGA单元3、驱动器4、SDRAM存储器5、FPGA外扩的USB接口6以及FPGA外扩的网络接口7。A/D转换器2用于将图像传感器1的模拟信号转为数字信号,驱动器4用于控制图像传感器1的光源。FPGA3用于检测电机转动信号,当检测到电机转动时打开控制器4,然后完成人民币图像数据采集、人民币图像中的冠字图像搜索,并将人民币图像数据存入SDRAM存储器5中,再从SDRAM存储器5中取出冠字图像,完成冠字图像识别工作,通过USB口和网络接口发送出识别结果给外部设备。其中图像传感器1为接触式图像传感器,分为上图像传感器11下图像传感器12;A/D转换器2分为第一A/D转换器21和第二A/D转换器22,驱动器4分为第一驱动器41和第二驱动器42。
[0039] 当电机转动时,FPGA3控制驱动器4打开图像传感器1的光源,其中第一控制器41负责控制上图像传感器11的光源,第二控制器42负责控制下图像传感器12的光源。上图像传感器11和下图像传感器12分别采集人民币两个表面的图像信息,进行光电转换后转换为模拟电信号输出给A/D转换器2,其中上图像传感器11将模拟信号输出给第一A/D转换器21,下图像传感器12将图像输出给第二A/D转换器22。A/D转换器进行模数转换后得到上下两面人民币数字图像信号输出给FPGA3,FPGA3完成上下两面人民币数字图像采集,将上下两面人民币数字图像同时存入SDRAM存储器5,同时对人民币的两面图像进行正反信息、进钞方向信息判断以及进钞角度计算,综合后得到冠字图像在人民币图像中的位置。然后从SDRAM存储器5中取出冠字图像进行冠字图像识别操作,最后将识别的结果通过USB接口6和网络接口7发送给外部设备。
[0040] 参照图2,本发明的FPGA单元3,包括:控制模块31、图像采集模块32、SDRAM接口模块33、冠字图像搜索模块34、冠字图像提取模块35、冠字图像识别模块36以及片上处理器37。其中:
[0041] 控制模块31,用于控制驱动器4的开与关;
[0042] 图像采集模块32,用于采集来自A/D转换器的上下两面人民币数字图像信号,将采集得到的两面人民币图像同时送给SDRAM接口模块33和冠字图像搜索模块34;
[0043] SDRAM接口模块33,用于将两面人民币图像同时存入SDRAM存储器5中,然后根据冠字图像提取模块35给出的地址信息取出人民币冠字图像送给冠字图像识别模块36;
[0044] 冠字图像搜索模块34,用于分析上下两面人民币数字图像信息,判断人民币正反信息,人民币进钞方向信息以及人民币旋转角度信息,以此得到人民币冠字图像位置送给冠字图像提取模块35;
[0045] 人民币冠字图像提取模块35,用于根据人民币冠字位置和旋转角度信息计算得到人民币冠字在SDRAM存储器中的位置信息,送给SDRAM接口模块33取出人民币冠字图像;
[0046] 图像识别模块36,用于对冠字图像进行识别,识别出冠字图像对应的冠字号送给片上处理器37;
[0047] 片上处理器37,用于将识别出的冠字号码通过USB接口和网络接口发送给外部设备。
[0048] 参照图3,所述冠字图像搜索模块34,包括:人民币图像二值化子模块341,进钞方向判断子模块342,正反图像判断子模块343、进钞角度计算子模块344以及冠字图像位置计算子模块345。其中:
[0049] 人民币图像二值化子模块341,用于对输入的人民币图像进行二值化,二值化后的图像同时送给进钞方向判断子模块342、正反图像判断子模块343以及进钞角度计算子模块344;
[0050] 进钞方向判断子模块342,用于判断人民币的进钞方向,即判断人民币是正向进钞还是反向进钞,并将进钞方向的判断结果同时送给正反图像判断子模块343和进钞角度计算子模块344;
[0051] 正反图像判断子模块343,用于判断人民币正面图像是由上图像传感器还是下图像传感器得到的,并将正反图像判断的结果送给冠字图像位置计算子模块345;
[0052] 进钞角度计算子模块344,用于计算人民币图像的旋转角度,计算出的进钞角度信息送给冠字图像位置计算子模块345;
[0053] 冠字图像位置计算子模块345,用于计算冠字图像在整张人民币图像中所在的位置,并将计算出的冠字图像位置结果送给人民币冠字图像提取模块35。
[0054] 参照图4,所述冠字图像识别模块36,包括:冠字图像二值化子模块361、冠字图像分割子模块362以及冠字图像识别子模块363。其中:
[0055] 冠字图像二值化子模块361,用于将冠字图像进行二值化,二值化后的图像送给图像分割子模块362;
[0056] 冠字图像分割子模块362,用于对图像二值化子模块输出的二值化图像进行分割,分割后的图像送给图像识别子模块363;
[0057] 冠字图像识别子模块363,用于对冠字图像分割子模块输出的分割后的冠字图像进行识别,识别的结果送给片上处理器模块37。
[0058] 整个FPGA单元3的工作原理如下:
[0059] 上电后FPGA单元3进入空闲状态,在空闲状态下FPGA单元3检测电机转动情况:当检测到电机没有转动时控制模块31关闭驱动器,当检测到电机开始转动时控制模块31打开驱动器;
[0060] 控制模块31在打开驱动器后,启动图像采集模块32开始工作,采集两路A/D转换器输入的上下两路人民币图像,将两路图像送给SDRAM接口模块33存入SDRAM存储器,并将其同时送往冠字图像搜索模块34开始进行冠字图像搜索;
[0061] SDRAM接口模块33将上下两路人民币图像同时存入SDRAM存储器;
[0062] 在冠字图像搜索模块34在搜索过程中,其中的人民币图像二值化子模块341首先对输入的上下两路人民币图像进行二值化,设置二值化阈值TR=65,将输入像素值与TR进行比较后生成二值化图像的输出值,若输入像素值大于TR输出为1,若输入像素值小于等于TR则输出为0;并将二值化后的图像同时送给进钞方向判断子模块342、正反方向判断子模块343以及进钞角度计算子模块344;
[0063] 进钞方向判断子模块342,首先假设二值化后的上下两张人民币图像均为正面图像,对上下两张人民币图像同时进行判断,判断过程为:对二值化图像的左1/4部分和右1/4部分分别求和,得到左1/4部分的和值X1和右1/4部分的和值X2,再将X1与X2进行比较,若X1>X2,则图像较亮的区域在左侧,反之,图像较亮的区域在右侧,根据人民币的图像特点,如果较亮部分在左侧,则为正向进钞,反之则为反向进钞;
[0064] 正反方向判断子模块343,将接收的上下两张二值化图像记为上图像和下图像,首先假设上图像和下图像均为正向图像,根据进钞方向判断子模块342的结果对上图像做判断,如果是正向进钞,则左上角为国徽图像,如果反向进钞,则右下角为国徽图像,对这部分像素值求和得到和值Y1;同样的,根据进钞方向判断子模块342的结果对下图像进行判断,如果是正向进钞,则左上角为国徽图像,如果反向进钞,则右下角为国徽图像,对这部分像素值求和得到和值Y2;比较Y1和Y2的大小,如果Y1
[0065] 进钞角度计算子模块344,首先对查找上下两张二值化图像的边缘信息,二值化图像左右部分像素值中第一个从0到1跳变的位置,即为图像的左右边缘位置,假设查找第50行的左边缘位置为h50,第100行的左边缘位置为h100,则图像边缘的斜率为 求斜率的反正切得到信号的旋转角θ,即 由于同时对上下两张图像进行计算,输出两个旋转角,记上图像对应旋转角为θ1,下图像对应旋转角为θ2;
[0066] 进钞方向判断子模块342、正反图像判断子模块343以及进钞角度计算子模块344的结果均送给冠字图像位置计算子模块345,冠字图像位置计算子模块345首先根据进钞方向判断子模块342和正反图像判断子模块343的结果,得到冠字图像来自于哪个图像传感器以及在人民币图像的左上角还是右下角,并选择正向图像的旋转角作为最终使用的旋转角,假设最终旋转角为θ3,若正向图像为上图像,则θ3=θ1,若正向图像为下图像,则θ3=θ2;然后根据人民币图像的边缘信息得到对应左上角或右下角的位置坐标,记为这个位置坐标为(h0,v0)。由于人民币冠字图像区域和边角位置的相对位置为固定值,假设其横向距离为H,纵向距离为V,根据边角位置坐标(h0,v0)以及旋转角θ3即可得到冠字图像位置,假设冠字图像位置为(h1,v1),坐标(h1,v1)的计算公式如下:
[0067] h1=h0+Hcos(θ3)-Vsin(θ3)
[0068] v1=v0+Vcos(θ3)+Hsin(θ3);
[0069] 整个冠字图像搜索模块34完成搜素后,将冠字图像位置和图像旋转角度信息送给冠字图像提取模块35,冠字图像提取模块35根据上述信息计算冠字图像的在SDRAM存储器中的地址,送给SDRAM接口模块33将冠字图像读出后再送给冠字图像识别模块36;
[0070] 冠字图像识别模块36在识别过程中,首先由其中的冠字图像二值化子模块361对冠字图像进行二值化,二值化前用最大类间方差算法计算二值化阈值,其计算方法如下:
[0071] 对于总像素点个数为N的图像,计算得到像素值的均值μ,假设当前二值化阈值为T0,统计大于T0的像素值有N0个,计算得到其平均像素值为μ0,统计小于等于T0的像素值为N1个,计算得到其平均像素值为μ1,计算类间方差为
[0072] 在(0~255)范围内遍历T0使得g为最大,取g最大时对应的T0值为最佳阈值T;
[0073] 将输入像素值与T进行比较后生成二值化图像的输出值,若输入像素值大于T,则输出为1,若输入像素值小于等于T,则输出为0。二值化后的冠字图像送给冠字图像分割子模块362;
[0074] 冠字图像分割子模块362对二值化后的冠字图像按如下过程进行分割:
[0075] 首先,寻找一幅冠字图像中十个冠字子图的左右边缘位置,即对冠字图像按列求和,得到求和后的序列如图5所示,该序列的特性为:在冠字子图处数值较小,表现为谷值,在冠字子图间隙处数值达到最大,表现为峰值;
[0076] 其次,根据峰值和谷值确定冠字子图的边缘位置:
[0077] 峰值向谷值转换的位置为冠字子图的左边缘位置,谷值向峰值转换的位置为冠字子图的右边缘位置;
[0078] 第1个峰值向谷值转换的位置为第1个冠字子图左边缘位置,第1个谷值向峰值的转换位置为第1个冠字子图的右边缘位置;
[0079] 第2个峰值向谷值转换的位置为第2个冠字子图左边缘位置,第2个谷值向峰值的转换位置为第2个冠字子图的右边缘位置,以此类推;
[0080] 然后,将10个冠字子图按照各自边缘的位置分别从冠字图像中取出,即实现了冠字图像的分割,分割后的冠字子图送给图像识别子模块363;
[0081] 图像识别子模块363对十个冠字子图进行识别,图像识别使用模板比对算法,其识别过程如下:
[0082] 首先,在图像识别子模块363内部存储26个字母和10个数字的标准模板图像;
[0083] 其次,对待识别图像进行缩放操作,将待识别图像缩放为和模板图像同样的大小;
[0084] 然后,将缩放后图像依次和各个模板图像按像素进行异或操作,并对异或后的结果求和,得到36个异或求和结果;
[0085] 最后,将这36个结果进行比较,找到其中最大的结果对应的模板,这个模板对应的数字或字母即为识别出的结果;
[0086] 将十个冠字子图按照这个方法依次进行识别,识别后得到的十个冠字号送给片上处理器37;
[0087] 片上处理器模块37将识别出的冠字号通过USB接口和网络接口发送给外部设备,如此完成图像的识别工作。
[0088] 以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解本发明内容和原理后,都可能在不背离本发明原理、结构的情况下,进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
QQ群二维码
意见反馈