基于SOPC 二维条形码识别系统设计与实现
2013-12-21于彦峰任全会
于彦峰 ,任全会
(郑州铁路职业技术学院,河南 郑州450052)
二维条形码是一种新的信息存储和传递技术,目前在公共安全、国防、政府管理、金融、交通、医疗、海关及相关工业商业领域得到了广泛应用。当前二维条码采用的技术标准为PDF417,该标准具有早期编码技术所不备的优点,如增强了防伪保密性能,成本低廉,不依赖网络和数据库,随载体移动等。传统的识别技术都是利用单片机和分立元件实现的,有统识别速度慢、电路复杂的缺点[1]。本系统基于SOPC 二维条形码识别设计,充分利用片内资源,能够很好的克服传统识别系统的缺点。
1 系统硬件设计
1.1 系统整体架构
该系统在设计时围绕在完全脱离后台数据库时,能够进行识别的高效率这样一个基本点进行。系统通过SOPC 技术来实现二维条码识别器。系统总体结构如图1 所示。
图1 系统总体机构框图
1.2 SOPC 系统模块
在QuartusⅡ和SOPC Builder 环境下完成SOPC 系统的定制。系统芯片采用Altera 公司的CycloneⅡ系列EP2C35 型FPGA。在实现识别的功能时,通过在软核NiosⅡ处理器编写程序并且运行,可以加速硬件模块的运行。
图2 SOPC 结构原理图
整个系统组成分3 层,分别为条码译码的核心算法、操作系统和硬件平台。核心算法主要实现对条码信息的处理和数据纠错,操作系统采用QuartusⅡ操作系统,该操作系统作为系统平台,当前能相对地提高整体系统性能[2-3]。硬件平台采用CyloneⅡEP2C35、ADV7181B、相关存储器以及外部设备。
1.3 图像采集子系统
图像信号的数模转换由解码芯片ADV7181B 完成,FPGA 中的I2C 模块主要功能的实现是通过配置ADV7181B 来实现,ADV7181B 接受I2C 总线传过来的数据对芯片以及寄存器实现初始化配置。T_DA是数据信号,TD_VS 是场同步信号,TD_HS 是行同步信号。具体的结构如图3 所示。
图3 图像采集子系统框图
系统设计采用两个行缓存来进行乒乓切换,因为图像数据采用乒乓缓存的方式存入SRAM,这样就能避免由于写出速度过快而写入速度相对较慢而导致的错误。
1.4 SOPC 系统内部接口设计
SOPC 系统内部要求不但要同步接收前端A/D采集的数据,而且还必须把采集的数据低通滤波处理。最后转换成链路口模式数据和总线模式数据。还要求模拟设计SPI 端口完成时钟器件的初始化配置。所以前端AD 接口采用4 路同步锁存模式进行设计,同步接收时钟为250 MHz,上下沿触发,每路数据位宽为20 bit,将每路低位补零处理后拼成128 bit 数据[4],SOPC 系统各接口设计如图4 所示。
图4 SOPC 系统内部接口设计
2 核心算法
对二维条码的识别译码工作主要分3 步,即对二维条码进行动态二值化,对二维条码进行定位确认、角度确认和边界确认,通过边缘检测进行纠错解码。
2.1 二维条码的定位确认
通常我们在采集二维条码的时候经常会出现条码倾斜的现象,如图5 所示。所以二维条码的定位非常的重要,本系统实现是通过条码起始头标准规定的黑白条空比来定位的,在国标中,PDF417 二维条码的起始符黑白条空比定义为81111113,终止符黑白条空比定义为711311121。通过对每一行图像的扫描,分别去对应匹配起始符和终止符的黑白条空比。黑白条空比例的误差只要不超过3 位,都认为符合比例。4 个控制点a、b、c、d 符合条空比比例条码线段,e、f、g、h 4 个控制点符合终止符条空比的条码线段。相邻边角度为90°,误差角度小于2°,平行边的长度误差小于5 个像素点是判断控制点是否正确的标准[5-6]。
图5 起始点和终止点的确定
2.2 二维条码的行边界确认
PDF417 标准里所规定的二维条码是行式条码,如要识别每一行的条码码字则须先确认条码的行数,之后则对每一行进行处理。系统首先采用Sobel算子对条码进行水平边缘的检测,检测之后再向水平方向进行投影。
现设p(x)为应投影的峰值,对检测之后得到的每个投影峰值相对p(x)分别求出差值Δp(x),然后进行分别判定。判定标准为连续两个差值,前一个为正,后一个为0 或者为负。噪声点一般会出现在层与层的连接处,故为提高精确度,图像扫描取值选择每一层条码的中央位置[7-8]。
2.3 二维条码的码字确认
行边界确认之后,就可得到条空的像素个数,分别记为{N1,N2,…,N7,N8},条和空的总模块数是17,然后根据式(1)
可计算出,条模块数集合{T1,T2,T3,T4}和空模块数集合{K1,K2,K3,K4}。3 个簇的数据可以组成PDF417 条码的其中一个条码,用哈希算法来查找法把条空比转换成条码数据的问题可以解决3 个簇的数据总量太大,而且每个簇中的数据无法与条空比一致对应的问题。
式(2)中A 是条模块数和空模块数的组合,最后通过公式计算出F 值,通过对F 值的查找来实现数据流的译码。
3 系统软件设计
图6 系统软件流程图
系统流程图如图6 所示。首先对扫描硬件如扫描处理芯片,射频控制芯片和通信接口等进行初始化,然后对二维条码图像进行动态地扫描和实时的译码。利用函数把采集模块上的全局信号进行复位,中断服务程序向摄像头发送扫描指令,当一幅二维条码图像采集完成后,即产生一个硬件中断,则把标志位设置为1,然后把图像数据送入SDRAM 中进行图像预处理和译码。
4 测试结果和结论
4.1 测试结果
在不同环境分别对300 个二维条码图像进行采集测试,共进行了3 次测试:第1 次是在二维条码完整的情况下进行测试,第2 次是对有5%破损和污染的条码进行测试,第3 次随机对100 个条码进行测试。测试结果如表1 所示,结果表明本系统平均识别率达97.7%,耗时60 ms。
表1 系统实际测试结果
4.2 结论
本二维条码识别系统的核心工作频率是100 MHz,分辨率是320×240,识别每个二维条码图像所需要时间是60 ms。本系统具有如下优点:一是充分利用PDF417 码的优点进行分割条码,与传统分割法相比可以大大提高条码识别速度。二是通过利用NioslI 软核处理器,简化了设计电路,增强了系统稳定性。采用FPGA 和SOPC 的可操作性,提高了系统资源利用率,且便于维护和升级;三是采用新的模块、指令和C2H 硬件加速等方法对算法进行了优化,进一步提高整个系统的识别速度。
[1] 钟荣峯.物联网:整合感知层的动态网缝[J]. 集成电路应用,2011(5):8-10.
[2] 席忠红,李海翼. 光谱仪CCD 数据采集中SOPC 系统设计及USB2.0 IP 核的实现[J].电子器件,2011,34(6):700-704.
[3] 胡向峰,王黎明.基于SOPC 技术的高速数据采集系统的设计[J].微电子学与计算机,2009,26(6):62-65.
[4] 崔更申,黄廷辉.基于嵌入式的Zigbee 无线条码扫描仪系统的设计[J].电子器件,2007,30(5):1971-1974.
[5] 邹雄,何翠群,刘国栋,等.一种快速响应码的图像二值化方法[J].传感技术学报,2010,23(9):765-769.
[6] 赵擎天,尉广军,姚义.基于SOPC 的多路并行同步数字信号采集系统设计[J].军械工程学院学报,2011,23(3):60-65.
[7] 尚媛园,杨新华,徐达伟,等.基于SOPC 技术的高速图像采集控制系统的设计与研究[J].传感技术学报,2011,23(6):864-869.
[8] 黄云,杨尊先.基于SOPC 的数据采集与处理系统设计[J].电子器件,2010,33(1):67-70.