什么是DM码
dataMatrix是一种二维码,原名datacode,由美国国际资料公司于1989年发明。dataMatrix二维码是一种矩阵式二维条码,其发明的构想是希望在较小的条码标签上存入更多的资料量。dataMatrix二维码的最小尺寸是目前所有条码中最小的,适用于小零件的标识,商品防伪,以及直接印刷在实体上。
dataMatrix码是一种矩阵式二维码,其最大特点就是密度高,尺寸小,储存信息量大,其最小尺寸是所有条码中最小的,可在仅仅25mm²的面积上编码30个数字,dataMatrix二维码采用复杂的纠错码技术,所以dataMatrix码抗污损能强,特别适用于小零件标识,商品防伪,电路标识等
ZXING条码库
ZXing-CPP是一个用C++实现的开源、多格式一维与二维条形码图像处理库。它最初是从Java ZXing库移植而来的,但经过进一步开发,现在在运行时和检测性能方面有了许多改进。它可以读取和写入多种格式的条形码。包括工业DM码、RQ码、以及其他常见的各种一维条形码。最新的ZXING2.2版本,支持旋转、反色、镜像、二值、多尺度解码。源码地址:
https://github.com/zxing-cpp/zxing-cpp
编译命令行
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -A x64 cmake --build build -j8 --config Release -A x64
深度定制
DM解码过程主要是由定位、预处理、解码这三个部分组成,定位的精准度直接决定了解码难度与解码速度,我们采用了传统图像分析与深度学习对象检测两种方式实现了精准的DM定位;预处理根据我们的大量数据积累发现三种手段最为有效分别是形态学、二值化、降噪滤波,所以在预处理阶段我们基于OpenCV实现了这三种预处理方式,大大提升了解码效率与精度;解码最主要的是要考虑容错性,很多商业级别的DM库容错性很强,这个方面ZXING有短板,通过我们大量数据测试与对ZXING源码的修改实现了这个部分提升,大大提升ZXING解码能力。
解码策略与对比测试
基于ZXING+OpenCV我们实现了三种不同的DM解码策略分别是快速、平衡、优化,提供了一套完整的界面参数与SDK,基于QT打包以后,测试对比一些在线收费的商业库的DM码解码能力,结果如下:
可以看到我们基于ZXING+OpenCV深度定制条码检测库DM码的能力已经完全超越了网上在线收费的商业库解码能力,对比Halcon、VP等主流工业级收费库,我们也是毫不孙色,在伯仲之间。