掌桥专利:专业的专利平台
掌桥专利
首页

条码检测方法及系统

文献发布时间:2023-06-19 11:35:49


条码检测方法及系统

技术领域

本发明公开一种条码检测方法及条码检测系统,尤其涉及一种具高速检测能力的低复杂度的条码检测方法及条码检测系统。

背景技术

随着科技进步,各种条码逐渐被应用在日常生活中,并慢慢地取代繁杂且易错误的文字信息。例如,一维条码将宽度不等的多个黑条(Bar)和白条(Space),按照一定的编码规则(即黑白宽度比例)排列,用以表达一组信息的图形识别元。常见的一维条码是由反射率相差很大的黑条和白条排成的平行线图案。二维条码则可为矩形,可视为将一维条码的图像往另一个轴向延伸的图像,因此可带有比一维条码更多的信息量。条码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到了广泛的应用。

一般而言,要将条码识别以产生具有意义的信息需要两个步骤。第一个步骤称为条码取样步骤。条码取样步骤可以利用相机、扫描器、激光识别装置等光元件提取条码的图案。第二个步骤称为解码步骤。解码步骤可以利用查询表或是解码器将取样后的条码转换为有意义的信息。在一般解码步骤的前置步骤中,条码的存在性以及条码的格式(一维或是二维)需要先被检测出来。然而,一般由相机所拍的图像中,检测条码的存在性与格式必须将图像的像素一列一列地扫描。当图像的尺寸或解析度很高时,将非常耗时。并且,当条码检测失败时,上述逐列扫描的程序又必须再一次地执行,因此这种效率低且耗时的检测方式将会浪费系统资源。

发明内容

本发明一实施例提出一种条码检测方法,包含相机取得图像,取得该图像中的每一像素的水平图像梯度及垂直图像梯度,根据该水平图像梯度及该垂直图像梯度,产生该每一像素的梯度相位角度及梯度能量强度,将该每一像素的该梯度能量强度二值化,以产生二值化图像,在该图像中产生窗格,在该窗格内将该二值化图像以N个像素为间隔的V个垂直扫描线进行垂直取样以统计该二值化图像在垂直方向上的V个灰阶值变化次数,在该窗格内将该二值化图像以M个像素为间隔的H个水平扫描线进行水平取样以统计该二值化图像在水平方向上的H个灰阶值变化次数,若该垂直方向上的V个灰阶值变化次数高于第一预定值及该水平方向上的H个灰阶值变化次数高于第二预定值,则判定该窗格所覆盖的区域为一最密集翻转区域,若该窗格所覆盖的区域被判定为该最密集翻转区域,则扩张该窗格至该窗格覆盖核心条码区域,提取该核心条码区域中的多个像素的多个梯度相位角度以产生梯度相位角度分布,根据该梯度相位角度分布产生该条码的格式检测结果,及根据该格式检测结果扩张该窗格至该窗格完全覆盖该条码。

本发明另一实施例提出一种条码检测系统,包含相机、处理器及存储器。相机用以取得图像。该处理器取得该图像中每一像素的水平图像梯度及垂直图像梯度,根据该水平图像梯度及该垂直图像梯度,产生该每一像素的梯度相位角度及梯度能量强度,将该每一像素的该梯度能量强度二值化,以产生二值化图像,在该图像中产生窗格,在该窗格内将该二值化图像以N个像素为间隔的V个垂直扫描线进行垂直取样,以统计该二值化图像在垂直方向上的V个灰阶值变化次数,在该窗格内将该二值化图像以M个像素为间隔的H个水平扫描线进行水平取样,以统计该二值化图像在水平方向上的H个灰阶值变化次数,若该垂直方向上的V个灰阶值变化次数高于第一预定值及该水平方向上的H个灰阶值变化次数高于第二预定值,则判定该窗格所覆盖的区域为最密集翻转区域,若该窗格所覆盖的区域被判定为该最密集翻转区域,则扩张该窗格至该窗格覆盖核心条码区域,提取该核心条码区域中的多个像素的多个梯度相位角度,以产生梯度相位角度分布,根据该梯度相位角度分布产生该条码的格式检测结果,及根据该格式检测结果扩张该窗格至该窗格完全覆盖该条码。

