当前位置:首页 > 测试测量 > 测试测量
[导读]0 引 言 自动化数据采集技术是信息采集和处理的关键技术,条码技术在自动化数据采集中占重要地位,得到了广泛的应用。但是普遍的条码阅读器是基于激光扫描或者CCD摄像头的,在生活中不是很常见。如果条码识读


0 引 言
    自动化数据采集技术是信息采集和处理的关键技术,条码技术在自动化数据采集中占重要地位,得到了广泛的应用。但是普遍的条码阅读器是基于激光扫描或者CCD摄像头的,在生活中不是很常见。如果条码识读能用普通的摄像头(如:手机摄像头或网络摄像头),条码将会给人们的日常生活带来更多的方便。近来手机和机器人的应用得到很大发展,手机的一维码识别、机器人的一维码识别、自动分拣物品等都有着很好的应用前景。为了拓宽一维码的应用,基于图像处理的一维条码研究有着重要意义。
    在最近几年关于一维码图像识别的识别文章中,都是针对比较理想的条码进行识别的,或者只是讲解一维条码图像识别的某一个步骤,或者是人为地加上部分噪声进行处理,很少有从一幅真正拍摄的图像来识读的。这里完成了整个条码识别系统的设计和图像处理的算法设计,实现了图像的录入到译出条码的整个过程,并通过实验详细阐述了识别流程和效果。


1 EAN—13码特征
    EAN一13是标准商品条码,它是一种(7,2)码,即每个字符的总宽度为7个模块,由两个条和两个空交替组成,而每个条空的宽度不超过4个模块。EAN一13商品条码由左侧空白区,起始符、左侧数据符、中间分隔符、右侧数据符、、终止符、校验符、右侧空白区组成,如图1所示。EAN一13码包含13个字符,但只对12个字符进行编码,其第13位(从右向左排序)不进行编码,数值隐含在左侧数据符的奇偶排列中,称为前置符。奇偶性指的是每个字符所含条的模块数为奇数或者偶数,左侧数据符为奇、偶排列,右侧数据符为偶排列,左边的码字组成方式是“空条空条”,右边的码字组成方式是“条空条空”。

    由EAN一13条码的结构知:左侧空白区为11个模块,起始符为3个模块(3个条空),左侧数据符为42个模块(24个条空),中间分隔符为5个模块(5个条空),右侧数据符为35个模块(20个条空),检校符为7个模块(4个条空),终止符为3个模块(3个条空),右侧空白区为7个模块,整个编码区的模块数为3+42+5+35+7+3=95个,条空数为3+24+5+20+4+3=59个。若将黑色模块(条)用二进制的“1”表示,白色模块(空)用二进制的“0”表示,则数据字符的编码图案有30种,如表1所示。且有如下编码:起始符:101中间分隔符010110,终止符101。

    如何确定数字字符是属于A子集,B子集或者C子集。EAN一13码左侧数据符由A,B子集确定,取决于前置符,右侧数据符属于C子集。前置码和左侧数据符商品条码字符集的选用规则如表2所示。

2 条码识别
    在条码识别的整个过程中,都是基于以下假设:所处理的图像正中肯定是包含条码部分的,这样可以很好地减少计算量。条码识别系统分为三个模块:图像预处理、图像提取、译码。如图2所示。

    图像预处理是利用一维条码的特征对条码执行灰度化,二值化,滤波和边缘检测操作。它为后续的图像提取做好准备,图像预处理做得越好,图像提取效果将更加明显。
    图像提取是对预处理的图像进行分割,分为上下分割和左右分割,在各种背景中分割出条码区域,图像提取的取决于是否能精确地分割出条码区域。由于一维条码是并行长条的,每一条行扫描线都包行了条码的所有信息,最简单的方法是只要在条码图上确定一根行扫描线,逐个像素判断,黑的为1,白的为0,计入数组,然后计算宽度就能解码,这是针对完全干净的条码图的。实际应用的条码图像会有很多噪声,同时条码区域也不可能完全干净,因此需要尽量分割出条码的大部分区域给后续的解码提供更多的信息,上下分割中把沿条码方向的部分条码分割出来,左右分割需把条码的编码区全部包含在内。
    译码是对提取后的条码区进行处理,计算出条码中各个条空的宽度,根据一维码的编码规则,解出条码所含的信息。
