解码二维矩阵符号的方法和系统与流程

文档序号:22578293发布日期:2020-10-20 16:51阅读:162来源:国知局
解码二维矩阵符号的方法和系统与流程

本申请是申请日为2015年11月18日、中国国家阶段申请号为201511036169.3、题为“解码二维矩阵符号的方法和系统”的发明专利申请的分案申请。

相关申请

本申请涉及2014年11月18日提交的美国临时专利申请no.62/081,327,在此要求其优先权,并通过引用将其全部并入本申请。



背景技术:

本技术涉及用于解码符号的成像系统和方法,更具体地,涉及用于读取具有不完整或者缺少固定模式的二维矩阵符号的成像系统和方法。

成像系统使用包括递送可见主题信息的图像传感器的图像获取设备。然后,该系统根据各种算法翻译该信息,以执行程序编写的决策和/或识别功能。对于一图像,要被在可见以及近可见光范围内的传感器最有效地获得,该主题被典型地照亮。

使用图像传感器的符号表示读取(通常也称作条码扫描)意味着图像获取系统瞄准在包括符号(例如,条码)的对象位置处,该图像获取系统包括光学器件(透镜)和传感器(cmos相机,ccd等),并获得该符号的图像。符号包含一组预定模式,其表示字符或者形状的有序组,附加的数据处理器(例如微型计算机)能够从中获取关于对象的有用信息(例如,它的序列号,类型,型号,价格等等)。符号/条码在各种形状和大小可用。被用在标识和识别对象的两个最常用的符号类型是所谓的一维条码,其包括变宽的条和空的序列,以及所谓的二维条码,其包括点或者矩形的二维阵列。

在典型的符号表示读取中,符号/条码通过首先定位固定模式,例如取景器模式来识别。如果固定模式被破坏或者缺少,阅读器不能读出该符号。在当前处理破坏的固定模式的尝试中,包括确定矩形符号的角的位置的努力。然而,这些尝试需要识别符号/条码中的固定点,并且,如果这些固定点由于符号被破坏而不能被定位,尝试是无用的。

存在对解码符号的改进系统和方法的需要,并且,尤其需要克服与已经被破坏或缺少固定模式的符号/条码相关的缺点。



技术实现要素:

在一个方面,本公开提供了用于读取二维矩阵符号(symbol)或者确定二维矩阵符号是否是可解码的系统。该二维矩阵符号可以包括不完整的固定模式或者无固定模式。该二维矩阵符号可以编码一数据集。该系统可以包括成像设备和处理器。该系统可以可选地包括二进制矩阵解码器。该成像设备可以被配置为获取包含二维矩阵符号的至少一部分的图像。该处理器可以操作地耦合到成像设备。该处理器可以被配置为执行数据读取算法。该数据读取算法可以接收图像,在不使用固定模式的图像中定位数据模块的至少一部分,拟合来自图像的模块位置的模型,外插该模型从而产生预测的模块位置,确定在预测的模块位置处来自图像的模块值,以及从模块值中提取二进制矩阵。该二进制矩阵解码器可以操作地耦合到处理器。该二进制矩阵解码器可以配置为执行解码二进制矩阵的解码算法。该数据读取算法可以包括频域分析。

在另一个方面,本公开提供了一种读取二维矩阵符号的方法。该二维矩阵符号可以包括数据模块,每个数据模块具有模块值以及模块位置。该二维矩阵符号可以包括不完整的固定模式或者无固定模式。该二维矩阵符号可以编码一数据集。该方法可以包括一个或多个以下步骤:在处理器处接收图像,该图像包括二维矩阵符号的至少一部分;使用处理器定位在不使用固定模式的图像中的数据模块的至少一部分;使用处理器来拟合一模型至来自该图像的模块位置的至少一部分;使用处理器来外插该模型以定义预测的模块位置;使用处理器来确定在预测的模块位置处来自图像的模块值;使用处理器从该模块值中提取二进制矩阵;以及解码该二进制矩阵。

本申请进一步包括以下已编号的条款:

1、一种用于读取包括数据模块的二维矩阵符号的系统,每一个数据模块具有模块值和模块位置,所述二维矩阵符号编码一数据集,所述系统包括:

成像设备,所述成像设备被配置为获取包含所述二维矩阵符号的至少一部分的图像;

处理器,所述处理器操作地耦合到所述成像设备,所述处理器配置为执行数据读取算法,其中所述数据读取算法接收所述图像,定位在不使用固定模式的所述图像中的所述数据模块的至少一部分,拟合来自所述图像的所述模块位置的模型,外插所述模型产生预测的模块位置,确定在所述预测的模块位置处来自所述图像的模块值,和从所述模块值中提取二进制矩阵;以及

二进制矩阵解码器,操作地耦合到所述处理器,所述二进制矩阵解码器配置为执行用于解码所述二进制矩阵的解码算法。

2、条款1的所述系统,其中所述数据读取算法使用错误校正例程校正所述二进制矩阵中的错误。

3、条款1的所述系统,其中所述系统包括照明器,其照亮具有一个或多个照明特征的所述图像的目标。

4、条款3的所述系统,其中所述数据读取算法使用所述照明特征在所述图像中定位所述数据模块的至少一部分。

5、条款1的所述系统,其中定位所述数据模块中的至少一部分包括识别从由形状、鞍的存在或缺少、角的存在或缺少、点的存在或缺少、梯度、直方图、小波以及其组合构成的组中选取的所述数据模块的一个或多个重要特征。

6、条款1的所述系统,其中所述处理器或二进制矩阵解码器被配置为外插或者解码多个符号表示类型。

