生成和解码具有美学组件的机器可读光代码的制作方法

文档序号:12288130阅读:169来源:国知局
生成和解码具有美学组件的机器可读光代码的制作方法与工艺

本申请要求于2014年4月10日申请的名称为“Machine-Readable Optical Codes with Aesthetic Component”(律师案号为ANK005-PROV)的美国临时申请号61/978,113的优先权,其公开内容通过引用被并入本文中。

技术领域

本申请涉及机器可读光代码。



背景技术:

机器可读光代码是众所周知的,普遍存在的。这种代码出现在文件、票、身份证、产品、显示屏、标签以及许多其它地方,可以用于许多不同目的,诸如标识物品、人、文件、对象和/或其它。这样的代码的示例有快速响应(QR)代码和通用产品代码(UPC)。成像装置用来扫描光代码,然后从代码内的图案中提取相关数据。这种数据可以包括例如到包含附加信息的资源(诸如数据库或网站)的索引、指针或链接。

参考图17,示出了根据现有技术的传统机器可读光代码的几个示例1701A,1701B,1701C。通常,这种代码设计成通过机器可靠地阅读,并不顾及人们看到他们是什么样子。然而,由于这种代码通常出现在产品包装、文件和人们可以看到的其它地方,所以他们可能破坏对象、包装、文件或他们出现的其它表面的整体美观。此外,这种机器可读光代码通常占据可用空间的很大一部分,这部分本来可用于美学目的或用来向人们传送信息。当机器可读光代码设置于小物体或卡上时,后一个问题是特别麻烦的,这可能在机器可读光代码占据的区域外提供很小(如果还有的话)的附加空间用于人可读组件。机器可读光代码有时可以制成更小,但常常是以降低可读性和可靠性为代价的。不过,通常,现有的机器可读光代码除了由机器阅读之外没有其它作用。

在一些情况下,对在机器可读光代码的一些空白处或空白区域内包括人可读文本或图形进行了尝试。例如,代码1701C包括嵌入代码的空白区域内的文本。然而,由文本占据的区域不是代码本身的一部分。因此,在一些布局中,仍需要机器可读光代码占据人可读元件之外很大的空间。



技术实现要素:

根据各个实施例,提供了用于生成和解码具有美学组件的机器可读光代码的技术,所述美学组件集成到代码本身中,并占据与代码本身相同的空间。以此方式,机器可读光代码本身可以设计成美观的和/或可以将信息传送到观看者,并且机器可读光代码甚至可以被伪装,这样他们看上去根本不是机器可读光代码。即使信息集成到代码本身中,这样的信息可以(但不一定)与为了机器阅读而编码的信息不同。

在至少一个实施例中,光代码是通过利用存在于机器可读光代码内但在解码代码时通常不使用的负空间(negative space)构造的。具体地,机器可读光代码的每个区域或“单元”占据特定区域;不过只有该区域的一部分被称作“探测位置”,其在解码代码时,通常由机器阅读。单元(探测位置之外)的剩余区域通常被机器忽略,因此可以被分配任意颜色,以便适合整体美学方案。在至少一个实施例中,与每个单元的大小相比,探测位置相对小,因此允许创建与通过探测位置传送的期望信息一致的整体美学设计时有相当大的自由。

例如,在一个实施例中,每个单元是正方形,每个探测位置是圆形,直径为其相应单元宽度的1/3。在这种实施例中,探测位置之外的区域占据单元总面积的将近91.3%,这91.3%可以分配任意颜色以适合整体美学方案。

本文中描述的技术可以适用于任何类型的机器可读光代码,比方说例如QR代码、条形码、通用产品代码(UPC)等等。本领域技术人员会认识到示例的此列表不是详尽的。

进一步的细节和变形会在本文中描述。

附图说明

附图图解说明几个实施例。与说明书一起,附图用来解释根据这些实施例的系统和方法的原理。本领域技术人员会认识到附图中图示的具体实施例只是示例性的,不旨在限制范围。

图1是描绘根据一个实施例用于生成具有美学组件的机器可读光代码的硬件架构的框图。

图2是描绘根据一个实施例用于读和处理具有美学组件的机器可读光代码的硬件架构的框图。

图3描绘根据现有技术传统机器可读光代码的风格示例,其呈现块状美。

图4描绘根据一个实施例具有美学组件并包含与图3相同信息的机器可读光代码的示意性示例。

图5描绘根据一个实施例包含相同信息但不同美学外观的三个机器可读光代码的示意性示例。

图6描绘根据一个实施例包含相同信息但不同美学外观的四个机器可读光代码的另一示意性示例。

图7A和7B描绘根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码的另一示意性示例。

图8A和8B描绘根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码的另一示意性示例。

图9A和9B描绘根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码的另一示意性示例,其中,第二代码呈现公司标志。

图9C描绘与图9B所示相同的机器可读光代码,但没有示出探测位置。

图10是描绘根据一个实施例用于生成具有美学组件的机器可读光代码的总方法的流程图。

