博鱼娱条码的逻辑条码编码规则则把一些原始的的数据位转成数据码字?

1D(一维)条形码只能对数字数据進行编码在过去二十年中主要用于产品运输和追踪、系统安全、超市等场合。使用 2D(二维)条形码数据在水平和垂直方向被编码为 2D 符號,如下图 1 所示

2D 符号所能包含的数据量远大于 1D 符号。2D 条形码解决方案可比传统 1D 条形码提供更大的信息密度特别是对于那些需要对精密信息而不是简单的码信息进行编码的应用。

2D 条形码技术的一些应用包括产品标签、产品信息追踪和检验、移动安全、出入境检查服务、医療保健和电子商务等

图 1:2D 条形码示例

如今存在很多 2D 条形码算法,这催生出采用不同条形码技术的一系列应用一般来说,有两种类型的 2D 條形码:1)  堆叠式 2D 条形码例如 PDF417  和 Code 49,2)  矩阵式条形码例如 QR 码和数据矩阵。在这篇文章中我们仅限于讨论数据矩阵式条形码技术[2]。

2D 数据矩阵式条形码技术

2D 数据矩阵式条形码包括在正方形或长方形中排列的黑色和白色模块如图 1 所示。编码数据位映射到黑色和白色模块(或单元)组荿的区域称为数据区域。关于 2D 数据矩阵式条形码所支持的不同类型的编码方案的详细信息请参见参考文献[2]。

数据区域由定位图形包围(定位图形的底部和左侧只包含黑色模块而定位图形的上部和右侧由交替的白色和黑色模块组成)。数据矩阵 2D 条形码支持由排位图形分隔的多个数据区域从而能容纳更多数据信息。

有两种版本的数据矩阵一种是基于循环冗余校验(CRC)和卷积纠错,另一种是基于里德所罗门(RS)糾错对于扫描、读取和提取数据位,基于 CRC 与基于 RS 的数据矩阵解码没有区别提取数据位之后,基于 CRC 的解码与基于 RS 的解码路径不同因为咜们的交织和纠错方法不同。

图 2:2D 条形码扫描器框图和 DSP 处理内核

这里我们考虑在小尺寸 Blackfin 处理器上对新兴的基于 RS 码的 2D 数据矩阵式条形码进行解码通过 PPI-DMA 通道连接到 DSP 处理器的 2D 条形码扫描器的框图如上面图 2 所示。

在小尺寸 DSP 上实现条形码

传感器对条形码进行扫描并将像素数据通过并荇端口接口(PPI)传输给 DSP之后,DSP 处理器处理图像像素并提取数据区域中黑色和白色模块对应的数据位然后进行纠错。从扫描的 2D 条形码的特定數据区域提取数据位的过程如下面图 3 所示的流程图

图 3:从 2D 数据矩阵符号提取数据位的流程图

我们将 2D 数据矩阵式条形码看做大小为 M x N 的图像(通常是 QVGA 或 VGA 图像)并进行处理。相机的 CMOS 传感器捕获图像并将图像像素传输给 DSP 进行处理

现在的问题是,需要多大的存储器来保存处理过程中的圖像例如,以 VGA(即 640x480)为例我们需要大约 300 kB 的数据存储器来保存捕获到的图像。处理器内核的尺寸取决于其包含的存储器的数量

特别是 L1 高速存储器,它占用更多的硅面积总成本也更高。因此大多数处理器包含非常有限的 L1 存储器。

另一方面L2 或 L3 存储器通常有较大的容量,占鼡较小的面积成本也较低。然而它们速度较慢,需要通过 DMA 与处理器的工作存储器(L1)进行数据传输

接下来我们将讨论用 Blackfin 系列的两款不同處理器实现数据矩阵 2D 条形码在,其中一款具有 16 kB 的 L1 和较大 L2/L3 存储器另一款只有 16 kB 的 L1 存储器。

对于带有 L2 和 L3 存储器的处理器捕获的图像通过 DMA 和 PPI 接ロ传输到 L2 存储器。然后通过将少量图像像素同时从 L2 移动到 L1 存储器来对 2D 条形码中提取的数据位进行处理。在这种情况下我们使用另一个 DMA 進行 L1 和 L2 之间的数据传输,整体解码很简单也不复杂

在另一方面,如果仅有少量的 L1 存储器并且没有 L2/L3 存储器,那么问题就相当棘手在这種情况下,我们对同样的条形码要进行更多的扫描并将目标区域(ROI)通过适当设置的 PPI-DMA 通道传输到 L1 存储器进行处理。

虽然这个系统设置起来很複杂但其成本和尺寸与前一个例子相比要小。接下来我们将讨论使用上面提到的两个处理器实例对 2D 数据矩阵式条形码进行解码的技术。

在这种情况下经扫描的所有图像通过 PPI-DMA 通道被读入 L2 存储器,采用另一个存储器 DMA 通过访问 L2 中的部分图像对其进行处理如下图 4(a)所示。

图 4:鼡小尺寸 Blackfin 处理器进行 2D 条形码解码

采用 OmniVision CMOS VGA 传感器[3],我们逐行获得像素数据和控制信号、HREF(水平基准输出)、VSYNC(垂直同步输出)和 PCLK(像素时钟输出)PPI-DMA 通道鉯 27 MHz 时钟速率将像素读入 L2 存储器。在这种情况下DMA 设置很简单,因为我们在单次扫描中读取整个图像

我们基本上遵循上面图 3 所示的流程图來从数据矩阵式条形码模块中提取数据位。如果在扫描的图像中存在任何方向我们能够纠正方向和偏差,因为我们在 L2 存储器中有全部图潒

现在,我们假设图像被正确扫描没有任何方向和偏差。首先我们将数据矩阵式条形码定位图形的顶部几行和右边几列从 L2 移入 L1 存储器。在测量定位图形中模块的平均高度和宽度后我们为定位图形所有顶部和右边模块的中点做标记,将中点像素位置的 x 和 y 坐标值存入存儲器留作以后使用。无 L2 或 L3 存储器无 L2/L3 存储器时我们直接将图像读入 L1 存储器。由于 L1 存储器空间有限我们一次

直接读取整个图像到 L1 存储器Φ。如上图 4(b)所示

在这种情况下,进行条形码解码时我们要多次扫描图像使用 PPI 延迟和 PPI 计数寄存器,定位图形模块像素的顶部几行和右边幾列在一次扫描中被读入 L1 存储器在这种情况下需要更多地 DMA 编程,因为我们需要从扫描器输出将所选的图像像素通过PPI-DMA 通道读入 L1 存储器我們找到定位图形模块的大小及其中点位置坐标,并将其存储起来为将来使用

在图像有细微方向或偏离时,我们读取多行像素来纠正方向戓偏差这里,我们逐行进行图像处理因为我们没有完整的图像。从数据矩阵式条形码中提取数据位我们遵循下半部分流程图(如之前圖 3 所示)从数据矩阵式条形码黑色和白色模块中提取位信息。

这里我们假设数据矩阵包含有黑色和白色模块组成的单一数据区域。我們知道有了定位图形模块的中点位置坐标,我们能很容易地获得所有模块中心点作为相交叉的水平线(与左侧定位图形垂直)

它也通過定位图形右侧模块的中点位置和垂直线(与定位图形下边垂直并通过定位图形的上边模块的中点位置)。我们不能画出所有这些线来标識交叉点因为我们在 L1 存储器中没有完整的图像。

然而我们可以通过一次扫描一行的方式来获得交叉点(使用定位图形右侧模块中点的 y唑标作为行索引),将当前行列索引与定位图形上边模块中点 x 坐标进行比较

如果两者相同,那么就是交叉点否则我们继续扫描这一行。采用这一过程我们扫描模块的交叉点,并找到该位置像素的值

如果像素值大于 128(即浅色),我们将该位解码为 0或者如果像素值小於 128,我们将该位解码为 1采用同样的方式,我们能提取数据矩阵式条形码数据区域的所有位

对于具有 L2 存储器的处理器,我们将与定位图形右侧模块中点 y 坐标对应的像素行从 L2移入 L1 存储器当我们正在处理当前像素行时,使用 DMA 来移动下一像素行但是,在使用无 L2 存储器的处理器时我们必须进行实时数据提取。此时PPI-DMA 将下一行数据填入 L1 存储器,我们必须完成对当前行的处理(进行基本的数据位提取)

据矩阵式条形码使用 2D 交织的数据位。从数据区域模块中提取数据位后我们执行解交织来获得纠错码字的数据位。关于 2D 数据位交织的详细信息請参见参考文献[2]。

我们用预计算查找表来进行解交织由于数据矩阵式条形码支持不同尺寸的数据区域,因此解交错查找表的大小和表单え也不同不可能在小尺寸处理器中保存所有尺寸的查找表。然而如果在预先给定的应用中数据矩阵大小是已知的,我们只需要存储特萣解交织查找表解交织后,数据位按字节格式形成码字输入 RS 解码器。

新兴的 ECC-200 型数据矩阵式条形码使用 RS (N, K)码来纠正解交织位的错误和遗漏RS (N, K)码可以纠正最多(N-K)/2 个错误或者最多(N-K)个遗漏(如果不存在错误)。在这个应用中使用的 Galois 域是 GF(28)对于不同数据区域大小,数据矩阵式条形码使鼡不同的 RS 码字长度例如,14x14 大小的数据区域条形码使用 RS(24, 12)码来纠错16x16 大小的数据区域条形码使用 RS(32, 18)码。RS 解码器的复杂度取决于数据区域的大小随着 RS 码字长度的增加,存储器需要存储的所有 RS 解码工作缓冲区也要增加

为了高效地实施 RS 解码器,我们使用查找表来进行 Galois 域计算对所囿 RS 码字长度进行解码时使用相同的 Galois 域对数和反对数查找表,因此域单元也属于 GF(28)我们需要大约 2 kB 的 L1 存储器来存储对数和反对数查找表。

数据矩阵式条形码解码复杂度

2D 条形码解码有两个部分:1)  图像处理2)条形码解码。如果捕捉的图像与解码区域没有适当对齐我们可能需要进行圖像旋转、偏差纠正等,来使图像与解码区域对齐

在这种情况下,图像处理阶段的复杂度比实际条形码解码要大在这篇文章中,我们假设图像与解码区域是对齐的数据矩阵式条形码的解码复杂度(在周期和存储器方面)取决于数据符号的大小。如果数据符号尺寸较大每个符号中包含多个较大的数据区域,那么我们需要更多的存储器来保存图像的行像素和 RS 工作缓冲每单位时间需要处理的数据量也随著数据区域的尺寸而增加。以每个数据矩阵式条形码符号具有 16x16 数据区域的 VGA 图像为例我们需要大约 6kB数据存储器和 4kB 的 Blackfin 程序存储器。BF53x 内核上运荇单个模块的近似周期数如下:

本文讨论了在小尺寸 Blackfin 处理器上进行数据矩阵 2D 条形码解码同时解释了使用或不使用高延迟 L2 存储器对 2D 条形码進行解码的不同方法。分析了基于 RS 的数据矩阵 2D条形码解码的复杂度并估算了使用 BF53x 处理器对 VGA 图像中单个 16x16 数据符号进行解码所需的存储器和周期数。

二维码的生成与解码 摘 要 随着信息技术的发展,智能移动终端的不断普及,二维码的便捷性,决定了二维码技术具有良好的应用前景. 二维码是按章某种规律在二维空间中分布的嫼白相间的几何图形,主要用于表示数据,其优点是方便,快捷.目前光蛋用于电子商务,票务系统等.可以说二维码与人们的生活息息相关.作为一项湔沿技术,二维码更赋予了神秘的面纱.本系统主要目的是让二维码的使用更加便利,让二维码真正的走到寻常人间.因此二维码的生成与解码的課题研究无论从理论上还是在实践上都具有十分重要的意义 本文结合与市面上常见的工程项目,完成如下的几项内容: 第一,介绍二维码的国內外研究趋势,以及二维码的主要类别,特点,应用,实现对二维码的深刻的理论研究。 第二,探讨面向android手机的图像处理技术.因为手机的处理能力有限,一些效果不错但是处理时间开销大运算复杂的经典处理方法并不适用,如何使用时间复杂度都合适的方法识别快速响应码成为本文探讨的偅点

我要回帖

更多关于 条码编码规则 的文章

 

随机推荐