2.1 图像预处理
2.1.1 灰度化二值化
    灰度处理,为实现数字图像的阈值变换提供前提条件,要将256色位图转变为灰度图,灰度与RGB值之间的关系为:Y=0.299R+0.587G+O.114B。
    二值化是利用点运算中的阈值变换理论将灰度图转化为二值图像。二值化中阈值T的选择是关键,在整幅图中,我们最关心的是条码,条码是由条空(黑白)组成的,根据前面的假设,在整幅图的中心区域选取50×50个像素点,对其进行灰度处理并得到灰度直方图,采用双峰法得到阈值T,此阈值可以有效地把条码的条空区分出来。按照下式得到二值化图像g(x,y)。

   
2.1.2 滤波
    由于原图像各部分亮度不均,背景图像有不同的情况,得到的二值图会有很多噪声,条码区域有,条码区域外也有,为了后续部分的条码提取和条码译码,需要进行滤波处理。考虑到一维条码的特征:竖直的条和空,采用中值滤波方法,中值滤波模板如图3所示。被圈部分表示模板遍历整幅图时,所对应待检像素的位置。取待滤波像素上下相邻的4个像素值,共5个像素值进行排序,用中间值覆盖待滤波的像素值。此模块能有效地滤除条码区的椒盐噪声,背景区的噪声能得到很大抑制。此模块是根据一维码的特征设计,可以适合各种一维码。
2.1.3 边缘检测
    常用的边缘检测算法有梯度算法、Roberts梯度法、Sobel算法和Laplaceian算法等,在充分研究一维条码的特征后,借鉴各种检测算法,在此自行设计了一种滤波算法。由于设计实验时采用的是640×480或320×240的图像,假设条码占整个图像的50 %以上,根据图2可以算出每个模块占的像素值为3到4个或l到2个,如果采用3×3或5×5之类的边缘检测模板,加上图像原本的变形,将会误检边缘或边缘丢失,同时考虑到一维条码的特征:竖直的条和空,有明显的竖直边缘,因此设计了竖直边缘检测算法,边缘检测模板如图4所示。

    待检像素的值由其邻域内10个像素的值决定,这10个值按模板中的权值相加的绝对值为s(x,y)。由于进行边缘检测的图像是二值图,非黑(0)即白(255),设定边缘检测的阈值T1=255×4=1 020,即邻域内至少有4处黑白突变才能说明待检像素为一边缘值,按照下式得到边缘检测图像h(x,y)。


   
2.2 图像提取
    图像提取是把图像中的条码部分割出来,用于后续的条码译码。图像提取的步骤分为:上下分割和左右分割。根据条码的特征,分别设计了上下分割和左右分割的算法。
2.2.1 上下分割
    基于前文的假设,设计了如下分割算法,上下分割的流程如图5(a)所示,此流程的设计应用了条码的两个特征:条空数为59个,即边缘数为60个;条码的上下部分都有空白区。当然一般情况下,条码区域所在行肯定还会存在噪声,因此边缘数是肯定大于60的,而在条码上下的空白区所在行经过图像预处理基本没多少噪声,边缘数基本不会大于60,通过对100幅图像的试验只有背景很复杂的2幅图例外。但是没分割出来不代表没译码出来,后面译码部分对分割有补充修正。根据各种图像的不同,上下分割不会把整个条码区域分割出来,但分割出来的图像信息足以用来解码。上下分割可以去除图像中上下部分的非条码区同时为译码减少了计算量。