图11A描绘根据一个实施例包括样本尺寸用于生成具有美学组件的机器可读光代码的基准标记符(基准)的示意性示例。

图11B描绘根据一个实施例包括样本尺寸的图11A的基准中的单元的示意性示例。

图12A、12B和12C描绘根据各个实施例基准的替代示意性示例。

图13描绘根据一个实施例使用方向指示将相同图案区分为不同标记符的示意性示例。

图14描绘根据一个实施例的示意性示例,其中,在某些固定探测位置检测到的图案指示应该如何读代码的剩余部分。

图15是描绘根据一个实施例用于检测基准的方法的流程图。

图16是描绘根据一个实施例在检测到基准之后解码代码的方法的流程图。

图17描绘根据现有技术的传统机器可读光代码的示例。

图18描绘估计具有弯曲拐角的基准中的虚拟拐角的示例。

具体实施方式

根据各个实施例,本文中描述的系统和方法能够生成机器可读光代码,这些代码是美观、灵活的,和/或包含由人阅读时的附加含义。本文中描述的技术充分利用机器可读光代码中的负空间,即为代码的一部分但不会由扫描装置阅读的那些区域;这些区域可以用来提供代码的美学改进,而不会影响其由机器阅读时的值。在各个实施例中,本文中描述的技术可以支持任何分辨率/复杂性的代码(包括任何个数的编码位或单元)以及全参数化的与比例尺无关的基准形状和代码图案。

如下文讨论的,一些实施例允许在解码时动态调节解码图案和/或分辨率。

本文中描述的技术还提供高效、鲁棒的检测和解码。鲁棒的二进制化可以使用局部比例尺来动态地确定空间变化的阈值。如下文讨论的,复杂性逐渐增加的滤波器的逐级级联可以用来去掉候选项。

此外,各个实施例提供探测位置的透视变换(perspective warping)以处理宽范围的观看角和/或用于准确探测布置的子像素细化。

在至少一个实施例中,如果已知的物理大小与观察到的代码关联,并且照相机的内在校准是可用的,则照相机的3D姿势能够关于代码的基准(或者等同地,代码的姿势相对照相机)被确定(即旋转和平移)。

根据各个实施例,本文中描述的系统和方法可以与用于创建和/或读机器可读光代码的任何系统关联地来实现。这些代码可以与任何产品、文件、对象、物品、装置等相关联。代码可以按照任何已知的技术或工艺被存储、传输和/或输出,包括例如打印在标签、签条或文件上,显示于屏幕上等。代码可以是任何适当的大小、形状或尺寸,以任何适当的颜色或颜色组合输出。

尽管在本文中与机器可读光代码的具体布局和布置关联地描述了此系统,但本领域技术人员会认识到这些示例仅仅旨在是示意性的,本文中描述的技术可以在其它背景下实现,以及实际上可以在机器可读光代码被生成或阅读的任何背景下实现。尽管在下文描述了这些其它背景中的一些示例,但这些描述不旨在是限制性的。相应地,接下来的描述旨在通过示例图解说明各个实施例,而不是限制范围。

现在参照图1,示出了描绘根据一个实施例用于生成具有美学组件的机器可读光代码的硬件架构的框图。可以使用这种架构,例如用于在计算装置或其它电子装置101中实现本文中描述的技术,计算装置或其它电子装置101被配置成生成形式为一个或多个机器可读光代码108的输出。

在至少一个实施例中,装置101具有本领域技术人员众所周知的多个硬件组件。显示屏102可以是显示信息的任何元件,信息可以包括例如机器可读光代码108和用于设计和生成这种代码108的用户界面控件。输入装置103可以是从用户100接收输入的任何元件,比方说例如触摸屏、键盘、鼠标、拨号盘、轮、按钮、轨迹球、触笔等或其任何组合。输入装置103还能够接收语音输入或任何其它形式的输入。通过输入装置103接收的输入能够用来生成代码108。

处理器104可以是根据众所周知的技术在软件的指导下对数据执行操作的传统微处理器。存储器105可以是随机存取存储器,其具有本领域已知的结构和架构,在运行软件的过程中由处理器104使用。

数据存储107可以是用于数字形式的数据的任何磁的、光的或电存储装置;示例包括闪存、磁盘、CD-ROM等。数据存储107可以用来或者暂时地或者永久地存储机器可读光代码108,并且还能够用来存储生成机器可读光代码108时使用的其它信息。

装置101还可以包括用于输出或传输机器可读光代码108的输出装置109。这种输出装置109可以集成到装置101中,或者可以是单独的组件,诸如打印机。任何适当的机构可以用来存储、传输和/或输出代码108。