附图说明

图1是本发明的实施例条码检测系统的示意图。

图2是实施例中取得图像中每一像素的水平图像梯度及垂直图像梯度的示意图。

图3实施例中是图像二值化的示意图。

图4是实施例中二值化图像中窗格的示意图。

图5是在窗格中进行水平取样以及垂直取样的示意图。

图6是窗格的移动示意图。

图7是窗格覆盖核心条码区域的示意图。

图8是梯度相位决策边界的示意图。

图9是梯度相位角度分布包含一个峰度分布的示意图。

图10是梯度相位角度分布包含两个峰度分布的示意图。

图11是窗格定位条码区域的示意图。

图12是图1的条码检测系统执行条码检测方法的流程图。

【符号说明】

100 条码检测系统

10 相机

11 处理器

12 存储器

BC 条码

A、B 像素

IMG 图像

R 背景区域

BIMG 二值化图像

BBC 二值化条码

SH1至SH3 水平扫描线

SV1至SV3 垂直扫描线

SW 窗格

DB1至DB8 梯度相位决策边界

C、C1及C2 峰度分布

PK、PK1及PK2 峰值

Φ、Φ1及Φ2 梯度相位角度

S1202至S1226 步骤

具体实施方式

图1是本发明的实施例条码检测系统100的示意图。条码检测系统100可应用于检测一维条码以及二维条码,常见的一维条码有EAN/UPC,ISBN,Code 39,Code 93,Code 128等,常见的二维条码有矩阵图码(quick response code,QR Code)、PDF417条码、或是数据矩阵(data matrix)等。条码检测系统100包含相机10、处理器11及存储器12。相机10用以提取图像。相机10可包含任何图像提取装置。例如,相机10可内建镜头以及感光元件,用以提取光信号,并将光信号进行处理以产生图像。相机10所提取的图像可包含条码图像。处理器11耦接于相机10,用以处理图像,以产生条码的格式检测结果。处理器11可为任何形式的处理装置,例如中央处理器、微处理器、逻辑运算单元或是可编程芯片等等。处理器11也可以判断条码图像是否可被检测。存储器12耦接于处理器11,用以缓存图像处理数据。存储器12可为任何形式的记忆装置,例如硬盘、随机存取存储器(random access memory,RAM)或是非易失性存储器(non-volatile memory)等等。存储器12所存储的图像处理数据可为后文提及的水平图像梯度、垂直图像梯度、水平方向的灰阶值变化次数、垂直方向的灰阶值变化次数、多个梯度相位决策边界等数据。条码检测系统100执行条码检测方法的步骤以及原理将在后文详述。

