首页> 中国专利> 光读取代码准备装置

光读取代码准备装置

摘要

一种光读取代码准备设备,包括:存储单元(4),其能够接收待编码数据和包括表示数据的参数数据;编码单元(6),其能够基于待编码数据和参数数据来产生代码数据;成像单元(8),其能够基于表示数据和/或代码数据来产生定义图像平面的数据;调度器(10),其被设计成响应于对待编码数据和包括表示数据的参数数据的接收:利用接收的待编码数据和参数数据来调用编码单元(6)以产生关联代码数据,利用关联代码数据、选择性地利用至少一些表示数据来调用成像单元(8)以产生亮信息平面数据和暗信息平面数据,利用定义图像的一些指定表示数据来调用成像单元(8)以产生亮图像平面数据和暗图像平面数据,以及基于亮信息平面数据、和/或暗信息平面数据、和/或亮图像平面数据、和/或暗图像平面数据的按照预定顺序的排列来准备光读取代码。

著录项

  • 公开/公告号CN103858136A

    专利类型发明专利

  • 公开/公告日2014-06-11

    原文格式PDF

  • 申请/专利权人 行动先驱公司;

    申请/专利号CN201280049820.9

  • 申请日2012-08-02

  • 分类号G06K19/06;

  • 代理机构北京集佳知识产权代理有限公司;

  • 代理人王萍

  • 地址 法国巴黎

  • 入库时间 2023-12-17 00:20:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-10-12

    授权

    授权

  • 2014-09-17

    实质审查的生效 IPC(主分类):G06K19/06 申请日:20120802

    实质审查的生效

  • 2014-06-11

    公开

    公开

说明书

本发明涉及光读取代码准备的领域。

光读取代码是一种符号法,即一组数据的图形表示。已经提出了各种 格式来编篡与输入数据一一对应的图像的产生方式。在这些格式之中,我 们特别地考虑例如Datamatrix(ISO/IEC16022)、Maxicode(ISO/IEC  16023)、QR-Code(ISO/IEC 18004)。

在输出所产生的图像由称为模块的一组方形的黑点和白点组成。这些 点定义了二维表,也称为矩阵,可以从该矩阵来恢复原始数据。

光读取代码是非常有利的,因为它们可以在有限面积上以高可再现方 式存储大量数据。

因此,存在针对电话(也称为“智能电话”)或平板而维护的许多软件 应用程序。这些应用程序使之能够读取光读取代码和使用包含在该光读取 代码中的数据。为此,这些应用程序使用摄影光传感器(或摄影机),并 且基于取得的图像或图像序列来重建信息。

这种类型的应用程序使之能够避免不得不实现光学字符识别(OCR), 并且例如使之能够提供到互联网站的链接或到杂志或商店中的其他链接, 而无需用户键入地址或做任何其他努力。

与光读取代码相关联的主要缺陷之一是它们不美观。事实上,与不同 格式相对应的算法产生了对看它们的人而言无意义的黑色和白色方形矩 阵。例如,很难将给定代码关联于代码编辑领域的图形元素。

此外,将图形显示(图画或照片)与光读取代码相关联是复杂的,并 且通常使代码难以辨认,或严重限制其可以包含的信息量。

出于这些原因,定制光读取代码的所有努力到目前为止更多的是通过 试验和失败进行探索,直到获得审美上足够令人满意的功能代码。

在该框架内,目前还不存在用于产生图形定制的光读取代码的解决方 案,并且适于批量提取的这种代码就更少了,所述批量例如是表面上类似 但每个包含不同信息的几千个代码样本。

本发明旨在改善所述情况。

为此,本发明提出了一种光读取代码准备装置,包括:

-存储单元,其能够接收待编码数据以及包括表示数据的参数数据,

-编码单元,其能够基于所述待编码数据和所述参数数据来产生代码 数据,

-成像单元,其能够基于所述表示数据和/或所述代码数据来产生定义 图像平面的数据,

-调度器,其被安排成响应于对所述待编码数据和包括表示数据的所 述参数数据的接收而:

-利用接收的待编码数据和参数数据来调用所述编码单元,以产生相 关联的代码数据,