7、条款6的所述系统,其中所述多个符号表示类型从由“datamatrix(数据矩阵)”、qr-code(码)、azteccode(码)、maxicode以及其组合构成的组中选取。

8、条款1的所述系统,其中所述数据读取算法包括二维矩阵符号的属性。

9、条款1的所述系统,其中所述数据读取算法可以由到处理器的单个命令执行。

10、一种读取包括数据模块的二维矩阵符号的方法,每个数据模块具有模块值和模块位置,所述二维矩阵符号编码一数据集,所述方法包括:

在处理器处接收图像,所述图像包括所述二维矩阵符号的至少一部分;

使用所述处理器来定位在不使用固定模式的所述图像中的所述数据模块的至少一部分;

使用所述处理器来拟合一模型到来自所述图像的所述模块位置的至少一部分;

使用所述处理器来外插所述模型以定义预测的模块位置;

使用所述处理器来确定在预测的模块位置处来自所述图像的所述模块值;

使用所述处理器从所述模块值中提取二进制矩阵;以及

解码所述二进制矩阵。

11、条款10的所述方法,所述方法进一步包括使用所述处理器用错误校正例程校正所述二进制矩阵中的错误。

12、条款10的所述方法,所述方法进一步包括照亮所述二维矩阵符号或者靠近所述二维矩阵符号的位置。

13、条款10的所述方法,其中定位所述数据模块的至少一部分包括识别由形状、鞍的存在或缺少、角的存在或缺少、点的存在或缺少、梯度、直方图、小波以及其组合构成的组中选取的数据模块的一个或多个重要特征。

14、条款10的所述方法,其中所述方法包括尝试外插或解码多个符号表示类型。

15、条款14的所述方法,其中所述多个符号表示类型从由“datamatrix”、qr-code、aztec码、maxicode以及其组合构成的组中选取。

16、条款10的所述方法,所述方法进一步包括训练所述处理器在接收所述图像之前包含所述二维矩阵符号的一个或多个属性。

17、条款10的所述方法,其中所述方法可以由到所述处理器的单个命令执行。

18、一种用于确定二维矩阵符号是否是可解码的系统,所述二维矩阵符号包括数据模块,每个数据模块都具有模块值和模块位置,所述系统包括:

成像设备,所述成像设备被配置为获取包含所述二维矩阵符号的图像;

处理器,所述处理器操作地耦合到所述成像设备,所述处理器被配置为执行数据读取算法,其中所述数据读取算法接收所述图像,定位在不使用固定模式的所述图像中的所述数据模块的至少一部分,拟合来自所述图像的所述模块位置的模型,外插所述模型产生预测的模块位置,确定在所述预测的模型位置处来自所述图像的模块值,并且从所述模块值中提取二进制矩阵,

其中所述数据读取算法包括频域分析。

19、条款18的所述系统,其中所述数据读取算法使用频域分析来拟合所述模型。

20、条款18的所述系统,其中所述系统进一步包括操作地耦合到所述处理器的二进制矩阵解码器,所述二进制矩阵解码器配置为执行用于解码所述二进制矩阵的解码算法。

前述内容和其他方面以及本发明的优点将出现在以下说明书中。在说明书中,引用构成说明书一部分的附图,并且其中通过示例方式阐明发明的优选实施例。然而,这些实施例不代表本发明的全部范围,并且因此参考权利要求,并由其解释本发明的范围。

附图说明

当考虑到以下详细的说明时,本发明将被很好的理解,并且除了以上举例外,特征、方面以及优点将变得明显。这些详细的描述参考以下附图做出。

图1是根据本实施例包括用于获取一目标的多个图像的固定扫描仪的典型视觉系统配置的示意图。

图2是特定二维矩阵符号特征和风格的视图;

图3是特定二维矩阵符号特征和风格的视图;

图4是特定二维矩阵符号特征和风格的视图;

图5是特定二维矩阵符号特征和风格的视图;

图6是特定二维矩阵符号特征和风格的视图;

图7是特定二维矩阵符号特征和风格的视图;

图8是图像中二维矩阵符号和背景杂波的视图;

图9是示出根据本公开的二维矩阵符号读取方法的一个方面的流程图;

图10是qr码矩阵符号的例子;

图11是aztec码矩阵符号的例子;

图12是maxicode矩阵符号的例子;

图13是qr码矩阵符号的例子;

图14是aztec码矩阵符号的示意图;

图15是aztec码矩阵符号的中心部分的示意图;

图16是maxicode矩阵符号固定模式部分的示意图;

图17是maxicode矩阵符号中数据区域的示意图;

图18是根据本公开示出可选子例程的流程图;

图19是根据本公开示出拟合子例程的流程图;

图20是根据本公开示出可选鲁棒性子例程的流程图;

图21是根据本公开示出提取子例程的流程图。

技术易受到各种修改和替代形式的影响,因而,本发明的特定实施例通过附图中例子的方式被示出,并且在此被详细地描述。然而,应该理解的是,在此特定实施例的说明并非意在将技术限制在所公开的特定形式内,而且恰恰相反,其目的是覆盖落在由所附权利要求定义的技术的精神和范围内的所有修改、等价以及替换。

具体实施方式

现在参考附图描述主题技术的各个方面,其中在全部若干视图中,类似的参考标号与类似的组件对应。然而,应当理解的是,与此相关的以下附图和详细说明并非意在将所要求的主题限制在公开的特定形式内。而是,意在覆盖落入所要求的主题的精神和范围内的所有修改、等价和替换。