所述系统还可以在客户端/服务器环境或分布式计算环境中实现。在这种环境中,图1中所示的任何或全部组件可以在通过诸如互联网的网络彼此通信的不同的计算装置中实现。使用已知协议来在这些组件之间执行这种交互。任何适当类型的通信网络,诸如互联网可以用作在各个组件之间传输数据的机构。除了互联网之外,其它示例包括蜂窝电话网络,EDGE,3G,4G,长期演进(LTE),会话发起协议(SIP),短消息点对点协议(SMPP),SS7,Wi-Fi,蓝牙,ZigBee,超文本传输协议(HTTP),安全文本传输协议(SHTTP),传输控制协议/互联网协议(TCP/IP)和/或其它,和/或其任何组合。在至少一个实施例中,系统的各组件可以包括网络通信接口,以能够通过电子网络与其它组件通信。其它架构也是可行的。

在至少一个实施例中,这种系统可以在基于网络的背景下实现,其中,用户100通过网络浏览器控制系统的操作,该网络浏览器与网络服务器提供的网页交互。

现在参照图2,示出了描绘根据一个实施例用于读和处理具有美学组件的机器可读光代码的硬件架构的框图。可以使用这种架构,例如用于捕获或扫描包含如可以使用本文中描述的技术生成的机器可读光代码108的图像202。图2的装置101可以是与图1描绘的装置101相同的装置,或者可以是不同的装置。

在至少一个实施例中,装置101具有本领域技术人员众所周知的许多个硬件组件。显示屏102可以是显示信息的任何元件,信息可以包括例如机器可读光代码108和用户界面控件。输入装置103可以是从用户100接收输入的任何元件,比方说例如触摸屏、键盘、鼠标、拨号盘、轮、按钮、轨迹球、触笔或其它或者其任何组合。输入装置103还可以接收语音输入或任何其它形式的输入。

处理器104可以是根据众所周知的技术在软件的指导下对数据执行操作的传统微处理器。存储器105可以是随机存取存储器,其具有本领域已知的结构和架构,在运行软件的过程中由处理器104使用。

数据存储107可以是用于数字形式的数据的任何磁的、光的或电存储装置;示例包括闪存、磁盘、CD-ROM等。数据存储107例如可以用来或者暂时地或者永久地存储从机器可读光代码108提取的数据,并且还能够用来存储其它信息。

装置101还可以包括扫描器201或任何其它图像捕获装置,以用于捕获或扫描包含代码108的图像202。处理器104可以执行操作以提取和解释在图像202中找到的代码108。关于这种提取和解释操作的附加细节在下文提供。扫描器202可以集成到装置101中,或者可以是单独组件。

图2中描绘的架构只是示例性的。所述系统还可以在许多其它架构中实现,包括例如客户端/服务器环境或分布式计算环境。

在一个实施例中,所述系统可以作为以任何适当计算机编程语言写成的软件在独立的或客户端/服务器架构中实现。替代性地,所述系统可以以硬件实现和/或嵌入硬件中。

现在参照图3,示出了根据现有技术传统的机器可读光代码108A的风格的示例,其呈现块状美。光代码包含9x9网格的81个单元301。在正常使用时,网格通常不作为代码108的一部分显示;网格包括于图3中以更清楚地指示单元301。

在诸如图3描绘的编码方案的传统编码方案中,每个单元301完整填充一种颜色:例如或者黑色或者白色。

相比之下,本文中描述的技术使用只占据每个单元301的一部分的探测位置。现在参照图4,示出了根据一个实施例具有美学组件并包含与图3中描绘的代码108A相同信息的机器可读光代码108B的示意性示例。在图4中,探测位置401显示于每个单元301的中央。这些探测位置401代表每个单元301内的区域,其中,机器传感器尝试检测单元301的颜色。负空间402(每个单元301不在探测位置401内的部分)被机器传感器忽略,可以用来构建美观的、有艺术性的和/或有意义的设计。探测位置401在图4中显示为圆形,不过可以是任何形状。探测位置401显示为在其相应单元301内的中央;不过这通常可能是优选配置,其它配置是可行的。

对于机器传感器,图3的代码108A和图4的代码108B代表相同信息,原因是相同的探测位置401每个都被阴影化。不过,代码108B表现为用传统方法不可能实现的同心圆的美观图案。

本文中描述的技术可以用来在机器可读光代码108中包括任何适当的设计,只要该设计与探测位置401所需的特定值兼容。当然,负空间402的部分越大(即与其相应的单元301相比,每个探测位置401越小),生成美观设计的灵活性越大。此外,探测位置401越小,读代码108和/或找到探测位置401所需的精度越大。

在各个实施例中,代码108的设计不一定是美观的,但在人们观看时,可以携带任何适当含义、品牌价值、指示和/或其它。本文中描述的技术提供生成包含任何这种信息的代码108的相当大的灵活性。人可读的设计或信息可以是与机器可读光代码(或其某一部分)中编码的信息相同的信息的不同呈现,或者可以是完全不同的。例如,人可读设计可以是图标或公司标志,而机器可读光代码可以是指向具有特定产品和定价信息的数据库的指针。

