基于NiosII的二维条码识别系统设计

发布者:深沉思考最新更新时间:2011-02-19 关键字:NiosII  二维条码  识别 手机看文章 扫描二维码
随时随地手机看文章

  二维条码PDF417中PDF为Portable Data File的缩写,每一个PDF码的储存量可高达1 108字节,若将数字压缩则可存放2 729字节。作为一种新的信息存储和传递技术,PDF417具有成本低、信息可随载体移动、不依赖于数据库和计算机网络、保密防伪性能强等优点,广泛应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等领域,PDF417码的例子如图1所示。


  图1  PDF417二维条码

  1  系统总体设计

  本系统在FPGA上使用SOPC技术来实现无线手持二维条码识读器,与传统一维条码识读器最大的区别在于完全脱离后台数据库,以及在高达50%破损率的情况下能够进行高效率识别。

  SOPC技术是一种基于FPGA解决方案的SOC,由美国Altera公司于2000年提出。基于SOPC平台的开发结合了FPGA灵活可编程与片上NiosII软核处理器的用户可配置等特点。在实现某功能时,通过在NiosII处理器下编写C程序运行,也可以使用硬件模块来加速。本系统综合两种实现思路,采用高性价比的Cyclone II EP2C35系列FPGA实现,系统总体结构如图2所示。


  图2  系统总体结构框图

  整个系统由低到高分为三个层次:条码识别的硬件平台、μC/OSII操作系统、条码译码核心算法。最底层硬件平台采用Altera公司的Cylone II EP2C35与ADI公司的视频解码芯片ADV7181B,具有8 MB的Flash存储器,1 MB的SRAM等外设;中间层μC/OSII操作系统提供任务调度和设备驱动,以及提供各种中断来实现对外界请求的响应,如模式切换、LCM显示、射频传送等,有效地提高了系统运行速率;最顶层条码译码核心算法包括了对条码图像的预处理和对译码数据的RS纠错,采用C语言在NiosII的集成开发环境中(IDE)实现。

  1.1  系统硬件结构

  系统通过配置视频采集芯片ADV7181B,通过图像采集子系统将CCD采集到的条码数据存储在SRAM中后,产生硬件中断,处理器响应中断,Nios对SRAM中的数据进行图像预处理、译码及纠错,通过译码算法硬件加速模块对耗时较多部分算法进行优化,在实现条码数据译码及纠错后,产生射频传送和LCM显示中断,进入中断程序将译码数据通过射频传输模块发送到上位机,并且在LCM实时显示。其硬件平台结构原理如图3所示。


  图3  系统硬件结构原理框图

  1.2  图像采集子系统

  由于本设计采用的是灰度图,因此图像采集子系统的主要功能是:配置采集芯片,从解码芯片读出数据流,根据行场同步信号对数据流进行分离,提取出亮度信号,并将采集到的亮度信号通过乒乓缓存存入SRAM中。

  在设计中,采用ADI的解码芯片ADV7181B进行图像信号的数模转换,FPGA中的I2C模块是作为主设备来对ADV7181B进行配置的,而ADV7181B作为从设备来接受I2C总线传来的数据,实现芯片的初始化、寄存器的配置等。图4中TD_DA为数据信号,TD_VS为场同步信号,TD_HS为行同步信号。


  图4  图像采集子系统

  系统上电时,I2C配置模块将对ADV7181B的内部寄存器进行配置,ADV7181B将模拟信号转换为Y∶U∶V为42∶2∶2的8位CCIR656数字信号,其中输出的时序包括行场同步、行场消隐、行频场频及场识别等信号。

  CCD摄像头采集的图像实际尺寸为768×576像素,每帧图像由奇场数据和偶场数据交错组合而成,奇场数据与偶场数据在时间上是先后输入的。本设计使用的是320×240的液晶led/' target='_blank'>显示屏