如在此所使用的,术语“组件”、“系统”、“设备”等等意在指硬件,或者软件和硬件的组合,或者软件,或者执行中的软件。在此使用的词语“典型”意味着作为例子,实例或者举例。在此所描述为“典型”的任何方面或设计不必解释为优于或者强于其他方面或者设计。

进一步,所公开的主题可以被实现为系统、方法、装置或制造产品,其使用标准编程和/或工程技术和/或制造的硬件、固件、软件或任何其组合的编程,来控制基于电子器件的设备以实现在此描述的各方面。

除非另行指定或者限制,否则术语“被连接”和“被耦合”以及它们的变形被广泛地使用,并且包括直接和间接安装、连接、支持和耦合。进一步,“被连接”和“被耦合”并非限制为物理或者机械的连接和耦合。如在此所用的,除非另行清楚地声明,否则“被连接”意味着一个元件/特征被直接或间接地连接到另一个元件/特征,并且不必是电性地或机械地。同样,除非另行清楚地声明,否则“被耦合”意味着一个元件/特征直接或间接地耦合到另一个元件/特征,并且不必是电性地或机械地。

如在此所用,术语“处理器”可以包括一个或多个处理器和存储器和/或一个或多个可编程硬件元件。如在此所用,术语“处理器”意在包括处理器、cpu、微控制器、数字信号处理器或者能够执行软件指令的其他设备的任一类型。

如在此所用,术语“存储器”包括非易失性介质,例如磁介质或者硬盘,光学存储器,或者闪存;易失性介质,诸如系统存储器,例如随机存取存储器(ram),如dram、sram、edoram、rambusram、drdram等;或者安装介质,诸如软件媒质,例如cd-rom或者软盘,可以在其上存储程序和/或缓存数据通信。术语“存储器”也可以包括其他类型的存储器或者其组合。

如在此所用,术语“固定模式”包括在每个符号中重复的模式,可被用来定位符号,并且包括取景器模式,定时模式,对齐模式,定位探测模式,静区等等。

如在此所用,术语“模块值”包括两个模块之间能够被量化的任何不同,诸如有照明或没有照明的模块亮度,或由距离感测设备测量的模块深度,或者视觉地表示特定值的任何其他方法。在某些方面,模块值是前景和背景模块之间的二进制。

如在此所用,术语“模块位置”包括与图像中一些固定点相关的模块的位置,诸如另一个模块或者照明特征。

当在此使用时,术语“二进制”可以包括其他非二进制实施例,除非上下文没有另外清楚地指示。例如,如果非二进制二维矩阵符号被利用,那么从中确定和提取的值可以是非二进制的。如另一个例子,如果非二进制二维矩阵符号正被使用,那么解码二进制矩阵可以包括解码非二进制矩阵。

通过使用图表示出用于实现本技术实施例的实施例的结构或过程在以下描述该技术的实施例。采用图表这种方式展现该技术的当前实施例,不应该被视作是对其范围的限制。本技术完全地考虑到用于读取具有被破坏的固定模式或缺少固定模式的二维矩阵符号的系统和方法。

用于读取二维矩阵符号的方法的各个方面可以与系统一起被描述,该系统适用于读取二维矩阵符号。那是因为该技术的特性和优点更适于此目的。仍然应当被理解的是,该技术的各个方面可以被应用于成像系统的其他形式中,诸如手持扫描仪,固定安装扫描仪,或者嵌入式智能照相机,其可以受益于具有在此描述特征的读取过程。此外,用于读取二维矩阵符号的系统的各个方面可以与用于读取二维矩阵符号的方法一起被描述。

图1示出说明性机器视觉系统30,其适用于获取包括机器可读符号36的物体34的一个或多个图像32。输送机38运送物体34并且导致物体34和成像设备42的视场40之间的相对移动。作为非限制性例子,在其他场景中,示例机器视觉系统可以用于制造部件,测试,测量,自动化,和/或控制应用。机器视觉系统30可以用图像获取软件44可操作地执行图像获取的各个类型中的任一种。

例如,成像设备42可以包括处理器46,其用于图像处理和解码。处理器46可以耦合到视觉传感器48,并且可以作为视觉传感器48的一部分,或者可以局部地连接到视觉传感器48。处理器46可以连同图像获取软件44一起被编码,或者在一些方面,图像获取软件44可以运行在单独的计算设备50或者处理器46上。图像获取软件44可以被配置为,在其他事物中,获取单个读取操作中的多个图像,控制照明,获取图像数据,和处理/解码所获取的图像数据为可用的信息。在某些方面,成像设备42可以是距离感测设备。

成像设备42也可以包括存储器介质52,其耦合到视觉传感器48和/或处理器46。存储器介质52可以用于存储所扫描或者处理的图像32,并且缓存数据和通信等等。通信线54,诸如能够传输图像、图像像素阵列等的有线或无线连接,也可以耦合到成像设备42,并且提供连接点给可选的计算设备50。例如,计算设备50可以用于上传和下载所扫描或处理的图像32。成像设备42或计算设备50可以进一步包括通信线54,诸如能够传输数据的有线或无线连接,以使能解码数据的传输。视觉系统30可以包括通过通信线54,诸如能够传送二进制数字信号的有线或无线连接,耦合至成像设备42或计算设备50的可选的触发输入104。被理解的是,无线通信也可以被考虑。在这个例子中,成像设备42可以是常规固定安装扫描仪,手持式扫描仪或者能够提供高角和/或低角照明,或者高和低角照明的组合的嵌入式智能相机。

成像设备42也可以包括瞄准器(未示出)。瞄准器可以是次级照明系统,诸如激光或led,其可以表明成像设备42的性质,诸如成像设备42的活动区域。例如,瞄准器可以表明成像设备42的fov的中心或边界。

