二维条码PDF417中PDF为Portable Data File的缩写,每一个PDF码的储存量可高达1 108字节,若将数字紧缩则可寄存2 729字节。作为一种新的信息存储和传递技能,PDF417具有成本低、信息可随载体移动、不依赖于数据库和计算机网络、保密防伪功用强等长处,广泛应用在国防、公共安全、交通运送、医疗保健、工业、商业、金融、海关及政府办理等范畴,PDF417码的比如如图1所示。
1 体系整体规划
本体系在FPGA上运用SOPC技能来完结无线手持二维条码识读器,与传统一维条码识读器最大的差异在于彻底脱离后台数据库,以及在高达50%破损率的情况下能够进行高效率辨认。
SOPC技能是一种依据FPGA解决方案的SOC,由美国Altera公司于2000年提出。依据SOPC渠道的开发结合了FPGA灵敏可编程与片上。NioslI软核处理器的用户可装备等特色。在完结某功用时,经过在NiosII处理器下编写C程序运转,也能够运用硬件模块来加快。本体系归纳两种完结思路,选用高性价比的Cyclone II EP2C35系列FPGA完结,体系整体结构如图2所示。
整个体系由低到高分为三个层次:条码辨认的硬件渠道、μC/OS—II操作体系、条码译码中心算法。最底层硬件渠道选用Altera公司的Cylone II EP2C35与ADI公司的视频解码芯片ADV7181B,具有8 MB的Flash存储器,1.MB的SRAM等外设;中心层μC/OS—II操作体系供给使命调度和设备驱动,以及供给各种中止来完结对外界恳求的呼应,如形式切换、LCM.显现、射频传送等,有用地进步了体系运转速率;最顶层条码译码中心算法包含了对条码图画的预处理和对译码数据的RS纠错,选用C言语在NiosII的集成开发环境中(IDE)完结。
1.1 体系硬件结构
体系经过装备视频收集芯片ADV7181B,经过图画收集子体系将CCD收集到的条码数据存储在SRAM中后,发生硬件中止,处理器呼应中止,Nios对SRAM中的数据进行图画预处理、译码及纠错,经过译码算法硬件加快模块对耗时较多部分算法进行优化,在完结条码数据译码及纠错后,发生射频传送和LCM显现中止,进入中止程序将译码数据经过射频传输模块发送到上位机,并且在LCM实时显现。其硬件渠道结构原理如图3所示。
1.2 图画收集子体系
因为本规划选用的是灰度图,因而图画收集子体系的首要功用是:装备收集芯片,从解码芯片读出数据流,依据行场同步信号对数据流进行别离,提取出亮度信号,并将收集到的亮度信号经过乒乓缓存存入SRAM中。
在规划中,选用ADI的解码芯片ADV7181B进行图画信号的数模转化,FPGA中的I2C模块是作为主设备来对ADV7181B进行装备的,而ADV7181B作为从设备来承受I2C总线传来的数据,完结芯片的初始化、寄存器的装备等。图4中T_DA为数据信号,TD_VS为场同步信号,TD_HS为行同步信号。
体系上电时,I2C装备模块将对ADV7181B的内部寄存器进行装备,ADV7181B将模拟信号转化为Y:U:V为42:2:2的8位CCIR656数字信号,其间输出的时序包含行场同步、行场消隐、行频场频及场辨认等信号。
CCD摄像头收集的图画实践尺度为768×576像素,每帧图画由奇场数据和偶场数据交织组合而成,奇场数据与偶场数据在时刻上是先后输入的。本规划运用的是320×240的液晶显现屏,在处理过程中也选用的是320×240的图片格式,所以要对摄像头收集的图片进行提取。在规划中仅采奇场数据的中心240行,并对每行中心的640个数据每两个像素抽取一个像素,然后得到契合体系要求的图画巨细。因为一帧图画的奇场数据与偶场数据实践上十分挨近,而每行的相邻两个像素值也几乎没有差异,因而能够得到原输入图的缩小图画而不会有失真。
图画存入SRAM选用了乒乓缓存,如图5所示,是为了避免写出速度快于写入速度而导致呈现过错数据。选用两个行缓存进行乒乓切换,在数据提取子模块向行A写入数据时,数据写出子模块读取行缓存B中的数据输出到总线;在对下一行进行收集时,对行缓存A读数据,对行缓存B写数据。因而行缓存写路选器与行缓存读路选器在同一时刻选通的一定是不同的行缓存。
2 条码辨认中心算法
条码译码首要流程是首要对条码进行自适应二值化,然后对条码进行定位、旋转、切割。切割出单个码字后,经过边际检测,得到条码条空序列模块宽度后,再进行纠错解码。
传统条码辨认算法在对条码定位时多选用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°。
(2)行条码切割及行高确认
因为PDF417条码是层叠式条码,在对单行条码码字进行辨认时,有必要得到条码的行数,然后别离出每一行。首要对条码运用Sobel算子进行水平边际检测,如图7所示,然后向水平方向投影,如图8所示。
已知p(x)对应投影的峰值,也就条码的鸿沟,经过对投影下来的每个值求一次差分▽ p(x),然后逐一判别各个差分值,假如接连两个投影的差分值前一个是负数然后一个是0或许正数,则阐明此点是峰值。峰值处的坐标即为条码分层的当地,考虑到条码层与层衔接的当地在二值化时会呈现噪点,则取每层条码图画中心的50%作为有用图画。
(3)码字辨认
切割出单个码字后,得到条空的像素个数,记为{M1,M2,…,M8},因为4个条和4个空的总模块数为17,能够依据式(1)得出条模块数的调集{T1,T2,T3,T4)。相同,用Ki代替式(1)中的Ti,可得到空模块数的调集{K1,K2,K3,K4}。
因PDF417条码用了三个簇的数据来组成一个条码,三个簇的数据量较大,且每个簇中的数据与条空比无共同对应联系,所以就触及把条空比转化成条码数据的问题。本算法选用的解决方案是:用哈希算法来查找:
F=Z×1400+K2×216+T3×36+K4×6+T (2)
式(2)中Z为空1模块数和条2模块数的组合,再运用F的值进行查找,完结数据流的译码。数据流译码不是本文要点,这儿不再具体论述。
3 体系软件规划
体系软件是在Nios II的μC/OSII操作体系下进行C言语编程的。体系初始化首要包含对收集芯片、射频传输操控模块、网络接口的初始化,整个体系动态扫描条码图画和实时译码。体系首要流程如图9所示。其间,体系初始化时运用函数IOWR(SIGNAL_CAP_O_BASE,O,1)将收集模块大局信号复位,然后运用函数alt_irq_register。(SIGNAL_CAP_0_IRQ,NULL,sig_cap_irq_proc)来树立一个用户中止程序,对按键中止呼应进入中止服务程序sig_cap_irq_proc,向摄像头发送收集指令。当收集模块完结一幅条码图画收集后,发生一个硬件中止,将标志FLAG置1。当主循环程序判别FLAG为1时,就能够从外扩的SRAM中将图画数据读入SDRAM中,接着进行图画预处理和译码,其间包含用自界说用户指令和硬件模块完结的一些运算量大的部分。射频传输与NiosII的PIO口相连,经过函数IOWR_ALTERA_AVALON_PIO_DA_TA来完结。
4 试验与剖析
本辨认体系作业频率为100 MHz,图画采样分辨率为320×240,一幅条码图画辨认时刻为60 ms。本体系有如下几个特色:
①运用PDF417码自身的特色来定位切割条码,与传统的条码定位切割算法比较,大大进步了条码辨认速率。传统二维条码定位切割多选用Hough改换来确认条码歪斜视点,不能满意手持式嵌入式条码识读器的实时性要求。
②在FPGA中嵌入NioslI软核处理器,简化硬件规划,一起使体系愈加安稳。FPGA的可重装备以及SOPC的可削减使体系具有很高的资源运用率,并且便利晋级和保护。
③运用自界说模块、自界说指令、C2H硬件加快等办法刮对部分耗时算法进行优化,大大进步了整个体系辨认速率。
笔者针对不同环境下收集的300幅条码图画进行了三次测验:第一次是在条码无破损的情况下,第2次是在条码有5%破损和污染的情况下,第三次随机辨认100幅条码。本文所选用的算法均匀辨认率达96.7%,耗时60ms,如表1所列。
结 语
二维条形码诞生后,条码技能的应用范畴愈加广泛,不只应用于物流运送,还渗透到出产、日子的各个范畴。本文介绍了一种依据SOPC的二维条码辨认体系的规划,提出了一种软硬件归纳的解决方案,因为触及底层的硬件体系规划和相应的软件规划,在体系功用优化方面有着很大的空间。
责任编辑:gt