2.2.2 左右分割
    左右分割是在行方向把条码分割出来,流程如图5(b)所示,此流程的设计应用了条码的两个特征:
    (1)条码的左侧空白区有11个模块,右侧空白区有7个模块;
    (2)条码的起始符为101,结束符为101。
    当然图像一般都会有倾斜,这样按照x1,x2分割时会把条码区域有用信息分割掉,因此可以加一个经验修正,把x1向左移一点,把x2向右移一点。
    在检测101和计算一个模块的长度时,都是通过边缘间的距离计算的,由于图像有变形和扭曲,因此计算长度是要用平均值和比值。
    设连续3个边缘的距离为L1,L2,L3,当0.5<L2/L1<1.5且0.5<L3/L2<1.5时,认为检测到101,且以a=(L1+L2+L3)/3为一个模块的长度。按上假设在条码中满足101情况很多,但是同时满足101两侧有固定空白模块数的就是惟一的。逐行扫描采用的是从中间行开始分别往上和往下扫描,这样对于有倾斜的条码图像也能分割出部分有用条码信息,而不需要用hough变换和双线性差值来对条码图像进行矫正,减少了处理时间。得到x1,x2,y1,y2之后就能把条码分割出来进行译码。
2.3 译码
    译码过程通过对分割后的二值图进行处理,得到条空的宽度,按照条码的编码方式,译出条码结果。译码步骤如下:
    (1)对二值图进行逐行扫描,检测边缘数是否为60(EAN-13码有59条空,60个边缘),是则记录下边缘坐标,否则把这行舍弃;
    (2)根据每行的边缘坐标,算出每个条空的宽度:为了减小图像中的条码扭曲及其他干扰的影响,计算条空宽度的平均值;
    (3)按照如下归一化方法确定条空归一化宽度。设一个字符(7个模块)的宽度为W,条空的平均宽度为Wa,则条空的归一化结果Wg由下式确定:
   
    (4)根据条码左侧数据区的奇偶性确定前置码,如表1所示;
    (5)根据前置码确定左侧数据区的字符集,右侧字符集为C;
    (6)根据数据区条码的归一化宽度,查找字符集,根据表2得出条码值,译码完成;
    (7)检校。
    此译码流程不仅按照编码标准快速有效的译出了条码,同时也起到了滤波作用,把有噪声的行全部滤除,完成精确解码。按照上述条码识别的步骤和算法,用Visual C++编写了程序。图6展示从一幅带有条码的RGB图到译码的全部过程。

3 结语
    对100幅640 x 320图像进行实验,解码率达100%,可以说本文的算法和译码步骤有着很好的可靠性,对适当扭曲和污染并有复杂背景的条码图有着较好的抗干扰性。在此通过对EAN-13码特征的分析和掌握,设计了滤波模板,边缘检测模板和图像提取算法,并实现了EAN-13码的译码系统,通过实验详细描述了整个解码过程。此识别系统有以下特点:充分考虑了EAN-13码的特点,设计了适合该条码的算法,识读准确率高,速度快;此系统架构和算法可以很快的应用于其他一维码的图像识别中;可以很容易的移植到带有CMOS摄像头的各个平台,实现基于EAN-13码的各种应用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能

武汉2024年5月15日 /美通社/ -- 北京时间4月26日-5月4日,2024 VEX 机器人世界锦标赛于美国得克萨斯州达拉斯市举办。本届 VEX 世锦赛为期九天,设有 VIQRC 小学组/初中组、V5RC 初中组/...

关键字: 机器人 BSP RC POWERED

上海2024年5月15日 /美通社/ -- 由生成式人工智能(AI)驱动的临床阶段生物医药科技公司英矽智能宣布,与复星医药(600196.SH;02196.HK)合作开发的潜在"全球首创"候选药物IS...

关键字: ISM BSP PC 人工智能

上海2024年5月13日 /美通社/ -- 5月8日,浦东新区国资委组织陆家嘴集团等9家区属企业与立邦中国召开合作交流会,旨在贯彻落实浦东新区区委、区政府工作要求,进一步放大进博会溢出带动效应,持续扩大区属企业与进博会重...

关键字: BSP 数字化 自动化立体仓库 智慧园区

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

北京2024年5月13日 /美通社/ -- 5月11日,鲲鹏昇腾开发者大会2024期间,华为举办"昇思AI框架及大模型技术论坛",软通动力数字基础设施与集成事业部总经理谢睿受邀出席、软通动力...

关键字: AI 模型 BSP 精度
关闭
关闭