应当注意在图3和4以及在本文提供的其它示例中,单元301和探测位置401只是出于示意性目的描绘的。通常,这些单元301和探测位置401不会显示在根据本文描述的技术生成的实际机器可读光代码108中。而是,这些单元301和探测位置401在本文中描绘为示出根据本文中描述的技术生成的设计和由机器阅读代码108时使用的区域之间的关系。

而且,为了描述清楚,本文中提供的示例描绘具有许多个单元301的光代码,其中,每个单元301或者“接通”或者“关闭”;这些状态可以由两种不同颜色表示,例如黑色和白色。然而,本领域技术人员会认识到任何适当颜色(或其它视觉上不同的属性)可以用来代表“接通”和“关闭”状态。此外,在替代性实施例中,超过两种状态可以用于每个单元301:例如,每个单元301可以具有三种或四种或任何数目的不同颜色(或其它视觉上不同的属性)中的一种。

现在参照图5,示出了根据一个实施例生成的包含相同信息但不同美学外观的三个机器可读光代码108C、108D、108E的示意性示例。在这三种情况下,探测位置401处的上色是相同的,所以在由机器阅读时,三个代码108携带相同含义。然而,负空间402用来生成具有不同美学特征的不同设计。

现在参照图6,示出了根据一个实施例包含相同信息但不同美学外观的四个机器可读光代码108F、108G、108H、108J的另一示意性示例。

现在参照图7A和7B,示出了根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码108K、108L的另一示意性示例。

现在参照图8A和8B,示出了根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码108M、108N的另一示意性示例。

图7A到8B还包括基准标记符701,它在本文也称作基准(fiducial)。如下文更加详细描述的,基准701是用来定位较大图像内的任何位置的机器可读光代码108的已知标记符。在这些示例中,基准701是围绕代码108的厚的黑色正方形,还可以使用其它形式的基准701。

现在参照图9A和9B,示出根据一个实施例包含相同信息但不同美学外观的两个机器可读光代码108P、108Q的另一示意性示例,其中,机器可读光代码可以绘制成由风格化文本组成的公司标志901。再次,叠加在探测位置401上的标志901的黑色和白色区域的位置确保图9B的机器可读光代码108Q携带与图9A的机器可读光代码108P相同的含义。图9C描绘与图9B相同的机器可读光代码108Q,绘制成显示给用户的企业标志901(即没有单元3和探测位置401)。

在各个实施例中,根据本文中描述的技术的代码108形成的美学设计可以是任何适当类型或形式,可以是图形、文本或其一些组合。如上文提到的,它可以代表代码108中编码的信息,或者它可以完全与这些信息无关。它可以用作任何美学、标记和/或提供信息的目的,和/或任何其它目的或根本没有任何目的。

方法

现在参照图10,示出了描绘根据一个实施例用于生成具有美学组件的机器可读光代码108的总方法的流程图。图10中描绘的方法可以由任何适当的计算或硬件装置执行,计算或硬件装置例如可以具有诸如图1中所示的架构。

方法开始于1000。首先,系统确定1001用于机器可读光代码108的基准701。在至少一个实施例中,基准701是标识机器可读光代码108的边界的已知标记符,一个示例是图7A到9C中描绘的黑色正方形,不过可以使用其它形式的基准701。

基于确定的基准701,系统确定1002探测位置401;这些位置通常在单元301的中心,不过不一定如此。在一个实施例中,探测位置401具有基于代码阅读设备的确定公差的预定大小。例如,每个探测位置401应当足够大,以便具有代码阅读设备会阅读稍微偏离每个单元301的中央的位置的可能性。

基于机器可读光代码108的预期值,确定1003探测位置401的颜色。然后,基于期望的美学设计,填充探测位置401之外的负空间。美学设计可以基于特定参数由机器自动生成。替代性地,美学设计可以由操作员人工指定。替代性地,可以使用这两种方法的某种组合,例如自动地生成美学设计,但允许操作员人工编辑自动生成的设计。可以使用任何适当的用户界面,以允许用户以这样的方式生成设计,包括例如允许用户绘制局限于机器可读光代码的预期含义需求的形状的界面。

例如,在至少一个实施例中,可以提供这样的用户界面,其呈现指示相对基准(示出或没有示出)的(若干)可允许绘图区域的绘图画布和探测位置所在之处的模糊指示。可以通过画布周围的按钮和/或其它控件提供对图形设计和布局的计算机程序通用的任何数目的绘画工具。例如,用诸如计算机鼠标的输入装置点击和拖拽,按钮可以提供用于绘制直线和/或曲线的工具。其它按钮可以提供基本形状,诸如矩形和圆形,这些形状也通过用输入装置点击和拖拽绘制。在至少一个实施例中,界面可以被配置成防止用户绘制穿过任何探测位置的任何东西,实际上将任何绘画线约束到负空间和任何闭合的填充形状,以一次完全排除或包括全部探测。因此,例如,如果用户尝试将某形状的线或边缘移动到探测范围内的位置,系统可以使线或形状的边缘吸附到最接近的探测位置的边界。