在此描述的各个方面允许读取包括不完整的固定模式或者无固定模式的二维矩阵符号。特别地,各个方面将在成像和解码二维矩阵符号的上下文中被描述。在这个例子中,符号36被应用于物体34的表面。由于物体34有时可以部分地被覆盖,在标签的边缘打印,无正确的照明,或者由于任何其他原因,符号36的一些部分被渲染为不可读取的。应该被理解的是,当各个方面可以在读取具有不完整固定模式或者无固定模式的符号中是有用的时,各个方面也可以适用于读取具有完整固定模式的符号。

参考图2-7,“datamatrix(数据矩阵)”形式的二维矩阵符号56可以一个或多个数据区域58组成,其名义上包含在规则阵列中设定的正方形符号模块60。可替换地,符号模块60可以是圆形,诸如由激光或点锤产生的符号模块,或者其他适于数据存储的形状。数据区域58被通常是“l”形的取景器模式62部分围绕,并且数据区域58可以被静区64在四面围绕。定时模式66提供符号36中行和列数量的计数。图5示出亮底暗字的二维矩阵符号56的例子,并且图6示出暗底亮字的二维矩阵符号70的例子。在某些方面,二维矩阵符号是基于颜色的码。基于颜色码的例子包括但不限于高容量彩色条码(hccb)和ultracode。对齐模式72也可以被包括,并且典型地与更大的网格尺寸符号一起使用(见图7)。正是这些取景器模式62、定时模式66、对齐模式72等等,二维矩阵符号中被破坏或者丢失的可由本公开读取出。图4示出在“datamatrix”形式中的二维矩阵符号56,其不具有取景器模式62或者定时模式66。

参考图10,qr码形式的二维矩阵符号56与多个取景器模式62一同被示出。参考图13,qr码形式的二维矩阵符号56与多个版本信息区域82、多个格式信息区域84、多个取景器模式62、多个对齐模式72、多个定时模式66和静区64一同被示出。

参考图11,aztec码形式的二维矩阵符号56与取景器模式62(取景器模式62通过加灰二维矩阵符号56的其余部分被强调)一同被示出。参考图14,aztec码形式的二维矩阵符号56与包括取景器模式62、定时模式66或参考网格,以及方向模式86的固定模式,以及包括模式消息88和数据层90的可变结构一同被示出。参考图15,aztec码形式的二维矩阵符号的一部分与取景器模式62、方向模式86,定时模式66和模式消息88一同被示出。

参考图12,maxicode形式的二维矩阵符号56与取景器模式62一同被示出。参考图16,maxicode形式的二维矩阵符号56的部分与由符号“b”和“w”表示的模块构成的方向模式86一同被示出。参考图17,maxicode形式的二维矩阵符号56被示出,其不具有取景器模式但具有由符号“b”和“w”表示的模块和由位于模块中的1-144序列数字表示的字符序列构成的方向模式86。

转到图9,提供流程图,细节化根据本公开的方法200的步骤。方法200的细节在以下段落中被描述。系统30被配置为执行在此所描述的方法。系统30可以通过符号定位算法74、模块测量算法100、矩阵解码算法102或者它们的组合执行该方法。

在过程框202,方法200可以由在处理器接收图像像素阵列开始,该图像像素阵列包含由传感器捕获的二维矩阵符号图像的至少一部分。通过使用获取图像像素阵列的照相机,图像像素阵列可以在处理器接收,这些像素阵列是随后被传送到处理器的,或者通过简单地在处理器处接收图像像素阵列文件。获取图像像素阵列的特定手段并不意在限制本公开。

二维矩阵符号可以包括每个都具有模块值和模块位置的数据模块。二维矩阵符号可以包括不完整固定模式或者无固定模式。二维矩阵符号可以编码数据集。

在处理框204,方法200可以通过执行包括一个或多个以下步骤的可选子例程204继续:定位一个或多个候选区域;验证候选区域;优先化处理候选区域;以及估计图像像素阵列中二维符号的范围,如图18所示。可选子例程204的任一步骤或者全部步骤是可选的。

参考图18,在过程框402,可选子例程204可通过定位图像像素阵列中一个或多个候选区域开始。定位一个或多个候选区域可以由本领域普通技术人员已知的方法执行,诸如美国专利no.7,181,066公开的方法,在此通过引用全部合并入本申请。

在过程框404,可选子例程204可通过验证一个或多个候选区域继续。所验证的候选区域更可能包含二维符号。验证一个或多个候选区域可以由本领域普通技术人员已知的方法执行,诸如美国专利no.7,181,066公开的方法,在此通过引用将其全部并入本文。

在过程框405,可选子例程204可通过优先化一个或多个候选区域继续。优先化可以基于候选区域的属性,包括并不限于大小、对比度、边缘密度、梯度直方图、场景中呈现的其他符号表示(一维或二维)等,或者它们的组合。

在过程框406,可选子例程204可通过估计图像像素阵列中的二维符号的范围继续。

在利用手持式扫描仪作为成像设备的方面,或者用户相对于二维矩阵符号定向成像设备或相对于成像设备定向二维矩阵符号的其他方面,应当理解的是定位二维矩阵符号可以是相当小的计算需求,因为用户将可能将成像设备对准二维矩阵符号,或者将二维矩阵符号与成像设备对齐。

参考图8,二维矩阵符号56可以用符号定位算法74找到。图像像素阵列80中的剩余符号78,例如文本和数字,如果不包含二维矩阵符号需要的足够数量的特征,可以被看做背景杂波,并且被符号定位算法74忽略。定位二维矩阵符号可实现为通用图像分段技术的部分。

