高容量二维彩色条形码和用于解码其的方法_2

文档序号:9564901阅读:来源:国知局
边界参考单元的特定序列 来实现不对称性。例如,在图1中的图示示例中,仅左上角落定位器具有从其沿着顺时针和 逆时针方向两者延伸的YKMKCK……的序列;从其他角落定位器延伸的序列不同(图1中未 示出)。
[0024] 与角落定位器之一(图示示例中的右下定位器)相邻、并且正好在边界参考单元 所形成的边界内部,提供一排较大单元14,以编码条形码的数据长度和ECC。在该示例中, 这些单元(被称为验证数据单元)和黄参考单元13B具有相同尺寸,并且它们彼此隔开,并 与相邻边界参考单元和数据单元隔开与边界参考单元彼此隔开的距离相同的距离,即该示 例中7个像素。在一个示例中,提供了 12个验证数据单元。
[0025] 在这些实施例的条形码布局中,所有单元(即,数据单元、角落定位器、边界参考 单元和验证数据单元)在相同矩形或正方形网格上对准,即,所有单元的中心位于网格的 网格点上。这需要较大单元覆盖奇数列和/或行。这样的设计能帮助避免将图像划分为单 元所引起的某些误差。而且,非数据单元与其他单元隔开比数据单元之间的距离(例如,2 个像素)更宽的距离(例如,7个像素),这能帮助避免这些非数据单元中的不同颜色信道 的重叠。
[0026] 在一个特定示例中,条形码的网格具有134列和134行,并且条形码在每一边上包 括彩色边界参考单元的九个集合。排除空白、角落定位器、边界参考单元和验证数据单元, 能使用16788个数据单元来在每一条形码中存储信息。多个条形码能彼此相邻地放置在 同一页上,其间具有例如20像素的空白。对于600dpi的打印分辨率,条形码将占用大约 1. 15x1. 15平方英寸的空间。由此,至多6x9个条形码可被放置在信纸尺寸的页面上。
[0027] 示范2D彩色条形码和相邻彩色条形码的部分在图IA中图示。
[0028] 这里记录上述2D彩色条形码设计的两个特征:首先,除了黄边界参考单元之外的 边界参考单元和数据单元具有相同尺寸。黄边界参考单元较长(或较宽)但是和数据单元 具有相同宽度(或高度)。其次,边界参考单元形成基本上完全环绕数据单元的边界。这些 特征有助于由小尺寸数据单元形成的2D彩色条形码的改进解码精度。
[0029] 下面参考图2、2A和2B来描述用于解码具有上述布局设计的条形码的解码方法。 要处理的打印文档包括并排排列的这样的条形码的一个或多个。在将打印文档扫描为彩色 图像(步骤S11)之后,在步骤S12对彩色条形码进行首先定位和去歪斜(deskewed),这参 考图2A进行进一步解释。在优选实施例中,扫描的空间分辨率与打印分辨率相同。在其他 实施例中,扫描分辨率能高于打印分辨率。
[0030] 如图2A中所示,首先,将彩色图像变换为灰度等级图像,并然后进一步变换为二 进制(黑和白)图像(步骤S21)。扫描仪生成的彩色图像典型地是RGB图像,并且可使用 任何合适公式来将RGB颜色值变换为灰度等级值。可使用任何合适的二值化方法和阈值来 将灰度等级图像变换为二进制图像。青、黄和品红单元是否变换为黑(尽管在实践中,黄将 趋于变为白并且品红将趋于变为黑)是不重要的,只要将黑单元变换为二进制图像中的黑 即可。
[0031] 接下来,向二进制图像应用侵蚀(erosion)算法,以使用相对大的结构化元件来 侵蚀白区域(步骤S22)。注意,侵蚀白区域在算术上等效于使黑区域膨胀(dilating)。侵 蚀和膨胀是公知的形态学(morphological)运算。在一个实施例中,侵蚀中使用的结构化 元件是30x30像素的正方形或直径为30像素的圆盘。作为侵蚀的结果,白区域将收缩并且 黑区域将增长;并且因为结构化元件的相对大尺寸,条形码中的黑单元典型地合并到一起, 并且相邻条形码也合并到一起,导致和多个条形码所占用的页面的区域相比具有大致相同 形状以及稍微大的尺寸的大黑块。
[0032] 侵蚀的二进制图像也可包括具有比条形码小很多的黑点形式的噪声。执行步骤 S23和S24来去除这样的噪声。在步骤S23,使用大致具有条形码的尺寸的滤波器,来向侵蚀 的二进制图像应用平均化运算。这给出其中大黑块的边界成为浅灰污点的灰度等级图像; 由于大滤波器尺寸所以噪声点将成为浅灰区域。在步骤S23中也定位该灰度等级图像中的 最黑像素。这些最黑像素将不包括与噪声点对应的浅灰污点。然后,使用来自步骤S22的 侵蚀的二进制图像,确定包括步骤S23中的平均图像中最黑像素的地点的、侵蚀的二进制 图像中的连接组件(步骤S24)。二进制图像中的连接组件是由彼此连接的相同颜色(在该 情况中黑色)像素形成的对象。在步骤S24中得到的这些连接组件将对应于条形码的地点 并且将不包括噪声点。典型地,当彼此相对接近地定位多个条形码时,将形成包括所述多个 条形码所占据的区域的一个连接组件。
[0033] 在步骤S24中得到的每一连接组件周围形成最小包围盒(bounding box)(步骤 S25)。每一包围盒构成其中条形码(一个或多个紧密相邻的条形码)位于的区域。每一包 围盒中的二进制图像被去歪斜,使得连接组件的边界成为垂直和水平(步骤S26)。可使用 任何适当方法用于去歪斜。
[0034] 因为包围盒可包括多个条形码,所以通过在去歪斜之后沿着水平和垂直方向分别 投影该条形码图像,来分离所述多个条形码(步骤S27)。该步骤中使用的条形码图像可以 是原始扫描的彩色图像、或者在步骤S21生成的灰度等级图像或二进制图像。所述投影是 总像素值分别vs.水平和垂直位置的曲线。在该实施例中,多个条形码具有相应尺寸和布 局,并且沿着水平和垂直方向彼此对准;由此,每一投影(水平或垂直)将具有与隔开所述 条形码的间隔对应的多个较大间隙或谷、以及与隔开条形码中的单元的间隔对应的多个较 小间隙或谷。结果,能获得每一条形码的水平和垂直开始和结束位置。
[0035] 然后,将在步骤S25得到的包围盒施加到原始扫描的彩色图像以定位其中的条形 码,施加在步骤S26计算的去歪斜角以对包围盒进行去歪斜,并且使用在步骤S27得到的水 平和垂直开始和结束位置来获得其每一个包括个别条形码的彩色图像的图像补丁(步骤 S28)。这完成在扫描彩色图像中定位和去歪斜条形码的处理。
[0036] 尽管上面描述了定位和去歪斜条形码的处理的细节,但是也能使用其他适当方法 来在扫描彩色图像中定位和去歪斜条形码。
[0037] 返回参考图1,在下一步骤中,通过利用条形码布局的不对称性来确定条形码的正 确朝向(步骤S13)。因为当扫描文档时可能已旋转了条形码的朝向,所以该步骤是必需的。 如前面描述的,条形码布局设计关于条形码的四个角落定位器是不对称的。例如,对于仅一 个角落定位器,两个较大黄边界参考单元13B与其相邻定位。基于该不对称性,角落定位器 之一被预定义为参考角落定位器,并且定义条形码的正确朝向,使得参考角落定位器位于 诸如左上角的预定义地点。在步骤S13,可使用任何合适测试来利用不对称性确定哪个角落 定位器是参考角落定位器。该参考角落定位器仅需要对于每一页上的一个条形码得到。一 旦得到参考角落定位器,整个扫描图像就旋转适当量,使得参考角落定位器位于诸如条形 码的左上角的预定义位置处。
[0038] 一旦校正了图像朝向,就能对图像中的多个条形码编索引,即分配索引号,其符合 诸如从上到下以及从左到右的预定义顺序(步骤S13)。这样,多个条形码中包括的信息能 正确串在(strung) -起。
[0039] 现在能提取每一条形码中的数据(步骤S14)。参考图2B来更详细地解释向每一 条形码应用的步骤。
[0040] 首先,例如使用互相关方法来确定彩色条形码的四个角落定位器的中心位置(步 骤S31)。使用这些中心位置和已知的条形码中的网格点(水平和垂直)的总数,来计算条 形码的网格点的位置(步骤S32)。如前面指出的,条形码的所有单元被设计为使得它们的 中心位于相同网格上。水平和垂直方向上的网格点的总数分别是数据单元的列和行的总数 加4。注意,角落定位器的中心位于水平和垂直方向两者中的第二个或倒数第二个网格点。
[0041] 还注意到,因为网格点之间的距离在该条形码设计中是5个像素,所以每一像素 对应于0.2个网格点。
[0042] 接下来,计算沿着四个边界的信道偏移(步骤S33)。这通过将每一边界投影到与 该边界平行的轴上(例如,将上水平边界投影到水平轴上等)来进行。该投影曲线将具有 与边界参考单元对应的一连串近方型(near-square)峰值、以及与其间的间隙对应的一连 串谷。通过得到近方型峰值的中心而从投影曲线确定每一边界参考单元的实际中心位置; 每一边界参考单元(具有基于条形码布局设计的已知颜色)的实际中心位置和设计中心位 置(即,根据没有信道偏移的条形码设计,中心位置应该是什么)之间的差是用于沿着边界 的那个位置处的那个颜色的信道偏移。这
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1