-利用所述相关联的代码数据,并且选择性地利用至少一些所述表示 数据,来调用所述成像单元以产生亮信息平面数据和/或暗信息平面数据,

-利用定义图像的一些指定的所述表示数据来调用所述成像单元,以 产生亮图像平面数据和/或暗图像平面数据,以及

-基于以所述亮信息平面数据、所述暗信息平面数据、所述亮图像平 面数据和所述暗图像平面数据的按照预定顺序的排列来准备所述代码。

本发明还涉及一种用于准备光读取代码的方法,其包括:

-接收待编码数据以及包括表示数据的参数数据,

-基于所述待编码数据和所述参数数据来计算代码数据,

-基于所述代码数据,并且选择性地基于至少一些所述表示数据,来 产生亮信息平面数据和/或暗信息平面数据,

-基于定义图像的至少一些所述表示数据来产生亮图像平面数据和/ 或暗图像平面数据,以及

-基于以所述亮信息平面数据,和/或所述暗信息平面数据,和/或所 述亮图像平面数据,和/或所述暗图像平面数据的按照预定顺序的排列来 准备所述代码。

参考附图,通过阅读从说明性而非限制性的给定例子中获取的以下描 述,本发明的其他特征和优点将变得更加明显,其中:

-图1示出了根据本发明的装置的示意图;

-图2示出了图1的装置的运转的示意图;

-图3示出了由图1的装置实施的用于准备光读取代码的算法;

-图4示出了图3的第一操作的实现示例;

-图5示出了图3的第二操作的示意图;

-图6示出了图3的第三操作;

-图7示出了图3的第四操作的实施示例;

-图8示出了另一实施例的实施示例;以及

-图9示出了又另一实施例的实施示例。

下面的附图和描述主要包含某些特征元素。因此,它们可以不仅用于 更好地理解本发明,还用于在需要时有助于本发明的定义。

本描述实质上涉及有可能受著作权和/或版权保护的元素。权利所有人 不反对任何人对本专利文件或其描述的相同复制,例如其出现在官方档案 中。至于剩下的,他完全保留其权利。

图1示出了根据本发明的装置。如可以从该图中看到的那样,装置2 包括存储单元4、编码单元6、成像单元8和调度器10。

在这里描述的例子中,存储单元4是传统的存储介质,其可以是盘片 硬盘或闪存硬盘(SSD)、闪存或ROM存储器、诸如压缩光盘(CD)、 DVD、蓝光盘的物理存储介质,或任何其他类型的物理存储介质。存储 单元4也可以被转移到网络存储介质(SAN)或互联网或通常到“云”。

在这里描述的例子中,编码单元6、成像单元8和调度器10是由包含 它们的计算机执行的软件元素。然而,它们可以以分布方式在多个计算机 上执行,或以印刷电路(ASIC、FPGA或其他)或专用微处理器(NoC 或SoC)的形式来实现。

调度器10选择性地控制编码单元6和成像单元8,并且访问存储单元 4以实施根据本发明的处理。

图2示出了由装置2执行的处理。如可以从该图中看到的那样,装置 2一方面接收参数数据20,另一方面接收待编码数据22,并且在输出产 生代码24。

参数数据20是使之能够定制要产生的光读取代码的任何表示数据,以 及专用于装置2的执行的任何参数。例如,参数数据20可以非限制地包 括代码背景数据、代码前景数据、图像数据、图案数据、图案转换数据或 任何其他数据。专用于执行的参数可以包括要产生的代码类型的数据、批 量数据、储备数据或任何其他数据。这些数据的性质和功能将在下面详细 说明。

待编码数据22是必须包含代码24的数据。这些数据可以形成名片文 件、或网址、或由一个或多个文本串、位串或任何其他串定义的任何其他 信息。

尽管图2中示出了最终形式的代码24,正如自然人将看到的,然而应 当理解的是,由装置2产生的代码24可以是使之能够获得功能性光读取 代码的任何元素。

因此,代码24可以以以下形式而可用:矢量图、位图图像、或其中多 个图层(calque)被定义但还未被合并的文件,以及可汇编以获得这些元 素的数据的任何形式。

图3示出了为准备光读取代码而由装置2实施的算法的示例图。

