一种判断条码类型的方法

文档序号:10489316阅读:359来源:国知局
一种判断条码类型的方法
【专利摘要】一种判断条码类型的方法,包括以下步骤:1)条码图像定位,获得条码的倾斜方向与分布区域;2)条码图像采样:沿着条码的倾斜方向获取一条条码数据,并分别按照不同阈值的二值化、不同长度的数据拉伸和基于波峰波谷的不同阈值下的采样方法,获取多组采样数据;3)采样数据类型判断;4)继续获取下一条条码数据,并进行采样和类型判断即循环进行步骤2)和步骤3),直到所有的前景区域的条码数据均判断完毕;5)统计在整个扫描过程中,每种条码类型出现的次数并将出现频率最高的条码类型作为整幅图像的条码类型;6)根据获取到的条码类型进行条码识别并输出识别结果。本发明提供了一种准确判断条码类型的方法。
【专利说明】
一种判断条码类型的方法
技术领域
[0001 ]本发明属于条码识别技术领域,涉及一种判断条码类型的方法。
【背景技术】
[0002]条码识别技术是在信息技术和计算机技术基础上发展起来的一门新兴技术,由于其识别快速、准确、可靠和成本低等优点,被广泛应用于各个领域。但是在嵌入式平台上实现的条码图像识别技术,需要同时识别多种不同种类的条码,但现在还未找到有效的判断条码类型的方法,于是就出现了以下问题:I)由于不对条码类型进行判断而导致的识别速度下降的问题;2)由于未能准确地对条码类型进行判断而导致的识别性能下降的问题。
[0003]现有的应用于条码识别模块中的条码类型判断方案描述如下:
方案一:不对条码类型进行判断:对获取到的某幅图像,条码识别模块按一定的顺序进行不同种类的条码识别,若正确识别则返回,否则将分别尝试所有种类的条码识别。显而易见,这种识别方案是十分耗时的,极大地降低了识别速度。
[0004]方案二:该方案的流程图如图1所示,描述如下:
1)对待识别的条码图像进行二值化;
2)取一条二值化后的条码数据,并获得相应的条空宽度信息。然后,将该信息与预设的多种条码类型表进行对比,若找到匹配的条码类型,则继续下面的流程,否则,结束识别;
3)根据匹配的条空信息,获取其所对应的条码类型;
4)按照获取的条码类型对条码进行识别,并输出识别结果。
[0005]综上所述,在现有的方案中,方案一识别前未进行条码类型的判断,模块需要尝试所有种类的条码识别,识别速度很低;方案二虽然识别前对条码类型进行了判断,但由于仅选取一条条码数据,很容易造成条码类型判断错误,导致识别性能下降。因此,寻找一种可以准确判断条码类型的方法势在必行。

【发明内容】