在过程框206,方法200可通过定位图像像素阵列中数据模块的至少一部分继续。在现有技术中,典型地,定位二维矩阵符号通过定位固定模式实现,但是在该实例中,固定模式被破坏或者缺少。定位数据模块的至少一部分可以用处理器或者辅助元件实现。定位数据模块的至少一部分可以包括识别数据模块的一个或多个重要特征,包括但不限于形状、鞍的存在或缺少、角的存在或缺少、点的存在或缺少、边缘、梯度、直方图、小波或者它们的组合。在图像像素阵列中定位数据模块的至少一部分可以由本领域普通技术人员已知的方法实现,诸如美国专利no.7,181,066或者美国专利申请no.13/797,910公开的方法,在此通过引用将其全部合并入本申请。

参考图19,模块定位子例程206可以包括以下步骤的一个或多个。在过程框502,模块定位子例程206可以包括可选地上采样小区域及下采样大区域。在过程框504,模块定位子例程206可以包括从候选区域或者二维矩阵符号中提取边缘强度图像。在过程框506,模块定位子例程206可以包括快速傅里叶变换边缘强度图像以生成二维功率谱。在过程框508,模块定位子例程206可以包括从二维功率谱中提取一个或多个峰值,一个或多个峰值包括定义二维矩阵符号的主轴线(例如方向)的峰值,定义二维矩阵符号的间距的峰值,或者它们的组合。应当注意的是,由于功率谱的对称,当二维矩阵符号中的数据模块在均匀间隔阵列中排列并且从正常角扫描到二维矩阵符号时,仅仅单个的峰值需要被提取。在过程框510,模块定位子例程206可以包括可选地执行鲁棒性子例程。在过程框512,模块定位子例程206可以包括在图像像素阵列中定位一个或多个模块的位置。在利用鲁棒性子例程510的方面,该步骤确定图像像素阵列中所预测的模块中心的偏移。

参考图20,鲁棒性子例程510可以包括以下步骤的一个或多个。在过程框602,鲁棒性子例程510可以包括使用在过程框508生成的功率谱中的一个或多个峰值,生成二维功率谱的掩码。在过程框604,鲁棒性子例程510可以包括快速傅里叶逆变换掩码的二维功率谱以生成所预测的模块中心的灰度图像。在过程框606,鲁棒性子例程510可以包括定位相对于候选区域的所预测的灰度模块中心以及使用子像素插值来细化位置。

在可替换的方面,模块定位子例程可以包括以下:使用本领域技术人员已知的点探测器,诸如hessian行列式或者高斯差分;当二维矩阵行和列在图像像素阵列中垂直时用至少两个点或者当二维矩阵行和列模块不垂直时用至少三个点,使用诸如随机抽样一致(ransac)、几何哈希等方法,估计方向、最高点和补偿;以及继续过程框606或512。当更少的模块用于估计方向、最高点和补偿时,所定位的模块的相关方向将对方向和最高点的估计的正确性有很大影响。本领域技术人员将意识到当模块由于模块固有的被测位置的准确性被分开时,方向的正确性将增加(并且当模块更近时准确性将降低)。类似地,最高点估计从具有更大间隔以及矩阵行和列的已知偏移的模块更准确地得出。

在某些方面,模块的其他特征可以被用在前述方法中,包括但不限于前景和背景模块之间的边。

在过程框208,方法进一步包括拟合子例程208,其可以包括拟合模型到模块位置的至少一个部分。拟合模型到模块位置的至少一部分可以由本领域技术人员已知的技术实现。拟合模型到模块位置的至少一部分可以由处理器或辅助元件完成。模型本身可以基于正在被读出的二维矩阵符号的类型变化(例如,模块在矩形阵列中排列时二维矩阵符号的模型不同于模块在六边形阵列中排列时的二维矩阵符号的模型)。在某些方面,模型可以是严格的均匀间隔,分段线性,透视图,仿射。在某些方面,模型可以是多项式或者薄板样条,或者可以变形样板,其可以导致其他效果,诸如标记底层的缠绕或者较差的标记。在某些方面,模型可以是几何拟合,其导致诸如在非标准形状(例如,圆柱)上标记的效果。在某些方面,模型可以导致标记打印的期望变形,诸如在光栅中打印墨点的连续喷墨式打印机导致行的高相关以及列的低相关,反之亦然。

在拟合子例程208的一个非限制性例子中,二维图像可以被分段并且特征可以被提取(例如,前景模块,诸如在白色表面上黑色标记,反之亦然)。应当被理解的是,不必为了成功地执行拟合子例程208而提取每一个特征。接下来,提取的特征组中心附近的特征被选择。假设在局部的小区域中,模块(前景和背景模块)可以与仿射模型对齐。从中心附近的特征开始,从中心向外移动选择特征,并且在这些特征被选择时建立模型。从中心特征,附近的特征点被识别,并且局部仿射模型(例如,5*5模块碎块)被估计。在局部仿射模型拟合到附近特征点之后,所有特征模块被提取(前景和背景模块)。下一个步骤涉及转变各个方向上的仿射模型。中心特征被定义为理想模型中的[0,0]。从上面讨论的局部仿射模型开始,仿射模型可以被转变为各个方向上的一个模块(例如,八个不同的方向:关于局部仿射模型的东,东南,南,西南,西,西北,北,东北)。一旦仿射模型被转变为一个方向上的一个模块,做出新局部仿射模型的初始估计。在新局部仿射模型附近的特征点被用于细化新局部仿射模块。这个转变在每个方向上继续,直到在各个新局部仿射模型中没有新的特征点被识别。一旦每个方向被完成,并且所有各个相应部分被识别,多项式模型可以被用于拟合相应部分。应当被理解的是,为了码中可能出现的破坏,各个行和/或列可以被外插。