方法然后结束于1099。

现在参照图11A,示出了根据一个实施例包括样本尺寸,用于生成具有美学组件的机器可读光代码108的基准标记符(基准)701的示意性示例。这里,基准701是正方形的,具有拐角标记符1101,不过本领域技术人员会认识到标记符1101可以是任何形状、大小或设计。当然,形状、大小或设计的选择可能对从任意观看点检测到的容易度有影响。例如,使用图11A所示的基本上为方形的基准701可能是有利的,原因是它适合用于检测不管观看点如何变化都是鲁棒的图案的计算量小的方法。此外,这种基准701的尖锐拐角可能有助于其在图像内的准确定位,可选地是精确估计其在3D空间内的位置,正如下文描述的。

在图11A的示例中,F代表基准701的宽度,这对应于厚黑正方形的外侧。G代表最外面的单元301的外边缘和基准701的内边缘之间的间隙1110。B代表基准701之外的区域。

现在还参照图11B,示出了根据一个实施例包括样本尺寸的基准701内的单元301的替代性示例。S代表单元301的宽度,也称作SquareWidth(正方形宽)。P代表探测位置401的直径(ProbeDiameter,探测直径)。还示出区域402在探测位置401外但在单元301内。

在至少一个实施例中,所有尺寸标定到基准701的大小。因此,一旦系统识别基准701的大小,可以确定所有单元301和探测位置401。此外,基准701和探测位置401布局可以根据需要或期望制成可标定和参数化的。

在至少一个实施例中,尺寸如下所述:

对于具有N x N阵列的单元301的代码108:

本领域技术人员会认识到上面的关系只是示例性的。

基准检测方法

现在参照图15,示出了根据一个实施例描绘检测基准701的方法的流程图。此方法的目的是找到已知的大致基准701A(诸如厚黑正方形),不管照相机或光学扫描器的具体观察点如何,其定位由照相机或光学扫描器捕获的图像内的机器可读光代码108。在一些情况下,图15中描绘的基准检测方法可能更简单,尤其是对所有读数保证观察角一致(例如前面-平行(fronto-parallel))。

在至少一个实施例中,图15中描绘的方法由诸如图2所示的装置执行,其中,扫描器201(或其它图像捕获装置)获得含有机器可读光代码108的扫描图像202。在软件的指导下以及与其它硬件组件关联,例如通过处理器104可以执行处理步骤。在其它实施例中,图15中描绘的方法可以通过具有其它架构和组件的硬件装置来执行。

在图15的流程图中,矩形代表操作,圆角矩形代表那些操作的中间产品。

例如通过扫描器201、照相机或其它类似装置,捕获或扫描输入图像202。在至少一个实施例中,输入图像202被二进制化(转换成黑-白图像)。在至少一个实施例中,此二进制化提供产生图像202的一些部分可以比其它部分点得更亮的可能性的机构。对图像202的每个部分,确定局部比例尺1502;然后通过将每个像素的亮度与它周围的相邻像素的平均亮度进行比较,将此局部平均的图像1503与阈值1504比较,以便确定像素是应当被认为是接通还是关断。结果是二进制图像1505。

在至少一个实施例中,通过特征比例尺估计,确定在每个像素,在步骤1502中使用的相邻像素的大小。特征比例尺估计使用图像202中的特征密度(诸如在给定区域内有多少边缘/变化),以确定相邻像素的大小以便考虑。例如,若有更多细节,则使用较小的相邻像素;相反,若有较少细节,则使用较大相邻像素。在至少一个实施例中,使用拉普拉斯图像金字塔完成特征比例尺估计。例如,参见Lindeberg,Scale-Space Theory in Computer Vision,Kluwer Academic Publishers/Springer,Dordrecht,Netherlands,1994。

在至少一个实施例中,基准701A周围的间隙1110的大小选择为对特征比例尺估计是最佳的,原因是它将具有大量细节(和较小相邻像素)的内部区域与具有较少细节(和较大相邻像素)的外部区域分开。间隙1110因此能够在局部比例尺确定过程中帮助使基准701A突出。

一旦构建好二进制图像1505,系统然后在4连接或8连接的意义上寻找1506二进制图像1505内的组件,这些组件在图像1505的像素点阵内彼此相邻。这些连接的组件代表彼此连接的相同值的区域(例如黑色区域)。

结果是连接区域的列表1507。列表1507然后被滤波1508,以确定哪些区域有足够大小、充实度(solidity),以及代表有意义数据的可能性。可以使用滤波器的逐级级联。对于经历滤波过程的那些区域1509,区域边界被跟踪1510,产生边界像素列表1511。

识别1512边界的拐角,例如通过过滤边界的(x,y)坐标,并寻找曲率的峰值。这产生四边形1513的集合(通过去掉不具有四个拐角的那些形状)。