[0006]为了克服现有条码识别方案无法准确判断条码类型的不足,本发明提供了一种准确判断条码类型的方法。
[0007 ]本发明解决其技术问题所采用的技术方案是:
一种判断条码类型的方法,所述方法包括以下步骤:
1)条码图像定位:首先对图像进行分块,并按照从左至右从上至下的顺序根据方差判断每块图像为前景块还是背景块;然后根据初步背景表,对每块前景块依次计算其梯度场,然后根据梯度场获得条码的倾斜方向与分布区域;
2)条码图像采样:沿着条码的倾斜方向获取一条条码数据,并分别按照不同阈值的二值化、不同长度的数据拉伸和基于波峰波谷的不同阈值下的采样方法,获取多组采样数据;
3)采样数据类型判断:根据获取的一组采样数据得到其对应的条空宽度,并将该条空宽度与每种类型条码的起始符所对应的条空宽度进行对比,若找到匹配的条空宽度,则记录下该组数据所对应的条码类型,否则继续寻找匹配的条空宽度;
继续对下一组采样数据进行判断,直到所有的采样数据均判断完成。
[0008]4)继续获取下一条条码数据,并进行采样和类型判断即循环进行步骤2)和步骤
3),直到所有的前景区域的条码数据均判断完毕;
5)统计在整个扫描过程中,每种条码类型出现的次数并将出现频率最高的条码类型作为整幅图像的条码类型;
6)根据获取到的条码类型进行条码识别并输出识别结果。
[0009]进一步,所述步骤2)中,对条数据两端的数据进行采样。
[0010]再进一步,所述步骤2)中,获得的采样数据包括a)采用不同阈值对图像进行二值化所得到的采样数据;b)将数据拉伸到不同长度所得到的采样数据;c)基于波峰波谷的不同阈值下的采样所得到的采样数据。
[0011]本发明的技术构思为:提出了一种应用于嵌入式领域的条码识别模块中的准确地判断条码类型的方法。该方法采用了以下技术:I)通过图像定位技术,找出条码所在区域;
2)通过条码图像采样技术,对条码数据进行采样,进而获得条码的条空宽度;3)通过扫描多条条码数据,获得每条数据对应的条码类型,最后将出现频率最高的条码类型作为该图像的条码类型。通过以上技术的引入,可以极大地提高嵌入式平台上条码识别的性能和速度。
本发明的有益效果主要表现在:1、准确判断条码类型,提高识别性能;2、根据条码类型进行条码识别,提高识别速度。
【附图说明】
[0012]图1是现有技术中判断条码类型并识别条码的流程图。
[0013]图2是本发明的判断条码类型的方法的流程图。
[0014]图3是商品条码起始符的不意图。
[0015]图4是128条码起始符(startA)的示意图。
[0016]图5是39条码起始符的示意图。
[0017]图6是矩阵25条码起始符的示意图。
【具体实施方式】
[0018]下面结合附图对本发明作进一步描述。
[0019]参照图2?图6,一种判断条码类型的方法,包括以下步骤:
I)条码图像定位:首先对图像进行分块,并按照从左至右从上至下的顺序根据方差判断每块图像为前景块还是背景块。然后根据初步背景表,对每块前景块依次计算其梯度场,然后根据梯度场获得条码的倾斜方向与分布区域。需要特别指出的是这里采集的图像均为通过CMOS图像传感器采集的CMOS图像。
[0020]2)条码图像采样:对条码图像进行采样的目的是获取条空宽度信息,其具体过程描述如下:沿着条码的倾斜方向获取一条条码数据,并分别按照不同阈值的二值化、不同长度的数据拉伸基于波峰波谷的不同阈值下的采样方法,获取多组采样数据。为了提高采样速度,这里仅对条数据两端的数据进行采样。
[0021]3)采样数据类型判断:根据获取的一组采样数据得到其对应的条空宽度,并将该条空宽度与每种类型条码的起始符所对应的条空宽度进行对比,若找到匹配的条空宽度,则记录下该组数据所对应的条码类型,否则继续寻找匹配的条空宽度。继续对下一组采样数据进行判断,直到所有的采样数据均判断完成。
[0022]4)继续获取下一条条码数据,并进行采样和类型判断即循环进行2)和3),直到所有的前景区域的条码数据均判断完毕。
[0023]5)统计在整个扫描过程中,每种条码类型出现的次数并将出现频率最高的条码类型作为整幅图像的条码类型。
[0024]6)根据获取到的条码类型进行条码识别并输出识别结果。
[0025]图像定位技术:首先利用分块方差得到初步背景表,然后对前景区域的每个像素点计算梯度场。根据条码倾斜方向与梯度场的对应关系,得到条码的倾斜方向和可能位置,最后通过寻找连通区域更准确地找到条码所在区域。通过该定位方法不仅可以得到条码所在的位置而且可以得到条码的倾斜方向,为后续的多直线扫描打下良好的基础。
[0026]条码采样技术:本发明采用了多种不同的方法来获取采样数据,每条条码数据均对应多种采样方法,得到多组采样数据。采用这种方式可以尽可能多地获得采样数据以得到更准确的条空信息。获得的采样数据包括a)采用不同阈值对图像进行二值化所得到的采样数据;b)将数据拉伸到不同长度所得到的采样数据;c)基于波峰波谷的不同阈值下的采样方法所得到的采样数据。
[0027]对数据进行基于波峰波谷的不同阈值下的采样,具体描述如下:首先统计数据的直方图,然后寻找波峰波谷,最后设定不同阈值得到不同的采样数据。
[0028]多直线扫描技术:首先沿着条码的倾斜方向对条码图像进行扫描以获取一条条码数据,对条码图像数据进行采样,根据采样数据得到相应的条空宽度。将该条空宽度与每种条码的起始符所对应的条空宽度进行对比,若找到相匹配的条空宽度,则记录该条数据对应的条码类型,否则继续寻找,直到满足一定条件时则不再寻找。继续扫描,得到下一条条码数据,记录其对应的条码类型。当扫描的直线条数满足一定的阈值时,停止扫描。最后,统计每种条码类型出现的次数,并将出现概率最高的条码类型作为整个图像的条码类型。几种常见的条码的起始符如图3?图6所示。
[0029]图3所示为商品条码起始符,它由3个条空组成,每个条空的宽度均为I。
[0030]图4所示为128条码起始符(startA),它由6个条空组成,每个条空的宽度依次为211412ο
[0031]图5所示为39条码起始符,它由9个条空组成,其中包括3个宽单元和6个窄单元。
[0032]图6所示为矩阵25条码起始符,它由5个条空组成,其中包括I个宽单元和4个窄单
J L ο
[0033]实例:以区分商品条码和39条码为例对上述方法进一步进行介绍,其具体过程可以归纳如下:
I)采集一幅商品条码图像或39条码图像,并对该图像进行定位,将背景区域剔除,防止产生干扰条空,影响条码类型的判断。
[0034]2)获取一条条码数据并对该数据进行采样,以获取相应的条空比例信息。为了更准确地判断条码类型,这里将通过不同的处理得到多组采样数据。
[0035]3)取一组采样数据,若找到一组条空数据比例满足商品条码的起始符比例即条1:空1:条1(具体见商品条码起始符示例),则记录该组数据对应的条码类型为商品条码;若找到一组条空数据比例满足39条码的起始符比例即窄条:宽空:窄条:窄空:宽条:窄空:宽条:窄空:窄条(宽单元一般为窄单元的2?3倍,具体见39条码起始符示例),则记录该组数据对应的条码类型为39条码;若遍历整组采样数据,均未找到匹配的起始符,则不记录。判断完一组采样数据,继续判断下一组采样数据,并将相应条码类型的统计数目加一,直到所有的数据均判断完毕。
[0036]4)继续获取下一条条码数据并采样,然后进行条码类型判断。即循环进行2)和3)直到所有条码数据均采样并完成类型判断。
[0037]5)比较在整个条码图像数据判断过程中,判断为商品条码的次数和判断为39条码的次数,如果,判断为商品条码的次数大于判断为39条码的次数,则判定该条码的类型为商品条码,否则判定该条码类型为39条码。
[0038]6)若判定该条码类型为商品条码,则按照商品条码的解码方法进行解码;若判定该条码类型为39条码则按照39条码的解码方法进行解码。
[0039]在嵌入式领域的条码识别模块中,本方案的独特优势可以总结为:
I)可以准确地判断条码类型,模块可以调用相应的识别算法而不用逐一尝试,大大提高了条码识别模块的识别速度。
[0040]2)相较于仅利用一条条码数据来判断条码类型的方法,本方法利用了多条条码数据进行判断,避免了由于某条数据不完整或污损而导致的类型判断错误,正确率大大提高,从而提高了条码识别模块的识别性能。
[0041]本发明所提出的一种判断条码类型的方法特别适合应用于嵌入式领域的条码识别模块,但并不仅限于条码识别模块,任何具有条码识别功能的模块均适用。因此需要应用识别模块进行条码识别的场合,本发明所提出的技术都适用,可见本发明有很广阔的应用前景。
【主权项】
1.一种判断条码类型的方法,其特征在于:所述方法包括以下步骤: 1)条码图像定位:首先对图像进行分块,并按照从左至右从上至下的顺序根据方差判断每块图像为前景块还是背景块;然后根据初步背景表,对每块前景块依次计算其梯度场,然后根据梯度场获得条码的倾斜方向与分布区域; 2)条码图像采样:沿着条码的倾斜方向获取一条条码数据,并分别按照不同阈值的二值化、不同长度的数据拉伸和基于波峰波谷的不同阈值下的采样方法,获取多组采样数据; 3)采样数据类型判断:根据获取的一组采样数据得到其对应的条空宽度,并将该条空宽度与每种类型条码的起始符所对应的条空宽度进行对比,若找到匹配的条空宽度,则记录下该组数据所对应的条码类型,否则继续寻找匹配的条空宽度; 继续对下一组采样数据进行判断,直到所有的采样数据均判断完成; 4)继续获取下一条条码数据,并进行采样和类型判断即循环进行步骤2)和步骤3),直到所有的前景区域的条码数据均判断完毕; 5)统计在整个扫描过程中,每种条码类型出现的次数并将出现频率最高的条码类型作为整幅图像的条码类型; 6)根据获取到的条码类型进行条码识别并输出识别结果。2.如权利要求1所述的一种判断条码类型的方法,其特征在于:所述步骤2)中,对条数据两端的数据进行采样。3.如权利要求1或2所述的一种判断条码类型的方法,其特征在于:所述步骤2)中,获得的采样数据包括a)采用不同阈值对图像进行二值化所得到的采样数据;b)将数据拉伸到不同长度所得到的采样数据;c)基于波峰波谷的不同阈值下的采样方法所得到的采样数据。
【文档编号】G06K7/14GK105844200SQ201610154445
【公开日】2016年8月10日
【申请日】2016年3月17日
【发明人】罗美美, 杨波
【申请人】杭州晟元数据安全技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1