CN104361309B - 条形码识别方法和设备 - Google Patents
条形码识别方法和设备 Download PDFInfo
- Publication number
- CN104361309B CN104361309B CN201410737044.2A CN201410737044A CN104361309B CN 104361309 B CN104361309 B CN 104361309B CN 201410737044 A CN201410737044 A CN 201410737044A CN 104361309 B CN104361309 B CN 104361309B
- Authority
- CN
- China
- Prior art keywords
- subsequence
- bar code
- code
- offset
- scan line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明的实施方式提供了一种条形码识别方法。该方法包括:a)、逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;b)、判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;c)、如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;以及d)、对所述子序列进行解码,得到条形码信息。本发明的方法可以解决现有技术中由于无法支持一次性地对多个条形码同时进行识别而导致的条形码的识别效率比较低的问题。此外,本发明的另一方面提供了一种条形码识别设备。
Description
技术领域
本发明的实施方式涉及图像处理领域,更具体地,本发明的实施方式涉及条形码识别方法和设备。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本申请的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑色条(简称黑条)和白色条(简称白空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、名称、生产日期等等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。
针对条形码,现有技术中已存在各种条形码识别设备,用于识别出条形码中的信息。例如,硬件式的条形码扫描枪以及安装在手机上的条形码扫描软件。
发明内容
但是,本发明人在研究过程中发现,无论是扫描枪还是条形码扫描软件,一次只允许对一个条形码进行识别。其中,只有当扫描枪的扫描口对准一个条形码时才能扫描到该条形码,并进一步解码出该条形码中的信息;只有当手机上的摄像头对准一个条形码,并使该条形码位于手机屏幕的中间位置时,才能扫描到该条形码,并进一步对该条形码进行解码。
依照现有技术,如果一个图片中同时包含有多个条形码,就无法支持一次性地对多个条形码同时进行识别,而是需要逐个条形码的进行扫描和解码,从而导致条形码的识别效率比较低。
为此,非常需要一种条形码识别方法和设备,以解决现有技术中由于无法支持一次性地对多个条形码同时进行识别而导致的条形码的识别效率比较低的问题。
在本上下文中,本发明的实施方式期望提供一种条形码识别方法和设备。
在本发明实施方式的第一方面中,提供了一种条形码识别方法,包括:
a)、逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;
b)、判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;
c)、如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;以及
d)、对所述子序列进行解码,得到条形码信息。
在本发明实施方式的第二方面中,提供了一种条形码识别设备,包括:
扫描单元,用于逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;
判断单元,用于判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;
确定单元,用于如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;
解码单元,用于对所述子序列进行解码,得到条形码信息。
在本发明实施方式中,当原始图片中包含多个条形码时,基于对原始图片的图像处理,即,逐行扫描原始图片,统计扫描行上相互交替的两个颜色带中像素点的个数,得到扫描行的数据序列,判断在连续相邻的N个扫描上的数据序列中是否包含相同或相似的子序列,如果包含,确定该子序列包括至少一个条形码,对该子序列进行解码,就可以得到条形码信息。因此,可以支持一次同时对原始图片中的多个条形码进行识别,进而提高条形码的识别效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了本发明实施方式可以在其中实施的一个示例性场景;
图2示意性地示出了一种128型的条形码的示意图;
图3示意性地示出了根据本发明的一个实施方式的条形码识别方法的流程图;
图4-a示意性地示出了一种原始图片的示意图;
图4-b示意性地示出了另一种原始图片的示意图;
图4-c示意性地示出了另一种原始图片的示意图;
图5示意性地示出了本发明一种判断任意相邻两个扫描行的数据序列中是否包含相同或相似的子序列的方法的流程图;
图6示意性地示出了本发明一种从子序列中查找条形码的真实开始码的方法的流程图;
图7示意性地示出了根据本发明的一个实施方式的条形码识别设备的结构框架图;
图8示意性地示出了根据本发明的另一个实施方式的条形码识别设备结构框架图;
图9示意性地示出了本发明中一种解码单元的结构框架图;
图10示意性地示出了本发明中一种开始码查找子单元的结构框图;
图11示意性地示出了本发明中另一种开始码查找子单元的结构框图;
图12示意性地示出了本发明中一种判断单元的结构框图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种条形码识别方法和设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,由于现有技术中的条形码识别方法仅支持一次只对一个条形码进行识别,而无法支持一次同时对多个条形码进行识别,因此,当需要识别多个条形码时,需要逐个条形码进行识别,即,需要逐个条形码的进行扫描和解码,导致条形码的识别效率比较低。
如果提供一种新的条形码识别方法,并且该新的条形码识别方法可以支持一次同时对多个条形码进行识别的话,就可以解决现有技术中由于无法支持一次对多个条形码进行识别而导致的条形码识别效率比较低的问题。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图1,图1示意性地示出了本发明的实施方式可以在其中实施的示例性应用场景。其中,在原始图片10上包含有5条形码111、112、113、114和115,电子设备20先一次性对原始图片10中的5个条形码同时进行扫描,获得5个条形码的条形码信息121、122、123、124和125。电子设备20可以是移动终端、如,具有摄像头的手机或平板电脑,也可以是与扫描枪连接的PC机。本领域技术人员可以理解,图1所示的示意图仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的应用范围不受到该框架任何方面的限制。例如,原始图片10上可以包含5个条形码,也可以包含其它任意数量的至少两个条形码。
示例性方法
在介绍本发明的实施方式之前,为了便于对本发明的实施方式的理解,先对条形码的工作原理进行简单说明。如图2所示的128型的条形码,其是由相互交替的黑条和白空所组成的。其中,黑条和白空都分别存在四种不同的宽度,并将宽度按照从细到粗的顺序分别赋予1、2、3和4的数值。如果按照宽度的赋值表示上述条形码,条形码的数字表示形式如下:2112322311312212131312222122222212241212131212113211132331112
其中,将最后七位(2331112)作为一个数据块,用于表示128型的条形码已经结束,其余部分都是每六位为一个数据块,第一个数据块用于表示128型条形码属于哪一种类型。具体的,当第一个数据块为211412时,表示128型条形码属于A类型;当第一个数据块为211214时,表示128型条形码属于B类型;当第一个数据块为211232时,表示128型条形码属于C类型。
如果将第一个数据块和最后一个数据块去除,则上述条形码的编码结果如下:
231131/221213/131222/212222/221224/121213/121211/321113
其中,最后一个数据块为校验块,用于校验该条形码是否被正确编码。
通过查询已知的字符表(字符表保存了数据块与编号之间的映射关系)对上述除最后一个校验块之外的其它每一个数据块进行解码,可以得到对应的编号:50 09 05 0001 91 91,该编号即为条形码信息。
下面结合图1的应用场景,参考图3来描述根据本发明示例性实施方式的、用于条形码识别的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
请参阅图3,其示意性地示出了根据本发明的一个实施方式的条形码识别方法的流程图,例如,该方法可以由电子设备20执行,方法具体例如可以包括:
步骤301:逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列。
步骤302:判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,如果是,进入步骤303,其中N为正整数。
步骤303:确定所述子序列包含至少一个条形码。
步骤304:对所述子序列进行解码,得到条形码信息。
可以理解的,如果原始图片是黑白图片,位于原始图片上的条形码即为由一组相互交替的黑色条和白色条(即,黑条和白空)组成的图案。如果原始图片不是黑白图片,位于原始图片上的条形码是由分别接近黑色条和白色条的某两个颜色条组成的图案。
当逐行扫描原始图片时,如果扫描到条形码,在扫描行上就会存在相互交替的两个颜色带,显然,如果原始图片是黑白图片,扫描上相互交替的两个颜色带为黑色带和白色带,如果原始图片不是黑白图片,扫描上相互交替的两个颜色带为分别接近黑色带和白色带的某两个颜色带。并且,针对这两个颜色带,可以通过比较两个颜色带的RGB值分别与黑色和白色的RGB值的接近程度,来确定两个颜色带中具体哪个颜色带相当于黑色带,哪个颜色带相当于白色带。
当然,在本发明的一个优选实施方式中,可以在步骤301之前,对原始图片进行二值化处理,得到处理后的图片。在步骤301中,逐行扫描处理后的图片,并统计扫描行上相互交替的黑色带和白色带中像素点的个数,得到扫描行的数据序列。
对于一个条形码来说,当扫描该条形码,并统计扫描行上相互交替的两个颜色带中像素点的个数时,所得到的各个扫描行的数据序列应该是至少包含完全相同的子序列,甚至在理想情况下,各个扫描行的数据序列也是完全相同的。并且,数据序列或者子序列中的每一个元素即表示一个颜色带的宽度值。由此可见,在一个条形码中,必然存在连续相邻的多个扫描行的数据序列包含相同的子序列。
据此,可以将一个原始图片中是否存在连续相邻的N个扫描行的数据序列包含相同的子序列作为确定该子序列是否包括条形码的标准。
如图4-a所示,在一个原始图片中,如果多个条形码之间是竖直排列的,通过本发明的技术方案,当存在连续相邻的N个扫描行的数据序列包含相同的子序列时,就可以确定该子序列包括一个条形码。显然,在对图4-a所示的原始图片进行扫描和统计后,可以得到六个子序列,每个子序列包括一个条形码。
在一个原始图片中,多个条形码之间除了有可能竖直排列之外,也有可能水平排列。如图4-b所示,如果多个条形码之间是水平排列的,通过本发明的技术方案,当存在连续相邻的N个扫描行的数据序列包含相同的子序列时,就可以确定该子序列包括多个条形码。显然,在对图4-b所示的原始图片进行扫描和统计后,可以得到一个子序列,该子序列包括三个条形码。
当然,在一个原始图片中,可能既存在竖直排列的条形码,也存在水平排列的条形码。如图4-c所示,在对如图4-c所示的原始图片进行扫描和统计后,可以得到两个子序列,每个子序列包括三个条形码。
因此,如果连续相邻的N个扫描行的数据序列包含相同的子序列,说明该子序列包括至少一个条形码,反之,如果连续相邻的N个扫描行的数据序列不包含相同的子序列,说明该子序列不包括条形码。
考虑到如果原始图片是无损清晰的,不存在任何失真,该原始图片上的条形码不存在任何污渍或破损,则可以按照上述方式进行条形码识别。但是,如果原始图片是有损模糊的,存在一定程度的失真,例如,原始图片是扫描仪扫描的图片,该原始图片上的条形码或多或少都会有一些污渍或破损,此时,对于一个条形码来说,当扫描该条形码时,得到的各个扫描行的数据序列并不会是完全相同的,而是有可能存在以下两个数据序列:
211214212222222122121223
211213212222222122121224
显然,在这种情况下,在一个条形码中,连续相邻的N个扫描行的数据序列并不会包含完全相同的子序列。因此,除了子序列完全相同之外,也可以将是否存在连续相邻的N个扫描行的数据序列包含相似的子序列作为确定该子序列是否包括至少一个条形码的标准。也就是说,如果连续相邻的N个扫描行的数据序列包含相似的子序列,也说明该子序列包括至少一个条形码,如果连续相邻的N个扫描行的数据序列不包含相同的子序列也不包含相似的子序列,说明该子序列不包括条形码。
在本发明的一个优选实施方式中,为了避免将原始图片中的其它图案误判为一个条形码,N选择为使得连续相邻的扫描行的高度大于或等于预设的最小高度阈值。
其中,预设的最小高度阈值可以是一个经验值。
在本发明的一个优选实施方式中,如图5所示,可以按照如下方式判断任意相邻两个扫描行的数据序列中是否包含相同或相似的子序列:
步骤501:针对所述两个扫描行的数据序列中任意一对位置对齐的子序列,判断所述两个子序列中位于对齐位置的各个数据是否相同,如果是,进入步骤502,否则,进入步骤503,其中所述子序列包含连续相邻的M个数据,M为正整数,且M大于或等于预设的最小数量阈值,例如对应于至少一个条形码的长度。
步骤502:确定所述两个扫描行的数据序列中包含相同的子序列,结束流程。
步骤503:计算所述两个子序列中位于对齐位置的各个数据之间的偏差。
例如,对于如下两个数据序列:
211214212222222122121223
211213212222222122121224
可以计算出偏差为2,即有2位不相同。
步骤504:判断所述两个子序列中位于对齐位置的各个数据之间的偏差是否都小于或等于预设的偏差阈值,如果是,进入步骤505,否则,进入步骤506。
步骤505:确定所述两个扫描行的数据序列中包含相似的子序列,结束流程。
步骤506:确定所述两个扫描行的数据序列中既不包含相同的子序列,也不包含相似的子序列,结束流程。
其中,预设的最小数量阈值可以是一个经验值。
通过上述方法可以确定,在连续相邻的N个扫描行中,是否任意相邻两个扫描行的数据序列中包含相同或相似的子序列,如果是,就可以最终确定在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,否则,就可以最终确定在连续相邻的N个扫描行的数据序列中不包含相同或相似的子序列。
在对子序列进行解码时,由于该子序列中的所有元素不一定全部都是属于一个条形码,而有可能是与条形码无关的元素,因此,子序列中的第一个元素不一定是条形码的起始位,而由前六个元素所构成的数据块也不一定是条形码的真实开始码。在本发明的另一个优选实施方式中,需要先从子序列中查找条形码的真实开始码;然后再从查找到的条形码的真实开始码开始,对子序列进行解码,得到条形码信息。
例如,一个子序列为:5211214231113233111,前六个元素构成的数据块为521121,而对于128型的条形码来说,其真实开始码只有三种可能,即,211412、211214或者211232。显然,由前六个元素构成的数据块并不是条形码的真实开始码,第一个元素5是与条形码无关的元素。第二至七个元素构成的数据块为211214,显然是条形码的真实开始码。因此,上述子序列中属于条形码的部分为“211214/231113/233111”。
在本发明的一个优选实施方式中,如图6所示,从子序列中查找条形码的真实开始码的方法包括:
步骤601:滑动窗口滑动到当前位,并将滑动窗口在当前位开始所覆盖的数据作为当前候选开始码,其中,滑动窗口的长度与条形码的真实开始码的长度相等。
步骤602:计算所述当前候选开始码与条形码的真实开始码之间的偏移量。
步骤603:判断所述偏移量是否小于或等于预设的偏移量阈值,如果是,进入步骤604,否则,进入步骤605。
步骤604:确定所述当前候选开始码为条形码的真实开始码,结束流程。
步骤605:将滑动窗口向后滑动一位,并返回步骤601。
其中,滑动窗口从子序列的第一位开始逐位地滑动,当滑动窗口在子序列的第一位时,此时的当前位即为第一位,当前候选开始码即为第一候选开始码;当滑动窗口滑动到子序列的第二位时,此时的当前位即为第二位,当前候选开始码即为第二候选开始码,以此类推,直到确定某一个候选开始码为条形码的真实开始码为止停止对滑动窗口进行滑动。
例如,仍旧以上述的子序列为例,当滑动窗口在该子序列的第一位时,该滑动窗口所覆盖的数据为“521121”(当前待测试数据T),计算该数据分别与三个条形码的真实开始码之间的第一偏移量:
aStart:211412
bStart:211214
cStart:211232
T与aStart的第一偏移量为:0.791
T与bStart的第一偏移量为:0.791
T与cStart的第一偏移量为:0.722
如果预设的偏移量阈值为0.005(当然,预设的偏移量阈值可以为其它值),显然,上述三个第一偏移量都大于预设的偏移量阈值,因此,将滑动窗口从该子序列的第一位移动到第二位,当滑动窗口在该子序列的第二位时,该滑动窗口所覆盖的数据为“211214”(当前待测试数据T),计算该数据分别与三个条形码的真实开始码之间的偏移量:
T与aStart的第二偏移量为:0.305
T与bStart的第二偏移量为:0
T与cStart的第二偏移量为:0.365
显然,第二个第二偏移量小于预设的偏移量阈值,因此,“211214”为条形码的真实开始码。
其中,偏移量的计算方式可以为:
偏移量=待测试数据-条形码的真实开始码
但是,考虑到原始图片也有可能是被拉伸或被压缩过的,进而原始图片上相互交替的两个颜色带的宽带也就会随之变宽或变窄,导致统计得到的扫描行的数据序列也会相应地发生变化。例如,在拉伸前,统计得到的扫描行的数据序列为211214…..,在拉伸后,统计得到的扫描行的数据序列就可以变为422428……。或者,再例如,在压缩前,统计得到的扫描行的数据序列为422428……,在压缩后,统计得到的扫描行的数据序列就可以变为211214…..。在这种情况下,由于在扫描行的数据序列中,每个元素都是成倍增大或成倍缩小的,因此,在查找条形码的真实开始码时,偏移量阈值是难以合理设置的。
在本发明的一个优选实施方式中,上述偏移量的计算方式还可以为:
计算候选开始码中的各个元素分别与条形码的真实开始码中位置对齐的各个元素的比值;计算所有比值的算术平均值;计算各个比值分别与算术平均值的差值的绝对值;计算所有绝对值的算术平均值,从而得到该候选开始码与条形码的真实开始码之间的偏移量。
例如,以第一候选开始码“521121”,条形码的真实开始码为“211412”为例,先计算比值数组[5/2、2/1、1/1、1/4、2/1、1/2]=[2.5、2、1、0.25、2、0.5];再计算该比值数组中所有比值的算术平均值X=(2.5+2+1+0.25+2+0.5)/6=1.375;再计算绝对值数组[1.125、0.625、0.375、1.125、0.625、0.875];最后计算该绝对值数组中所有绝对值的算术平均值Y=(1.15+0.65+0.375+1.125+0.65+0.875)/6=0.791。
当子序列包括多个条形码时,通过上述方式,可以从该子序列中查找到多个条形码的真实开始码。而每当从该子序列中查找到一个真实开始码时,就可以从该真实开始码开始向后查找到校验码,并从该真实开始码开始到该校验码位置,即为一个条形码的编码数据,对其进行解码后,就可以得到该条形码的条形码信息。
根据本发明,当原始图片中包含多个条形码时,基于对原始图片的图像处理,即,逐行扫描原始图片,统计扫描行上相互交替的两个颜色带中像素点的个数,得到扫描行的数据序列,判断在连续相邻的N个扫描上的数据序列中是否包含相同或相似的子序列,如果包含,确定该子序列包括一个或多个条形码。其中,如图4-a所示,如果原始图片上的多个条形码是竖直排列的,则一个子序列只包括一个条形码,通过扫描和统计,可以得到多个子序列,分别对每个子序列进行解码,就可以得到多个条形码的条形码信息。再如图4-b所示,如果原始图片上的多个条形码是水平排列的,则一个子序列同时包括多个条形码,通过扫描和统计,可以得到一个子序列,对该子序列进行解码,就可以同时得到多个条形码的条形码信息。因此,可以支持一次同时对原始图片中的多个条形码进行识别,进而提高条形码的识别效率。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图7来描述根据本发明示例性实施方式的、用于条形码识别的设备。
参考图7,其示意性地示出了根据本发明一个实施方式的条形码识别设备的结构框架图,具体地,该设备例如可以包括:
扫描单元701,用于逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;
判断单元702,用于判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;
确定单元703,用于如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;
解码单元704,用于对所述子序列进行解码,得到条形码信息。
在本发明的一个优选实施方式中,如图8所示,该设备还包括:
处理单元700,用于对原始图片进行二值化处理,得到处理后的图片;
扫描单元701具体用于,逐行扫描所述处理后的图片,并统计扫描行上相互交替的黑色带和白色带中像素点的个数,得到所述扫描行的数据序列。
在本发明的另一优选实施方式中,如图9所示,解码单元704包括:
开始码查找子单元7041,用于从所述子序列中查找第一条形码的真实开始码;
解码子单元7042,用于从查找到的所述第一条形码的真实开始码开始,对所述子序列进行解码,得到第一条形码信息。
在本发明的另一个优选实施方式中,如图10所示,开始码查找子单元7041包括:
第一滑动子单元70411,用于将滑动窗口在所述子序列的第一位开始所覆盖的数据作为第一候选开始码,其中所述滑动窗口的长度与第一条形码的真实开始码的长度相等;
第一计算子单元70412,用于计算所述第一候选开始码与所述第一条形码的真实开始码之间的第一偏移量;
第一判断子单元70413,用于判断所述第一偏移量是否小于或等于预设的偏移量阈值;
第一确定子单元70414,用于如果所述第一偏移量小于或等于预设的偏移量阈值,确定第一候选开始码为第一条形码的真实开始码。
在本发明的另一个优选实施方式中,如图11所示,开始码查找子单元7041还包括:
第二滑动子单元70415,用于如果所述第一偏移量大于预设的偏移量阈值,将所述滑动窗口滑动到所述子序列的第二位,并将所述滑动窗口在所述子序列的第二位开始所覆盖的数据作为第二候选开始码;
第二计算子单元70416,用于计算所述第二候选开始码与所述第一条形码的真实开始码之间的第二偏移量;
第二判断子单元70417,用于判断所述第二偏移量是否小于或等于预设的偏移量阈值;
第二确定子单元70418,用于如果所述第二偏移量小于或等于预设的偏移量阈值,确定第二候选码为第一条形码的真实开始码。
在本发明的另一个优选实施方式中,如图12所示,判断单元702包括:
第三判断子单元7021,用于针对每两个相邻扫描行的数据序列中任意一对位置对齐的子序列,判断该对子序列中位于对齐位置的各个数据是否相同,其中所述子序列包含连续相邻的M个数据,M为正整数,且M大于或等于预设的最小数量阈值;
第三确定子单元7022,用于如果相同,确定两个扫描行的数据序列中包含相同的子序列;
第三计算子单元7023,用于如果不相同,计算该对子序列中位于对齐位置的各个数据之间的偏差;
第四判断子单元7024,用于判断该对子序列中位于对齐位置的各个数据之间的偏差是否都小于或等于预设的偏差阈值;
第四确定子单元7025,用于如果该对子序列中位于对齐位置的各个数据之间的偏差都小于或等于预设的偏差阈值,确定两个扫描行的数据序列中包含相似的子序列。
在本发明的另一个优选实施方式中,N选择为使得连续相邻的扫描行的高度大于或等于预设的条形码的最小高度阈值。
根据本发明,当原始图片中包含多个条形码时,基于对原始图片的图像处理,即,逐行扫描原始图片,统计扫描行上相互交替的两个颜色带中像素点的个数,得到扫描行的数据序列,判断在连续相邻的N个扫描上的数据序列中是否包含相同或相似的子序列,如果包含,确定该子序列包括一个或多个条形码,可以支持一次同时对原始图片中的多个条形码进行识别,进而提高条形码的识别效率。例如,如图4-a所示,如果原始图片上的多个条形码是竖直排列的,则一个子序列只包括一个条形码,通过扫描和统计,可以得到多个子序列,分别对每个子序列进行解码,就可以得到多个条形码的条形码信息。再如图4-b所示,如果原始图片上的多个条形码是水平排列的,则一个子序列同时包括多个条形码,通过扫描和统计,可以得到一个子序列,对该子序列进行解码,就可以同时得到多个条形码的条形码信息。
应当注意,尽管在上文详细描述中提及了条形码识别设备的若干单元或子单元,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种条形码识别方法,包括:
a)、逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;
b)、判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;
c)、如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;以及
d)、对所述子序列进行解码,得到条形码信息;
步骤d)包括:
d1)、从所述子序列中查找第一条形码的真实开始码;
d2)、从查找到的所述第一条形码的真实开始码开始,对所述子序列进行解码,得到第一条形码信息;
步骤d1)包括:
d11)、将滑动窗口在所述子序列的第一位开始所覆盖的数据作为第一候选开始码,其中所述滑动窗口的长度与第一条形码的真实开始码的长度相等;
d12)、计算所述第一候选开始码与所述第一条形码的真实开始码之间的第一偏移量;
d13)、判断所述第一偏移量是否小于或等于预设的偏移量阈值;
d14)、如果所述第一偏移量小于或等于预设的偏移量阈值,确定第一候选开始码为第一条形码的真实开始码。
2.根据权利要求1所述的方法,还包括:
a0)、对原始图片进行二值化处理,得到处理后的图片;
以及其中,步骤a)具体为:
逐行扫描所述处理后的图片,并统计扫描行上相互交替的黑色带和白色带中像素点的个数,得到所述扫描行的数据序列。
3.根据权利要求1所述的方法,其中,步骤d1)还包括:
d15)、如果所述第一偏移量大于预设的偏移量阈值,将所述滑动窗口滑动到所述子序列的第二位,并将所述滑动窗口在所述子序列的第二位开始所覆盖的数据作为第二候选开始码;
d16)、计算所述第二候选开始码与所述第一条形码的真实开始码之间的第二偏移量;
d17)、判断所述第二偏移量是否小于或等于预设的偏移量阈值;
d18)、如果所述第二偏移量小于或等于预设的偏移量阈值,确定第二候选码为第一条形码的真实开始码。
4.根据权利要求1所述的方法,其中,步骤b)包括:
b1)、针对每两个相邻扫描行的数据序列中任意一对位置对齐的子序列,判断该对子序列中位于对齐位置的各个数据是否相同,其中所述子序列包含连续相邻的M个数据,M为正整数,且M大于或等于预设的最小数量阈值;
b2)、如果相同,确定两个扫描行的数据序列中包含相同的子序列;
b3)、如果不相同,计算该对子序列中位于对齐位置的各个数据之间的偏差;
b4)、判断该对子序列中位于对齐位置的各个数据之间的偏差是否都小于或等于预设的偏差阈值;
b5)、如果该对子序列中位于对齐位置的各个数据之间的偏差都小于或等于预设的偏差阈值,确定两个扫描行的数据序列中包含相似的子序列。
5.根据权利要求1至4中的任一项所述的方法,其中,N选择为使得连续相邻的扫描行的高度大于或等于预设的最小高度阈值。
6.一种条形码识别设备,包括:
扫描单元,用于逐行扫描原始图片,并统计扫描行上相互交替的两个颜色带中像素点的个数,得到所述扫描行的数据序列;
判断单元,用于判断在连续相邻的N个扫描行的数据序列中是否包含相同或相似的子序列,其中N为正整数;
确定单元,用于如果在连续相邻的N个扫描行的数据序列中包含相同或相似的子序列,确定所述子序列包括至少一个条形码;
解码单元,用于对所述子序列进行解码,得到条形码信息;
所述解码单元包括:
开始码查找子单元,用于从所述子序列中查找第一条形码的真实开始码;
解码子单元,用于从查找到的所述第一条形码的真实开始码开始,对所述子序列进行解码,得到第一条形码信息;
所述开始码查找子单元包括:
第一滑动子单元,用于将滑动窗口在所述子序列的第一位开始所覆盖的数据作为第一候选开始码,其中所述滑动窗口的长度与第一条形码的真实开始码的长度相等;
第一计算子单元,用于计算所述第一候选开始码与所述第一条形码的真实开始码之间的第一偏移量;
第一判断子单元,用于判断所述第一偏移量是否小于或等于预设的偏移量阈值;
第一确定子单元,用于如果所述第一偏移量小于或等于预设的偏移量阈值,确定第一候选开始码为第一条形码的真实开始码。
7.根据权利要求6所述的设备,还包括:
处理单元,用于对原始图片进行二值化处理,得到处理后的图片;
所述扫描单元具体用于,逐行扫描所述处理后的图片,并统计扫描行上相互交替的黑色带和白色带中像素点的个数,得到所述扫描行的数据序列。
8.根据权利要求6所述的设备,其中,所述开始码查找子单元还包括:
第二滑动子单元,用于如果所述第一偏移量大于预设的偏移量阈值,将所述滑动窗口滑动到所述子序列的第二位,并将所述滑动窗口在所述子序列的第二位开始所覆盖的数据作为第二候选开始码;
第二计算子单元,用于计算所述第二候选开始码与所述第一条形码的真实开始码之间的第二偏移量;
第二判断子单元,用于判断所述第二偏移量是否小于或等于预设的偏移量阈值;
第二确定子单元,用于如果所述第二偏移量小于或等于预设的偏移量阈值,确定第二候选码为第一条形码的真实开始码。
9.根据权利要求6所述的设备,其中,所述判断单元包括:
第三判断子单元,用于针对每两个相邻扫描行的数据序列中任意一对位置对齐的子序列,判断该对子序列中位于对齐位置的各个数据是否相同,其中所述子序列包含连续相邻的M个数据,M为正整数,且M大于或等于预设的最小数量阈值;
第三确定子单元,用于如果相同,确定两个扫描行的数据序列中包含相同的子序列;
第三计算子单元,用于如果不相同,计算该对子序列中位于对齐位置的各个数据之间的偏差;
第四判断子单元,用于判断该对子序列中位于对齐位置的各个数据之间的偏差是否都小于或等于预设的偏差阈值;
第四确定子单元,用于如果该对子序列中位于对齐位置的各个数据之间的偏差都小于或等于预设的偏差阈值,确定两个扫描行的数据序列中包含相似的子序列。
10.根据权利要求6至9中的任一项所述的设备,其中,N选择为使得连续相邻的扫描行的高度大于或等于预设的最小高度阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410737044.2A CN104361309B (zh) | 2014-12-05 | 2014-12-05 | 条形码识别方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410737044.2A CN104361309B (zh) | 2014-12-05 | 2014-12-05 | 条形码识别方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104361309A CN104361309A (zh) | 2015-02-18 |
CN104361309B true CN104361309B (zh) | 2017-08-29 |
Family
ID=52528567
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410737044.2A Active CN104361309B (zh) | 2014-12-05 | 2014-12-05 | 条形码识别方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361309B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106295437A (zh) * | 2015-05-14 | 2017-01-04 | 无锡捷纽因信息科技有限公司 | 一种对同一物品上具有多个条形码的数据采集和处理系统 |
CN107016316B (zh) * | 2016-10-24 | 2020-01-31 | 阿里巴巴集团控股有限公司 | 一种条形码的识别方法和装置 |
CN114581360B (zh) * | 2021-04-01 | 2024-03-12 | 正泰集团研发中心(上海)有限公司 | 光伏组件标签检测方法、装置、设备和计算机存储介质 |
CN114298078B (zh) * | 2021-12-29 | 2023-10-24 | 杭州晟元数据安全技术股份有限公司 | 一种污损一维条码的解码方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385688A (zh) * | 2010-08-31 | 2012-03-21 | 手持产品公司 | 区域成像时的条形码排序的方法 |
CN102779264A (zh) * | 2012-07-10 | 2012-11-14 | 北京恒信彩虹科技有限公司 | 一种实现条码识读的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7175090B2 (en) * | 2004-08-30 | 2007-02-13 | Cognex Technology And Investment Corporation | Methods and apparatus for reading bar code identifications |
CN102521558B (zh) * | 2011-11-18 | 2014-04-02 | 深圳市宝捷信科技有限公司 | 一种条码识别方法及装置 |
-
2014
- 2014-12-05 CN CN201410737044.2A patent/CN104361309B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385688A (zh) * | 2010-08-31 | 2012-03-21 | 手持产品公司 | 区域成像时的条形码排序的方法 |
CN102779264A (zh) * | 2012-07-10 | 2012-11-14 | 北京恒信彩虹科技有限公司 | 一种实现条码识读的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104361309A (zh) | 2015-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104361309B (zh) | 条形码识别方法和设备 | |
CN109862391A (zh) | 视频分类方法、介质、装置和计算设备 | |
CN105183788B (zh) | 一种基于关键词字典树检索的中文ac自动机工作方法 | |
CN104657698B (zh) | 一种可承载多幅黑白二维码的彩色二维码编解码方法 | |
CN108537134A (zh) | 一种视频语义场景分割及标注方法 | |
CN106056021A (zh) | 基于色相的容量可变彩色二维码流数据通信方法及系统 | |
CN108898142A (zh) | 一种手写公式的识别方法及计算设备 | |
CN110472484A (zh) | 基于多视图特征的视频关键帧提取方法、系统及设备 | |
Zhang et al. | Aesthetic QR codes based on two-stage image blending | |
CN106575280A (zh) | 用于分析用户关联图像以产生非用户生成标签以及利用该生成标签的系统和方法 | |
CN106375771A (zh) | 图像特征匹配方法和装置 | |
CN107545049A (zh) | 图片处理方法及相关产品 | |
CN105844200B (zh) | 一种判断条码类型的方法 | |
De Smet | Reconstruction of ripped-up documents using fragment stack analysis procedures | |
CN105847508B (zh) | 一种电话号码的存储方法、识别方法及装置 | |
CN110222547A (zh) | 条码识别方法及装置 | |
CN108563795B (zh) | 一种加速压缩流量正则表达式匹配的Pairs方法 | |
CN109408652A (zh) | 一种图片搜索方法、装置及设备 | |
CN104158975B (zh) | 一种基于移动终端的联系人头像处理方法及移动终端 | |
CN107423797A (zh) | 一种防伪码信息生成方法 | |
CN112733568A (zh) | 一维条码识别方法、装置、设备及存储介质 | |
CN110610219B (zh) | 一种彩色环形二维码及其生成和解码方法 | |
CN116506627A (zh) | 一种多特征哈希值构建哈希表进行搜索的编码方法及装置 | |
EP3531335B1 (en) | Barcode identification method and apparatus | |
CN109977715A (zh) | 基于轮廓识别的二维码识别方法及二维码 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |