用于处理2D彩色条形码的数据处理设备和方法与流程

文档序号:12365375阅读:288来源:国知局
用于处理2D彩色条形码的数据处理设备和方法与流程

本发明涉及二维(2D)彩色条形码的设计和解码,具体地说,本发明涉及用于基于相机的应用的2D彩色条形码的设计和解码。



背景技术:

条形码是数据的光学机器可读表示。2D彩色条形码由以二维的方式(例如在水平方向和垂直方向这两个方向上)布置的小的正方形或矩形单元形成,并且针对每个单元使用一种颜色。不同的颜色表示不同的数据值。条形码的数据容量与单元数量及颜色的数量之间的关系可以被表达为:

数据容量=(单元数量)×log2(颜色表示的数量)

使用小的单元大小和更多的颜色表示的条形码设计可以在给定区域中实现相对较高的数据容量。然而,各种因素限制了单元能够有多小。

当2D彩色条形码被打印在纸上或者显示在显示屏幕(诸如移动装置的屏幕)上并被基于相机的条形码读取器(与平板型扫描仪不同)读取时,透视投影和不均匀照射可能对解码条形码带来挑战。



技术实现要素:

因此,本发明涉及一种对2D彩色条形码进行处理的方法和相关设备,该方法和相关设备基本上消除了由于现有技术的限制和缺陷而导致的问题中的一个或多个。

本发明的目的是提供一种准确地识别条形码图像中的定位符的方法。

本发明的另一目的是对通过基于相机的条形码读取器获取的条形码图像提供对于透视投影和不均匀照射的校正。

本发明的另外的特征和优点将在下面的描述中阐述,并且部分地从描述将是清楚的,或者可以通过实施本发明来获悉。本发明的目的和其他优点将通过在撰写的说明书及其权利要求书以及附图中具体指出的结构来实现和达成。

为了实现这些和/或其他目的,如所体现的和宽泛地描述的,本发明提供了一种用于处理捕获的条形码图像中的二维彩色条形码的方法,所述条形码具有包括多个颜色数据单元和多个定位符的已知布局,所述多个定位符中的每个定位符由多个黑色像素形成,所述定位符位于整个条形码的不同位置处,所述方法包括:将彩色条形码图像转换为灰阶条形码图像;多次对所述灰阶条形码图像进行二值化以产生多个二值图像,每次使用多个不同的二值化阈值中的一个;识别每个二值图像中的定位符并确定每个二值图像中的定位符的位置;以及组合在所述多个二值图像中识别的定位符以产生定位符的组合列表。

在另一个方面,本发明提供了一种计算机程序产品,该计算机程序产品包括具有计算机可读程序代码的计算机可用非暂时性介质(例如,存储器或存储装置),该计算机可读程序代码嵌入在该计算机可用非暂时性介质中用于控制数据处理设备,计算机可读程序代码被配置为使数据处理设备执行以上方法。

要理解,前面的概括描述和下面的详细描述都是示例性的和说明性的,并且意图提供要求保护的本发明的进一步的说明。

附图说明

图1例示说明根据本发明的实施例的彩色条形码布局。

图2示意性地例示说明根据本发明的实施例的用于处理条形码图像的方法。

图3A例示说明示例性条形码图像。

图3B-3E例示说明使用不同的二值化阈值从图3A中的条形码图像产生的多个二值图像。

图4示意性地例示说明根据本发明的实施例的用于识别二值图像中的定位符的方法。

图5示意性地例示说明可以实现本发明的实施例的数据处理设备。

具体实施方式

本发明的一方面是将被打印在介质上或者被显示在移动装置的屏幕上的2D彩色条形码的布局设计。本发明的另一方面是适合于对来自经由相机捕获的图像的2D彩色条形码进行解码的解码处理和算法。2D彩色条形码的设计包含促进从相机捕获的条形码图像进行处理和解码的特征。

图1描绘了根据本发明的实施例的示例性彩色条形码的布局。彩色条形码包括形成二维阵列的多个数据单元11,每个单元具有多种颜色之一。在优选实施例中,所述多种颜色是青色(C)、品红色(M)、白色(W)(即,未被打印的)和黑色(K),每个单元可以表示2比特信息。CMYK是在典型的打印机中使用的原色,CMYK中的每个由一种有色墨水打印出,并且被称为颜色通道。在图1的彩色条形码布局中,原色黄色(Y)被白色(W)、即未被打印的单元取代。因此,条形码中的每个单元被用一种墨水打印出或者不被打印,并且每个单元的颜色将是均匀的。每个单元具有限定的大小,并且单元相隔限定的距离。优选地,单元是正方形形状的,在栅格上形成在垂直和水平方向上排列的列和行,并且行距离和列距离相等。在一个具体实施例中,单元大小是3×3个像素,单元之间的距离(白色空间的宽度)在水平和垂直方向上都是2个像素。在这个例子中,栅格是正方形栅格。可替代地,栅格可以是矩形栅格。

条形码具有位于条形码的四个拐角处的、沿着条形码的边界的以及在条形码的内部的多个定位符12。在所示的例子中,提供了十六个定位符12,形成4×4阵列;四个定位符位于拐角处,八个沿着边界安置,四个位于条形码的内部。如稍后将看到的,定位符12可以提供整个条形码内的位置参考以帮助图像处理和解码。定位符优选地是黑色的并且远大于数据单元,这使得定位符在图像中相对容易识别。在所示的实施例中,每个定位符由实心黑色正方形形成,该实心黑色正方形被白色空间包围、然后被黑色边界包围;正方形是13×13个像素(即,与三列和三行数据单元一样宽),白色空间为7个像素宽(即,等同于当数据单元的列或行在数据单元区域中被移除时创建的白色空间),黑色边界为3个像素宽(即,与数据单元相同的宽度)。因此,每个定位符12的大小为33×33个像素,占据等同于数据单元阵列中的7×7个数据单元的空间。

条形码还具有沿着条形码的四个边界位于定位符之间的多个边界参考单元13。边界参考单元13包括按预定义的颜色顺序(例如,在所示的例子中,C、M、B的重复顺序)布置的青色、品红色和黑色参考单元。换句话说,每个边界参考单元的颜色是已知的。参考单元可以提供在解码处理中有用的颜色信息以及(全局的和局部的)通道偏移信息。在一个实施例中,边界参考单元13具有与数据单元11相同的大小,以使得这些参考单元的颜色密度与数据单元的颜色密度类似。

边界参考单元13彼此之间的、与定位符12的以及与数据单元11的相隔距离大于内部数据单元阵列中的单元间隔,以便避免参考单元的可能的重叠。在所示的例子中,两个相邻的参考单元之间以及参考单元和相邻的数据单元之间的距离(白色空间)为7个像素(即,等同于当数据单元的列或行在数据单元区域中被移除时创建的白色空间)。定位符12和相邻的参考单元13相隔该距离或更大距离。

不对称性可以被设计到条形码中,以使得拐角的四个定位符中的一个可以与其他定位符区分开,这在解码处理中是有用的。这可以以任何合适的方式实现。例如,一个拐角定位符可以具有与其他拐角定位符不同的形状。也可以通过沿着边界使用不同的或不对称的颜色顺序的参考单元而将不对称性设计到条形码中。其他附加特征也可以被设计到条形码中,诸如对条形码的ECC和数据长度进行编码的验证单元等。

在一个具体例子中,用于条形码的栅格具有124列和124行。排除白色空间、定位符和参考单元,大约13500个数据单元可以用于将信息存储在每个条形码中。多个条形码可以在同一个页面上彼此相邻地放置,在它们之间有例如20个像素的白色空间。对于600dpi的打印分辨率,条形码将占据大约1.05×1.05平方英寸的空间。因此,多达7×10个条形码可以被放置在信纸尺寸(letter size)的页面上。

下面参照图2描述用于处理具有以上设计的条形码的条形码图像处理方法。首先,捕获条形码图像(步骤S101)。具有上述布局设计的条形码已经被打印在纸上或者显示在显示屏幕(诸如移动装置的屏幕)上。在该步骤中,作为彩色图像的条形码图像通常是使用相机或基于相机的条形码读取器、在打印的片材或屏幕被保持在条形码读取器或相机的前面时被捕获的。当然,也可以使用扫描仪捕获条形码图像。

将捕获的图像转换为灰阶图像(步骤S102)。确定灰阶图像的最大和最小强度(像素值),并基于最大和最小强度值来计算多个二值化阈值(步骤S103)。这里注意,由于成像条件,捕获的图像中的白色空间或白色单元的像素值和黑色单元的像素值可能不是白色和黑色的理论值。在一种实现中,计算四个二值化阈值,它们的值在最大和最小强度值之间线性地分布。然后使用该多个二值化阈值来多次对灰阶条形码图像进行二值化,以产生各自的多个二值图像(步骤S104)。

对每个二值图像进行处理以识别条形码中的定位符(步骤S105)。任何合适的技术都可以用来识别具有已知形状的定位符。该方法可以取决于定位符的形状。例如,对于图1中所示的定位符具有同心正方形的形状(被正方形边界包围的实心正方形,在正方形边界和实心正方形之间有白色空间)的示例性条形码设计,当水平扫描线通过定位符的中心时,相邻的黑色和白色段长度(即,黑色和白色像素的游程长度)之间的比率应落在给定范围内。因此,这些比率可以用于识别定位符。下面参照图4来详细描述用于识别二值图像中的定位符的方法的一个例子;应理解,可以使用其他方法,并且本发明不限于这些特定例子。虽然在下面的例子中给出了特定值,但是可以使用其他合适的值。

首先,枚举二值图像中的像素的所有行;在每行中,识别黑色像素(前景)和白色像素(背景)的所有游程长度(步骤S21)。对于其中第一个是黑色的每五个连续的游程长度R1至R5,计算以下比率并将这些比率与预定范围进行比较:0.5≤R2/R4≤2、2≤R3/R1≤20以及2≤R3/R5≤20(步骤S22)。如果满足以上条件,则将模板图像M的在与游程长度R3中的黑色像素对应的位置处的像素设置为黑色(步骤S23)。图像M是与二值条形码图像大小相同的二值图像,并且图像M的所有像素都被初始设置为白色。

在二值条形码图像的所有行都被处理之后,使用连通分量分析来对图像M进行分析以识别可能是条形码图像的定位符的候选位置(步骤S24)。首先,对图像M进行分析以找到图像M中的所有的连通分量。二值图像的连通分量是彼此连接的一组黑色像素。对于每个连通分量,如果其高度与宽度比在范围[0.5,2]之外,则丢弃它。对于图像M中的其余的连通分量,将该其余的连通分量的中心识别为可能与条形码图像的定位符对应的候选位置。

然后,在二值图像中针对步骤S24中识别的每个候选位置,应用轮廓分析来确定该候选位置是否是条形码定位符(步骤S25)。首先,针对与图像M中识别的中心位置对应的每个位置,对二值图像进行分析以找到该位置周围的轮廓。如果该位置对应于条形码的定位符,则在它的周围应找到三个轮廓。因此,如果对于给定位置没有找到三个轮廓,则丢弃该位置。如果在给定位置周围找到三个轮廓,则获得三个轮廓L1、L2和L3的长度以确定它们是否满足某些预定关系,诸如:0.3≤L1/L2≤0.7以及0.4≤L1/L3≤0.95。如果满足以上条件,则将该位置看作条形码定位符位置。然后,从二值图像,将与第一轮廓L1相关的连通分量的中心确定为是该条形码定位符的中心。

步骤S105生成识别的定位符的位置(坐标)的列表。优选地,每个定位符的几何中心被用来限定其位置。将所有二值图像中识别的定位符组合在一起以产生定位符的组合列表(S106)。多次二值化处理(即,步骤S103-S106)的目的是确保图像中的所有定位符都被识别。由于各种原因,在二值图像中的一些中可能不能正确识别一些定位符。例如,由于照明和曝光条件,条形码图像的亮度在整个条形码上可能是不均匀的;对于给定的二值化阈值,条形码图像的一些区域可能太亮和/或一些区域可能太暗,而这些区域中的定位符可能不能被正确地识别。通过使用多次二值化,可以预期每个定位符将在二值图像中的一些中被正确识别,从而在步骤S106中产生的定位符的组合列表将包含条形码中的所有定位符。一些定位符可以在多个二值图像中被识别;在步骤S106中,比较在步骤S105中产生的多个列表中的定位符的坐标,以确定不同列表中的一些项是否对应于相同的定位符。

图3A-3E中示出了例子。图3A例示说明示例性条形码图像。图3B-3E例示说明使用不同的二值化阈值从图3A中的条形码图像产生的多个二值图像。在这个例子中,条形码图像(图3A)的左下部分比右上部分暗。可以看出,一些定位符在一些二值图像中比其他定位符更清楚地可见,并且所有定位符可以在至少一个二值图像中被识别。

检查定位符的组合列表以确认定位符的数量等于期望数量(例如,十六个);如果被确认,则基于列表中的定位符在条形码中的位置来对这些定位符编排索引(步骤S107)。例如,可以将它们从顶行到底行编排索引,并且在每行中从左列到右列编排索引,并给它们分配从1至16的索引值。注意,条形码在图像中可以具有任何方位;定位符如何被编排索引的选择基本上是任意的。

识别的定位符可以用在随后对条形码图像的处理中,诸如透视失真的校正、照射效果的校正、条形码数据提取等。

因为条形码图像是使用条形码读取器或相机捕获的,所以条形码被打印或显示在其上的打印的片材或移动屏幕可能已经相对于条形码读取器或相机保持成一定角度。结果,图像中的条形码常常不是正方形的,而是包含透视失真。在步骤S108-S110中对条形码图像执行透视失真的校正。使用在步骤S107中识别的定位符来对条形码的原始彩色图像执行该处理。

首先,使用多个定位符12将条形码的彩色图像划分为更小的区域,以使得每个区域由在其拐角处的四个定位符限定(步骤S108)。例如,图1中所示的具有4×4个定位符的条形码将被划分为九个区域。例如,如果当条形码图像被捕获时打印的片材不是平的,则这些区域可能具有不同的透视失真。对于每个区域,将变换(投影)应用于该区域以将该区域变换为由条形码布局设计限定的该区域的原始形状,诸如具有水平边和垂直边的正方形(步骤S109)。在该步骤中,使用限定该区域的四个定位符的坐标来计算变换,即,将四个定位符变换到原始形状(例如,正方形)的四个拐角的变换,然后将所计算的变换应用于整个区域。然后,将所有变换的区域在空间上组合在一起以产生变换的条形码图像(步骤S110)。该条形码图像将具有原始布局的形状,诸如正方形。

因为条形码图像是使用条形码读取器或相机捕获的,所以图像的像素强度受到照明条件以及可能使像素强度在条形码上不均匀的其他条件的影响。因此,在步骤S111至S113中,再次使用定位符12来对条形码图像应用像素强度校正。该处理应用于在步骤S110中获得的变换的彩色条形码图像。

