CN101465934B - 星座图检测 - Google Patents

星座图检测 Download PDF

Info

Publication number
CN101465934B
CN101465934B CN2008101885172A CN200810188517A CN101465934B CN 101465934 B CN101465934 B CN 101465934B CN 2008101885172 A CN2008101885172 A CN 2008101885172A CN 200810188517 A CN200810188517 A CN 200810188517A CN 101465934 B CN101465934 B CN 101465934B
Authority
CN
China
Prior art keywords
mark
grid
data
arrangement
machine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008101885172A
Other languages
English (en)
Other versions
CN101465934A (zh
Inventor
M·C·T·单
埃瑞克·拉普·明·陈
D·卡查卢
K·巴特拉
S·E·埃科布
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of CN101465934A publication Critical patent/CN101465934A/zh
Application granted granted Critical
Publication of CN101465934B publication Critical patent/CN101465934B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32101Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N1/32144Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title embedded in the image data, i.e. enclosed or integrated in the image, e.g. watermark, super-imposed logo or stamp
    • H04N1/32149Methods relating to embedding, encoding, decoding, detection or retrieval operations
    • H04N1/32203Spatial or amplitude domain methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32101Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N1/32144Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title embedded in the image data, i.e. enclosed or integrated in the image, e.g. watermark, super-imposed logo or stamp
    • H04N1/32352Controlling detectability or arrangements to facilitate detection or retrieval of the embedded information, e.g. using markers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3269Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of machine readable codes or marks, e.g. bar codes or glyphs
    • H04N2201/327Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title of machine readable codes or marks, e.g. bar codes or glyphs which are undetectable to the naked eye, e.g. embedded codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/3271Printing or stamping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3201Display, printing, storage or transmission of additional information, e.g. ID code, date and time or title
    • H04N2201/328Processing of the additional information
    • H04N2201/3284Processing of the additional information for error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)

Abstract

本申请公开一种星座图检测方法。此处公开的是用于在图像(1412)中识别计算机可读标记的排列内的对准标记的星座图的方法,所述计算机可读标记(1412)的排列包括对准标记(1401-1406)和数据承载标记(1407-1410)。所述对准标记(1401-1406)在计算机可读标记的排列内限定了参考栅格,所述数据承载标记(1407-1410)关于参考栅格被调制以对数据进行编码。该方法从计算机可读标记的排列中选择至少两个标记(1501,1502),并参考所选标记(1501,1502)确定旋转中心。该方法通过将每一个所选标记绕旋转中心旋转预定角度来为所选标记确定旋转位置。从标记的排列中为每一个旋转位置找到一个标记,所述标记的位置距离旋转位置小于预定阈值,然后将所选标记和所找到的标记识别为对准标记的星座图。

Description

星座图检测
技术领域
本发明总体上涉及对打印文档中的标记的追踪,尤其涉及对形成栅格状图案的对准标记的追踪。本发明还总体上涉及对水印或其它密写(steganographic)图案的朝向(orientation)的确定,包括借助于纠错编码的对水印的检测。本发明还总体上涉及检测以栅格形式出现在打印文档上的对准标记的基本星座图。
背景技术
打印页上的各种各样的计算机可读标记是很常见的,诸如非常广泛使用的普通条形码。尽管普通条形码无所不在,可供替换的计算机可读标记还是以增长的数量在市场中出现。许多这些新的各种类型标记提供比普通条形码大得多的数据承载容量,允许比普通条形码中能够存储的30到60比特的数据的限制所可能的应用更宽范围的应用。其它各种类型的标记通过展示降低的可视性而改进了普通条形码,其优点是页面的更大部分留有空余以容纳人类可读的内容。低可视性标记的另一个优点是信息可以隐藏在页面中,以允许诸如密写术和水印之类的应用。
随着计算机可读标记的更广泛的使用和对用于计算机可读标记的新应用的发现,对提供高数据内容而不消耗大面积页面的标记的需求增加。这些标记将页面的大部分留为空余以容纳人类可读内容,这是许多应用所期望的。
当从图像中恢复水印或其它密写信息时,出现确定用于读取标记的正确朝向的问题,这是由于标记被限定为在视觉上不明显,因此经常会以随机朝向被扫描或者数字化。
已经公开了许多用于确定密写信息的正确朝向的方法,诸如在图像中并入多个一维朝向信号并在以后对其进行检测。如在澳大利亚专利申请序列号No.2002951815(佳能株式会社)中描述的,即使这些信号只是微弱地嵌入到人眼无法感知这些信号的程度,图像的适当朝向的投影也会揭示出一维载体的存在。
澳大利亚专利申请No.2005209709(佳能株式会社)中描述了密写信息的另一种形式,其在预定位置使用固定头域消息以辅助朝向的确定。
将朝向信号加入到密写消息中是一种公知的技术,这种技术以增加可视度为代价允许快速确定朝向。当制作可视性必须最小化的密写信息时,这样的朝向信号的存在就不合需要了。
存在若干种用于防止未授权复制图像数据的方法。这些方法通常基于在要被复制的图像中设置固定图案或记号。可供替换地,一些方法参照虚拟栅格对数据进行编码。存在这样一种需要:无需具有固定距离的栅格并提供一种更快的方法以检测参考栅格并且将参考栅格从数据承载点分离开。还存在这样一种需要:提供一种更快的方法,以在忽略数据承载标记的同时通过选择地仅评估形成栅格状参考图案的标记来检测参考栅格。
发明内容
此处公开了一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的方法。在一个实施例中,计算机可读标记的所述排列是在图像中形成低可视度条形码的标记的子集。
根据本公开的第一方面,提供一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实施方法,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码。所述方法包括以下步骤:从计算机可读标记的排列中选择至少两个标记;参考所选标记的相应位置确定旋转中心;通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述所选标记确定旋转位置;从所述计算机可读标记的排列中为每一个旋转位置找到一个标记,所述标记的位置距离所述旋转位置小于预定阈值;将所述所选标记和所述找到的标记识别为所述对准标记的星座图。于是,所述方法存储所述识别的星座图以用于解码所述数据承载标记。
根据本公开的第二方面,提供一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实施方法,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码。所述方法包括如下步骤:对于从计算机可读标记的排列中选择的至少两个标记的至少一个组合:(a)参考所述组合中的所选标记的相应位置确定旋转中心;(b)通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述组合中的所述所选标记确定旋转位置;(c)从所述计算机可读标记的排列中为每一个旋转位置找到距离所述旋转位置最近的标记;并且(d)当对于至少预定比例的所述旋转位置,距离所述旋转位置最近的所述标记距离所述旋转位置小于预定阈值时,将所述组合中的所选标记和找到的标记识别为所述对准标记的星座图。所述方法存储所识别的星座图以用于对数据承载标记进行解码。
根据本公开的第三方面,提供一种适于在扫描图像中识别计算机可读标记的排列内的对准标记的星座图的复印机,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码。所述复印机包括:用于获取所述扫描图像的扫描仪;用于存储计算机程序的存储装置;以及用于执行该程序的处理器。所述程序包括:用于从计算机可读标记的排列中选择至少两个标记的代码;用于参考所选标记的相应位置确定旋转中心的代码;用于通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述所选标记确定旋转位置的代码;用于从所述计算机可读标记的排列中为每一个旋转位置找到一个标记的代码,所述标记的位置距离所述旋转位置小于预定阈值;以及用于将所述所选标记和所述找到的标记识别为所述对准标记的星座图的代码。
根据本公开的第四方面,提供一种包括计算机可读介质的计算机程序产品,所述计算机可读介质上记录有计算机程序,所述计算机程序用于使处理器执行一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的方法,计算机可读标记的所述排列包括对准标记和数据承载标记。所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码。所述方法包括如下步骤:用于从计算机可读标记的排列中选择至少两个标记的代码;用于参考所选标记的相应位置确定旋转中心的代码;用于通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述所选标记确定旋转位置的代码;用于从计算机可读标记的所述排列中为每一个旋转位置找到一个标记的代码,所述标记的位置距离所述旋转位置小于预定阈值;以及用于将所述所选标记和所述找到的标记识别为对准标记的所述星座图的代码。
根据本公开的另一方面,提供一种用于实施上述方法中任何一个的设备。
根据本公开的另一方面,提供一种计算机程序产品,所述计算机程序产品包括计算机可读介质,所述计算机可读介质上记录了用于实施上述方法中任何一个的计算机程序。
还公开了本公开的其它方面。
附图说明
现在将参考附图描述本发明的一个或更多实施例,其中:
图1是表示适于打印低可视度条形码(LVBC)的装备的示意性框图。
图2是表示适于计算机读取LVBC的装备的示意性框图。
图3图示了已经经过相位调制的点的阵列,使得点不再全部位于规则的栅格上。
图4图示了位于规则的栅格上的点的规则阵列。
图5更详细地图示了点的调制。
图6进一步详细地图示了点的调制。
图7图示了LVBC的数位的排序。
图8是用于对LVBC数据编码的方法的流程图。
图9是用于对LVBC数据解码的方法的流程图。
图10是用于确定LVBC正确朝向的方法的流程图。
图11是表示其中可实施上述排列的计算机系统的示意性框图。
图12图示了参考栅格和数据承载点;
图13图示了两种不同类型的基本星座图;
图14图示了根据一个实施例的星座图;
图15图示了用于旋转90度的技术;
图16图示了附加的检查以确保没有选择不正确的星座图;
图17图示了另一附加的检查以确保没有选择不正确的星座图;
图18图示了基本星座图的检测;
图19更详细地图示了用于可供替换的实施例的旋转和重叠的点;
图20图示了用于检测星座图的可供替换的实施例;
图21更详细地图示了用于参照图20描述的实施例的旋转和重叠的点;
图22图示了利用三角形栅格的可供替换的实施例;
图23是用于检测基本星座图的方法的流程图。
图24是满溢驱动栅格导航(flood-fill driven grid navigation)的方法的流程图;
图25是栅格角度归一化的方法的流程图;
图26是栅格节点评估的方法的流程图;
图27是处理具有高置信度水平的栅格节点的方法的流程图;
图28图示了根据本发明的实施例的用于在条形码中编码数据的点的调制的栅格;
图29图示了出于解码目的的点的调制栅格的概念视图;
图30图示了如何将数据编码为单个点的调制;
图31图示了一种用于将数据编码为单个点的调制的编码方案;
图32图示了数据承载点的解码顺序;
图33图示了根据本公开一个实施例的用于条形码的拼接方案;
图34是用于条形码解码的方法的中间阶段的流程图;
图35图示了“栅格导航”条形码解码阶段的输出;
图36图示了“区域查找”条形码解码阶段的输出;
图37图示了‘拼接聚合’条形码解码阶段的输出;以及
图38是表示其中可实施上述排列的计算机系统的示意性框图。
具体实施方式
除非出于相反的目的,在任何一幅或更多幅附图中引用具有相同附图标记的步骤和/或特征时,对于说明的目的,这些步骤和/或特征具有相同的功能或操作。
概论
此处公开了一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实现的方法。该图像例如可以是但不限于打印图像或由扫描仪或复印机获取的扫描图像。在一个实施例中,计算机可读标记的排列是在图像中形成低可视度条形码的标记的子集。计算机可读标记例如可以包括点、圆、正方形、三角形、或形成任何所需形状的点的组。计算机可读标记的排列包括对准标记和数据承载标记,其中对准标记在计算机可读标记的排列内限定了虚拟参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码。
该方法从计算机可读标记的排列中选择至少两个标记,并参考所选标记的相应位置确定旋转中心。然后,通过将每一个所选标记绕旋转中心旋转预定角度来为所选标记确定旋转位置。该方法接着从计算机可读标记的排列中为每一个旋转位置找到一个标记,所述标记的位置距离旋转位置小于预定阈值。该方法将所选标记和所找到的标记识别为对准标记的星座图,然后存储所识别的星座图以用于解码数据承载标记。在一个实施例中,还进一步选择至少两个标记以识别星座图。
在一个实施例中,该方法还包括确定所识别的星座图的间距和朝向,然后基于所识别的星座图的间距和朝向确定一组预计的标记位置。当至少预定比例的预计的标记位置与计算机可读标记的排列中的标记的位置相匹配时,验证对准标记的所识别的星座图。
在另一实施例中,对准标记限定的参考栅格是一个矩形栅格,从计算机可读标记的排列中选择两个标记,并且确定旋转中心的步骤包括识别位于两个所选标记之间的中途的一个点。在又一实施例中,参考栅格是三角形栅格,并且确定旋转中心的步骤包括将所选标记中的一个指定为旋转中心。在又一实施例中,参考栅格是六边形栅格或菱形栅格。
在另一实施例中,该方法基于确定的间距和朝向扩展所识别的星座图,以从计算机可读标记的排列中并入其它标记。在另一实施例中,该方法使用所识别的星座图来识别参考栅格,并基于所识别的参考栅格识别计算机可读标记排列中的数据承载标记。最后,该方法解调所识别的数据承载标记以获得由数据承载标记编码的数据。
此处还公开了用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实现的方法。该图像例如可以是但不限于打印图像或由扫描仪或复印机获取的扫描图像。在一个实施例中,计算机可读标记的排列是在图像中形成低可视度条形码的标记的子集。计算机可读标记可以包括例如点、圆、正方形、三角形、或形成任何所需形状的点的组。计算机可读标记的排列包括对准标记和数据承载标记,其中对准标记在计算机可读标记的排列内限定了虚拟参考栅格,数据承载标记关于参考栅格被调制以对数据进行编码。
对于从计算机可读标记排列中选择的至少两个标记的至少一个组合,该方法参考所述组合中的所选标记的相应位置确定旋转中心,然后通过将每一个所选标记绕旋转中心旋转预定角度来确定所述组合中的所选标记的旋转位置。该方法从计算机可读标记的排列中为每一个旋转位置找到一个离所述旋转位置最近的标记,并且当对于至少预定比例的所述旋转位置,离所述旋转位置最近的标记距离所述旋转位置小于预定阈值时,将所述组合中的所选标记和所找到的标记识别为对准标记的星座图。该预定阈值取决于具体应用。所述方法存储所识别的星座图以用于解码数据承载标记。
此处还公开了适于在扫描图像中识别计算机可读标记的排列内的对准标记的星座图的复印机。计算机可读标记的排列包括对准标记和数据承载标记,其中对准标记在计算机可读标记的排列内限定了参考栅格,数据承载标记关于参考栅格被调制以对数据进行编码。复印机包括用于获取所述扫描图像的扫描仪,用于存储计算机程序的存储装置,以及用于执行所述程序的处理器。计算机程序包括用于从计算机可读标记的排列中选择至少两个标记的代码,用于参考所选标记的相应位置确定旋转中心的代码,用于通过将每一个所选标记绕旋转中心旋转预定角度来确定所选标记的旋转位置的代码,用于从计算机可读标记的排列中为每一个旋转位置找到一个标记的编码,所述标记的位置在离旋转位置的预定阈值内,以及用于将所选标记和所找到的标记识别为对准标记的星座图的编码。
此处还公开了一种计算机程序产品,所述计算机程序产品包括计算机可读介质,所述计算机可读介质上记录了用于使处理器执行上述方法中任何一个的计算机程序。
水印朝向的确定
低可视度条形码,此处简称为LVBC,是各种各样的计算机可读标记,所述计算机可读标记可使用普通打印机(诸如激光打印机或喷墨打印机)打印在页面上,并且可以通过使用普通台式扫描仪被计算机读取。LVBC标记可用于容纳每页几十、几百、甚至几千字节二进制数据,而将页面的大部分留为空余以容纳人类可读内容。LVBC标记可被配置用于容纳大量冗余,并且当完成后LVBC标记对于折叠、皱褶、染污、撕裂、以及破损的鲁棒性很高。
图1是表示适于打印LVBC的装备的示意性框图。个人计算机101,例如运行微软WindowsTM操作系统的IBM兼容PC,与诸如激光打印机或喷墨打印机之类的打印机102通过通信电缆103相耦接。打印机102能在一张纸107或其它打印介质上打印以提供硬拷贝文档。打印的数据可包括LVBC。在可供替换的实施例中,使用无线传输链路来实施通信电缆103。
图2是表示适于计算机读取LVBC的装备的示意性框图。图2示出了与个人计算机106通过通信电缆105相耦接的诸如佳能9900F台式扫描仪之类的扫描仪104。个人计算机106和101可以是同一计算机,或者可供替换地,个人计算机106和101可以是独立操作的或者例如通过计算机网络相连接的分离的计算机。该装备适合于将LVBC计算机读取到计算机106中,该LVBC例如存在于由扫描仪104扫描的硬拷贝文档上。在可供替换的实施例中,可以使用无线传输链路来实施通信电缆105。
优选地使用诸如如图11所示的通用计算机系统1100来实现下述编码和解码的方法,其中图3-10中的处理可以被实施为诸如在计算机系统1100内执行的应用程序之类的软件。具体地讲,编码和解码的步骤是通过由计算机执行的软件中的指令来实现的。可以将这些指令形成为一个或多个代码模块,每一个都用于执行一个或多个具体任务。软件也可以被分为两个独立的部分,其中第一部分执行编码和/或解码方法,而第二部分管理第一部分与用户之间的用户界面。软件可以存储于计算机可读介质包括例如下面描述的存储装置中。软件从计算机可读介质装载到计算机中,然后由该计算机执行。其上记录有这样的软件或计算机程序的计算机可读介质是一种计算机程序产品。在计算机中使用该计算机程序产品优选地实现了一种用于将数据并入到文档中的有益设备。
计算机系统1100由计算机模块1101,诸如键盘1102、鼠标1103、和扫描仪1118之类的输入装置,以及包括打印机1115、显示器1114、和扩音器1117的输出装置构成。计算机模块1101使用调制解调器(Modem)收发器装置1116来与通信网络1120来回通信,例如可通过电话线1121或其它功能介质连接所述通信网络1120。调制解调器1116可用于获得到因特网和诸如局域网(LAN)或广域网(WAN)之类的其它网络系统的访问,并可以在某些实施中被并入到计算机模块1101中。
计算机模块1101典型地包括至少一个处理器单元1105和例如由半导体随机存取存储器(RAM)和只读存储器(ROM)形成的存储器单元1106。模块1101还包括一些输入/输出(I/O)接口,这些接口包括:耦接到视频显示器1114和扩音器1117的音频-视频接口1107;用于键盘1102、鼠标1103、和可选择的操纵杆(未视出)的I/O接口1113;以及用于调制解调器1116、扫描仪1118、和打印机1115的接口1108。在某些实施中,调制解调器1116可以被并入到计算机模块1101内,例如接口1108内。设置存储装置1109,该存储装置1109典型地包括硬盘驱动器1110和软盘驱动器1111。也可以使用磁带驱动器(未示出)。典型地设置CD-ROM驱动器1112作为非易失性数据源。计算机模块1101的部件1105到1113典型地通过互连总线1104并以本领域技术人员熟知的、使计算机系统1100以常规模式操作的方式进行通信。可实现上述配置的计算机的例子包括IBM-PC和兼容器、Sun Sparcstations、或由此演化的相似的计算机系统。
典型地,应用程序驻留在硬盘驱动器1110中,并且在被处理器1105执行时被读取和控制。程序的中间存储和从网络1120取得的任何数据可以通过使用半导体存储器1106来完成,或者可能与硬盘驱动器1110共同完成。在某些情况下,应用程序可以通过在CD-ROM或软盘上被编码而提供给用户,并且通过对应的驱动器1112或1111而被读取,或可供替换地可以通过调制解调器装置1116由用户从网络1120读取。此外,软件还可以从其它计算机可读介质装载到计算机系统1100中。这里使用的术语“计算机可读介质”是指任何参与将指令和/或数据提供给计算机系统1100以供执行和/或处理的存储或传输介质。存储介质的例子包括软盘、磁带、CD-ROM、硬盘驱动器、ROM或集成电路、磁光盘、或诸如PCMCIA卡之类的计算机可读卡,无论这些装置在计算机模块内部还是外部均可。传输介质的例子包括无线电或红外传输信道、到另一个计算机或联网装置的网络连接、以及包括电子邮件传输和记录在网站上的信息之类的因特网或内部网络。
当将信息从扫描仪1118扫描至计算机1101时以及当向打印机1115打印时该应用程序进行操作。
LVBC的基本结构
图3示出了LVBC 300的外观的放大图。LVBC 300由位于正方形栅格301的交叉点303附近的大量点302形成。注意只有点302形成可视LVBC 300。栅格301仅为说明点302的位置而被示出,并且因此可被认为是“虚拟”的。LVBC 300的外观与点的规则栅格的外观是相似但不相同的。
图4示出了点402的规则栅格400的外观,其中点402位于规则正方形栅格401的交叉点处。正方形栅格401具有在此被称为“gp”的间距403。
规则点阵列400和LVBC 300之间的差别在于LVBC 300中的点302的位置被轻微调制得离开如果点302是真正规则的阵列400的一部分则点302将会占据的栅格位置。这样轻微的调制有两个目的,第一个目的是使LVBC点302的可视度稍低于规则栅格400的点402的可视度。这是因为人类的视觉系统非常适应于注意规则的栅格。调制的第二个目的是可以将数字数据形式的消息存储在点402的调制中。
图5更详细地图示了点的调制。点502位于规则栅格501的交叉点附近或之上,并且每一个点502被调制到九个可能的位置503之一。作为每一个点502相对于对应的交叉点的侧向(lateral)和横向(transverse)的位置,该调制表示由点形成的图案的数据。栅格501在这种意义上是规则的:栅格是可定义的并且是机器可检测的,并且形成一组参考位置,可关于该组参考位置对相应标记进行调制。如图所示,每一个点的九个可能的位置是按照三乘三的阵列以相关或对应的栅格交叉点为中心排列的。位置503的三乘三(3x3)阵列的中心位置位于栅格交叉点,并对应于零水平距离和零垂直距离的调制。其余八个调制位置水平地、垂直地、或既水平又垂直地从栅格交叉点偏移。规则栅格501可被看作调制的点的“载体”信号,并且就像射频通信中的载波一样是不能直接被观察的。调制位置所偏移的水平和垂直距离是调制量504,此处简称为“mq”。相对于对应的栅格交叉点,九个调制位置的位置可被写为(x,y)向量的列表,其中x表示水平方向而y表示垂直方向,约定关于x向右偏移为正,关于y向下偏移为正。向量是:
(-mq,-mq),
(0,-mq),
(+mq,-mq),
(-mq,+0),
(0,+0),
(+mq,+0),
(-mq,+mq),
(0,+mq),以及
(+mq,+mq)
图6进一步详细地图示了点调制位置503。位置503以栅格602的栅格交叉点604为中心,并且诸如位置601的每一个调制位置都具有相关联的数字代码值603。位置601的数字代码值603是“0”。九个调制位置(包括位置601)允许每一个点对九个可能的数字代码值(包括位置601的值603)之一进行编码。调制位置允许LVBC充当数字数据存储器,其中LVBC的每一个点存储一个九进制数位数据。数字数据存储器的数位的优选的排序是通过使用如图7所示的矩形点阵列设置的排序。这种排序从图7中的最左上方的点701开始,接连从左向右,再从上向下前进直到到达最右下方的点703。在不偏离本公开的实质和范围的前提下,本领域技术人员将容易地认可,也可以同样使用其它排序方法。
编码器
图8是对LVBC编码的优选方法800的流程图。在一种应用中,由PC 101或计算机1101内的可执行软件应用来执行编码以产生用于由打印机102或1115分别打印在介质107上的LVBC。处理从步骤801开始,接受要在LVBC中被编码的二进制消息作为输入。通过使用诸如里得-所罗门(Reed-Solomon)或低密度奇偶校验(LDPC)之类的纠错码(ECC)用冗余来编码该二进制消息。ECC的使用常常允许LVBC被解码而不管有限的传输误差如何。在步骤802中,计算三个变量M、W、和H。M是表示消息所需的九进制消息符号的数目,W是LVBC(表示为LVBC点)的最小宽度,H是LVBC(也表示为LVBC点)的最小高度。
对于比特长度为BL的消息,M如下计算:
Figure G2008101885172D00131
符号
Figure G2008101885172D00132
表示“取整(ceil)”运算符,该操作返回大于或等于自变量的值的最小的整数。
W和H由下述不等式约束:
WH≥M
可以使用该不等式的任何整数解,但优选的解是通过要求W等于H来创建正方形LVBC,即W和H可以这样计算:
在步骤803中,将三个变量x、y、和i初始化为0。
在步骤804中,输出LVBC的组成点中的一个。这些点可以被输出到其上可以放置点的任何类型的二维片材上,但在此具体实例中,该点被打印机102打印而输出到一张纸107上。该点被输出的位置是:
(x,y)+Vec[msg[i]]
其中“msg”是九进制消息符号或要被存储到LVBC中的数据项目的序列。该序列可以容易地根据步骤801中接受的消息的二进制表示而通过以下步骤来形成:将该消息看作一个长的二进制数,然后使用本领域技术人员熟知的简单转换技术将该数转换为九进制表示。“msg[i]”是该消息序列的第“i”位,约定msg[0]是该序列的开始。对于z≥M,msg[z]被定义为0。
“Vec”是九个偏移向量的阵列,具有如下值:
Vec[0]=(-mq,-mq),
Vec[1]=(0,-mq),
Vec[2]=(+mq,-mq),
Vec[3]=(-mq,+0),
Vec[4]=(0,+0),
Vec[5]=(+mq,+0),
Vec[6]=(-mq,+mq),
Vec[7]=(0,+mq),
Vec[8]=(+mq,+mq),
其中mq是上述调制量504。
在步骤805中,通过将当前水平位置x增加值gp 401而将x向右移。消息索引i也增加1,因此消息索引指代消息的下一数位。
在步骤806中,变量x与变量W相比较。如果x大于或等于W,则处理前进至步骤807,否则处理返回至步骤805。
在步骤807中,通过将当前垂直位置y增加值gp 401而将y下移。变量x被重置为0。然后处理继续到步骤808。
在步骤808中,变量y与变量H相比较。如果y大于或等于H,即“是”,则处理前进至步骤809,否则,即“否”,处理返回至步骤805。
该方法的处理在步骤809结束。
方法800的最终结果是形成LVBC的点的图案,每一个点都相对于栅格的对应的交叉点具有数字相位调制的(x,y)坐标。该栅格具有任意的原点O(0,0)。通过将原点O设定为打印介质107上的具体坐标(X,Y),PC 101可以指令在介质107上打印数据,从而导致从位置(X,Y)开始再现LVBC。
解码器
图9是用于解码图像中的低可视度条形码(LVBC)的方法900的流程图,其中LBVC被如上所述进行编码。在一种实施中,方法900作为可在已经输入通过扫描仪104读取的LVBC的PC 106内执行的软件应用而被执行。该解码方法的基本前提是确定形成编码的LVBC的栅格的正确朝向。知晓栅格本身的规律性意味着一旦该栅格被识别,可以直接进行点位置的解调。方法900开始于步骤901,接受包含例如打印或以其他方式可从该页面机器读取的LVBC的页面的扫描图像作为输入。在一个实施中,扫描采取以600dpi扫描的8位灰度JPEG图像的形式。在步骤903中,形成LVBC的多个点被检测,然后该步骤将与检测的点相关联的(页面上的)位置/坐标存储/记录在坐标数据列表中。可以使用对扫描图像的连通元分析来执行步骤903。在这样的分析中,检查图像的单独像素以将空间相邻的像素连通并分组。通过根据其形状分析所分的组可以检测标记的存在(例如合适的预期大小的像素的圆点或大致均匀的斑)。然后可以确定标记的质心以识别对应于所检测的标记(点)的坐标位置。
在步骤905中,分析步骤903中获得的点坐标的列表以检测/识别形成LVBC载体信号的规则栅格。处理返回规则栅格的间距(gp 401)、旋转角度、和调制量Mq(504),还将所提供的坐标数据的列表转换为如图7所示排序的坐标数据的矩形阵列。在被呈现为表示编码数据的调制栅格时,确定调制栅格的朝向和间隔是有用的。在步骤905中,可以基于在调制的栅格中的点之间的平均间隔会等于栅格间隔的事实来确定栅格间隔。可以基于调制栅格的相邻的点之间的平均方向与规则的正方形栅格(或“载体栅格”)的线对准的事实来确定栅格朝向。
调制量是指其余的调制位置从对应的载体栅格交叉点(图6中的604)偏移的水平和垂直距离。调制的栅格的点将位于靠近载体栅格交叉点的位置。在一种实施中,调制的栅格的每一个点都被调制到以对应的载体栅格交叉点为中心的三乘三阵列排列的九个可能的位置之一。这样的三乘三阵列的中心位置位于对应的载体栅格交叉点,并对应于零水平距离和零垂直距离的调制。其余的八个调制位置从对应的载体栅格交叉点偏移。
在步骤907中,解调存储在每一个点的位置中的信息。回到图6,解调是通过测量从规则栅格602的最近的载体栅格交叉点604到最近的或最近似的LVBC点的向量来实现的。将测量的向量与从交叉点604到图6所示的九个调制位置的向量相比较。在图6中,向量605从点604延伸至调制位置601。每一个其它的调制位置都存在类似的向量。将与LVBC点的测量的向量相关联的或最紧密地匹配的调制位置向量选择作为正确的位置,并且将诸如值603的对应的数字数据值选择为LVBC点的正确数据值。匹配的紧密性可通过几种方法来确定。第一种方法是利用欧几里得比较法(Euclidean comparison)比较从栅格交叉位置延伸的向量。例如,使用向量V1(x1,y1)和V2(x2,y2),可以使用如下公式计算所述排列中所有可能的九个向量的最小的欧几里得距离:
De=sqrt((x1-x2)2+(y1-y2)2)
可供替换地,如果假设在由于向量的长度太接近于零而无法确定角度的情况下,调制退化到交叉点位置,则可使用相对于栅格交叉点的角度。步骤905返回的所有点以图7所示的顺序执行的处理而被这样处理。
到这个阶段,LVBC已经被解码为这样的程度,即LVBC具有九进制数据符号的基本矩形阵列的形式。该阵列在提供数据符号的正确排序方面已有进展,但对于识别哪个数据符号是消息的开始方面仍予以保留。这是因为LVBC的旋转还没有被完全解决。步骤905只检测了以模90度的旋转(即,90°、180°或270°的任何旋转还没有被检测)。这个问题在步骤909中被处理,将结合图10在下面详细说明步骤909。
根据本公开的一个实施例,提供了用于确定信息标记的正确朝向的方法,对于ECC编码数字数据,所述信息标记用于对数字数据的保护。所述方法包括下述步骤:尝试对于信息标记的一个可能的朝向解码ECC编码数据,如果ECC解码失败,则再次尝试采用信息标记的另一个可能的朝向并解码该ECC编码数据。
图10是图9的步骤909中的方法的流程图1000,该方法用于查找LVBC的消息数据的开始。处理开始于步骤1005,并且在步骤1010中检查步骤907中产生的解调数据的正确性。该检查正确性的步骤是通过在解调数据中尝试对ECC编码数据进行ECC解码来实现的。如果LVBC被错误地取向(诸如以90°、180°或270°旋转),则由于旋转扰乱了消息数据数字的位置并且还扰乱调制值,ECC解码将失败。失败的ECC解码表示解调数据是被错误地取向的。在ECC解码在步骤1010中失败即“否”的情况下,处理继续至步骤1015。可供替换地,如果ECC解码在步骤1010中成功,即“是”,则处理进行到步骤1025,消息的开始被正确地检测。接着,处理继续至图9的步骤911。
步骤1010中的检查可以用于理想的ECC解码结果,但在一个实施例中,检查被用于接近理想的ECC解码结果。使用这种手段是因为在一个实施例中LDPC被用作ECC,并且LDPC是通过迭代解码来工作的,在这种迭代解码中每一次迭代都趋于比前一次迭代有更少的误差。可以执行彻底的LDPC解码,但是在LVBC未对准的情况下处理时间将会过长,因为即使在很多次迭代之后LDPC解码操作仍不能会聚到一个正确的结果。
现在描述步骤1010中使用的用于判断LDPC解码是否近似理想的准则。LDPC解码是一种不完美的过程,因为仅当错误的数目有限时解码才可行。当消息具有超过该限制的数目的错误时,LDPC解码变得不可行。可用实验方式如下准确地估计这个限制:
●取大量消息;
●对每一个消息进行LDPC编码;
●对于每一个消息,损坏一定百分比pe的编码值;并且
●尝试每一个消息的彻底LDPC解码。
将可通过彻底LDPC解码连贯地并可靠地纠正的最大的损坏百分比pe记录为lpe,其是合理地预计可被纠正的最大错误百分比。
然后,如下进行第二实验:
●取大量消息;
●对每一个消息进行LDPC编码;
●对于每一个消息,损坏lpe百分比的编码值;并且
●对于每一个消息,尝试LDPC解码的单次迭代并记录失败的ECC校验和的数目ncf。
最后,此实验中记录的最高值ncf被用作确定LDPC解码是否足够接近理想的阈值。如果LDPC解码的单次迭代导致失败的LDPC校验和的数目小于或等于ncf,则LDPC解码被认为是接近理想的(步骤1010中的“好的ECC”)。
在步骤1015中,测试是否LVBC的所有可能的朝向都已进行正确性检查(即,是否是最后的旋转?)。因为LVBC使用了正方形栅格,只需测试检查的朝向的数目小于四(对于基于三角形或六边形栅格的替换类型的条形码,将分别测试所检查的朝向的数目小于三或六)。如果所有的四个朝向的检查都不成功,即“是”,则处理在步骤1030中以失败结束,因为无法找到数据的正确的朝向。否则,处理继续至步骤1020。
在步骤1020,栅格以顺时针方向被旋转九十度。这是通过使每一个点以栅格的中心为中心旋转90°并重新解释每一个点的调制以补偿该旋转来实现的。重新解释是通过将每一个调制值替换为在以下的表1所示的如下的查找表中找到的对应的旋转的调制值来完成的:
表1
Figure G2008101885172D00191
步骤1020导致对于标记图案的不同朝向的对数据的重新解释。虽然这是关于栅格的旋转进行描述的,可供替换地,标记的图案可以相对于栅格和对于每一个标记确定的新位置向量旋转,由此确定对应的(旋转后的)数据值。
在步骤1020结束之后,处理返回步骤1010。然后对于旋转的数据进行检查正确朝向的处理。该过程继续,直到找到正确朝向并且过程在步骤1025成功地退出,或在步骤1030失败为止。失败使方法900结束而成功则允许方法900前进至图9的步骤911。
一个可替换的实施例对于每一次旋转执行ECC解码,并记录失败的ECC校验和的数目ncf。返回具有最小数目的ncf的朝向作为正确的朝向。
返回图9,步骤911接受已由步骤909处理的检测的九进制数据值的矩形栅格作为输入,直到消息开始位于正确取向的栅格的最左上的位置。然后,步骤911通过如下组合解码消息:从最左上的数据值开始,从左向右并从上向下前进,随着前进而输出九进制数据值。处理九进制数据值的顺序就是已经描述过的图7所示的顺序。
解码过程在步骤913中结束并得到从LVBC中提取的ECC编码解调数据。之后,可以通过ECC解码来纠正该ECC编码解调数据。在一个实施例中,这是通过彻底(多次迭代)LDPC解码实现的。
所述排列为形成和读取文档中的数据图案提供准备,所述图案具有在文档中形成的多个标记,每一个标记都是机器可读的并且相对于参考位置被进行位置数字相位调制,所述参考位置诸如是形成图案的不可视载体的虚拟栅格的对应的交叉点位置,调制表示图案中的数据。
标记优选为通过打印形成的点,并共同形成允许文档识别的代码。标记的尺寸可取决于具体应用和可容许的可视度水平而改变。尺寸可以像文档的打印分辩率的一个像素一样小,从而在允许电子机器读取的扫描的同时提供对于人眼的低可视度。标记和其承载的标识数据表示与熟知的条形码等同的功能,并且可被称为“条形码”,尽管没有实际形成“条形”。当结合了低可视度方面时,该图案可被认为是低可视度条形码(LVBC),尽管标记没有条形,并且在某些实施中对于人眼可能相当可视。
虽然在编码时,阵列可以是足够传递所需数据量的有用尺寸,但是解码需要实际可行的最小阵列尺寸以确保准确地检测阵列,这对于准确解码是必要的。一个实际可行的最小栅格/阵列尺寸是大约8x8(即,给出64个标记),可靠的实际可行尺寸是10x10或12x12。在目前的九进制排列中,8x8的栅格尺寸可负担约202(=64(log29))比特数据。在不偏离本公开的实质和范围的前提下,相关领域技术人员将认可,也可以同样实施其它栅格/阵列尺寸。
从上文将明显看出,栅格的每一个交叉点只有一个调制的点,从而该调制的点对于该交叉点是唯一的。如果有两个或更多点与一个交叉点相关联,则会太模糊并且解码将产生没有意义的结果。因此,对于任何实际实施,任何一个交叉点的可能的调制的点的位置不应与另一个(例如相邻的)交叉点的点的可能的调制位置重叠。
某些其它手段提供由位于规则(正方形)栅格的交叉点的点构成的计算机可读标记。在这些例子中,可以在交叉点上产生点以表示逻辑“1”,而没有点产生表示逻辑“0”。这会导致模糊,其中没有点产生也可以被解释为不存在计算机可读标记,而不是逻辑“0”。相反地,在目前公开的排列中,所有数据值都由一个标记表示,并且是由该标记相对于虚拟栅格的相应交叉点的位置来确定数据值的。因此,降低了模糊的可能性。标记不需要是一个点,其最简单的呈现可以是纸上的一滴墨,其将显示微小的基本上是圆形的标记。在某些实施中,标记例如可以是形成诸如正方形或三角形的任何所需的并且可检测的形状的一组点。大的实际可行的点可等同于句点即“.”。根据字体大小,这样的标记会占据许多可显示或可打印的像素。
上述排列导致电子页面数据的形成,当所述电子页面数据被输出至打印机102、1115时,导致可以具有信息内容和一个或更多如所述那样的LVBC的页面数据的硬拷贝复制。电子数据形成电子文档,该电子文档可以被存储以用于之后再现,所述再现可以是通过视频显示器1114的电子方式的再现,或者是通过打印机102、1115的再现。相似地,扫描并入如所述那样的LVBC的文档产生其页面数据将包括一个或更多个LVBC的电子文档。不管它们的再现模式和/或存储如何,这些电子文档可以在计算机之间被通信(例如通过网络1120)以用于打印或解码。
LVBC背景
本公开也涉及解码图像中的点图案。点图案是点的调制的栅格,其对至少一个数据消息进行编码。值得注意的是,在至少一个实施中,点图案不需要具有任何对准或同步标记。然而,尽管如此,本实施能够检测包含对准或同步标记的点图案。
根据本公开的一个实施例的一个实施在嵌入或链接到复印机的软件中实施。当尝试使用复印机复制包含点图案的图像时,图像被分析以便检测点图案。解码消息确定图像是否被授权再现。例如,如果从输入图像中解码的四个消息中有三个消息允许复制,而一个消息禁止复制,则该输入图像不被复制。此外,可替换的实施例可仅再现允许复制的点图案区域,略去禁止复制的点图案区域。
在可替换的实施例中,操作者可以视觉识别本实施例中已经识别的点图案区域及其相关联的解码消息。
此处所述的方法可以通过使用连接到复印机3815的计算机系统3800来实施,从而如图38所示,其中图1-10、12-37的处理可以被实施为软件,诸如在计算机系统3800内可执行的一个或更多个应用程序。计算机系统3800可如此检测所尝试的复制操作,并如此在复印处理中控制共同形成复印机3815的扫描仪和打印机。在一种实施中,计算机系统3800实施用于在图像中识别计算机可读标记的排列内的对准标记的星座图的方法。可使用复印机3815来扫描包含计算机可读标记的图像。具体来讲,星座图识别、条形码检测、和复制保护的方法的步骤可通过在计算机系统3800内执行的软件中的指令来实现。指令可以形成为一个或更多个代码模块,每一个代码模块用于执行一个或更多个具体任务。软件也可以被分为两个独立的部分,其中第一部分和对应的代码模块执行识别和检测方法,而第二部分和对应的代码模块管理第一部分与用户之间的用户界面。软件也可以存储于计算机可读介质中,所述计算机可读介质包括例如下面描述的存储装置。软件是从计算机可读介质中载入到计算机系统3800的,然后由计算机系统3800来执行。其上记录了这样的软件或计算机程序的计算机可读介质是计算机程序产品。在计算机系统3800中使用该计算机程序产品优选地实现了一种用于条形码检测和星座图检测的有益设备。
从图38可看出,计算机系统3800由计算机模块3801、诸如键盘3802和鼠标指点装置3803之类的输入装置、包括显示装置3814和扩音器3817的输出装置、以及到复印机3815的连接构成。计算机模块3801可以使用外部调制解调器(Modem)收发器装置3816用于通过连接3821来与通信网络3820来回通信。网络3820可以是诸如因特网或专用广域网(WAN)之类的WAN。在连接3821是电话线的情况下,调制解调器3816可以是传统的“拨号”调制解调器。可供替换地,在连接3821是高容量(例如电缆)连接的情况下,调制解调器3816可以是宽带调制解调器。无线调制解调器也可以用于到网络3820的无线连接。网络3820和3822可负担到可能需要以相似方式被控制的其它复印机的访问。
计算机模块3801典型地包括至少一个处理器单元3805以及例如由半导体随机存取存储器(RAM)和只读存储器(ROM)形成的存储器单元3806。模块3801还包括一些输入/输出(I/O)接口,这些接口包括:连接到视频显示器3814和扩音器3817的音频-视频接口3807;用于键盘3802、鼠标3803、和可选的操纵杆(未视出)的I/O接口3813;以及用于外部调制解调器3816和复印机3815的接口3808。在某些实施中,调制解调器3816可以并入计算机模块3801内,例如接口3808内。计算机模块3801也具有本地网络接口3811,该本地网络接口3811通过连接3823允许将计算机系统3800连接到已知作为局域网(LAN)的本地计算机网络3822。如图所示,本地网络3822也可以通过连接3824连接到广域网3820,所述连接3824可典型地包括所谓的“防火墙”装置或相似的功能。接口3811可由以太网TM电路卡、无线蓝牙TM或IEEE 802.11无线配置构成。
接口3808和3813可负担串联和并联两种连接,串联典型地根据通用串行总线(USB)标准来实施并具有对应的USB连接器(未图示)。设置存储装置3809,其典型地包括硬盘驱动器(HDD)3810。也可以使用诸如软盘驱动器和磁带驱动器(未图示)的其它装置。典型地设置光盘驱动器3812作为非易失性数据源。于是,例如诸如光盘(例如CD-ROM,DVD)、USB-RAM、和软盘之类的便携存储装置可以用作到系统3800的合适的数据源。在一种实施中,将根据本公开的一个实施例识别的星座图存储在一个或更多存储装置3809中。然后,所存储的星座图可用于稍后对数据承载标记进行解码。
计算机模块3801的部件3805到3813典型地通过互连总线3804并以使计算机系统3800以本领域技术人员熟知的常规模式进行操作的方式进行通信。其上可实现上述配置的计算机的例子包括IBM-PC和兼容器、Sun Sparcstations、苹果MacTM或由此演化的类似的计算机系统。
典型地,以上讨论的应用程序驻留在硬盘驱动器3810上,并且在被处理器3805执行时被读取和控制。这些程序的中间存储和从网络3820和3822取得的任何数据可以通过使用半导体存储器3806来完成,也可以与硬盘驱动器3810共同完成。在某些情况下,应用程序可以通过在一个或更多个CD-ROM上被编码的方式提供给用户,并且通过对应的驱动器3812来读取,或可供替换地可以由用户从网络3820或3822来读取。此外,该软件还可以从其它计算机可读介质载入到计算机系统3800中。计算机可读介质是指参与将指令和/或数据提供到计算机系统3800以用于执行和/或处理的任何存储介质。这样的介质的例子包括软盘、磁带、CD-ROM、硬盘驱动器、ROM或集成电路、磁光盘、或诸如PCMCIA卡之类的计算机可读卡,无论这些装置在计算机模块3801的内部还是外部均可。还可参与指令和/或数据提供的计算机可读传输介质的例子包括无线电或红外传输信道、以及到另一个计算机或联网装置的网络连接、和包括电子邮件传输和记录在网站上的信息等的因特网或内部网络。
可以执行上述应用程序的第二部分和对应的代码模块以实现要在显示器3814上呈现或以其他方式表示的一个或更多图形用户界面(GUI)。通过操纵键盘3802和鼠标3803,计算机系统3800的用户以及应用可操纵界面,以将控制命令和/或输入提供给与GUI相关联的应用。
可供替换地,标记检测的方法可以在一个或更多个执行图像处理的功能或子功能的诸如集成电路之类的专用硬件中实现。这样的专用硬件可以包括图形处理器、数字信号处理器、或一个或更多微处理器和相关存储器。此外,虽然参照连接到复印机3815的计算机系统3800进行描述,但是计算机系统3800的很多所述功能可以被并入到复印机3815中,以允许具体本地操作。
基本结构
使用调制栅格将数据存储在条形码中。图28示出了调制栅格的外观的放大图。调制栅格是由大量以接近正方形栅格2801的交叉点2803的点2802和2804为形式的标记构成的。注意,只有点2802和2804构成可视调制栅格,栅格2803仅为说明点2802和2804的位置而示出。
调制栅格由两种类型的点构成。点2802是“数据”点的实例-该点围绕交叉点2803被调制。点2804是‘对准’点的实例-该点恰好位于交叉点2803上。在图28中以不同的阴影示出数据承载点和对准点,但除了其相应调制之外,数据承载点和对准点实际上是相同的;阴影是出于图示的目的。在图28中图示的实例中,条形码由50%的数据承载点和50%的对准点构成;当然,在不偏离本公开的实质和范围的前提下,其它具有微小变化的布置也是可以的。
图29示出了从条形码解码所发现的栅格2901。在栅格2901的一个正方形之内示出了数据承载点2902,并且在栅格2901的交叉点上示出了对准点2904。对准点用于建立栅格2901,并出现在每一个栅格交叉点上。由于对准点位于每隔一个点上,所发现的栅格以
Figure G2008101885172D00251
倍的栅格间距从原始的正方形栅格偏移45度。此发现的栅格2901将页面分为许多由2903表示的正方形的栅格单元,其中每一个栅格单元包含恰好一个数据承载点。栅格单元是用于条形码数据存储和解码的基本单位。
图30示出了信息是如何存储在栅格单元中的数据承载点中的。点3002位于靠近栅格3001中的栅格单元的栅格单元中心3005的位置,并且每一个点被调制到八个可能的位置3003中的一个。每一个点的八个可能的位置排列成以相关的栅格交叉点为中心的圆圈。八个调制位置从栅格中心水平、垂直或对角线地被偏移。调制位置被偏移的水平和垂直距离是调制量3004,此处简称为“Mq”。Mq被选为栅格单元的边长的固定百分比-Mq最好被选为原始正方形栅格间隔的40%,但其它百分比也同样可以实施。
图31进一步详细地示出了点调制位置3003。点调制位置3003以栅格单元中心3103为中心,并且每一个诸如3101之类的调制位置都具有与其相关联的诸如3102之类的数字代码值。八个调制位置(包括3101)允许每一个点编码八个可能的数字代码值(包括用于3101的3102)的其中一个。这样允许调制栅格充当数字数据存储器,其中调制栅格的每一个点存储一个八进制数位数据。理想地,每一个点对代码值进行编码,以使点以格雷编码排列为圆圈。这便利了解码期间的纠错。图31以二进制示出了每一个点的数字代码值。因此,顺时针从3102开始,点对如下值进行编码:5,7,6,2,3,1,0和4。在不偏离本发明的范围的前提下,可以使用其它调制技术。例如,可以使用十六个调制位置来编码十六个可能的数字代码值之一。
数字数据存储器的数位优选的排序是使用如图32所示的矩形点阵列而被提供的排序。这种排序从最左上方的栅格单元3201开始,从左向右再从上向下前进,直到到达最右下方的栅格单元3202。当然也可以使用其它排序。
在一种实施中,同时将两个信道的数据存储在一个条形码中。数据被重复地在整个栅格上拼接。图33示出了一个单独的唯一的拼接块3300和所使用的拼接排列。然后,条形码重复地在整个栅格上拼接以用于冗余。逻辑上讲,每一个条形码拼接块表示来自两个独立的数据信道的数据:高数据密度(此后称为“HDD”)信道和低数据密度(此后称为“LDD”)信道。HDD信道具有低鲁棒性,而LDD信道具有高鲁棒性。空间上,条形码拼接块3300包括四个子拼接块3301、3302、3303、和3304,在此称为HDD信道拼接块。HDD信道拼接块是具有3314的尺寸(在此称为“HDD拼接块尺寸”)的以栅格单元或数据承载点为单位的正方形栅格。每一个HDD信道拼接块包含一个较小的嵌入拼接块,在此称为LDD信道拼接块。条形码拼接块中的LDD信道拼接块是3305、3306、3307、和3308。这意味着条形码拼接块3300包含LDD信道拼接块的四个拷贝。
每一个LDD信道拼接块是具有3313的尺寸(在此称为“LDD拼接块尺寸”)的以栅格单元或数据承载点为单位的正方形栅格。此外,HDD信道占据了除LDD信道拼接块以外的四个HDD信道拼接块的全部区域,这意味着条形码拼接块只包含HDD信道的单个拷贝。例如,区域3309、3310、3311、和3312共同组成HDD信道。用于存储HDD信道的HDD信道拼接块的数目可以根据需要扩展。目前,条形码拼接块3300使用2×2排列的HDD信道拼接块,但可以将其扩展到下一个更大的排列,即3×3排列的HDD信道拼接块。注意,该拼接方案保持LDD信道拼接块的密度恒定,而不管所使用的HDD信道排列如何,从而提供高度冗余和鲁棒性的LDD信道。纠错码(ECC)可应用于LDD和HDD信道两者或其中之一的数据。一个实施例使用低密度奇偶校验(LDPC)码,该低密度奇偶校验(LDPC)码是本领域熟知的高性能ECC。
解码处理
图34是用于条形码解码的方法的中间阶段的流程图。解码从步骤3401开始。第一阶段“扫描条形码”3402使用光学扫描仪将纸条形码转换为数字扫描图像。注意,纸条形码可能包括多个条形码;这将由稍后的解码阶段正确处理。3402的输出是扫描图像。
第二阶段“检测点”3403使用试探法定位/检测与扫描图像中的条形码点看上去相似的所有点。3403的输出是所找到的点的主要部分的中心的(x,y)像素坐标列表。
第三阶段“星座图检测”3404使用试探算法来识别局部栅格间隔和朝向(星座图检测)。
第四阶段“满溢”3405使用基于优先级的满溢算法来使合适的栅格与所找到的点的列表相适应。在典型的情况下,3404的输出将是覆盖扫描图像的一个单独的栅格。在特殊情况下,将找到覆盖扫描图像的具有不同间隔和朝向的多个栅格。例如,如果扫描图像包含两个或更多不相接且具有不同间隔或不同朝向的条形码,则将为每一个检测的条形码输出单独的栅格。
第五阶段“区域查找”3406对来自阶段3405的每一个栅格开始操作,并使用分段算法基于数据相似度将栅格分为单独的区域。典型地,3406的输出将是覆盖栅格的单个区域。在特殊情况下,可找到多个区域。例如,如果栅格包含两个没有被“栅格导航”成功分离的条形码,则这两个条形码将在这个阶段被正确地分为两个区域,并且将输出这两个区域。
第六阶段“拼接聚合”3407将每一个区域中重复的拼接块聚集为单个拼接块。通过自相关找到重复的拼接块尺寸(图33中的3312),然后该区域中的拼接块被加和为单个拼接块。此聚合的拼接块是3407的输出。
第七阶段“ECC解码3408”通过将聚合的拼接块串行化到LDD和HDD信道来执行ECC解码,使用纠错码校正任何错误,并提取条形码数据。3408的输出是LDD数据和HDD数据。
处理在3409结束。
星座图检测
现在更详细地讨论图34的星座图检测步骤3404。图12示出了数据承载点1201和对准点1202如何排列的实例。参考栅格1203是由位于参考栅格交叉点上的对准点的位置限定的。数据承载点相对于参考栅格1203被调制。本公开提供了用于寻找其间具有预定几何关系的对准点的基础群或排列的有效方案,该其间具有预定几何关系的对准点的基础群或排列在这里将被称为“星座图”。接着,可以如图12所示确定参考栅格间隔1204和相对于参考方向1206的参考栅格角度(朝向)1205。
图13描绘了优选的实施例中使用的星座图的可供替换的版本。区域1310示出了由五个点1301至1305组成的一种类型的星座图,而区域1311示出了由四个点1306至1309组成的星座图。
图23是用于检测星座图的方法的流程图2300。步骤2301是该方法的开始。根据步骤2302,在图像中选择任意的坐标。可取决于执行星座图检测的期望频率将图像分为任意尺寸的拼接块。作为一个实例,320x320个像素的拼接块大小可以用于600dpi的14像素栅格间隔的A4页面。在步骤2302中可将这些拼接块之一的中心坐标选择为任意的坐标。在步骤2303中,选择离任意坐标最近的多个点(在本实例中为十个点)来执行星座图的检测。作为一个实例,在图14中,在图像中选择任意的坐标1411。区域1412圈起了离点1411最近的这十个点,不管它们是对准点还是数据承载点。在这个实例中,点1401至1406是对准点而点1407至1410是数据承载点。在步骤2304中,从这十个最近的点中任意选择两个点的组合。在这两个所选点的坐标的质心处设置旋转点。接着,在步骤2305中,两个所选点的坐标绕旋转点旋转90度,以产生两个相应的旋转坐标或旋转位置。如图15所示,对应于点1501和1502的坐标分别绕旋转点顺时针旋转90度,以产生相应的旋转坐标1503和1504。
回到图23,在决定步骤2306,检查是否有点出现在旋转的坐标1503和1504的附近。如果有点位于这些旋转的坐标的误差范围内,即“是”,则这两个所选点和这两个找到的点被认为共同构成一个潜在星座图。步骤2308描绘了构成潜在星座图的这四个点的选择。作为一个实例,对于14个像素的栅格间隔,合适的误差范围最大为水平和/或垂直方向上的一个像素。如果在决定步骤2306,没有点位于误差范围之内的旋转的坐标上,即“否”,则控制前进至决定步骤2307。在决定步骤2307,如果所有的点对都已用尽,即“是”,则处理在步骤2312结束。否则,如果至少一对点还未被选择,即“否”,则通过在步骤2304使用下一对点来重复处理。对于十个点,这意味着将最多有
Figure G2008101885172D00291
或45次可能的迭代。尽管选择了最近的十个点,在不偏离本发明实质的前提下也可以使用不同数目的最接近的点。此外,选择点对的处理不需要是任意的。为了最小化用于执行到最大数目的迭代所必须的计算时间,在一个实施中,离任意坐标1411更近的点比更远的点更先被配成对。
一个实施例使用更多检查以确保没有检测到不正确的星座图。为了说明可能检测到不正确的星座图的某些典型的情况,考虑图16。点1601、1602、1603、和1604形成了不正确的星座图,并且这些点将导致不正确的栅格间隔和角度。点1601、1602、1603、和1604形成了不正确的星座图,该星座图是正确的星座图的
Figure G2008101885172D00301
倍。此无效的星座图将返回相对于参考方向1620为0度而不是45度的角度。正确的星座图是由点1603、1604、1605、和1606构成的星座图。在图23的决定步骤2309中,检查点1605至1613是否出现在它们相应的栅格交叉点的附近。如果在它们相应的栅格交叉点的误差范围之内找到的点的数目少于第一预定阈值计数,即“是”,则认为构成潜在星座图的点1601至1604形成了正确的星座图,并执行步骤2310。作为一个实例,七个点的第一阈值计数将适合用于确定潜在星座图是否正确。因此,图23的步骤2310找到了通过选择点1603-1606而形成的正确的星座图。
如果步骤2309没有检测到星座图,即“否”,则执行步骤2311以进一步验证构成潜在星座图的四个点是否实际形成了正确的星座图。如图17所示,如果根据步骤2305构成潜在星座图的点是点1701至1704,则检查点1705至1713是否在它们相应的栅格交叉点的附近。如果在它们相应的栅格交叉点的误差范围之内找到的点的数目少于第二预定阈值计数,即“否”,则处理在步骤2312结束。如果存在多于第二预定阈值计数的点,即“是”,则认为构成潜在星座图的四个点1701至1704的组形成了正确的星座图,并执行步骤2310,将点1701至1704选择作为正确的星座图。处理在步骤2312结束。
在另一个实施例中,可通过使用图18中描绘的手段来检测星座图。图18示出了对准点1801和数据承载点1802。在这个实例中,该方法取任意点1803,并选择四个最近的相邻点1804至1807。为点1804至1807计算旋转点。如图19所示,计算作为所选点1804至1807的质心的旋转点1904。如图19的图1903所示,四个所选点的坐标绕旋转点1904旋转90度以产生四个相应的旋转的坐标1905至1908。检查在旋转的坐标1905至1908附近是否出现点。如果有点位于相应的旋转的坐标的误差范围区域1909至1911之内,则认为这四个所选点构成了潜在星座图。作为典型的规则,对于14个像素的栅格间隔,误差范围可被认为是水平和/或垂直方向上的一个像素的偏差。根据在相应的旋转的坐标的误差范围区域之内找到的点的数目,认为该潜在星座图是正确的。作为一个实例,严格的检查将需要这四个点位于所有四个相应的旋转的坐标的误差范围之内。可以对此增加更多的检查以减少虚假的正确情况。所实际使用的检查的数目将取决于具体应用。
在另一个实施例中,如图20所示随机地选择任意点2001。选择点2001的八个最近的相邻点2002至2009以形成一组点。将这八个最近的相邻点2002至2009的坐标绕任意点2001顺时针或逆时针旋转90度以形成一组旋转的坐标2012至2019。检查是否有点出现在旋转的坐标2012至2019的附近。如果有点位于相应的旋转的坐标的误差范围区域之内,图21所示为误差范围区域2101至2104,则认为四个相邻点2003、2005、2007、和2009以及任意选择的点2001构成了潜在星座图。根据在相应的旋转的坐标的误差范围区域之内找到的点的数目认为该潜在星座图是有效的。作为一个实例,检查将需要有四个点位于相应的旋转的坐标的误差范围之内。回到图20,如果重叠的点的数目为四个,则可将五个点2001、2003、2005、2007、和2009看作参考栅格的基本星座图。典型地随机地设置数据承载点2002、2004、2006、和2008的位置,但点可以位于旋转的坐标的误差范围之内。因此,可能需要通过旋转包括90、180、和270度在内的其它角度进行的更多检查。
作为另一个实施例,图22示出了具有形成星座图的点2203至2206的规则三角形栅格。在图像中选择任意点2209并选择离点2209最近的八个点2203至2210。在八个所选点2203至2210之中,选择任何两个点,例如2203和2204。将点2203的坐标绕点2204的坐标顺时针旋转60度以计算坐标2206,然后将点2203的坐标顺时针旋转120度以计算坐标2205。检查是否有点出现在误差范围之内的坐标2206和2205处。根据是否在相应的旋转的坐标2205和2206的误差范围区域之内发现点,认为由点2203至2206构成的潜在星座图是正确的。对于八个所选点2203至2210中所有可能的点对重复该处理,直到检测到星座图或已经检查完所有的点对。本领域技术人员将理解,可以对此增加更多的检查以减少虚假的正确情况。所使用的检查的数目将取决于实际应用。
上述实施例使用90度的坐标旋转,并且这是通过简单地将x和y坐标交换并对y坐标取负来实现的。此外,检查是否有点出现在给定坐标的误差范围之内是一种有效的方法。因此,该星座图检测的方法使用了最小的计算功率。
在图34的步骤3404中,已经检测了正确的星座图,可以将构成该星座图的坐标或点以及栅格间隔和角度用作用于检测由对准点形成的整个栅格的开始点。通过这样做,所有的对准点都与数据承载点分离。
满溢驱动条形码导航
栅格导航方法的概述
在图34的步骤3405中使用了满溢驱动栅格导航的方法。下面将更加详细地描述该步骤。
栅格导航方法的一个方面是在文档中检测到的所有打印的标记的集合之中识别对准标记,并将对准标记设置在一个或更多规则栅格上。在一个实施例中使用正方形栅格,然而该方法也可以容易地适用于其它规则栅格。
本公开的一个方面提供了为在打印文档中检测条形码的目的而检测参考栅格的方法,条形码由对准标记和数据标记组成,其中数据标记用于对信息编码,而对准标记用于定义用于设置数据标记的参考栅格,在其它方面对准和数据标记是视觉上不可区分的。该方法包括在打印文档的至少一个位置中估计开始位置、间隔、和朝向,并使用本领域技术人员熟知的满溢方法(flood-fill method)的一种变形来追踪对准标记。
满溢驱动栅格导航方法使用图34的步骤3403和3404的结果。具体来讲,步骤3403的结果是所有检测标记的图像坐标的集合,具体来讲,所述所有检测标记包括对准标记和其它任何检测的标记。本公开的方法只使用形成对准图案的那些标记。可供替换地,可以根据需要设置用于检测是否有标记出现在所提供的标称位置的紧接的附近的装置。
步骤3404的结果是至少一个种子点的集合,其中提供给每一个种子点的信息包括已经在步骤3404中被识别为有效对准标记的至少一个标记的图像坐标,以及那些图像坐标处的栅格角度和间隔的估计。可供替换地,可以根据需要在步骤3404设置用于检测种子点的装置。种子点的数目是性能与准确度之间的折衷。
该方法的结果是一个或更多栅格数据结构的集合,其中每一个栅格数据结构包括栅格节点的集合。每一个栅格节点存储与栅格中的节点的位置相关联的图像坐标。
该方法以两个连续的阶段操作:初始化阶段,然后是栅格生长阶段。在初始化阶段期间,使用步骤3404的结果初始化栅格数据结构。在栅格生长阶段期间,识别对准标记,并以与在业内熟知为满溢或种子填充方法相似的方式将新的栅格节点一次一个地添加到栅格。评估并添加新的栅格节点的顺序是通过测量该节点确实是有效对准节点的置信度来确定的。此外,在每一次迭代期间进行检查,以查看添加新节点是否导致两个栅格重叠,并尝试组合重叠的栅格。
数据结构
本公开的方法所使用的数据结构包括栅格列表(grid list)、优先级队列(priority queue)、和领域阵列(territory array)。
栅格列表是栅格数据结构的集合。每一个栅格数据结构表示在被追踪过程中的栅格的一个连通的部分。与每一个栅格数据结构相关联的信息包括栅格角度和间隔,以及可通过其栅格坐标访问的栅格节点的集合。与每一个栅格节点相关联的信息包括与该节点相关联的图像坐标、示出了已发现与这个节点相关联的有效标记的指示、以及示出了该节点已经通过优先级队列被处理过的指示。还设置了用于使栅格节点与它的父栅格数据结构相关联的装置。
优先级队列是栅格节点连同其相关联的置信度值的集合。优先级队列支持添加新节点和移除具有最高置信度的节点的有效操作。
领域阵列是出于检测重叠栅格的目的,用于识别哪个栅格(如果有的话)在图像上占据了特定区域的辅助数据结构。逻辑地将图像划分为相等大小的不重叠的矩形区域或领域。每一个领域可以被特定栅格要求所有(claimed)或不所有(unclaimed)。优选地,每一个领域的大小应该小到可以实际使用,但不能小于最大的预期栅格单元的大小。该方法的本实施例使用32×32像素大小的领域,尽管其它领域也可同样实际使用。
数据结构的选择反映了简单性、性能、和存储量要求之间的各种折衷。本领域技术人员将认识到,可以使用其它数据结构以达到同样效果。
栅格导航方法的详细说明
图24是满溢驱动栅格导航的方法的流程图2400。首先在步骤2401、2402、和2403中执行初始化阶段,接着在步骤2404、2405、和2406中执行栅格生长阶段。
在步骤2401中,如下初始化内部数据结构:将栅格列表设定为空;将优先级队列设定为空;并且将领域阵列中的每一个领域设定为无所有者。
在步骤2402中,如下文中将更详细描述的,归一化种子点的朝向。
在步骤2403中,从种子点创建起始栅格,并且预繁殖优先级队列。对每一个种子点执行下述动作。
创建新的栅格数据结构并将其添加至栅格列表。从种子点朝向和间隔初始化栅格朝向和间隔。
在栅格原点处将新的栅格节点添加至新的栅格数据结构。将栅格节点图像坐标设定为相应的种子点坐标,并且将节点标记为具有相关联的标记。接着,评估新创建的节点,并且如本文中之后描述的那样,有条件地将其添加至优先级队列。
步骤2404、2405、和2406表示方法的主循环。在步骤2404中,该方法检查队列是否为空。如果队列为空,即“是”,方法在结束步骤终止。如果队列不为空,即“否”,则控制前进至步骤2405,选择顶部节点。在步骤2405中,将具有最高置信度的节点从队列中移除并在步骤2406中对其进行处理。然后,控制返回步骤2404并重复处理,直到在步骤2404中确定队列为空。
角度归一化
由于栅格的旋转对称性,在图34的步骤3404中估计的栅格角度具有固有的模糊性。出于性能的原因,需要将角度归一化以使相似地取向的栅格的角度差很小。具体来讲,使用特定的ANGLE_TOLERANCE常数来限定被认为相似的栅格的朝向角度差的上限。ANGLE_TOLERANCE的合适的值可以通过实验来确定。在本实施例中,ANGLE_TOLERANCE的值被设定为0.02弧度。
角度归一化的处理在图24的步骤2402中执行,并且参照图25被更详细地示出,所述图25是栅格角度归一化方法的流程图2500。
在步骤2501中,通过取90度的模使所有种子点的栅格角度在从0度到90度的范围内。
在步骤2502中,使用所有可用的种子点的数据来创建/建立栅格角度的直方图。直方图的单位槽(bin)的大小设定为ANGLE_TOLERANCE常数的值。
在步骤2503中,将边界角度的值确定/选择为具有最小计数的单位槽的中心值。
在步骤2504中,使所有种子点的栅格角度在从边界角度到边界角度加上90度的范围内。这是通过只要当朝向角度小于边界角度时就使所述角度增加90度来完成的。
角度归一化的步骤是可选的。如果略去该步骤,模糊性的问题将必须在图27的步骤2705中检查重叠栅格时比较栅格朝向的时候解决。
栅格节点评估
在栅格节点评估步骤期间,创建当前节点的任何错过的相邻节点,计算该节点的置信度,并且有条件地将该节点添加至优先级队列。将置信度计算为节点本身和当前节点的所有相邻节点的距离度量之和。
对于当前节点,如果该节点具有与其相关联的标记则将距离度量设定为MAX_DIST,否则设定为零。对于相邻的节点,如下计算距离度量:
如果相邻节点不具有与其相关联的标记,则度量为零;否则,度量为MAX_DIST减去标记的实际位置和预期位置之间的距离的平方。如果结果为负,将度量设定为零。
MAX_DIST常数表示在标记的实际位置和预期位置之间的最大允许的距离的平方。在一个实施例中,MAX_DIST的值为9,该值对应于3像素的最大距离。
本领域技术人员将认识到,可以使用计算置信度的其它方法。这个选择是由准确性和性能之间的工程折衷来确定的。具体来讲,计算可以包括关于标记大小和形状、栅格中其它对准标记的位置的信息等。
图26是栅格节点评估方法的流程图2600。首先,在步骤2601中,如果当前节点不具有与其相关联的标记,则将置信度值初始化为零;否则将其设定为MAX_DIST的值。接着对于所有的栅格方向重复步骤2602至2612。在矩形栅格的情况下,评估4个方向:即上、下、左、和右。
在步骤2602中选择当前栅格方向。在步骤2603中通过根据当前栅格方向旋转栅格位移向量并将其添加至当前节点的位置来计算标记的预期位置。通过将单位向量乘以栅格间隔并旋转栅格角度来计算栅格位移向量。为了效率,可以预先计算栅格位移向量并将其存储于相应的栅格数据结构中。
在步骤2604中,在栅格数据结构中检查是否有相邻节点出现在当前方向上。如果还没有创建相邻节点,即“否”,则在步骤2605至2609中尝试创建新节点。首先,在步骤2605中比较预期节点坐标和图像边界。如果坐标落于图像边界之外,则不对当前方向执行进一步的动作,并且控制前进至步骤2612。否则,如果在步骤2605,坐标落于图像边界之内,即“是”,则在步骤2606中创建并以预期位置初始化新节点。接着,在步骤2607中找到离预期位置最近的标记。在步骤2608中检查标记的距离度量。如果度量小于或等于零,即“是”,则认为标记太远并且不对该节点执行进一步的动作,并且控制前进至步骤2612。否则,如果距离度量不小于或等于零,即“否”,则在步骤2609中将节点标记为具有相关联的标记,并用当前标记的位置更新该节点的位置。然后在步骤2610中将置信度增加该度量。
如果在步骤2604中发现该节点,即“是”,则在步骤2611中检查该节点是否有相关联的标记出现,如果有的话,即“是”,在步骤2610中如上所述更新置信度。如果在步骤2611中发现该节点不具有相关联的标记,即“否”,则控制前进至步骤2612。
步骤2612确定是否所有方向都已被处理。如果还没有处理所有的方向,即“否”,则控制返回至步骤2602。一旦在步骤2612中确定所有的栅格方向都已被处理,即“是”,则控制前进至步骤2613。在步骤2613中检查得到的置信度,如果发现其大于零,即“是”,则在步骤2614中将节点连同其置信度添加至优先级队列。接着,控制前进至结束步骤并且该方法终止。如果置信度不大于零,即“否”,则控制前进至结束步骤并且该方法终止。
最高置信度节点处理
最高置信度节点的处理在图24的步骤2406中执行,并在图27中进一步被图示,图27是处理具有高置信度水平的栅格节点的方法的流程图2700。
首先,在步骤2701、2702、2705、和2706中检查并执行合并栅格的特殊情况。在步骤2701中,在当前节点的位置处考查领域阵列。如果领域所有者与当前栅格相同,即“相同”,则不采取特殊动作,并且控制前进至步骤2703。否则,在步骤2701中如果领域还没有所有者,即“无所有者”,则在步骤2702中将领域的所有者设定为当前栅格,接着控制前进至步骤2703。否则,在步骤2701中,如果领域的所有者与当前栅格不同,即“不同”,则在步骤2705和2706中执行尝试以接合栅格。
在步骤2705中,检查两个栅格即当前节点的栅格和当前节点位置处的领域所有者的兼容性。如果这些栅格的朝向之差小于ANGLE_TOLERANCE而间隔之差小于SPACING_TOLERANCE,则认为它们兼容。SPACING_TOLERANCE是由实验确定的常数,本实施例中使用的值是1.5像素。
在步骤2705的结果为负的情况下,即“否”,则控制前进至结束步骤,并且方法终止。在步骤2705的结果为正的情况下,即“是”,则在步骤2706中如下合并栅格。
首先,通过以第二栅格的原点减去第一栅格的原点来计算位移矢量。然后,这样计算栅格坐标的偏移:将所述位移矢量的坐标旋转第一栅格的角度,将结果除以第一栅格的间隔,并将结果取整为最接近的整数值。
在计算了栅格偏移之后,来自第二栅格的所有节点转移到第一栅格,然后将第二栅格从栅格列表中移除。通过将第二栅格的节点的位置加上栅格偏移来确定第一栅格中节点的位置。同时,在领域阵列中标记为被第二栅格所有的那些领域被重新标记为由第一栅格所有。
跳过当前节点的其它处理以避免创建相同的节点的副本。控制从步骤2706前进至结束步骤,并且方法终止。
在步骤2703中,对于所有的栅格方向评估当前节点的相邻节点。如果存在一个节点没有被标记为已处理,则如之前关于图26所述对其进行评估。
控制从步骤2703前进至步骤2704,其中当前节点被标记为已处理。控制从步骤2704前进至结束步骤,并且方法终止。
其他实施例
此处公开的是确定包含数字数据和用于保护数字数据的相关联的纠错码(ECC)数据的信息标记的正确朝向的方法,其中对于信息标记的一个可能的朝向尝试ECC解码,如果ECC解码失败,则采用信息标记的不同的可能朝向并再次尝试ECC解码。
此处还公开了用于在图像中检测由对准标记/点形成的参考栅格的基本星座图的方法和系统。该栅格的间隔和朝向可具有各种预定值,数据承载点参考该栅格被调制。基本星座图仅构成对准点,并且对准点还需要与数据承载点分离。基本星座图检测识别栅格间隔和朝向,这在一个实施中被用于后续阶段以扩展和检测整个参考栅格。
此处还公开了用于在打印文档中追踪对准标记的方法和系统,其中对准标记形成栅格状图案。根据本公开的一个方面,提供了一种用于在打印文档中检测参考栅格而无需参考其它标记的方法。
根据本公开的一个方面,提供了一种用于检测作为参考栅格的一部分的点的星座图的方法,所述方法包括如下步骤:在图像中选择任意坐标;选择离所选坐标最近的多个点;从所选的最近点中选择两个点;将所选的两个点旋转90度并确定旋转位置;在旋转位置检查点;在关于旋转位置的误差范围之内检查点;并且将多个点选择为星座图。在一个实施例中,有八个所选的最近的点。
根据本公开的另一个方面,提供了一种用于检测作为参考栅格的一部分的点的星座图的方法,所述方法包括如下步骤:选择原始点组,该原始点组包括一个选择的点和所述选择的点的四个最近的相邻点;将四个点绕旋转中心旋转以产生旋转组;在原始组和旋转组中检查重叠的点;基于重叠点的数目确定是否选择点的基本星座图。
根据本公开的又一个方面,提供了一种用于检测作为参考栅格的一部分的点的星座图的方法,所述方法包括如下步骤:选择点,并选择所选点的八个最近的相邻点以形成原始点组;绕所选点旋转所述八个最近的相邻点以产生旋转点组;在原始点组和旋转点组之间检查重叠点;基于重叠点的数目确定是否选择点的基本星座图。在一个实施例中,星座图是取决于参考栅格的形状的几何形状。在另一个实施例中,栅格具有各种预定栅格间距离和朝向。在又一实施例中,星座图中的点的数目变化。在再一实施例中,点的大小和形状中的至少一个变化。
根据本公开的再一方面,提供一种用于绕所选位置将多个点旋转预定角度以查找旋转的点组的方法,包括:在图像中选择一个点并基于预定规则选择该点周围的多个点,所选的多个点形成原始点组;根据预定规则计算旋转中心;以及绕旋转中心旋转所选点以形成旋转点组。在一个实施例中,比较原始点组和旋转点组以查找重叠点以检测特定几何图案。
根据本公开的另一个方面,提供了为在打印文档中检测条形码的目的检测参考栅格的方法,条形码由对准标记和数据标记组成,其中数据标记用于对信息进行编码,而对准标记用于定义用于设置数据标记的参考栅格,在其它方面对准和数据标记是视觉上不可区分的,所述方法包括如下步骤:在打印文档的至少一个位置估计开始位置、间隔、和朝向;以及使用满溢方法的变形追踪对准标记。在一个实施例中,处理标记的顺序受标记是有效对准标记的置信度测量的影响。在另一个实施例中,置信度的测量是根据该标记相对于其它对准标记的位置来计算的。在又一实施例中,使用多于一个开始位置来同时追踪多于一个栅格,并且其中相似地取向的重叠栅格被合并到一起。
根据本公开的又一方面,提供一种用于确定包含数字数据和用于保护数字数据的相关联的ECC数据的信息标记的正确朝向的方法,该方法包括如下步骤:尝试对于信息标记的一个可能的朝向进行ECC解码,如果ECC解码失败,则采用信息标记的不同的可能的朝向并再次尝试ECC解码。
根据本公开的又一方面,提供一种用于解码图像中的低可视度条形码(LVBC)的方法,所述方法包括如下步骤:检测形成该低可视度条形码的多个点;存储与检测的点中的每一个相关联的坐标;分析存储的坐标以识别形成低可视度条形码的载体信号的规则栅格;确定调制的栅格的朝向和间隔;解调存储在每一个点的位置中的信息;确定低可视度条形码的消息数据的开始;组合解码消息。
工业实用性
从上述说明可见,所述配置可应用于计算机、数据处理、打印、和成像工业。
前文仅描述了本发明的一些实施例,在不偏离本发明的范围和实质的前提下可对本发明进行修改和/或改变,这些实施例是示意性的而非限制性的。
在说明书的上下文中,词语“包括”是指“主要包括而不一定是只包括”,或“具有”、或“包含”,而不是“仅由…组成”。词语“包括”的各种变形也具有相应的变化的意思。

Claims (14)

1.一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实施方法,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码,所述方法包括如下步骤:
从计算机可读标记的排列中选择至少两个标记,所述至少两个标记是从离所述图像中选择的坐标最近的多个标记之中选择的;参考所选标记的相应位置确定旋转中心;
通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述所选标记确定旋转位置;
从所述计算机可读标记的排列中为每一个旋转位置找到一个标记,所述标记的位置距离所述旋转位置小于预定阈值;
将所述所选标记和所找到的标记识别为所述对准标记的星座图;并且
存储所识别的星座图以用于解码所述数据承载标记。
2.根据权利要求1所述的方法,还包括如下步骤:
确定所识别的星座图的间隔和朝向;
基于所识别的星座图的所述间隔和朝向,确定一组预期的标记位置;以及
当至少预定比例的所述预期的标记位置与所述计算机可读标记的排列中的标记的位置相匹配时,验证对准标记的所识别的星座图。
3.根据权利要求1所述的方法,其中所述计算机可读标记的排列是在图像中形成低可视度条形码的标记的子集。
4.根据权利要求1所述的方法,其中所述计算机可读标记是从 包括点、点组、圆、正方形、和三角形的标记的组中选择的。
5.根据权利要求1所述的方法,其中所述参考栅格是矩形栅格,两个标记是从计算机可读标记的排列中选择的,并且确定所述旋转中心的步骤包括识别位于所述两个所选标记之间的中途的点。
6.根据权利要求1所述的方法,其中所述参考栅格是三角形栅格,并且确定所述旋转中心的步骤包括将所述所选标记中的一个指定为所述旋转中心。
7.根据权利要求2所述的方法,还包括如下步骤:
基于所述确定的间隔和朝向,扩展所识别的星座图,以从所述计算机可读标记的排列中并入另外的标记。
8.根据权利要求1所述的方法,还包括如下步骤:
使用所识别的星座图来识别所述参考栅格;并且
基于所识别的参考栅格识别所述计算机可读标记的排列中的所述数据承载标记;并且
解调所识别的数据承载标记。
9.一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实施方法,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码,所述方法包括如下步骤:
对于从计算机可读标记的排列中选择的至少两个标记的至少一个组合:
(a)参考所述组合中的所选标记的相应位置确定旋转中心;
(b)通过将所述所选标记中的每一个绕所述旋转中心旋转预 定角度来为所述组合中的所述所选标记确定旋转位置;
(c)从所述计算机可读标记的排列中为每一个旋转位置找到在所述旋转位置的误差范围之内的标记;并且
(d)根据在距离相应的旋转位置的误差范围之内找到的标记的数目,将所述组合中的所选标记和找到的标记识别为所述对准标记的星座图;并且
存储所识别的星座图以用于对所述数据承载标记进行解码,
其中,所述至少两个标记的至少一个组合是从离所述图像中选择的坐标最近的多个标记之中选择的。
10.根据权利要求9所述的方法,其中所述计算机可读标记的排列是在图像中形成低可视度条形码的标记的子集。
11.一种适于在扫描图像中识别计算机可读标记的排列内的对准标记的星座图的复印机,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码,所述复印机包括:
用于获取所述扫描图像的扫描仪;
用于从计算机可读标记的排列中选择至少两个标记的装置,其中所述至少两个标记是从离所述图像中选择的坐标最近的多个标记之中选择的;
用于参考所选标记的相应位置确定旋转中心的装置;
用于通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述所选标记确定旋转位置的装置;
用于从所述计算机可读标记的排列中为每一个旋转位置找到一个标记的装置,所述标记的位置距离所述旋转位置小于预定阈值;以及
用于将所述所选标记和所找到的标记识别为所述对准标记的星 座图的装置。
12.根据权利要求11所述的复印机,还包括:
用于基于所识别的星座图识别所述参考栅格的装置;以及
用于基于所识别的参考栅格识别所述计算机可读标记的排列中的所述数据承载标记的装置;以及
用于解调所识别的数据承载标记的装置。
13.根据权利要求12所述的复印机,还包括:
用于基于所解调的数据承载标记授权扫描图像的再现的装置。
14.一种用于在图像中识别计算机可读标记的排列内的对准标记的星座图的计算机实施设备,所述计算机可读标记的排列包括对准标记和数据承载标记,其中所述对准标记在计算机可读标记的排列内限定了参考栅格,所述数据承载标记关于参考栅格被调制以对数据进行编码,所述设备包括:
对于从计算机可读标记的排列中选择的至少两个标记的至少一个组合:
(a)用于参考所述组合中的所选标记的相应位置确定旋转中心的装置;
(b)用于通过将所述所选标记中的每一个绕所述旋转中心旋转预定角度来为所述组合中的所述所选标记确定旋转位置的装置;
(c)用于从所述计算机可读标记的排列中为每一个旋转位置找到在所述旋转位置的误差范围之内的标记的装置;并且
(d)用于根据在距离相应的旋转位置的误差范围之内找到的标记的数目,将所述组合中的所选标记和找到的标记识别为所述对准标记的星座图的装置;以及
用于存储所识别的星座图以用于对所述数据承载标记进行解码的装置, 
其中,所述至少两个标记的至少一个组合是从离所述图像中选择的坐标最近的多个标记之中选择的。 
CN2008101885172A 2007-12-20 2008-12-19 星座图检测 Expired - Fee Related CN101465934B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2007254595A AU2007254595B2 (en) 2007-12-20 2007-12-20 Constellation detection
AU2007254595 2007-12-20

Publications (2)

Publication Number Publication Date
CN101465934A CN101465934A (zh) 2009-06-24
CN101465934B true CN101465934B (zh) 2012-06-20

Family

ID=40788708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101885172A Expired - Fee Related CN101465934B (zh) 2007-12-20 2008-12-19 星座图检测

Country Status (4)

Country Link
US (1) US8244067B2 (zh)
JP (1) JP4637232B2 (zh)
CN (1) CN101465934B (zh)
AU (1) AU2007254595B2 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200734933A (en) * 2006-03-06 2007-09-16 Pixart Imaging Inc Dot-matrix pattern design and decoding method and the device thereof
US8086051B2 (en) * 2006-03-06 2011-12-27 Pixart Imaging Inc. Method of decoding fetched scene on encoded dotmap and electronic device thereof
TWI349884B (en) * 2007-11-14 2011-10-01 Pixart Imaging Inc Data encryption method implemented on a pattern displaying medium with at least two types of ink
US8823813B2 (en) 2011-06-06 2014-09-02 Apple Inc. Correcting rolling shutter using image stabilization
AU2011253913A1 (en) * 2011-12-08 2013-06-27 Canon Kabushiki Kaisha Band-based patch selection with a dynamic grid
EP2993795B1 (en) 2013-05-31 2018-04-04 Huawei Technologies Co., Ltd. Decoding method and decoder
WO2019095175A1 (zh) * 2017-11-15 2019-05-23 深圳大学 基于星座点距离的信息检测方法、装置及接收设备
CN109631877B (zh) * 2018-12-05 2020-06-09 北京控制工程研究所 一种指向驻留的螺旋分段式脉冲星搜索方法
CN110070625B (zh) * 2019-04-26 2023-03-17 京东方科技集团股份有限公司 增强现实设备用标识及其识别方法、增强现实设备
DE102020214126A1 (de) 2020-11-10 2022-05-12 Carl Zeiss Meditec Ag Ophthalmologisches Implantat mit digitaler Produktkennzeichnung und Verfahren zu dessen Herstellung
CN114330392B (zh) * 2021-12-26 2024-02-27 中国电子科技集团公司第十四研究所 一种雷达阵面多尺寸自适应扫码系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003246012A1 (en) * 2002-10-03 2004-04-22 Canon Kabushiki Kaisha Mark Embedding and Detection Using Projective Transforms
WO2007004994A1 (en) * 2005-07-01 2007-01-11 Grid Ip Pte. Ltd. Dot pattern
AU2005209709A1 (en) * 2005-09-13 2007-03-29 Canon Kabushiki Kaisha Two dimensionally phase modulated information symbol
WO2007138201A1 (fr) * 2006-06-01 2007-12-06 Advanced Track And Trace Procede et dispositif de securisation de documents

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2657622B1 (fr) * 1990-01-31 1994-11-25 Rhone Poulenc Sante Polypeptides impliques dans la biosynthese des cobalamines et/ou des cobamides, sequences d'adn codant pour ces polypeptides, procede de preparation, et leur utilisation.
JP3639328B2 (ja) * 1994-10-14 2005-04-20 オリンパス株式会社 情報記録媒体、2次元コード、情報再生システム、及び情報再生方法
US5754677A (en) * 1994-10-25 1998-05-19 Fuji Machine Mfg. Co., Ltd. Image processing apparatus
US6889356B1 (en) * 1994-11-23 2005-05-03 Cingular Wireless Ii, Llc Cyclic trellis coded modulation
GB9507098D0 (en) * 1995-04-06 1995-05-31 Rolls Royce Plc Process and apparatus for reading a dot matrix code marking of an article
SE517445C2 (sv) * 1999-10-01 2002-06-04 Anoto Ab Positionsbestämning på en yta försedd med ett positionskodningsmönster
JP3987274B2 (ja) * 2000-08-21 2007-10-03 株式会社日立国際電気 多値変調方式の伝送装置
SE520682C2 (sv) * 2001-12-06 2003-08-12 Anoto Ab Rekonstruering av ett virtuellt raster
JP4229714B2 (ja) * 2002-09-19 2009-02-25 株式会社リコー 画像処理装置、画像処理方法、画像処理プログラム、及び画像処理プログラムを記憶する記憶媒体
JP4100157B2 (ja) * 2002-12-09 2008-06-11 富士ゼロックス株式会社 画像形成装置及び方法
JP4200106B2 (ja) * 2003-07-15 2008-12-24 株式会社リコー 画像処理装置、画像処理方法、コンピュータプログラム、及びコンピュータプログラムを記憶する記憶媒体
US8237983B2 (en) * 2004-12-28 2012-08-07 Kenji Yoshida Information input output method using dot pattern
JP2006287902A (ja) * 2005-03-10 2006-10-19 Ricoh Co Ltd 画像処理装置、画像処理方法、画像処理プログラム及び記録媒体
US7599560B2 (en) * 2005-04-22 2009-10-06 Microsoft Corporation Embedded interaction code recognition
AU2005331401B2 (en) * 2005-04-28 2012-07-12 Kenji Yoshida Information input/output method using dot pattern
AU2005209707B2 (en) * 2005-09-13 2008-08-14 Canon Kabushiki Kaisha Adaptive mark placement
AU2005209703B2 (en) * 2005-09-13 2008-07-24 Canon Kabushiki Kaisha Grid orientation, scale, translation and modulation estimation
CN100364326C (zh) * 2005-12-01 2008-01-23 北京北大方正电子有限公司 一种在文本文档中嵌入及检测数字水印的方法和装置
EP1983412A4 (en) * 2006-01-31 2011-07-20 Kenji Yoshida IMAGE PROCESSING METHOD
FR2916678B1 (fr) * 2007-06-01 2021-07-16 Advanced Track & Trace Procede et dispositif de securisation de documents
EP2130363A2 (fr) * 2006-12-14 2009-12-09 Advanced Track And Trace Procede et dispositif de lutte contre la contrefaçon
AU2006252254B2 (en) * 2006-12-22 2009-03-05 Canon Kabushiki Kaisha Multiple barcode detection
AU2006252239B2 (en) * 2006-12-22 2010-04-01 Canon Kabushiki Kaisha Barcode pattern
US8379738B2 (en) * 2007-03-16 2013-02-19 Samsung Electronics Co., Ltd. Methods and apparatus to improve performance and enable fast decoding of transmissions with multiple code blocks
AU2007254619B2 (en) * 2007-12-21 2010-10-07 Canon Kabushiki Kaisha Barcode removal
DE102008017168A1 (de) * 2008-04-02 2009-10-08 Crossmedia Solution Gmbh & Co. Kg Verfahren zum Speichern und Auslesen von Daten
JP4974963B2 (ja) * 2008-05-14 2012-07-11 キヤノン株式会社 画像形成装置及びドットパターン較正方法ならびにプログラム
AU2008255212A1 (en) * 2008-12-10 2010-06-24 Canon Kabushiki Kaisha Page mark-up using printed dot barcodes
JP5159660B2 (ja) * 2009-01-29 2013-03-06 キヤノン株式会社 画像処理装置及び画像処理方法ならびに画像処理方法を実行するプログラム及び記録媒体

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003246012A1 (en) * 2002-10-03 2004-04-22 Canon Kabushiki Kaisha Mark Embedding and Detection Using Projective Transforms
WO2007004994A1 (en) * 2005-07-01 2007-01-11 Grid Ip Pte. Ltd. Dot pattern
AU2005209709A1 (en) * 2005-09-13 2007-03-29 Canon Kabushiki Kaisha Two dimensionally phase modulated information symbol
WO2007138201A1 (fr) * 2006-06-01 2007-12-06 Advanced Track And Trace Procede et dispositif de securisation de documents

Also Published As

Publication number Publication date
JP4637232B2 (ja) 2011-02-23
US8244067B2 (en) 2012-08-14
US20090161957A1 (en) 2009-06-25
AU2007254595B2 (en) 2011-04-07
JP2009153127A (ja) 2009-07-09
AU2007254595A1 (en) 2009-07-09
CN101465934A (zh) 2009-06-24

Similar Documents

Publication Publication Date Title
CN101465934B (zh) 星座图检测
US9406010B2 (en) Producing, capturing and using visual identification tags for moving objects
US6895116B2 (en) Automatically extracting graphical bar codes
TW401567B (en) Certifiable optical character recognition
JP5848464B2 (ja) 二次元コード、二次元コードの作成システムおよび解析プログラム
US6742708B2 (en) Fiducial mark patterns for graphical bar codes
CN101339397B (zh) 图像形成设备及其打印控制方法
AU2007254619B2 (en) Barcode removal
US20050242568A1 (en) Secure recorded documents
US7305131B2 (en) Extracting graphical bar codes from an input image
CN101405747B (zh) 生成图像码的方法和设备以及解码图像码的方法和设备
US20100142756A1 (en) Document security method
CN104079730B (zh) 文档处理装置和方法及包括该装置的多功能打印机
US20090323127A1 (en) Image processing apparatus, control method therefor, control program and storage medium
US8544741B2 (en) Data block offset encoding method for coordinates
US20120281920A1 (en) Parallel test payload
US8649055B2 (en) Image processing apparatus and computer readable medium
RU2446464C2 (ru) Способ и система встраивания и извлечения скрытых данных в печатаемых документах
CA2460888A1 (en) Method for image alignment and identification
Kise et al. Backgrounds as information carriers for printed documents
AU2005209709A1 (en) Two dimensionally phase modulated information symbol
CN117273044B (zh) 一种点阵图构建方法及识别点阵图的方法
Xu ADVANCES IN IMAGE-BASED DATA HIDING, FEATURE DETECTION, GRID ALIGNMENT, AND DOCUMENT CLASSIFICATION
US20210377422A1 (en) Visually significant marking schemes
AU2006252242A1 (en) Encoding and decoding data on a surface

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120620

Termination date: 20211219

CF01 Termination of patent right due to non-payment of annual fee