基于嵌入式Linux系统的条码识别器的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东莞理工学院学报 V(>1.26 No .(JOURNAL OF DONGGUAN UNIVERSITY OF TECHNOLOGY Feb. 2019第26卷第1期2019年2月基于嵌入式Linux 系统的条码识别器的设计与实现
刘智皓林盛鑫* *庄泽杰
收稿日期:2018 -07 -11
基金项目:2017大学生创新创业训练计划项目(201711819062); 2017东莞市社会科技发展项目(2017507140054)
作者简介:刘智皓(1997—),男,广东揭西人,主要从事Linux 嵌入式开发研究。
Email : 945143497@qq. com 。
*通讯作者:林盛鑫(1979—),男.广东潮阳人,工程师.主要从事机器视觉与工业自动化研究Email : iven0@ qq. corn.
(东莞理工学院电子工程与智能化学院,广东东莞523808)
摘要:研制一款基于异构多核的图像型条码识读器,集成了光源、镜头、CCD 图像采集、FPGA 逻辑管
理、ARM 处理器、读码算法和通信等功能的嵌入式图像处理系统.通过图像采集装置采集复杂背景下的条码
图像,然后利用嵌入式的机器视觉处理技术进行任意方向的多个条码区域自动定位和识别,具体包括图像预
处理(含去噪、图像分割)、条码定位、条码旋转、条码解析等过程,有效提高条码读取效率:
关键词:Zynq; Linux ;图像处理;多条码
中图分类号:TP39 文献标志码:A 文章编号:1009 - 0312 ( 2019 ) 01 -0006 - 05
条码是一种经济实用的身份认证标识,可用于物品的身份识别和数据的快速采集,在商业、物流及 票证等领域有着广泛的应用。
我国工业经济的快速发展对生产流通领域物品的管理提岀了更高的要求, 近年来,条码技术在工业生产中的作用也愈发地显著⑴。
在劳动力成本和工业自动化程度不断提高的 大背景下,传统条码识别器对条码的方向性和条码质量有苛刻的要求,且大多读码器都只能读取单一的 固定位置条码,且对一行多个条码的研究鲜有研究。
为了解决以上问题,采用基于机器视觉的方法来实 现对标签上任意区域的多方位多条形码进行自动定位。
重点研究多条码的矫正问题、单标签多条码、一 行多条码、条码部分缺失、条码模糊、条码污渍等情况下条形码识别问题,提岀一种基于直线灰度值累 加处理的区域定位方法,根据图像归一化互相关算法确定条码存在的行坐标,获取每行中心线坐标,最 后根据中心直线灰度值曲线分布,分析条码边界,确定每行存在的条码数,最终实现对所有条码区别的 定位。
对摄像机采集到的标签进行预处理、二值化、倾斜矫正、条码定位和识别等一系列操作,不仅适 用于一维条码也适用于二维条码,且对条码质量要求不高,对条码倾斜、单标签多条码、一行多条码、 条码部分缺失、条码模糊、条码污渍等都可以得到较满意的识别效果。
基于此,结合“工业4.0”的理 念,研制一款能满足大数据的实时采集与处理,有效地降低嵌入式系统开发成本,具有功耗低、风险 低、设计灵活等特点的条码识别器力。
1系统设计
当检测模块检测到有图像通过摄像头,通过摄像头模块获取图像信息,通过数据传输模块进入到图 像储存模块,再由处理模块调取图像信息,经过算法处理,最终,条码数据通过显示模块在显示屏中显 示出来。
具体步骤:首先,编写0V 系列摄像头驱动,并在Vivado 平台上搭建一个系统,该系统主要用 于获取摄像头数据,显示图像。
然后,在SDK 平台操作,剪裁出条码区域,对条码图像进行灰度化、 滤波、二值化等处理,最终,识别条码,获取其包含的信息⑶。
2硬件系统
开发板采用ZYNQ-7000,型号为MIZ-702。
该开发板是一款高性能SOC 开发板,采用了美国XIL-
第1期刘智皓,等:基于嵌入式Linux系统的条码识别器的设计与实现7
图1系统框架
INX公司开发的XC7Z020CLG484作为CPU,硬件设计方案参考了安富利公司的Zedboard,最大程度实现了软件和硬件的兼容。
它具有ARM Cortex-A9双核,包含512MB内存、外部存储器接口和一套丰富的I/O外设丸。
利用摄像头采样图像数据后,通过DMA送入到DDR,在PS部分产生VDMA接收中断,在接收中断里面再把DDR里面保持的图形数据DMA读取出来进行操作:
摄像头接口采集的摄像头数据,进过vid in视频输入IP后,还需要通过用户FPGA逻辑编程与VD-MA IP之间实现握手协议,实现将数据通过VDMA写入DDR。
每次写入一副图像的数据后,产生一次接收中断.接收中断函数,会把数据缓存后,读取到ps的linux部分中申请的内存空间进行数据的提取,操作和计算。
3Linux系统应用程序开发
首先,对uboot进行配置,然后编译命令工具,接着,用脚本和图形化界面配置内核,编译内核,生成镜像文件;编译uboot,生成u-boot.elf,与system_wrapper,bit,fsbl.elf—起合成BOOT,bin;最终,插入SD卡,并烧入系统⑸,即完成Linux系统的移植。
3.1获取图像阶段
从内存地址中读取图像数据,由于条码是由简单的黑白条组成,彩色没有包含所需要的信息,读取图像后直接将图像转化为8位灰度图,以提高后续图像处理的速度,转化后对图像进行中值滤波处理,
8东莞理工学院学报2019年
图3获取条形码主程序框图
减少噪声的干扰,至此完成图像的获取和简单前期处理工作。
3.2分块扫描阶段
该阶段的目的是快速将图像中大部分不包含条码图案的区域进行剔除掉,仅留下可能包含条码的区域,减少干扰因素,对条码区域进行粗略定位。
先将整个图像划分为M
*N个区域分块,然后分别对每个分块进行判断,若不包含条码图案,则标记该区域,并删除该区域的图像。
1)条码判定算法:条码是由相间的黑白条组成,黑白条之间的过渡会发生明显的灰度变化(即灰度梯度高),根据这一性质,只要在分块中同一方向上检测出一定数量的梯度高的点,即可猜测此处存在条码,反之,若没有大梯度变化,则说明该分块没有条码。
因为不确定条码图案的方向,所以要分别取分块的两条中位线,两条对角线上的像素,进行灰度梯度扫描,当一条线上相邻两个像素的灰度差(即梯度)大于阈值t时,说明此处为黑白分界,若连续检测出3处相反的梯度变化,该分块记为条码区,若4条线均无3次梯度变化,记为非条码区。
2)连通性检查:梯度判定的方法对内容单一的简单图像区域效果明显,但也容易将部分复杂的图像区域误判为条码,为了进一步剔除误判的分块,采用连通性检查。
八连通区域检查,是根据某分块周围3*范围内其他分块的条码分块数是否超过3块,来判断该分块是否为孤立分块,因为条码图案是连续的,若该分块周围没有多少条码分块,则该区域为条码的可能性较小,作为误判处理,剔除掉。
3.3条码定位阶段
该阶段开始对条码的位置进行精确定位,定位后进行条码识别,获得条码值。
1)查找轮廓。
第1期刘智皓.等:基于嵌入式Linux系统的条码识别器的设计与实现9
分块扫描阶段已经将大部分非条码区域剔除,余下的包含条码的区域都是互相隔离的大型分块,通过查找轮廓,获得这些大型分块的位置和大小,接下来对逐个轮廓进行处理.直到所有轮廓都处理完,该图像处理完成后,输出所有识别结果,重头开始读取下一帧图像。
2)获取单个轮廓图像。
根据轮廓的位置和大小,取该轮廓的最大外包矩形范围内所在的图像,接下来做定位处理。
3)角点检测。
角点检测,即检测出图像中的角的位置,在灰度图中,角的特征之一是向任意方向移动都会发生较大的灰度变化,Harris角点检测法便是基于该特征。
条码的黑条近似矩形,存在四个角点,较窄的黑条近视线条,存在两个角点,获取到条码的所有黑条角点,可定位出条码的上下边界。
4)直线检测。
直线检测,即找出图像中所有直线线条,采用霍夫直线检测,可得到由角点拟合而成的直线,也就是条码的上下边界⑹。
5)旋转图像。
该项目需要处理的多条码图像,条码方向是统一的,因此只要知道一个条码的倾斜角,也就知道其他所有条码的倾斜角。
通过直线检测,可以获得条码上下边界的直线,计算直线的斜率,算出条码的倾斜角,并根据倾斜角对轮廓图进行中心旋转,校正条码方向。
6)直线简并。
将直线检测后重叠的直线和靠近的宜线简并为一条直线,减少直线数量。
7)条码左右边界定位。
采用修改的Bernsen二值法(对打光不均匀的图像效果较好)将图像变为黑白图,再进行霍夫直线检测,取中位线上的像素,统计黑白边缘的直线的数量和距离,以此判断条码的左右边界丁。
4测试结果
调用zl)ar库对定位的条码进行识别,并输出结果。
图4条码测试结果
显然,条码识别成功。
为了验证算法的有效性和准确性,采集500张多条码图像进行测试,实验机器配置:WIN764位、Corei5、CPU1.70GHz、内存8GB。
测试发现,该算法可以较为有效地减少背景干扰,在较为复杂的背
10东莞理工学院学报2019年
景下和光照稍微不均匀的情况下,算法仍可以检测岀条码。
对于分辨率2592x1944的图像,平均处理速度为2.23幅/s,根据图像上条码的数量,处理时间略有差异。
识别率为92.4%,部分条码无法识别的原因包括光照严重不均匀,以及条码本身质量不佳,缺损等。
5结语
项目采用异构多核架构,满足大数据的实时采集与处理,有效地降低嵌入式系统开发成本,具有功耗低、风险低、设计灵活等特点;对异构多核处理系统进行内部软硬件协同设计.运用高层次综合工具(Vivado HLS),有效地提高数据的吞吐率,实现数据高速采集与处理⑻;同时,基于灰度差值及互相关算法的线检测方法对条码特征进行提取,使得条码识别算法在复杂环境下识别出任意区域的多个条码的位置,实现任意方向多条码的自动化识别。
移植计算机视觉算法于嵌入式系统,实现任意区域任意方向多条码的智能快速识别。
参考文献
[1]杨帆、帅立国、何军•金相条码及检测方法研究〔J].电子元器件与信息技术,2017.1(1):30-37.
[2]刘兵,刘晓明,曾翔亮•基于条码识别技术的智能购物车设计[J].森林工程,2012,28(6):32-35.
[3]郭艳平,周海彬•数字图像处理技术在条码识别中的应用〔J].河海大学常州分校学报,2002,16(3):15-18.
[4]李正轩,费树岷•基于Zynq_7000FPGA的高速信号采集处理平台[J]•单片机与嵌入式系统应用,2016(2)=44-47.
[5]路青起,席丹丹.嵌入式Linux系统的移植[J].国外电子测量技术,2014,33(12)=78-81.
[6]田文利•基于霍夫直线检测与二维透视变换的图像校正恢复算法[J].电子测量技术,2017,40(9):128-131.
[7]王霞玲,吕岳,文颖•复杂背景和非均匀光照环境下的条码自动定位和识别[J].智能系统学报,2010,5(1):35-40.
[8]党宏社,王黎,王晓倩.基于Vivado HLS的FPGA开发与应用研究[J]•陕西科技大学学报,2015.33(1):155-159.
Design and Implementation of Bar Code Recognizer
Based on Embedded Linux System
*ZHUANG Zejie
LIU Zhihao LIN Shengxin
(School of Electrical Engineering&Intelligentization,Dongguaii University of Technology,Dongguan532808,China) Abstract To develop an image-type code reader based on heterogeneous core,integrated light source,lens,CCD image collection,FPGA logic management,ARM processor,reading code,and the embedded image processing system with the function of the signal.Through image acquisition device barcode image acquisition under complicated background,and then using the embedded machine vision processing technology of arbitrary direction automatically locate and identify multiple barcode area,including image preprocessing,denoising,image segmentation),barcode location,rotation,and bar code parsing process,effectively improve the efficiency of barcode reading.
Key words Zynq;Linux;image processing;more barcode。