过滤1514四边形,以识别具有适当参数的那些(诸如面积、倾斜、对称等,例如以便去掉非常不对称,很倾斜的那些形状)四边形。可以使用滤波器的逐级级联。经过滤波过程的那些四边形1515可以可选地使用基于图像对齐的任何适当方法来细化1516,比方说例如在数学意义上优化四边形的四个拐角的子像素位置,通过寻找将四边形的边缘与强图像梯度最佳对齐的小的扰动。结果是检测到的基准701A的集合。

在至少一个实施例中,可以使用训练数据和机器学习方法确定足够大的大小、充实度、倾斜、对称等。

解码算法

现在参照图16,示出根据一个实施例描绘在检测到基准701A之后解码代码的方法的流程图。此方法的目的是确定已经局部化的基准701A内包含的代码108。

在至少一个实施例中,在扫描器201(或其它图像捕获装置)获得包含机器可读光代码108的扫描图像202之后,并且在执行完图15的步骤以检测基准701A之后,图16中描绘的方法通过如图2所示的装置执行。处理步骤例如可以通过处理器104在软件的指导下与其硬件组件关联地执行。在其它实施例中,图16中描绘的方法可以通过具有其它架构和组件的硬件装置来执行。

在图16的流程图中,矩形代表操作,圆角矩形代表那些操作的中间产品。

系统通过将基准701A与规范基准701B(即没有施加任何透视变换的基准)进行比较,确定1601施加到检测的基准701A的透视变换(如果有的话),以确定四边形的拐角的相对位置。此分析的结果是单应性1602,这是透视变换的数学规范。系统然后获取规范的探测位置1603的位置,施加单应性1602中规定的变换,以确定1604变换的(变形的)探测位置401B。

处理扫描图像202,以确定1606每个变形探测位置401B处的一个或多个灰度级探测值1607。

在至少一个实施例中,本文中描述的系统和方法允许在机器可读光代码108内定位艺术品时的一些程度的公差。例如,如果艺术品的黑色区域稍微碰到探测位置401,则探测位置401应当仍读为白(反之亦然)。相应地,在至少一个实施例中,通过获取探测位置401B内的几个位置(诸如例如8个位置)的读数并对那些读数取平均值,得到公差。

对这些平均值进行阈值处理1608,以确定读数的二进制探测值1609。关于确定阈值并应对局部照明条件的变化的附加细节在下文描述。可选地,特殊的方向位和/或拐角标记符可以用来确定代码方向1610和/或使用的阈值。

最后的二进制探测值与代码库1611(可以存储在数据库107或任何其它适当位置中)进行比较1612,以寻找匹配代码108,匹配代码然后被输出。在各个实施例中,匹配可以是精确的或“最接近的”(基于一些距离度量或训练的分类器)。

可以提供用于执行匹配的任何适当机构。在至少一个实施例中,可以使用二进制字符串之间的距离度量,诸如汉明距离。

替代性地,阈值化的探测值的集合还可以解释成代表数字值或字符的一个长的二进制阵列。例如,8x8代码包含64个探测,这对要被呈现的64位整数或浮点值提供足够的位。替代性地,这些值可以分组成8位ASCII字符,产生8-字符字符串。然后可以使用阵列、数字值或字符执行匹配。

在至少一个实施例中,“训练分类器”学习从示例性探测读数到特定于具体应用的期望标记的映射。例如,在训练时,分类器可以用所有预期探测值训练(这可以包括综合变化和/或扰动),与应当为探测值中的每一个输出的标记配对。训练还可以包括系统应当忽略的探测值的“忽略”标记。分类器返回在运行时测量的值的集合的训练标记,或指示被观察代码是“忽略”集合的一部分。

变形

代码的3D姿势检测

在至少一个实施例中,机器可读光代码108被真实世界的对象或表面的照相机阅读,系统可以使用众所周知的技术确定照相机相对对象或表面的三维姿势(包括位置和方向)。这允许系统确定其上附着代码的真实世界的感兴趣对象的位置,假设代码在该对象上的位置是已知的。这例如在机器人应用中是有用的,机器人被配置成与其上附着代码的对象交互,例如通过直接地操作对象或在对象周围规划路径作为障碍。

边界和间隙

在至少一个实施例中,通过在基准701内部和/或外部提供间隙1110可以进行更加鲁棒的代码阅读,如图11A的示例中显示的。B代表位于基准701外部的边界1111,可用来将一个代码108与另一代码分开。G代表在基准701内部但在探测位置401外部的间隙区1110。间隙1110和/或边界1111可以使扫描器201、处理器104或其它组件更容易地识别基准701的位置,尤其是例如在使用基于特征-比例尺的方法来确定局部阈值时。

方向标记符

在至少一个实施例中,提供对基准(诸如拐角标记符1101)的方向特定的修改,如图11A的左下拐角显示的。拐角标记符1101给扫描器201、处理器104或其它组件提供代码108的期望方向,使代码108在任何方向不加模糊地被扫描。然而,这种特征是可选的;在替代性实施例中,扫描器201、处理器104或其它组件可以尝试解释所有四个方向的代码108,基于这种解释确定哪个方向更合理;替代性地,这些组件可以使用其它解疑技术来弄清楚预期方向。在至少一个实施例中,基准701设计成覆盖某些拐角探测位置401,使得对于方向确定不需要任何附加探测位置401。在其它实施例中,例如可以使用基准或间隙区域内的已知位置401A的附加探测(诸如图11A中描绘的探测位置401A)。

现在参照图12A、12B和12C,示出了根据各个实施例基准701的替代性示意示例。图9A描绘具有弯曲内部的基准701的示例。图9B描绘具有弯曲内部和外部的基准701的示例。这些基准不具有任何方向指示符。

在至少一个实施例中,使用简单的正方形(或其它形状)。这种基准701的示例示于图12C中。如此示例中所示的,附加探测位置401可以位于基准正方形1201内(探测位置401B)和/或间隙区域1110内(探测位置401C)。由于基准正方形1201已知是黑色的,间隙1110已知是白色的,探测位置401的这种布置可以用来帮助确定阈值的适当水平(即确定哪些亮度水平应当解释为黑色,哪些应当解释为白色)。

在至少一个实施例中,相同代码108的不同方向可以解释为具有不同含义。实质上,相同代码108以不同方式旋转可以用来编码不同信息(当然,假设代码108本身的设计不是旋转对称的)。

现在参照图13,示出了描绘根据一个实施例使用方向指示符(拐角标记符1101)来将相同图案1301分成可能具有12个不同含义的12个不同标记符的示意性示例。在此示例中,以下规则用来确立方向:

· 1个拐角指示符:左下

· 2个拐角指示符:底侧

· 3个拐角指示符:底部+左侧

本领域技术人员会认识到许多不同的变形和规则是可行的,图13中描绘的代码108和图案1301只是示例性的。

具有弯曲拐角的基准

在至少一个实施例中,所描述的系统能够估计由基准701暗示的拐角位置,即使在这种基准701不包括拐角本身或具有弯曲拐角时。这些暗示的(虚拟)拐角可以与上文描述的实际拐角非常相同的方式使用。基于基准701的侧面的笔直部分确定虚拟拐角,如下文描述的。

现在参照图18,示出了估计具有弯曲拐角的基准701中的虚拟拐角的示例。沿限定基准701的形状的边界上的每个点确定法线方向1804。这些法线方向1804被聚合,每个簇1801代表相似方向1804的集合。对于四边形形状的基准701,定义四个簇1801,每个簇对应于四边形的一个边;例如,对于图18所示的四边形形状,限定四个簇1801A、1801B、1801C、1801D。线1802拟合到属于四个簇1801中的每一个的点;产生四条线1802。例如,在图18中,分别生成与簇1801A、1801B、1801C、1801D对应的四条线1802A、1802B、1802C、1802D。这四条线1802的相交点定义为基准701的虚拟拐角1803。

尽管上文描述的技术是根据简单的正方形形状图示的,但本领域技术人员会认识到相同方法可以用于其它形状,比方说具有弯曲拐角的倾斜四边形。

递归探测编码

在至少一个实施例中,系统使用递归探测编码技术,其中,探测位置401的子集用来指示剩余的探测图案。换言之,代码108的特定部分被阅读、解释,对应当如何解释代码108的剩余部分给出指导。

例如,如图14所示,固定探测位置401D的集合被首先阅读(在此示例中,固定探测位置401D包括沿着代码108R或108S的外边缘的那些探测位置401)。在那些固定的探测位置401D检测到的图案指示应当如何阅读代码108R、108S的剩余部分(例如包括特定的探测位置图案、分辨率,用于艺术品的“空白”区和/或其它)。在此示例中,代码108R包含固定探测位置401D的图案,其指示对于代码108R的中央部分,探测位置401E的低分辨率5x5探测图案1401A。另一方面,代码108S包含固定探测位置401D的图案,其指示代码108S的中央部分的探测位置401E的较高分辨率的探测图案1401B,在中央,指定空间1402不包含任何机器可读数据但对艺术品保留。其它配置是可行的,其中,一些探测位置401D是固定的,其它是可变的,其中,固定的探测位置401D提供关于可变的探测位置401的布置的指示。图14所示的固定探测位置401D的具体图案只是示例性的。

本领域技术人员会认识到本文中描绘和描述的示例只是示意性的,可以使用用户界面元件的其它布置。此外,在不偏离基本特征下,所描绘元件中的一些可以被省略或改变,所描述的附加元件也可被省略或改变。

特别详细地参照可能的实施例描述了本系统和方法。本领域技术人员会认识到所述的系统和方法可以在其它实施例中实践。首先,组件、大写术语、属性、数据结构或任何其它编程或结构方面的具体命名不是强制性的或重要的,机构和/或特征可以具有不同的名称、格式或协议。而且,系统可以硬件和软件的组合或者全部以硬件元件或者全部以软件元件实现。同样,本文中描述的各个系统组件之间的功能的具体划分只是示例性的,不是强制性的;由单个系统组件执行的功能实际上可以由多个组件实现,由多个组件实现的功能实际上可以由单个组件实现。