,在处理过程中也采用的是320×240的图片格式,所以要对摄像头采集的图片进行提取。在设计中仅采奇场数据的中间240行,并对每行中间的640个数据每两个像素抽取一个像素,从而得到符合系统要求的图像大小。由于一帧图像的奇场数据与偶场数据实际上非常接近,而每行的相邻两个像素值也几乎没有差异,因此可以得到原输入图的缩小图像而不会有失真。


  图5  乒乓缓存

  图像存入SRAM采用了乒乓缓存,如图5所示,是为了防止写出速度快于写入速度而导致出现错误数据。采用两个行缓存进行乒乓切换,在数据提取子模块向行A写入数据时,数据写出子模块读取行缓存B中的数据输出到总线;在对下一行进行采集时,对行缓存A读数据,对行缓存B写数据。因此行缓存写路选器与行缓存读路选器在同一时刻选通的一定是不同的行缓存。

  2  条码识别核心算法

  条码译码主要流程是首先对条码进行自适应二值化,然后对条码进行定位、旋转、分割。分割出单个码字后,通过边缘检测,得到条码条空序列模块宽度后,再进行纠错解码。

  传统条码识别算法[23]在对条码定位时多采用Hough变换,通过Hough变换提取条码图像中的直线倾角来旋转条码。但是Hough变换的大运算量并不适用于实时性要求高的的嵌入式设备。笔者结合PDF417条码自身的特点,采用4点定位的方法来分割条码,有效提高条码识别速度。核心算法流程详细步骤如下:



  (1) 条码定位

  实际采集条码时会出现各种倾斜,如图6所示。如何定位条码是关键的问题。可以利用条码起始头特有的比例来定位。按照国标的定义,PDF417二维条码的起始符黑白条空比是81111113,终止符黑白条空比是711311121。扫描图像的每一行,分别匹配起始符和终止符的条空比。考虑到条码采集过程中,边缘受高斯点扩展函数的影响,只要黑白条空比例的误差不超过三位,可近似认为符合比例。标记所有符合起始符条空比比例条码线段,可以得到4个控制点a、b、c、d,用同样的方法可以寻找符合终止符条空比的条码线段,确定点e、f、g、h。判断a、c、e、g是否为正确控制点的标准是,平行边长度误差在5个像素点内,且相邻边角度为90°,其误差角度为2°。


  图6  起始点和终止点的确定

  计算过点c、g的直线与水平方向的夹角,即为条码要旋转的角度。

  (2) 图像旋转插值

  根据直线cg的倾角将条码旋至水平,如果旋转中的灰度插值采用最邻近插值法,会产生锯齿形的边界。笔者采用双线性插值[4],对相邻的4个像素进行插值,对应单位正方形上任意一点f(x,y)有:

  (3) 行条码分割及行高确定

  由于PDF417条码是层叠式条码,在对单行条码码字进行识别时,必须得到条码的行数,然后分离出每一行。首先对条码使用Sobel算子进行水平边缘检测,如图7所示,然后向水平方向投影,如图8所示。


  已知p(x)对应投影的峰值,也就条码的边界,通过对投影下来的每个值求一次差分▽p(x),然后逐个判断各个差分值,如果连续两个投影的差分值前一个是负数而后一个是0或者正数,则说明此点是峰值。峰值处的坐标即为条码分层的地方,考虑到条码层与层连接的地方在二值化时会出现噪点,则取每层条码图像中间的50%作为有效图像。

  (4) 码字识别

  分割出单个码字后,得到条空的像素个数,记为{M1,M2,…,M8},因为4个条和4个空的总模块数为17,可以根据式(1)得出条模块数的集合{T1,T2,T3,T4}。同样,用Ki替代式(1)中的Ti,可得到空模块数的集合{K1,K2,K3,K4}。



  因PDF417条码用了三个簇的数据来组成一个条码,三个簇的数据量较大,且每个簇中的数据与条空比无一致对应关系,所以就涉及把条空比转换成条码数据的问题。本算法采用的解决方案是:用哈希算法[5]来查找:



  式(2)中Z为空1模块数和条2模块数的组合,再利用F的值进行查找,实现数据流的译码。数据流译码不是本文重点,这里不再详细阐述。

  3  系统软件设计



  图9  系统软件流程图

  系统软件是在Nios II的μC/OSII操作系统下进行C语言编程的。系统初始化主要包括对采集芯片、射频传输控制模块、网络接口的初始化,整个系统动态扫描条码图像和实时译码。系统主要流程如图9所示。其中,系统初始化时利用函数IOWR(SIGNAL_CAP_0_BASE,0,1)将采集模块全局信号复位,然后使用函数alt_irq_register(SIGNAL_CAP_0_IRQ,NULL,sig_cap_irq_proc)来建立一个用户中断程序[6],对按键中断响应进入中断服务程序sig_cap_irq_proc,向摄像头发送采集指令。当采集模块完成一幅条码图像采集后,产生一个硬件中断,将标志FLAG置1。当主循环程序判断FLAG为1时,就可以从外扩的SRAM中将图像数据读入SDRAM中,接着进行图像预处理和译码,其中包括用自定义用户指令和硬件模块实现的一些运算量大的部分。射频传输与NiosII的PIO口相连,通过函数IOWR_ALTERA_AVALON_PIO_DATA来实现。

  4  实验与分析

  本识别系统工作频率为100 MHz,图像采样分辨率为320×240,一幅条码图像识别时间为60 ms。本系统有如下几个特点:

  ① 利用PDF417码本身的特点来定位分割条码,与传统的条码定位分割算法相比,大大提高了条码识别速率。传统二维条码定位分割多采用Hough变换来确定条码倾斜角度,不能满足手持式嵌入式条码识读器的实时性要求。

  ② 在FPGA中嵌入NiosII软核处理器,简化硬件设计,同时使系统更加稳定。FPGA的可重配置以及SOPC的可裁减使系统具有很高的资源利用率,而且方便升级和维护。

  ③ 利用自定义模块、自定义指令、C2H硬件加速等方法[78]对部分耗时算法进行优化,大大提高了整个系统识别速率。

  笔者针对不同环境下采集的300幅条码图像进行了三次测试:第一次是在条码无破损的情况下,第二次是在条码有5%破损和污染的情况下,第三次随机识别100幅条码。本文所采用的算法平均识别率达96.7%,耗时60 ms,如表1所列。

  表1  测试结果


  结语

  二维条形码诞生后,条码技术的应用领域更加广泛,不仅应用于物流运输,还渗透到生产、生活的各个领域。本文介绍了一种基于SOPC的二维条码识别系统的设计,提出了一种软硬件综合的解决方案,由于涉及底层的硬件系统设计和相应的软件设计,在系统性能优化方面有着很大的空间。