在过程框210,方法200可以进一步包括外插模型产生预测的模块位置。外插模型可以由处理器或辅助元件完成。外插模型可以包括将矩阵码(2维x-pitch(节距),x-phase(相),y-pitch(节距),y-phase(相))阵列的无维度行/列映射至图像像素阵列。应当被理解的是,本公开不限于笛卡尔或2维坐标,六边形,极面,并且其他坐标系被考虑。

预测的模块位置可以是与图像像素阵列相关的位置,在此模块可能被定位以形成完整的二维矩阵符号。应当被理解的是,预测的模块位置不需要是整数像素坐标,因此子像素位置被明确地考虑。此外,具有到图像像素网格的已知映射的其他坐标系被考虑,诸如带有与图像像素阵列已知关系的校准的实字坐标系。当预测的模块位置在图像像素阵列外部被定位,这些位置的模块值可以是未知的。解码二进制矩阵步骤可以使用删除纠错以最大化对符号扩展到超出图像像素阵列外造成破坏的容忍。

在过程框212,方法200可以进一步包括确定在预测的模块位置的图像像素阵列的模块值。确定模块值可以由处理器或辅助元件完成。确定模块值可以由本领域技术人员已知的技术实现。例如,模块值可以由在iso/iec16022:2006第9部分示出的“datamatrix”参考解码算法确定。采样,或者模块值的测量可以在二进制化图像或者灰度图像(具有可选图像预过滤)上执行。在某些方面,采样可以包括选择具有与预测的中心最接近的像素。在某些方面,采样可以从围绕预测的中心的像素中灰度插值。确定模块值可以涉及确定模块是否是前景或背景模块(例如,模块是暗或者亮)。在某些方面,确定模块值可以包括测量从模块位置的反射光的强度,亮模块将反射比暗模块更多的光。在某些方面,确定模块值可以包括测量来自距离感测设备的模块深度。

在某些方面,确定模块值可选地包括使用现有技术已知的方法二进制化。例如,利用像素的灰值的单个阈值的二进制化可以被使用。作为另一个例子,可以使用被设计来适应符号上光照变化的局部阈值。在某些方面,模块值可以是与预测的模块位置最接近的像素的二进制值。

在其他方面,确定模块值可以包括基于图像像素阵列和预测的模块位置采样值。例如,可以处理最初获取的图像,诸如使用平滑过滤来降低噪音。在此之后,模块值可以是与预测的模块位置最接近的像素的值。可替换地,模块位置可以从预测的模块位置附近的像素值内插。

在确定模块值之后,模块值(原始测量或二进制)可以被存储在阵列中。阵列可以比二维矩阵符号中的数据模块行和/或列的数量大或小,当二维矩阵符号406的范围估计或者外插步骤210不准确时。模块值阵列包括二维矩阵符号的至少部分,以及潜在地符号周围静区和/或背景杂波部分。阵列沿符号的主轴被组织,但是阵列内真正符号的偏移和方向未被确定。阵列的存储可以在一维或二维或多维中,这对本领域技术人员应当是显而易见的。

当确定模块值来自预测的模块位置,并且符号的范围是未知的时,符号的确切边界在确定模块值中不被考虑。在确定模块值之后,模块值(原始度量或者二进制)可以被存储在包括二维矩阵符号至少部分以及符号周围的静区和/或背景杂波的潜在部分的一维或多维阵列中。阵列沿符号的主轴组织,但是在该阵列中的真正符号的偏移和方向是未确定的。阵列的尺寸从大概10*10到大概200*200个模块,在符号确切边界未知的实施例中具有额外的行或列。这些阵列的尺寸远小于图像像素阵列的典型尺寸,其可以具有从640*480到2500*1200个像素或更多的尺寸。在某些方面,部分固定模式在模块值的阵列中可以比在图像像素阵列中更简单地被识别。如果符号表示是未知的,定位模块值阵列中的固定模式的至少一部分可以被用于符号之间的差分。

在过程框214,方法200可以进一步包括从模块值阵列中提取二进制矩阵。提取二进制矩阵可以包括以下:查找确定的模块值的阵列中固定模式的片段;在确定的模块值的阵列中生成符号位置的假设;可选地二进制化模块值;并且通过分配二进制化的模块值给其尺寸与假设的或者已知行和列的二维矩阵符号尺寸相应的阵列中的假设位置,汇编(assemble)二进制符号矩阵。类似的,阵列可以被存储在对本领域技术人员应当是显而易见的一维或者多维形式中。

如图21所示,提取二进制矩阵214可以包括多个过程和决策。在过程框702,提取二进制矩阵214可以包括查找固定模式片段,可选地包括模块值阵列或者二进制矩阵中的静区。查找固定模式(定位固定模式,如果成功)可以通过本领域技术人员已知的方法完成。例子包括但不限于关联、标准化关联、团点(blob)分析等。在决策框704,如果固定模式片段被发现,提取二进制矩阵214接着过程框706,或者如果固定模式片段未发现,接着过程框714。