首先,计算每个定位符12的黑色像素的平均像素强度(步骤S111)。使用条形码的定位符的位置和平均像素强度来构造2D照射校正图(步骤S112),该2D照射校正图由针对条形码图像的每个像素位置的照射校正函数组成。更具体地说,针对每个定位符的像素位置(由其中心限定)的照射校正函数是将该定位符的平均像素强度映射到理想黑色的像素值的函数;在除了各定位符的每个像素位置处,基于邻近定位符的位置处的照射校正函数,使用2维线性插值来推导照射校正函数。

在理想黑色值是彩色图像的最大像素值(例如,对于8比特数据是255)的优选实施例中,每个定位符的像素位置处的照射校正函数是这样的乘子,即当将该乘子应用于该定位符的平均像素强度时给出理想黑色的像素值。换句话说,该乘子是理想黑色的像素值与该定位符的平均像素强度的比率。在除了各定位符之外的每个像素位置处,照射校正函数是这样的乘子,即该乘子的值从邻近定位符位置(例如,四个邻近定位符)处的乘子值通过2维线性插值而被计算出。因此,这样的2D照射校正图是与条形码图像大小相同的2D图,并且该2D图的像素值是以上述方式计算出的乘子值。

这里注意,在该例子中,黑色和白色的定义使得理想黑色具有最大像素值。理想黑色和白色的像素值是定义的问题。如果使用理想黑色具有像素值零的不同定义,则每个定位符的像素位置处的照射校正函数将是将该定位符的平均像素强度映射到零的函数,并且再次使用2维线性插值来推导针对除了该定位符之外的像素位置的照射校正函数。这在数学上等同于黑色的定义是最大像素强度的例子。

在照射校正图被构造之后,将该照射校正图应用于彩色条形码图像(步骤S113)。换句话说,将针对每个像素位置的照射校正函数应用于条形码图像的在该像素位置处的像素值。在上面的优选实施例中,条形码图像的每个像素的像素值被乘以2D照射校正图的对应的乘子。该校正分别应用于像素值的每个颜色通道。结果,产生照射校正的彩色条形码图像。

透射失真校正(步骤S108-S110)和照射校正(步骤S111-S113)的结果是校正后的条形码。在这些校正之后,应用解码处理来提取数据单元的颜色数据并对提取的数据进行解码(步骤S114)。任何合适的解码方法可以用于提取数据单元的颜色数据;一个例子描述在2014年5月29日提交的共有的美国专利申请No.14/290595中。

在所示的实施例中,十六个定位符位于拐角处、沿着边界以及在条形码的内部。在其他条形码设计中,取决于条形码的大小,可以使用不同数量和分布的定位符。在一些例子中,位于条形码的拐角处的四个定位符可以是足够的。

上述条形码图像处理方法具有以下特征:首先,该方法使用灰阶图像的多次二值化来产生多个二值图像以便识别所有定位符。第二,该方法将照射校正应用于条形码图像。更具体地说,该方法使用分布在整个条形码上的多个定位符来计算照射校正图,该照射校正图然后被应用于整个条形码。这些特征是由以下事实所驱动的,即,数据单元是颜色单元而且很小,并且相机捕获的条形码图像的图像质量常常很低。

这里所描述的彩色条形码图像处理方法可以在诸如图5中所示的计算机120的数据处理系统中实现。计算机120包括处理器121、存储装置(例如,硬盘驱动器)122以及内部存储器(例如,RAM)123。存储装置122存储被读出到RAM 123并被处理器121执行以实现所述方法的软件程序。在一个方面,本发明是由数据处理系统执行的方法。在另一方面,本发明是包含在计算机可用的非暂时性介质中的计算机程序产品,该计算机程序产品具有计算机可读程序代码,该计算机可读程序代码嵌入在该计算机程序产品中,用于控制数据处理设备执行所述方法。在另一方面,本发明体现在数据处理系统中。

对于本领域技术人员将清楚的是,在不脱离本发明的精神或范围的情况下,可以在本发明的彩色条形码图像处理方法和相关设备中进行各种修改和变化。因此,意图是,本发明覆盖落在所附权利要求书及其等同形式的范围内的修改和变化。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1