该算法以操作300开始,其中,由用户直接地或通过指示包含这些数 据的源的位置来输入参数数据20。是由这些数据来决定代码24的准备和 最终达到的效果。

正如已经看到的,这些数据可以包括代码背景数据、代码前景数据、 图像数据、图案数据、图案转换数据、要产生的代码类型的数据、批量数 据和储备数据。

事实上,申请人已经鉴别了几种方式来图形定制光读取代码,例如通 过背景或前景的添加,或通过使用一个或多个用于模块实现的图案。

背景数据和前景数据可以以位图或矢量、或颜色由深到浅的形式而包 括例如选定的颜色背景。对于给定的代码,可以只提供背景数据或前景数 据。

事实上,为了表示信息“0”而最常选择的颜色是白色,这又回到透明 的背景或前景。然而,如果提供背景和前景,则这两个当中的一个必须被 检测为“亮”,即作为信息“0”,而另一个必须被检测为“暗”,即作为信 息“1”。

所述图像数据可以以位图或矢量的形式而包括任何图形类型数据,其 使之能够还原一个或多个照片,或与公司相关联的图画,例如标志(logo)、 模型、图形商标或其他。正如后面将会看到的那样,与代码24所需的尺 寸相比较,与图像数据相关联的图像的尺寸可以是任何尺寸,即它们可以 更小、相同或更大。

所述图案数据可以以位图或矢量的形式而包括任何图形类型数据,其 可以被用于形成用于表示构成光读取代码中的信息的模块或模块组的图 案。

所述图案转换数据可以包括使之能够将几何和/或光学转换应用于图 案的任何功能和参数。在这些转换之中,我们例如考虑绕轴旋转、平移、 位似、光投影、阴影投射、模糊(flou)、失真、透明度、湍流(turbulence) 等,或这些转换的组合。

由于信息检测的固有公差,使用图案数据和转换数据来形成原始图案 是可能的。事实上,当光读取代码被解码时,其首先被分成与矩阵中每个 格子相对应的多个区域。然后,每个区域被确定为暗或亮,这区分了信息 “1”和信息“0”。

这样做的结果是几乎任何图形元素可以被用于表示模块,只要该元素 具有将被适当解码的颜色特征,以及该元素在有关区域中占据足够空间。

例如,红心可以被用于代替黑色模块,只要这些心覆盖每个区域的足 够部分。该原理类似地应用于上述转换。上述的结果是图案也可以“超出” 与其相对应的区域,只要该图案不改变其超出的区域的信息。

由申请人揭露的“亮”和“暗”的概念是至关重要的。事实上,一直 认为为了可靠地(即不冒错误过多的风险地)产生功能性光读取代码,模 块必须完全是黑色以被检测为信息“1”,并且完全是白色以被检测为信息 “0”。此外,到今天还认为必要的是,模块是方形的并且在给定代码内部 是彼此相同的。事实上,如果不满足这些条件,则必须做出多个系列的近 似以获得功能性代码。

例如,图像、甚至是小尺寸图像的合并,是通过反复试验来实现的: 图像通常在代码的中间被合并,然后该代码被测试。该测试通常是消极的。 图像因而通常通过切边而被修改,然后操作被重复,直到获得较美观或较 不美观的功能性代码。

相比计算机图形而言,该方法在艺术上的改善更加明显。并且,不可 能创建这样一组介质:其具有为一些人而定制的(例如利用他们的名片) 同时也是图形定制的(例如利用他们公司的标志)的光读取代码。

申请人已经发现这些概念是错误的,并且区分“亮”部分和“暗”部 分实际上是适当的。事实上,申请人已经发现有可能实现以下等价:

-“亮”部分将被检测为信息“0”,以及

-“暗”部分将被检测为信息“1”。

在下文中,数据“0”或“亮”因此将表示具有信息“0”的模块,并 且数据“1”或“暗”因此将表示具有信息“1”的模块。

该发现是基本的,并且使得申请人能够产生定制的光读取代码,其中, 用于表示模块的图形元素不再限于占据具有给定尺寸的空间的黑色方形, 但是几乎任何图形元素都具有适当的特性。这些光读取代码也可以通过未 连至模块的图形元素的自由合并而被定制,例如图像。

要产生的代码24数据的类型数据使之能够明确指出上述在输出产生 的代码24的类型:位图图像、矢量图、具有不平滑图层的文件等。

批量数据使之能够指出多个代码必须利用相同参数和不同的待编码数 据22来实现。因此,打印具有借由光读取代码而被定制的信息但具有相 同类型的批量图形定制的介质成为可能。

在批量处理的情况下,只有要插入到代码中的数据改变,但是图形定 制数据和视觉效果保持相同。正如下面将看到的那样,本发明使之能够可 靠地产生从图形视角上来看类似但从数据角度来看不同的大量定制代码, 可靠地即没有错误,也不需要反复试验。

所述储备数据使之能够指出保留在代码周围的模块的数量。通常,储 备数据来自包含信息“亮”或“0”的两个或四个模块,该模块在信息矩 阵周围,即在代码周围。

一旦参数被限定,所述算法在创建背景图层和前景图层的操作310中 继续进行。事实上,申请人已经发现以非常丰富和自由的方式来定制光读 取代码是可能的,只要遵循某些规则。这些规则主要涉及保存“亮”和“暗” 信息的检测。

图4示出了操作310的实施示例。在操作400中,与要准备的代码相 关联的前景数据、背景数据和图像数据被恢复。

然后,操作410测试图像数据的存在。事实上,如果这些数据不存在, 则借助于Lay()函数而在操作420中直接实现背景图层和前景图层,并 且操作310在430结束。如果没有背景数据或前景数据,则Lay()函数 什么也不做,或者返回透明图层。

如果已经关联了图像数据,则在操作440中执行Split_I()函数。Split_I ()函数作为自变量而接收图像数据和背景数据。

Split_I()函数根据与背景数据相关联的信息类型,基于图像数据来 产生两个图层。因此,如果背景数据与“暗”信息相对应,则Split_I() 函数创建Img_B图层和Img_F图层,该Img_B图层包含与“暗”信息相 对应的图像数据,该Img_F图层包含与“亮”信息相对应的图像数据。

用于执行Split_I()函数的方法示例在于取得图像数据,并且根据模 块矩阵来切割该图像数据,从而在该图像数据中限定一组区域。然后,测 试每个区域以确定其是否包含与“亮”信息相对应的图像数据。最后,基 于该确定来重建Img_B图层和Img_F图层。

最后,借助于操作450中的Fus()函数来计算BGL背景图层,借助 于操作460中的Fus()函数来计算FGL前景图层,并且该操作结束于 430。

以提交的顺序,通过使得作为自变量传递Fus()函数的平面平滑来 执行Fus()函数。在这里所述的示例中,在BG图层上使Img_B图层 平滑,并且在FG图层上使Img_F图层平滑。

一旦生成背景图层和前景图层,就在创建数据矩阵的操作320中继续 进行光读取代码的准备。

操作320包括两个步骤。在第一步骤中,待编码数据22根据保留的代 码格式而被转换成信息矩阵。然后,生成互补矩阵,下文会解释该互补矩 阵的作用。

图5示出了操作320的实施的示意图,其中,信息矩阵标记为500, 并且互补矩阵标记为510。在该操作中,如果定义了储备数据,则该储备 数据被并入在这里部分地示出的矩阵。

应当指出,虽然图5示出了所有的系数,但是下面只有效地处理非零 的系数。以一系列索引的形式来代表矩阵500和510也是可行的,所述索 引指出非零系数的位置,这些位置是代码中代表模块的位置。代表矩阵 500和510的数据是代码数据。这里描述的示例适于QR-Code格式。其 他代码格式将导致不同的矩阵。

然后,执行可选的操作330。操作330是组检测操作。事实上,根据 为形成代码所保留的图案来重组多个连续的“1”或“0”信息会是令人感 兴趣的。

因此,在由申请人实施的一个示例中,该图案是铅笔线。当多条线竖 直或水平排齐时,将这些线重组成一条长的连续线会是令人感兴趣的。同 样地,当图像被用作图案时,例如汉堡包,重组形成方形的相同信息以用 单个图像来代替它们会是令人感兴趣的,其中在该单个图像上实现位似。 作为其他形式的变型,例如可以检测和使用类似于Tetris(注册商标)型 元素的形式。

操作330通过实现对利用操作320产生的矩阵中的这些组的检测而使 该实施变得容易。图6示出了操作330的实施的示意图,其中,检测之前 的矩阵标记为600,检测之后的矩阵标记为610。在这里所述的示例中, 包括组检测信息的单个系数代替了系数组,并且其他系数归零。如图5 所示,部分地示出了矩阵600和610,并且在矩阵600中已经识别了3*2 模块尺寸的矩形块。可以实施其他变型。

组检测操作330通常在信息矩阵500上被实现,因为与信息“1”相对 应的模块通常以“暗”颜色来被实现。

在这里描述的示例中,只对矩阵500进行组检测,而矩阵510保持不 变。在一些变型中,针对矩阵510或矩阵500和510二者执行操作330。

然后,实现操作340,其中MUL有用信息图层和MCL补充信息图层 被生成。图7示出了该操作的实施示例。

通过恢复BG背景数据、Pat图案数据和Fx_Par转换数据,该操作始 于700。在这里描述的例子中,Pat图案和Fx_Par转换数据是表格。

然后,在操作710中执行Chs()函数,以确定将被用作信息图层准 备基础的矩阵。事实上,如果BGL背景图层与“亮”信息相对应,则这 是MU有用信息矩阵。在相反的情况下,使用MC补充信息矩阵。

因此,Chs()函数作为自变量而接收MU有用信息矩阵、MC补充 信息矩阵(可能在操作330之后被修改)以及BGL背景图层。Chs() 函数返回两个矩阵M1和M2,如果BGL背景图层的信息是“亮”,则 M1矩阵包括MU矩阵,如果不是则包括MC矩阵。在没有背景图层的情 况下,或者如果该图层是透明的,则M1矩阵是MU矩阵。

然后,在操作720中,矩阵M1通过Mak()函数被转换成信息面。

首先,Mak()函数将M1矩阵转换成M1_Tab()函数中的表格。 M1_Tab()函数接收操作710的M1矩阵、Pat图案数据和Fx_Par转换 数据作为自变量,并且返回M1_Tab[]表格,在该表格中每个元素包括一 个或多个M1矩阵区域的索引。

在这里描述的示例中,M1_Tab[]表格的每个元素是大小与M1相同的 矩阵。在每个M1_Tab[i]矩阵中,只有某些系数是非零的,并且与M1的 非零系数相对应。当M1_Tab[i]矩阵的系数是非零时,在任何其他 M1_Tab[j]矩阵中为零,并且所有M1_Tab[i]矩阵之和为M1。

每个M1_Tab[i]矩阵中的非零系数的分配可以按预定顺序或随机地实 现,并且可以根据Pat图案数据和Fx_Par转换数据来实现。在这两种情 况下,这意味着,当批量处理时,所产生的全部代码都将具有共同的可视 形式,但是它们仍将是彼此完全不同的。因此,每个M1模块在M1_Tab[] 表格的矩阵中,并且只在其中一个中。

这使得通过使用各种图案和/或通过应用M1的每个非零系数的不同效 果来分别处理M1矩阵的所有信息成为可能。在执行操作330的情况下, 图案的选择可以取决于组检测信息,并且特别地取决于它所表示的组的大 小。

其次,基于M1_Tab[]表格、Pat图案数据和Fx_Par转换数据,Mak ()函数生成MUL有用信息图层,以在由M1_Tab[i]矩阵的非零系数所 表示的位置处根据Fx_Par转换数据而代表具有由Pat图案数据表示的元 素的模块。

在本文描述的示例中,对Fx_Par转换数据的应用被实现以使之能够保 存Pat图案数据的重心。这确保能够通过实施代码读取来以相同方式检测 应用Fx_Par转换数据之前的图案数据和应用Fx_Par转换数据之后的Pat 图案数据。

在最简单的实施例中,只有一种图案类型,而且没有转换。在这种情 况下,M1_Tab[]表格包含与M1矩阵相同的唯一矩阵,并且在由M1矩阵 用图案数据所指出的位置处代表这些模块。

然后,通过Mak(M2)函数在操作730中类似地创建MCL补充信息 图层,并且操作340以740结束。作为变型,如果使用声明式图形引擎, 则操作720和730可能不返回图层,而是返回这些图层的声明数据。

一旦已经创建了所有的背景图层、前景图层和信息图层,操作350就 处理它们以提供如在数据的类型数据中所提供的代码24。因此,如果这 些数据指示请求平滑图像形式的代码24,则该操作使背景图层、有用信 息图层、前景图层和补充信息图层平滑。如果请求非平滑图像,则直接提 供这些图层等。再然后,如果使用声明式图形引擎,则代码24可以由一 组图层声明数据来定义。

此外,上述一些操作可以是可选择的或以不同顺序实现,以获得更好 的视觉效果。

例如,如果考虑补充信息,则通常希望这些信息是看不见的,即透明 的。更确切地说,只有当补充信息与位于其中应用了“暗”前景或背景的 代码区域中的“亮”信息相对应时,才实际上必须显示该补充信息。当这 样的区域不存在时,可以省略补充信息图层的应用。

这通过背景数据比前景数据更频繁地存在这一事实而被加强。其结果 是,FGL前景图层经常缩减至图像的Img_F部分,这减少了这种区域存 在的机会。

此外,从前文可以看出,由于本发明,大量产生高度定制化的光读取 代码是容易的。事实上,因为产生代码是为保存“亮”和“暗”信息作准 备,所以无论所设想的图形定制怎样,确定的是,本发明范围内产生的代 码是实用的。这是非常有利的,并且在现有技术中是不可能的。

申请人还发现另一种非常有利的光读取代码产生方式。

图8示出了该方式的第一变型。

在操作800中,接收图像数据、图案数据、转换数据以及MU和MC 矩阵的数据。

然后,在操作810中,将LE()函数应用于图像数据。该LE()函 数旨在通过使Img图像逐渐透明来修改由图像数据代表的该Img图像。 结果,获得了代表图像的Low_Img数据,在该图像中通过使数据逐渐透 明而消除了其亮度与“亮”信息相对应的原始图像的所有数据。

作为变型,该功能可以使输入图像的所有元素透明(该图像的亮度小 于选择的阈值),以及使输入图像的所有元素不透明(该图像的亮度大于 选择的阈值)。

然后,在操作820中,通过Mak(MU,MC)函数来计算MU_Img 和MC_Img数据,然后在操作830中,通过Blk()函数而使MU_Img 数据为黑色。Blk()函数将不严格为白色的MU_Img图像的所有元素转 换为黑色元素,以给出定义MU_Img_Blk图像的数据。

此后,在操作840中,MU_Img_Blk数据叠加在Low_Img数据上,然 后,在操作850中,通过Inv()函数实现颜色反转操作,以产生Holed_Inv 数据。因此,Holed_Inv数据包含被穿有透明孔的Img图像数据的比色反 转,其中该透明孔与MU矩阵的“暗”模块的位置相对应。

在操作860中,将LE()函数应用于Holed_Inv数据,并且在操作 870中,再次通过Inv()函数来反转所得到的High_Holed_Inv数据,以 产生High_Holed数据。实际上,High_Holed数据与Img图像的“暗” 部分相对应,其中模块与已被代表的“亮”信息相对应。

最后,在操作880中,使得MU_Img、Low_Img、MC_Img和High_Holed 数据图层平滑以产生代码24。

如上所述,所有这些操作可以以平滑图像的形式、以一组有序图层的 形式、或者(如果使用声明式图形引擎则)以一组图层声明的形式来产生 代码24。

图9示出了图8的变型。

在操作900中,接收图像数据、图案数据、转换数据以及MU和MC 矩阵数据。

首先,该变型旨在计算Img图像的一些部分,其是“暗”的,并且与 MU矩阵中的“暗”模块的位置相对应。

为此,在操作905中,通过Mak(MU)函数来计算MU_Img数据, 然后,在操作907中,通过Blk()函数使MU_Img数据为黑色,以给出 定义MU_Img_Blk图像的数据。

然后,在操作910中,将Inv()函数应用于MU_Img_Blk数据,以 获得MU_Img_Inv数据。典型地,MU_Img_Inv图像与可能具有储备数 据的MC矩阵相对应,其中“亮”模块以黑色代表,而“暗”模块以白色 代表。然后,在操作915中将LE()函数应用于MU_Img_Inv数据,以 使“亮”模块变得不透明和使“暗”模块变得透明。所得到的数据称为 Low_MU_Img_Inv。

在操作920中,通过Inv()函数来在比色上反转Img图像的图像数 据,以获得Img_Inv数据,然后在操作925中,将Low_MU_Img_Inv数 据与Img_Inv数据融合。结果,获得了Img_Msk_Inv屏蔽数据,其包含 与MU的“暗”模块相对应的Img图像的一些部分的比色反转。

为了获得包括“暗”的且与MU矩阵中的“暗”模块位置相对应的Img 图像的一些部分的图像,在操作930中,将Inv()函数应用于Img_Msk_Inv 数据,然后在操作935中,将LE()函数应用于所得到的Img_Msk数 据,这在输出给出了Low_Img_Msk数据。

其次,该变型旨在计算“亮”的且与MU矩阵中“暗”模块位置相对 应的Img图像的一些部分。

为此,在操作940中,通过Mak(MC)函数来计算MC_Img数据, 然后在操作945中,通过Wht()函数而使MC_Img数据为白色。Wht ()函数将不严格为黑色的MC_Img图像的所有元素转换成白色元素, 以给出定义MC_Img_Wht图像的数据。

然后,在操作947中,将LE()函数应用于MC_Img_Wht数据,以 获得与图像相对应的High_MC_Img数据,在该图像中MU的“暗”模 块是不透明的,而MC的“亮”模块是透明的。然后,在操作950中, 将High_MC_Img数据与Img图像的图像数据融合以获得Img_Msk数据。

Img_Msk数据包含与MC的“亮”模块相对应的Img图像的一些部 分。为了获得包括“亮”的且与MC矩阵的“亮”模块位置相对应的Img 图像的一些部分的图像,在操作955中,将Inv()函数应用于Img_Msk 数据,然后在操作960中,将LE()函数应用于所得到的Img_Msk_Inv 数据,在操作965中,再次应用Inv()函数,这在输出给出了 High_Img_Msk数据。

具体地,Low_Img_Msk数据包含Img图像的所有“暗”数据,该Img 图像例如由代表MU矩阵的“暗”模块的图像来屏蔽,并且High_Img_Msk 数据包含Img图像的所有“亮”数据,该Img图像例如由MC矩阵的“亮” 模块所代表的图像来屏蔽。

因此,为了得到代码24,只需要在操作970中使平面叠加,从最深到 最前是:

-MU_Img数据,

-Low_Img_Msk数据,

-MC_Img数据,以及

-High_Img_Msk数据。

作为变型,Img图像的图像数据可以被用作如此产生的代码24的背景。 事实上,应当看出,模块不需要占据代码中提供它们的整个空间,而不会 影响所产生的代码24的质量。

因此,申请人发现,在产生具有相当大图像的代码作为图形定制的范 围内,使用模块是有利和美观的,模块尺寸稍微小于代码24中为模块保 留的位置。事实上,利用不占据其整个位置的模块,获得了“非对接的” 模块,这通过模块的行和列之间的间隙而在视觉上表示,这给出了非常好 的视觉效果。

然而,正如所看到的,图9的变型精确地沿模块轮廓来切割图像,以 使模块填充专用于模块的位置。因此,上述平面的叠加在该情况下留出空 隙。重新使用Img图像作为背景填充了这些间隙,而不会破坏代码24, 甚至还能够提高视觉效果。

此外,可以提供如在代码类型数据中所提供的代码24。因此,如果这 些数据指示请求以平滑图像形式的代码24,则该操作以上文定义的顺序 而使得平面平滑。如果请求非平整图像,则直接提供这些图层等。此外, 如果使用声明式图形引擎,则可以由一组图层声明数据来定义代码24。

在上文中,已经交替地提到平滑和融合。在适用的情况下,这些操作 旨在实现平面的典型平滑以及利用alpha通道管理来实现融合。此外,在 许多情况下,实现这些操作以产生分开的、即不重叠的图形元素。在这种 情况下,对使其平滑或利用alpha通道管理进行融合的使用是无关紧要 的。例如,这是图9的变型的一些数据的情况:Low_Img_Msk和 High_Img_Msk数据完全是分开的。

对平面的透明和分离的使用解释了图8的变型和图9的变型之间的主 要区别:

-在图8中,处理集中在Img图像上,并且寻求保存必须是“亮” 模块的“穿孔”的Img图像的暗部分。使用LE()函数是明智的,因为 “亮”和“暗”的图层分隔是补充性的,并且当平面被融合时重构了Img 图像。在该变型中,使用除LE()函数之外的其他工具可能给出不同的 结果,而不会保存代码24中的Img图像;

-在图9中,处理集中在代码的有用信息上,并且根据“亮”和“暗” 模块来有条理地切割Img图像。在这里,可以容易地代替LE()函数, 而对最终代码24中的Img图像完整性没有任何影响。

此外,在存在图像数据的情况下,几乎不存在背景或前景数据,这仍 然使得这些实施例接近。无论如何,前景和背景数据可以作为图8和9 的变型中的图像数据而被处理。

此外,关于图1至7所描述的所有变型和选择可以直接应用于图8和 9的变型,包括涉及组检测、使用模块的各种图案以及应用转换的那些变 型和选择。这些实施例的主要区别在于,图1至7的实施例以不同方式管 理图像,并且更多地依靠图层平滑,而图8和9的变型利用透明。

附加变型也可以被应用以提高所描述的所有变型的视觉效果。事实上, 申请人发现,在根据本发明的具有低不透明度(通常低于75%)的所准 备代码上再次应用所有或部分背景、前景或图像作为前景是有利的。这使 得图像显示均匀而不会改变补充信息。

此外,大多数光读取代码具有特定区域,所述特定区域包含由格式定 义的且从不变化的信息。这些区域通常称为“先导(pilote)”。它们的功 能是使得寻求对光读取代码进行解码的应用能够按预定定向来放置该光 读取代码,从而以正确的顺序来读取它,而无论拍摄代码的定向如何。

例如,在基本的QR码类型的代码中,涉及位于左上角、右上角和左 下角中的三个区域,这三个区域包括“暗”信息的第一方形、在该第一方 形内的“亮”信息的第二方形以及在该第二方形内的充满“暗”信息的方 形。例如,图2中示出了这些先导。最终的先导也包含于右下角。

在一些光读取代码格式中,这些先导是至关重要的,因为没有它们是 不可能正确读取代码的。因此,出于安全的考虑,可能期望不像其余代码 数据那样处理先导。在本发明的范围内,这可以通过在操作710中如针对 信息矩阵所做的那样分离先导来实现。然后,根据它们与暗或非暗的信息 的对应性来使得先导平滑。

此外,提供上述组合和平滑以提供代码24的最佳视觉效果。然而,可 以保留视觉上不太优化的其他解决方案,例如通过反转一些平滑。

从上文可以看出,代码的准备是基于图形类型图层和与相反信息相关 联的信息图层的交替的。例如,使用亮背景,在该亮背景上使暗信息平滑, 然后使暗前景和亮补充信息平滑等。平滑、图案和效果的变化是自由的, 只要该平滑保存信息。

所述信息的保存使之能够实现几乎无穷的图形定制范围,这是至今不 可想象的事情。此外,由于本发明能够确保代码和图像的完整性,因此不 需要验证或修改步骤。

最后,由于本发明与任何图像相容,因此无论图像大小如何,很容易 将光读取代码并入任何图形介质中,如海报或广告。只要简单地指定图像 的相对位置,形成介质并且通过合并代码来修改该图像就足够了。因此, 一方面不再有可视介质,而另一方面不再有添加于该介质上的代码,而是 代码和其应当被并入的介质的实际融合。

当然,本发明与非二维光读取代码相容,例如EAN-8、EAN-13、UPC-A、 UPC-E、PDF-417或其他代码。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号