当固定模式片段被发现,在过程框706,提取二进制矩阵214可以包括使用固定模式片段生成一个或多个假设。在过程框710,提取二进制矩阵214可以包括通过将二进制化的模块值分配给其尺寸与在假设的或者已知行和列的二维矩阵符号尺寸相应的阵列中的假设位置,汇编二进制符号矩阵。在一些方面,在过程框712,提取二进制矩阵214可以可选地涉及优先化汇编的二进制符号矩阵。优先化可以包括评估发现的固定模式片段的范围,或者与来自210的外插的模块位置相关的来自206的定位的模块位置的范围。

在一些方面,二进制化不是确定模块值的一部分,在过程框708,提取二进制矩阵214可以可选地包括使用现有技术已知的方法二进制化来自假设位置的模块值。例如,用像素灰度值上单个阈值进行二进制化可以被使用。作为另一个例子,设计来适应符号上的光变化的局部阈值可以被使用。在某些方面,模块值可以是与预测的模块位置最接近的像素的二进制值。

在一些方面,假设包括在模块值的阵列内的二进制符号矩阵的位置或偏移;模块值的阵列内的二进制符号矩阵的方向;依照符号行和列形式的二进制符号矩阵的尺寸;符号表示类型;反射状态;符号的极性;或者它们的组合。在一些方面,二进制符号矩阵的尺寸、反射状态和符号的极性的一个或多个属性可以来自用户输入先验知识或者来自训练。

在模块值矩阵或二进制矩阵中检测到固定模式的至少一个部分的方面中,随后固定模式的该部分可以用来生成用于尝试解码的一个或多个假设。模块值矩阵中的固定模式的检测在原值矩阵中被完成,其中每个值代表模块强度或高度的度量,或者在二进制矩阵中被完成,其中每个二进制位代表前景或背景模块。探测方法可以是标准化关联、二进制位计数或者它们的组合中的一种。作为例子,如果具有16*16数据区域的18*18“datamatrix”符号通过取景器模式的至少一部分的存在被识别出,但是未发现时钟模式,然后以下的假设可以被使用:假设1可以预测符号表示是具有缺少时钟模式的18*18“datamatrix”;假设2可以预测符号是缺少时钟模式的18*18“datamatrix”,并且具有来自假设1的90度的旋转;以及假设3可以预测符号是尺寸为20*20的“datamatrix”或者接近时钟模式的丢失多个行和列的更大矩阵。在某些方面,由于扩展数据丢失,该例子的假设3可能不是可解码的。在某些方面,假设被优先化并且在假设上尝试的解码序列是从最高优先级(最类似)到最低优先级(最不类似)。在某些方面,可以尝试假设的子集。在某些方面,优先化可以基于发现的固定模式、发现的数据区域直方图或者它们组合的范围。

当固定模式片段未被探测出,在过程框714,提取二进制矩阵214可以包括生成不使用固定模式片段的一个或多个假设。在一些方面,在过程框712,提取二进制矩阵214可选地涉及优先化汇编的二进制符号矩阵。优先化可以包括评估与来自与210的外插模块位置相关的来自206的局部模块位置的范围。

在无固定模式被发现的实施例中,多个假设可以被生成。假设的数量可以根据假设的计算需求和测试假设具有或者不具有先验知识的实用性而变化。作为例子,如果未知符号表示的20*20数据区域被发现,那么以下假设可以被使用:假设1可以预测符号是具有缺少取景器和特定方向中的时钟模式的22*22“datamatrix”;以及假设2可以预测符号是带有在特定方向上被破坏的取景器的21*21qr码;以及假设3可以预测符号是带有缺少取景器和时钟模式以及一些邻近行和列的24*24“datamatrix”。这个例子对于假设1,由于缺少固定模式意味着方向是未知的,数据区域的四个不同方向必须被测试。这个例子对于假设3,缺少的行/列可以是位于离取景器最近的两个行/列,位于时钟模式最近的两个行/列,或者位于取景器最近的一个行/列和位于时钟模式最近的一个行/列。由此,组合的总数随着包括多个符号表示、多个方向以及多个破坏级别的假设范围而增加。在某些方面,如果假设的组合总数超过特定数值,诸如10,20,30,40,50,100等等,那么假设的进程可能需要太多的时间用于有效解码,并且如果知道更多关于符号的信息(例如,训练),假设也许只能继续。在某些方面,假设被优先化并且尝试假设的解码序列从最高优先级(最类似)到最低优先级(最不类似)。在替换的方面,仅仅是可能的假设子集可以被尝试。在某些方面,优先化可以基于发现的固定模式,发现的数据区域直方图或者它们的组合的范围。

在过程框216,方法200可以进一步包括解码所提取的二进制矩阵。解码二进制矩阵可以由处理器或者辅助元件完成,诸如二进制矩阵解码器,配置为执行解码算法。如果在模块值的阵列中的假设的模块位置不是模块值阵列内二维矩阵符号的位置或方向的准确表达,那么解码从这些假设的模块位置提取的二进制矩阵将导致无意义的输出。如果假设的模块位置是模块值阵列内模块位置的准确表达,那么解码由假设的模块位置确定的二进制矩阵将得到该数据集,只要足够部分的数据模块包括在该解码中。

解码步骤可以在基于步骤214的一个或多个假设提取的一个或多个二进制矩阵上重复。该序列可以基于214中的可选优先化步骤。

在某些方面,解码二进制矩阵可以得到数据集。