在说明书中提到“一个实施例”表示与该实施例关联描述的具体特点、结构或特征包括于至少一个实施例中。在说明书的各个地方出现词语“在一个实施例中”或“在至少一个实施例中”不一定全部指相同的实施例。

各个实施例可以包括用于或者单独地或者以任何组合执行上文描述的技术的任何数目的系统和/或方法。另一实施例包括计算机程序产品,其包括非暂态计算机可读存储介质和编码于该介质上的用于使计算装置或其它电子装置中的处理器执行上文描述的技术的计算机程序代码。

上面的一些部分是根据计算装置的存储器内的算法和对数据位的运算的符号表示呈现的。这些算法描述和表示是由数据处理领域的技术人员最有效地向本领域其它技术人员传送其工作实质时使用的手段。算法在这里通常被构思为产生期望结果的各步骤(指令)的有条理的序列。步骤是那些需要对物理量进行物理操作的步骤。通常但不一定,这些量呈现电、磁或光信号的形式,能够被存储、传输、组合、比较和操作。有时,特别是出于常用的原因,将这些信号称作位、值、元件、符号、字符、术语、数字或其它是方便的。而且,有时在不丢失普遍性的情况下,将要求对物理量进行物理操作的步骤的某些安排称作模块或代码装置也是方便的。

不过,应当牢记在心,所有这些和相似术语与适当的物理量关联,只是适用于这些量的方便标记。除非明确指示为相反,否则通过以下讨论显然可以认识到在描述中,使用诸如“处理”或“估算”或“计算”或“显示”或“确定”等的术语的讨论指计算机系统或类似的电子计算模块和/或装置对表示为计算机系统存储器或寄存器或其它这种信息存储、传输或显示装置内的物理(电子)量的数据进行操作和变换的动作和处理。

某些方面包括本文中描述的形式为算法的过程步骤和指令。应当注意,过程步骤和指令可以体现为软件、固件和/或硬件,在体现为软件时,过程步骤和指令可以被下载驻存在由各种不同的操作系统使用的不同平台上并且由其操作。

本文件还涉及用于执行本文中描述的操作的设备。此设备针对所需目的可以被特别地构建,或者可以包括被存储于计算装置中的计算机程序选择性激活或重新配置的通用计算装置。这种计算机程序可以存储于计算机可读存储介质中,诸如但不限于任何类型的磁盘,包括软盘、光盘、CD-ROM、DVD-ROM、磁-光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、闪存、固态驱动器、磁或光卡、专用集成电路(ASIC)或适合存储电子指令的任何类型的介质,他们都耦连到计算机系统总线。而且,本文中提到的计算装置可以包括单个处理器或可以是使用多个处理器设计以提高计算能力的架构。

本文中呈现的算法和显示并不与任何具体的计算装置、可视化系统或其它设备内在关联。各种通用系统还可以根据本文中的教导与程序一起使用,或者对构建更加专用化的执行所需的方法步骤的设备可能是方便的。各种各样的这些系统所需的结构从本文中提供的描述是显然的。此外,系统和方法不是关于任何具体的编程语言描述的。要认识到可以使用各种编程语言来实现本文中描述的教导,上文提到特定语言是为了公开实现方式和最佳方式提供的。

因此,各个实施例包括用于控制计算机系统、计算装置或其它电子装置的软件、硬件和/或其它元件或其多个的任何组合。根据本领域众所周知的技术,这种电子装置可以包括例如处理器、输入装置(诸如键盘、鼠标、触摸板、跟踪板、操纵杆、轨迹球、麦克风和/或其任何组合)、输出装置(诸如屏幕、扬声器和/或其它)、存储器、长期存储(诸如磁存储、光存储和/或等等)和/或网络连接。这种电子装置可以是便携的或非便携的。可以用于实现所描述的系统和方法的电子装置的示例包括:移动电话、个人数字助理、智能手机、信息站(kiosk)、服务器计算机、企业计算装置、桌面计算机、膝上计算机、平板计算机、消费电子装置等。电子装置可以使用任何操作系统,比方说例如但不局限于:Linux;来自华盛顿州的雷德蒙市的微软公司的Microsoft Windows;来自加利福尼亚州的库珀蒂诺市的苹果公司的Mac OS X;来自加利福尼亚州的库珀蒂诺市的苹果公司的iOS,来自加利福尼亚州的芒廷维尤市的谷歌公司的Android和/或适于用在装置上的其它操作系统。

尽管在本文中已经描述了数量有限的实施例,但本领域技术人员在得益于上文的描述后,会认识到可以设计其它实施例。此外,应当注意,说明书中使用的语言主要是为可读性和指导目的选择的,不是为了界定或限制主题选择的。因此,本公开旨在是示意性的,不是限制范围。

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