图2是取得图像IMG中每一像素的水平图像梯度及垂直图像梯度的示意图。如前述提及,相机10具有图像提取的能力。因此,当处理器11接收到相机10所提取的图像IMG后,可以取得图像IMG中每一像素的水平图像梯度及垂直图像梯度。例如,处理器11可以利用索伯(Sobel)算法,以水平矩阵模板及垂直矩阵模板对图像的每一像素的亮度做卷积(convolution)运算,以产生每一像素的水平图像梯度及垂直图像梯度。然而,处理器11也可以仅针对图像IMG的一个区域内的每一像素的水平图像梯度及垂直图像梯度进行计算,以降低复杂度。例如,图像IMG的区域可为图像IMG的某特定区域、图像IMG靠近中央的区域、或是将图像IMG的边缘裁切后的子区域等等。任何合理的区域范围以及位置的调整都属于本发明所公开的范围。在其他实施例中也可以针对小于图像IMG范围的一个区域进行梯度计算,以降低复杂度。在实际应用时,水平矩阵模板及垂直矩阵模板可为方阵(squarematrix),用以与图像中每一像素的数据向量做线性组合,再以此计算水平图像梯度及垂直图像梯度。在图2中,Y轴为垂直轴,X轴为水平轴。像素A位于条码BC之外,因此像素A附近的颜色并无太大变化。因此,像素A所计算出来的水平梯度以及垂直梯度A(▽

图3是实施例中图像二值化的示意图。处理器11可以产生图像IMG中所有像素的梯度能量强度。接着,依据阈值与每一像素的比较结果,将图像IMG中的每一像素对应至第一灰阶值或第二灰阶值。例如,处理器11可以设定一个阈值,当某个像素的梯度能量强度比阈值高,则将某个像素对应至第一灰阶值。当某个像素的梯度能量强度比阈值低,则将某个像素对应至第二灰阶值。第一灰阶值可为趋近于灰阶值为255的白色,而第二灰阶值可为趋近于灰阶值为0的黑色。利用上述的二值化程序,处理器11可以将图2中的图像IMG转换为只有两种颜色的二值化图像BIMG。例如,在图3的二值化图像BIMG中,二值化条码BBC只包含黑白两种颜色,而在二值化条码BBC之外的区域R为背景区域,可为噪声图像。藉由如前述的二值化程序后,可以降低噪声的影响量,增加条码检测的可靠度。

图4是实施例中二值化图像BIMG中窗格SW的示意图。处理器11可在二值化图像BIMG中产生窗格(sliding window)SW,窗格SW的初始位置可为图像BIMG的边缘,例如左上角,或随机在图像BIMG中的任一位置。窗格SW的尺寸可为2x2,4x4,5x5像素等正方形的窗格或可为长方形的窗格,根据需要来调整。

图5是在窗格SW中进行水平取样以及垂直取样的示意图。为了降低运算时间以及计算复杂度,条码检测系统100可采用间隔取样的机制,条码检测系统100可以使用以N个像素为间隔的V个垂直扫描线进行取样,以统计二值化图像BIMG在窗格SW内在垂直方向上的V个灰阶值变化次数。举例而言,相邻的垂直扫描线可以间隔2~4个像素(N为2~4之间)。在窗格SW内可用垂直扫描线SV1至SV3进行取样,以统计二值化图像BIMG在窗格SW内在垂直方向上的灰阶值变化次数。同理,条码检测系统100可以使用以M个像素为间隔的H个水平扫描线进行取样,以统计二值化图像BIMG在窗格SW内在水平方向上的H个灰阶值变化次数。举例而言,相邻的水平扫描线可以间隔2~4个像素(M为2~4之间)。在窗格SW内可用水平扫描线SH1至SH3进行取样,以统计二值化图像BIMG在窗格SW内在水平方向上的灰阶值变化次数。然而,本发明却不以此为限制。由于条码检测系统100引入了间隔取样的机制,因此可以有效地降低计算复杂度以及缩短操作时间。并且,N、M、V、H也可以依据不同的需求调整。例如需要高解析度的检测质量下,垂直取样间隔N以及水平取样间隔M可以减少,以增加垂直扫描线的数量V以及水平扫描线的数量H。或者,两相邻的垂直扫描线的取样间隔N以及两相邻的水平扫描线的水平取样间隔M也可以动态地调整。例如,总数为V的垂直扫描线中,可以调整垂直扫描线的密度分布,以使两相邻的垂直扫描线的取样间隔N是可变的参数。并且,两相邻的水平扫描线的水平取样间隔M可以动态地调整。例如,总数为H的水平扫描线中,可以调整水平扫描线的密度分布,以使两相邻的水平扫描线的取样间隔M是可变的参数。因此,藉由适当调整取样参数,条码检测系统100将具有很高的操作弹性。

二值化图像BIMG只会有较亮的第一灰阶值以及较暗的第二灰阶值。因此,单一条扫描线所取样的一列或一行像素的颜色数据,可包含此列或此行像素的颜色变化。例如,水平扫描线SH1、SH2、SH3扫描到窗格SW内二值化条码BBC,因此检测到灰阶值变化的状态,水平扫描线SH1、SH2、SH3所对应的灰阶值变化次数分别为2、4、3,以SH1(2)、SH2(4)、SH3(3)表示。类似地,垂直扫描线SV1至SV3到窗格SW内二值化条码BBC,因此检测到灰阶值变化的状态,垂直扫描线SV1、SV2、SV3所对应的灰阶值变化次数分别为4、4、5,以SV1(4)、SV2(4)、SV3(5)表示。更一般性地说,二值化图像BIMG在水平方向上的H个灰阶值变化次数,为二值化图像BIMG在水平方向上,以H个水平扫描线进行水平取样的H个第一灰阶值与第二灰阶值相互转换的次数。类似地,二值化后的图像在垂直方向上的V个灰阶值变化次数,为二值化后的图像在垂直方向上,以V个垂直扫描线进行垂直取样的V个第一灰阶值与第二灰阶值相互转换的次数。因此二值化图像BIMG在窗格SW内在水平方向上的灰阶值变化次数则为水平扫描线SH1、SH2、SH3所对应的灰阶值变化次数的总和,即为2+4+3=9;二值化图像BIMG在窗格SW内在垂直方向上的灰阶值变化次数则为垂直扫描线SV1、SV2、SV3所对应的灰阶值变化次数的总和,即为4+4+5=13。在窗格SW内,若垂直方向上的V个灰阶值变化次数高于第一预定值及水平方向上的H个灰阶值变化次数高于第二预定值,则判定窗格SW所覆盖的区域为最密集翻转区域,否则移动窗格SW以覆盖另一区域。例如若第一预定值及第二预定值皆为8,则窗格SW所覆盖的区域可认定为最密集翻转区域;而若第一预定值及第二预定值皆为9,则由于水平方向上的灰阶值变化次数为9,没有大于第二预定值,因此窗格SW所覆盖的区域可认定并非为最密集翻转区域。

图6是窗格SW的移动示意图。窗格SW可在图像BIMG中以任意方式移动,举例而言,窗格SW可水平移动W个像素和/或垂直移动Z个像素,W、Z可为任何大于等于1的正整数。当窗格SW移至下一区域,便可重复上述的垂直扫描线及水平扫描线的取样以统计二值化图像BIMG在窗格SW内的灰阶值变化次数。若垂直方向上的V个灰阶值变化次数高于第一预定值及水平方向上的H个灰阶值变化次数高于第二预定值,则判定窗格SW所覆盖的区域为最密集翻转区域,否则移动窗格SW以覆盖另一区域。重复上述的方法直到窗格SW所覆盖的区域为最密集翻转区域。举例而言,根据图像参数,窗格SW可向上移动5像素,并再执行取样,若取样结果未超过第一预定值及第二预定值,则窗格SW再向上移动5像素。或者可根据图像参数,使窗格SW向右移动3像素并再执行取样,以此类推。

图7是窗格SW覆盖核心条码区域的示意图。在最密集翻转区域被确认后,窗格SW可开始扩张。窗格SW可先沿水平方向扩张,之后,在窗格SW的扩张区域内统计二值化图像BIMG在垂直方向上的灰阶值变化次数,若在扩张区域内,二值化图像BIMG在垂直方向上的灰阶值变化次数高于预定值,则再次往水平方向扩张窗格SW,重复执行上述步骤直到扩张区域内的垂直方向上的灰阶值变化次数低于预定值时,即可停止扩张。同理,窗格SW可再沿垂直方向扩张,之后,在窗格SW的扩张区域内统计二值化图像BIMG在水平方向上的灰阶值变化次数,若在扩张区域内,二值化图像BIMG在水平方向上的灰阶值变化次数高于预定值,则再次往垂直方向扩张窗格SW。重复执行上述步骤直到扩张区域内的水平方向上的灰阶值变化次数低于预定值时,即可停止扩张。如图7所示,若灰阶值变化次数的预定值为10,水平扫描线SH1所对应的变化次数为8,水平扫描线SH2所对应的变化次数为6,皆低于预定值,窗格SW便停止往垂直扩张。垂直扫描线SV1所对应的变化次数为9,垂直扫描线SV2所对应的变化次数为9,皆低于预定值,窗格SW便停止往水平扩张。窗格SW所覆盖的区域即为核心条码区域。

图8是梯度相位决策边界的示意图。在条码检测系统100中,可以预先设定P个梯度相位决策边界(Decision Boundary),其中相邻的梯度相位决策边界相差2π/P。例如,当P为8时,条码检测系统100可以预先设定8个梯度相位决策边界,以DB1至DB8表示。梯度相位决策边界DB1对应角度为0的相位、梯度相位决策边界DB2对应角度为2π/8的相位、梯度相位决策边界DB3对应角度为4π/8的相位,依此类推。因此,处理器11可将窗格SW所覆盖区中的所有像素的多个梯度相位角度,利用P个梯度相位决策边界以产生多个梯度相位决策角度。换句话说,窗格SW所覆盖区中的每一像素的梯度相位角度,将会被量化为P个梯度相位决策边界中的其中一个梯度相位决策边界。因此,处理器11产生的多个梯度相位决策角度只会有P种可能的组合。在此,由于二维条码的转折点对应π/2,因此P为大于等于4的偶数,如此才能有效地将窗格SW所覆盖区域中二维条码的梯度相位角度特性量化。

图9是梯度相位角度分布仅包含一个峰度(Kurtosis)分布C的示意图。如前述,处理器11可将窗格SW所覆盖区域中的所有像素的多个梯度相位角度,利用P个梯度相位决策边界以产生多个梯度相位决策角度。接着,可依此产生梯度相位角度分布。例如,可将窗格SW所覆盖区域中的所有像素对应的多个梯度相位决策角度(有P种角度的可能性)进行统计分析,统计当梯度相位决策角度为0(对应梯度相位决策边界DB1)时的数量,统计当梯度相位决策角度为2π/8(对应梯度相位决策边界DB2)时的数量,依此类推。最后产生如图8所示的梯度相位角度分布。若梯度相位角度分布仅包含一个峰度分布C,处理器11可产生条码为一维条码的格式检测结果,其原理描述于下。由于一维条码为单一轴向的多个黑条(Bar)以及白条(Space)所组成,因此其图像的梯度相位角度是单一的角度。在一维条码未被旋转的情况下,其梯度相位角度应为π/2。然而,当相机10提取包含一维条码的图像时,可能一维条码的图像会被旋转。然而,若是旋转角度为θ,则一维条码的梯度相位角度应为π/2+θ。因此,在图9中,若梯度相位角度分布仅包含一个峰度分布C,且峰值PK趋近于Φ,则可判断扫描的条码为一维条码,甚至可以计算出旋转角度θ为Φ-π/2。

图10是梯度相位角度分布包含两个峰度分布C1及C2的示意图。如前述提及,处理器11可将窗格SW所覆盖区域中的所有像素的多个梯度相位角度,利用P个梯度相位决策边界以产生多个梯度相位决策角度。接着,处理器11可依此产生梯度相位角度分布。例如,处理器11可将窗格SW所覆盖区域中的所有像素对应的多个梯度相位决策角度(有P种角度的可能性)进行统计分析。例如,可依据窗格SW所覆盖区域中的所有像素对应的多个梯度相位决策角度,统计当梯度相位决策角度为0(对应梯度相位决策边界DB1)时的数量,统计当梯度相位决策角度为2π/8(对应梯度相位决策边界DB2)时的数量,依此类推。最后产生如图10所示的梯度相位角度分布。若梯度相位角度分布仅包含两个峰度分布C1及C2,则产生条码为二维条码的格式检测结果,其原理描述于下。由于二维条码为双轴向的多个黑以及白色的图像区块所组成,因此其图像的梯度相位角度是两个角度。在二维条码未被旋转的情况下,其梯度相位角度的集合应包含0以及π/2。然而,当相机10提取包含二维条码的图像时,可能二维条码的图像会被旋转。然而,若是旋转角度为θ,则二维条码的梯度相位角度的集合应包含θ以及π/2+θ。因此,在图10中,若梯度相位角度分布仅包含两个峰度分布C1及C2,峰值PK1以及PK2分别趋近于Φ1以及Φ2,且Φ1以及Φ2相差π/2时,则可判断扫描的条码为二维条码,甚至可以计算出旋转角度θ为Φ1。

图11是窗格定位条码区域的示意图。当条码的格式检测结果产生后,可根据格式检测结果再次扩张窗格SW所覆盖的区域至完全覆盖二值化条码BBC。扩张方式与图7中窗格SW扩张至覆盖核心条码区域的方式相同,但是降低灰阶值变化次数的预定值至更低的数值,例如3或2。如图11所示,若灰阶值变化次数的预定值为3,水平扫描线SH1所对应的变化次数为0,水平扫描线SH2所对应的变化次数为2,皆低于预定值,窗格SW便停止往垂直扩张。垂直扫描线SV1所对应的变化次数为2,垂直扫描线SV2所对应的变化次数为2,皆低于预定值,窗格SW便停止往水平扩张,窗格SW即可覆盖并定位二值化条码BBC。最后,若是应用上有需要,条码检测系统100可以将窗格SW的区间再稍微扩展,以保证可以涵盖到条码图像。

图12是图1的条码检测系统执行条码检测方法的流程图。条码检测方法包含以下步骤:

步骤S1202:相机10取得图像IMG;

步骤S1204:取得图像IMG中每一像素的水平图像梯度及垂直图像梯度;

步骤S1206:根据水平图像梯度及垂直图像梯度,产生每一像素的梯度相位角度及梯度能量强度;

步骤S1208:将每一像素的梯度能量强度二值化,以产生二值化图像BIMG;

步骤S1210:在二值化图像BIMG中产生一窗格SW;

步骤S1212:在窗格SW内对二值化图像BIMG以N个像素为间隔的V个垂直扫描线进行垂直取样,以统计二值化图像BIMG在垂直方向上的V个灰阶值变化次数;

步骤S1214:在窗格SW内对二值化图像BIMG以M个像素为间隔的H个水平扫描线进行水平取样,以统计二值化图像BIMG在水平方向上的H个灰阶值变化次数;

步骤S1216:垂直方向上的V个灰阶值变化次数是否高于第一预定值,且水平方向上的H个灰阶值变化次数是否高于第二预定值?若是,则判定窗格SW所覆盖的区域为最密集翻转区域,执行步骤S1220,若否,则执行步骤S1218;

步骤S1218:移动窗格SW至二值化图像BIMG中另一位置,执行步骤S1212;

步骤S1220:扩张窗格SW至窗格SW覆盖核心条码区域;

步骤S1222:提取核心条码区域中的多个像素的多个梯度相位角度以产生梯度相位角度分布;

步骤S1224:根据梯度相位角度分布,产生条码的格式检测结果;

步骤S1226:根据格式检测结果扩张窗格SW至窗格SW完全覆盖条码。

经由以上步骤,条码检测系统100即可准确且快速的在图像IMG中定位条码BC。

综上所述,本发明描述了一种条码检测方法以及条码检测系统。条码检测系统可使用相机提取图像,并用处理器计算图像中全范围或是特定区域内的每一像素的水平梯度以及垂直梯度,以产生每一像素的梯度相位角度以及梯度能量强度。为了增加检测精准度,系统可以将图像进行二值化处理。随后,利用间隔取样的机制以检测二值化图像的颜色特性,可大幅降低计算复杂度和处理时间。之后,经由移动窗格及二值化图像分析,可定位核心条码区域以进一步地分析梯度相位角度分布并根据梯度相位角度分布产生条码的格式检测结果。最终,系统可根据条码的格式检测结果进一步定位条码图像区域。因此,本发明的条码检测方法以及条码检测系统,除了具有高检测可靠度外,还具有低运算复杂度以及降低处理时间的优点。

以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的均等变化与修饰,皆应属本发明的涵盖范围。

相关技术
  • 条码检测方法及条码检测系统
  • 一种带条码商品的条码标记检测方法
技术分类

06120112985495