关键字:NiosII  二维条码  识别 引用地址:基于NiosII的二维条码识别系统设计

上一篇:基于RFID的近距离无线控制系统
下一篇:一种SAW RFID阅读器的信号处理电路设计

推荐阅读最新更新时间:2024-05-07 16:15

泊车辅助系统中的车位线自动检测与识别
近年来随着对泊车辅助系统需求的快速增长,提出了多种车位定位的方法,这些方法大致可分为4类:基于用户界面的、基于设施的、基于空闲位的和基于车位线的方法。与其他方法相比,基于车位线的方法有以下优势:(1)可以与基于用户界面的方法结合使用来减少由于司机重复操作带来的不便,而这是基于用户界面方法的主要缺陷。(2)不同于基于空闲位的方法,它能更准确地定位停车位,因为其定位过程不依赖于相邻汽车的停放姿势而仅依赖于车位线。(3)它也可以有效地应用于倾斜车位的情况。由于传感器的局限性,运用超声波传感器基于空闲位的方法在倾斜车位的情况下会失效。(4)与应用双目或者运动声波的基于空闲位的方法相比,它通常花费少量时间。(5)它不需要额外的传感器,例如立
[嵌入式]
通过采用单片机和指纹识别模块实现电子机械锁的设计
引言 随着生活水平的提高,人们对物质生活的要求越来越高,尤为注重住宅安全问题。随着生物特征识别技术的发展,指纹识别技术逐渐进入人们的生活领域,指纹锁进入了人们的家庭。常见的指纹锁,需要管理员指纹或者管理员密码,才能进行指纹和密码的添加和删除操作。本文设计的电子机械锁,具有上述功能,还可以用正确钥匙管理指纹和密码。 常见的指纹锁配备的机械锁,可使用普通的正确钥匙打开,安全级别较低,很容易被专业人员破解。本文设计的基于PIC16F72的机械锁,配套的钥匙内置编码芯片,能够设置正确钥匙以及发送钥匙编码信息,只有用正确钥匙才能打开,不能被铁丝或其他非法钥匙打开,安全性大大提高。在非法开门的情况下,机械锁发送报警信息。 1 、系统设
[单片机]
通过采用单片机和指纹<font color='red'>识别</font>模块实现电子机械锁的设计
迈入生物识别时代,靠脸吃饭时代来临
随着苹果(Apple)Face ID脸部辨识技术问世,企业界接连宣布相关应用上路,将人机交互提升到全新的阶段,仅仅短短半个月内,“刷脸吃饭”、“刷脸购物”、“刷脸提钱”的应用接踵而至,未来发展充满想象。 随着苹果Face ID脸部辨识技术问世,企业界接连宣布相关应用上路 “靠脸吃饭”听起来像是电商业者的噱头,其实金融银行早已迈入应用。不需要身份证、不需要银行卡,脸朝窗口一笑,按提示操作几下,ATM就自己吐钱出来。这样的场景,已经不止是想象,而是成为了事实。 近日中国农业银行在ATM试行脸部识别技术,用户可以不带卡,只要刷脸就能取款。据悉,该功能将在贵阳进行大面积覆盖,2017年底实现贵州全省覆盖。事实上,这是中国农业
[网络通信]
从高性能识别到极易部署,开启3D视觉新时代
广告摘要声明广告 【文/歌者】7月28日,以“新拐点·新业态”为主题的2021(第四届)高工机器人集成商大会暨十佳集成商颁奖典礼在深圳机场凯悦酒店隆重举行。在本次大会的新制造专场上, 星猿哲科技创始人兼CEO周佳骥 发表了《从高性能识别到极易部署,开启3D视觉新时代》主题演讲。 星猿哲科技创始人兼CEO周佳骥 从技术诞生的角度来看,3D视觉并非是最近几年才涌现的新技术,事实上早在二三十年前就已经出现了3D成像设备;而早在2011年,发那科就已经实现了2D与3D视觉的无缝对接,以处理物品的有序放置。 但8年时间过去,机器人3D引导的市场销量远不如2D。 周佳骥认为3D视觉存在的三大应用痛点造成了目前的应用现状 :首先为保证精准
[机器人]
指纹识别芯片大车拚 产能、封装、软件皆布局
     在恩智浦(NXP)高分贝喊出2015年50%智能型手机将搭戴移动支付功能的口号,加上Apple Pay、Google Pay、米Pay、乐Pay等移动支付服务不断推陈出新,指纹识别芯片解决方案也越来越炙手可热,吸引国内、外IC设计业者争相投入,争取未来一年市场需求逾10亿颗的新兴芯片商机。   然受限于8吋晶圆产能,加上软韧体整合及客户设计开发需要耕耘一段时间,目前一颗近10美元的指纹识别芯片订单,多数台系IC设计业者是看得到,却吃不太到;台系IC设计业者表示,以两岸IC设计公司目前的产品进度看来,第一波指纹识别芯片的厮杀阶段,应该会是在2015年底前。   台系指纹识别芯片供应商指出,虽然指纹识别芯片商机早就
[手机便携]
小米手机新专利获批:整个屏幕能识别
近两年,安卓旗舰基本都普及了屏下指纹识别,但是目前来说依然有少用户不喜欢指纹识别,在日常使用中多以人脸识别为主,还有一些甚至直接选择了侧边指纹的机型。 而造成这个状况最主要的原因还是指纹识别在体验上有一个最大的痛点,就是识别区域的问题。 目前现有的技术只能实现很小区域的识别模块,量产机上最大的识别区域也就只有两指的面积,而且受限于屏幕内部的堆叠,厂商可能还无法选择最适合的位置放置识别区域。 因此,不少机型的屏下指纹的使用体验很不理想,不能迅速识别,失去了指纹的意义。 而现在有一款能实现完美屏下指纹识别的技术了。 据最新报道,1月4日,北京小米移动软件有限公司获得“一种全屏指纹识别装置、显示装置及终端”专利授权。 专利摘要显
[手机便携]
小米手机新专利获批:整个屏幕能<font color='red'>识别</font>
如何用万用表识别三极管的管型和管脚
三极管的管型及管脚的判别是电子技术初学者的一项基本功,为了帮助读者迅速掌握测判方法,笔者总结出四句口诀:“三颠倒,找基极;PN结,定管型;顺箭头,偏转大;测不准,动嘴巴。”下面让我们逐句进行解释吧。 一、 三颠倒,找基极   三极管是含有两个PN结的半导体器件。根据两个PN结连接方式不同,可以分为NPN型和PNP型两种不同导电类型的三极管。   测试三极管要使用万用电表的欧姆挡,并选择R×100或R×1k挡位。由万用电表欧姆挡的等效电路可知,红表笔所连接的是表内电池的负极,黑表笔则连接着表内电池的正极。   假定我们并不知道被测三极管是NPN型还是PNP型,也分不清各管脚是什么电极。测试的第一步是判断哪个管脚是基极。这
[测试测量]
科学家研制虹膜鉴别法 扫描虹膜可识别种族性别
  科学家研究出,可通过扫描虹膜来识别不同种族和性别的神奇方法     虹膜,位于血管膜的最前部,中央即为瞳孔。虹膜可以通过控制人体瞳孔的大小,来让人眼感觉到一些颜色。当胎儿开始发育时,它也会随之发育成既复杂又独特的样式,随之会停止发育,在人的一生中保持同一种样式。当完美的虹膜出现变化,就表示身体方面的器官有功能性改变或下降,身体出现不协调状态,即出现亚健康。可以说,虹膜是人体一块“神秘之地”。之前,有人认为仅能够通过虹膜鉴别出人的身份特征,而近日来自美国圣母大学的凯文—鲍耶(Kevin Bowyer)就带领其同事,共同就此结论进行了反驳,因为他们成功研制出了一种虹膜鉴别法,它不仅可以通过对虹膜的鉴别来核实对象身份,还能够
[安防电子]
小广播
最新网络通信文章
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved