概述
Data Matrix二维码由美国国际资料公司(International Data Matrix)于1989年发明,是一种由黑色、白色的色块以正方形或长方形组成的二维码,其发展构想是希望在较小的标签上存储更多的信息量。DM码适合于小零件的的标识,直接印刷在实体上,被广泛应用在电路、药品等小件物品以及制造业的流水线生产过程。
旧版的 Data Matrix 码包括 ECC000、ECC050、ECC080、ECC100 和 ECC140,而ECC200 是最新的 Data Matrix码版本,相比而言,ECC200容错能力较强,更为常见,以下所说的Data Matrix二维码特指ECC200而言。
Data Matrix 码结构
Data Matrix二维码由数据区、寻边区(finder pattern)和空白区(quiet zone)组成。数据区包含着编码信息,包括数字、字母和汉字等按照一定的编码规则生成。每个相同大小的黑色和白色方格称为一个数据单元,分别代表二进制的1和0。寻边区包括L型的实心定位标识和反L型的虚线时钟标识。L型实心定位标识主要用于限定DM码的物理尺寸、定位和符号失真。反L型虚线边界主要用于限定单元结构,但也能帮助确定物理尺寸及失真。条码读取器通过对定位标识与时钟标识进行图像处理来检测位置,可进行 360° 全方位读取。寻边区外层为空白区,宽度至少为1个数据单元。
当数据区数目超过24×24时将分成区块,每个区块不会超过24个模块。此结构可防止代码失真。
符号尺寸 | 区块 | 数据单元 |
---|---|---|
10×10 至 26×26 | 1 | 8×8 至 24×24 |
28×28 至 52×52 | 4 | 14×14 至 24×24 |
64×64 至 104×104 | 16 | 14×14 至 24×24 |
120×120 至 144×144 | 36 | 18×18 至 22×22 |
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly93d3cua2V5ZW5jZS5jb20uY24vSW1hZ2VzL3NzX2JhcmNvZGVfbGVjdHVyZV9kYXRhbWF0cml4X3BoMDRfMTQ5MTAyNS5naWY#pic_center =400*200)
编码规则
以二维元码(binary code)方式进行编码,黑色方格和白色方格分别代表二进制的1和0,计算机可直接读取其数据信息。单个字节有8位,因而数据区都以L型八方格为编码单元。比如下图所示,大写字母W的ASCII值为87
由相同大小的黑色和白色方格构成,黑色代表1,白色代表0
以二维元码(Binary code)方式进行编码,计算机课直接读取其资料信息,而不需要如传统的一维条码的符号对映表。
分析要表示的资料
不同标准比较
ECC000-140具有不同等级的错误纠正功能,而ECC200透过Reed-Solomon演算法产生多项式计算出错纠正码,其尺寸可以依需求印成不同大小,但采用的错误码应与尺寸配合,由于演算较为容易,且尺寸具有弹性
旧版的 Data Matrix 码包括 ECC000、ECC050、ECC080、ECC100 和 ECC140。ECC200 是最新的 Data Matrix码版本,可以配置为正方形或矩形。
ECC000、ECC050、ECC080、ECC100 和 ECC140,它们是由使用卷积纠正的范围从 9 × 9 到 49 × 49 的奇数模块组成的。
由于当数据庞大时,略微失真会干扰读取,因此几乎从不使用较旧版本。
由于Data Matrix二维码只需要读取资料的20%即可精确分辨,因此很适合应用在条码容易受损的场所,例如印在暴露于高热、化学清洁剂、机械剥蚀等特殊环境的零件上。
旧版本(ECC000、ECC050、ECC080、ECC100 和 ECC140)与新版本(ECC200)之间的差别在于每侧的模块数目。旧版本的模块为基数,而新版本的模块为偶数。它们是由使用卷积纠正的范围从 9 × 9 到 49 × 49 的奇数模块组成的。
由于当数据庞大时,略微失真会干扰读取,因此几乎从不使用较旧版本。
ECC200 升级了纠错功能,可消除失真问题。
它使用 Reed-Solomon 执行纠错,可在部分代码损坏时恢复数据。
ECC200 已国际标准化。当需要 Data Matrix 码时,通常使用 ECC200 版本。
纠错能力
透过Reed-Solomon演算法产生多项式计算获得错误纠正码,不同尺寸以采用不同数量的错误纠正码,
对少於 255 个码字的 Datamatrix 码,错误纠正字码可由资料字码计算得出。对於多於 255 个字码的符号,应将资料字码分成多个模组,然後再产生每一个模组的错误纠正字码。错误纠正字码能够纠正两种类误字码,包括 E 错误(已知位置上的错误字码),以及 T 错误(未知位置上的错误字码)。换句话说,E 错误是不能被扫瞄或不能被解码的符号字元,T 错误则是被错误解码的符号字元。
二维码图像识别
Data Matrix条码识别算法大多是先进行图像滤波处理,再用Hough变换进行直线检测。胡晓岽等人采用Hough变换求取条码的旋转角度; 邹沿新等人采用十字搜索法来得到“L”形边界。此类算法在小图像或者实时性要求不是很高的场合中是可以接受的,但在工业流水线上实时性不强,而且算法相对复杂,直线检测的方法又比较费时,所以想要在算法实时性上有所提高,需要理论上缩减一些步骤或者独辟蹊径,有所创新。
在条码识别产品上,美国康耐视公司的DataMan 系列产品读取二维条码速度最高达到45 个/s 读取对象。日本基恩士公司的二维条码识别产品的扫描速度能读取移动速度高达160 m/min 的条码,对Data Matrix、QR 等主流的二维条码,其
最小分辨率达到0. 082 mm,在中近距离上读取时间平均为21ms。我国自主研发的二维条码识别产品在解码速度和识别效果上均有待提高,因而提高Data Matrix 条码的识别速度有很大的实际意义和应用价值。
Data Matrix 图形可分为定位符号和数据区两部分,如图1所示。Data Matrix 的定位符号由两条实线边组成的“L”形和与其相对的两条虚线边组成; 数据区是由1、0 模块组成的矩形。Data Matrix 识别中最重要也是最耗时间的步骤是条码
的定位。条码可能占据图片很大区域或者只占据小部分,因此快速有效地定位出条码区域是区分识别算法优劣的关键。
快速识别算法流程如图2 所示。利用Data Matrix 条码外部轮廓为矩形的特点,对图像进行矩形检测,可在图像中初步确定Data Matrix 条码的位置; 再采用距离为角度的边界函数对Data Matrix 条码边界进行标记,获取条码边界的位置及旋转角
度; 然后利用获取到的角度对条码进行仿射变换,将条码旋转到正放位置,进而进行条码解码,获取条码包含的数据信息。
参考资料
什么是 Data Matrix 码?
DATA MATRIX BARCODE
【Wiki】Data Matrix
Data Matrix 条码识别方法之一
Datamatrix Generator
DataMatrix二维条形码解码器图像预处理研究
https://www.gs1.org/docs/barcodes/GS1_DataMatrix_Guideline.pdf
Reed-Solomon纠删码简析