在某些方面,解码二进制矩阵可以确定二进制矩阵是否是可解码的。在某些方面,解码算法可以是低级解码算法,其中二进制矩阵未完全解码以获得该数据集,而是二进制矩阵被解码到确定二进制矩阵是否是可解码的级别。在某些方面,当固定模式不用于定位二维矩阵符号,并且利用该固定模式确定二进制矩阵是否是可解码的时,解码二进制矩阵可以包括定位在二进制矩阵中的固定模式或者固定模式的一部分。在某些方面,解码二进制矩阵可以包括定位可变码数据的子集,诸如maxicode的主要消息,qr版本信息或者利用错误检测确定码大小和有效方向的格式信息块,aztec编码信息(符号信息和取景器模式附近数据区域的消息大小)等,并且利用可变码数据的子集确定二进制矩阵是否是可解码的。在某些方面,解码二进制矩阵可以得到除了编码数据集以外的信息,诸如当矩阵是可解码时符号的位置,或当矩阵是不可解码时假设的符号位置。位置可用于执行符号的质量评价等。

定位、外插、确定、提取以及解码步骤可以为许多在定位步骤204产生的候选区域重复。这些步骤可以在一个候选区域上依次执行,或者在多个候选区域上同时执行。

解码步骤可以重复用于在提取步骤214提取出的大量二进制矩阵。重复的次序可以基于假设的优先级。

在某些方面,提取和解码步骤可以提取和解码多个符号表示类型。例如,提取和解码步骤可以提取和解码符号表示类型包括但不限于“datamatrix”,qr码,aztec码,maxicode以及它们的组合。

在某些方面,提取和解码步骤可以按照用户定义的准则集合优先化或者排序假设,并且优先化的或者较高排序的假设可以被先解码。例如,用户可以定义矩阵的优选大小,并且具有优选大小的假设可以被优先化或者排序较高。

在某些方面,估计二维符号的范围可以在提取二进制矩阵之后执行。

在某些方面,当估计二维符号的范围时,固定模式的片段可以被检测。

在某些方面,估计二维符号的范围可以包括发现静区。本领域已知的静区作为包括具有连续值的模块的区域。这个连续性可以包括代表光照变量等的变量。在某些方面,发现的静区可以包含与特殊符号表示(例如,带有比特定符号表示中三个模块更多或更少的静区)的规范不相符的变量。在某些方面,发现的静区可以包含意外的变量(例如,在标签边缘打印的符号)。在某些方面,发现的静区可以包含变量,该变量是由于破坏或者较差光线排除的符号的部分,诸如取景器模式或者数据区域。

在某些方面,模块可以被破坏并且解码二进制矩阵216可以包括使用纠错中的删除,诸如里德-所罗门纠错,用于提高的纠错容量。

系统和方法可以通过训练手段利用发现的符号的知识。“训练”是配置带有关于发现符号属性的先验信息读取算法的方法,以提高鲁棒性和/或执行速度。属性可以包括但不限于符号、极性、纠错类型、行/列数量、模块的像素大小、反射状态、符号方向等。

算法可以被建立以利用训练的属性。例如,知道矩阵中的行&列数量可以提高直接部件标记(dpm)部分的解码量,其中确定行和列的数量可能是挑战(例如,通过使用“datamatrix”中的时钟模式)。通过避免确定行和列数量的错误,解码鲁棒性可以得到提高,并且通常成功解码的全部执行时间将减小。

类似的,其他先验属性可以影响解码算法中的其他元素。例如,所期待的模块大小可以影响在哪种规模来查找符号,并且可以确定用于提高图像质量的图像过滤核大小(减小尺寸,提高对比度,去掉纹理或噪音等等)。

如果处理器或者算法具有符号知识,诸如期待接收什么大小、形状的符号,那么定位和外插可以更有效地实现。例如,如果系统或者方法被训练以查找8*8网格,那么,定位可以更特别地查找能够覆盖8*8个模块的或者更小的区域。类似地,外插可能采样仅仅不比8*8个模块大很多的空间。

在某些方面,估计二维符号的范围可以包括使用先验信息,诸如通过训练测量的或者由用户输入的。

该方法可以进一步包括使用错误校正例程校正二进制矩阵中的错误。错误校正例程可以由本领域技术人员已知的方法执行。例如,错误校正例程可以包括块码,诸如包括里德-所罗门码、卷积码等的线性块码。

该方法进一步包括照明二维矩阵符号或者二维矩阵符号附近的位置。照明可以由照明器执行。照明可以提供图像像素阵列中的照明特征。通过照明,定位步骤可以至少部分地基于照明或者图像像素阵列的照明特征。

在某些方面,该方法可以包括定位一个图像像素阵列中一个或多个照度特征并且推断单独的图像像素阵列中一个或多个照度特征的位置,例如,通过确定与在两个图像像素阵列中可以识别出的地标相关的一个或多个照度特征的位置。这允许在要被解码的图像曝光的曝光期间照明被禁止。可替换地,一个或多个照度特征的位置可以在获得图像之前知晓,例如,通过确定在图像像素阵列内照度特征可复制地出现在何地(例如,在图像的中心,制造时在存储器中存储的被测位置等)。

在某些方面,该方法可以由处理器的单个命令或者多个命令执行。单个命令或者多个命令可以由用户提供,或者可以由处理器或者辅助元件提供自动地触发。

在某些方面,由于取景器模式的部分沿纸的右边缘,固定模式可以是不完整的,并且不能由暗背景中区分开。在某些方面,由于取景器模式的部分是简单缺少的,特别地,在符号的左上部分,固定模式可以是不完整的。

可以由本领域技术人员理解的是,当本发明连同特定实施例和例子在以上被描述时,本发明不必是受限的,并且源自这些实施例、例子和使用的大量其他实施例、例子、使用、修改以及变型旨在由所附的权利要求包括。在此所引用的每个专利和申请的全部公开内容通过引用并入,如同每个这样的专利或申请通过引用单独并入。

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