Data Matrix二维码图像处理与应用

2021SC@SDUSC Zxing开源代码(八)Data Matrix二维码(一) 2021SC@SDUSC 目录一、Datamatrix简介1.1 概述1.2 Data Matrix 码结构二、Data Matrix编码规则三、Data Matrix纠错能力四、Data Matrix编码步骤4.1 生成码字4.2 伽罗华域运算4.3 生成纠错码(RS编码)参考资料 前言:本篇博客简单介绍了Data Matrix相关知识,以及编码步骤过程。 一、Datamatrix简介 1.1 概述 Data Matrix二维码由美国国际资料公司(International Data Matrix)于 阅读详情

Data Matrix二维码图像处理与应用


摘要: 以Meteor II Standard图像采集卡为基础,以识别金属零件上的Data Matrix二维码为目的,
对摄像头采集的图像进行处理。实现了该方法在工业流水线睥实时识别应用。

二维码是在平面二维方向上都记录信息的符号。它充分利用了平面上的二维空间,大大提升了信息密度,使得在小面积上编码大数据成为可能。其次由于它超强的纠错能力,即使大面积受损也能被准确识别。目前二维码应用于工业自动化、物流、邮政、医疗、商业、金融、交通运输、身份识别、政府管理、公共安全、海关及国防等领域。在我国,二维码的应用尚属起步阶段,应用地区和领域也相当有限。但是可以预见,二维码以其独特的优势必将像条形码一样在我国的各个领域被推广和应用。

本文通过Matrox公司的图像采集卡Meteor-II Standard,利用MIL函数库对气动打印在金属零件上的Data Matrix二维码进行了实时捕捉识别,并对采集来的Data Matrix图像进行具体的图像处理,命名其达到被识别的要求。最后,通过实验讨论提高识别率的方法。

图1

1 Data Matrix概述

二维码有多种类型,本文只讨论矩阵式Data Matrix。

Data Matrix最大特点就是“小”,能在25mm2面积上编码30个数字,因此被广泛用于标示集成电路、药品等小件物品。另外在制造业的流水线生产过程中,打印生成Data Matrix也较容易。

如图1所示,Data Matrix符号看起来像一个由深浅两种颜色组成的国际象棋棋盘,每一个相同大小的黑色或白色方格称为一个数据单位。Data Matrix符号由许多这样的数据单位组成。在寻边区外层有宽度为一个数据单位的静区。寻边区是“棋盘”的边界,只用于定位和定义数字单位的大小,而不含 有任何编码信息。被寻边区包围的数据区包含着编码信息。矩阵中的0、1就是Data Matrix的黑白两色小方格,即数据单位。

Data Matrix采用了Reed-Solomon交织交插编码,编码时加入了纠错码,使Data Matrix的纠错性能比较强。以一个5位的流水号“12345”为例,通过编码规则得到Data Matrix的3位码字和5位纠错码,可纠错2位码字,纠错率为2/8=25%。

2 用MIL识别Data Matrix码

Meteor-II Standard是Matrox公司的一块图像采集卡,通过摄像头采集外界图像,然后实时地传输给主机内存。MIL函数开发包是一个独立于硬件的32位图像处理函数库,其中有大量基本的图像处理函数。

2.1 基本过程

Data Matrix识别的基本过程如图2所示。通过MIL提供的函数采集图像,并将采集的图像以数字化方式存储在图像缓冲区中;对图像进行增强处理,提高图像的识别准确率。实验中通过平滑滤波方法,减少图像噪声,很好地解决了采集金属零件的Data Matrrix码时,由于码符号边沿亮度过亮影响图像分割问题;然后对图像进行直方图均衡化,扩大对比度的动态范围,解决由于光照或摄像头的原因,造成采集的图像偏暗,对比度不够显著,引起图像中明暗模糊不清的问题。

由于采集后的图像有很多无用背景,Data Matrix符号所在区域只占整个图像很上的比重。采用遮罩的方法,用一个固定位置的子缓冲区限制图像处理区域,忽略区域外的图像,实现Data Matrix的符号提取。最后用MIL函数直接译码,并将译码结果放在指定的字符串中,用显示语句在屏幕上打印结果。

2.2 Data Matrix符号的膨账

金属零件上的Data Matrix码是气动打印而成的成点阵式,与标准的Data Matrix符号不完全一样,其点间空隙大。如对这种码毫无处理地进行识别,则识别率会很低。为了解决这个问题,采用数学形态学的膨胀算法。为了提高识别准确度,可以将Data Matrix符号膨胀若干次,缩小数据单位之间的空隙。这样,计算机在“寻找”Data Matrix的“L”型寻边区时就容易准确得多。

    2.3 伪实时识别的实现

由于MIL本身不支持图像的实时处理,所以要实现实时识别需要用一种叫做比缓冲的方法实现伪实时的图像处理,CPU每次处理的图像其实是摄像头采集的上一帧图像。

双缓冲区使一边采集图像一边处理图像成为可能,如图3所示。摄像头将图像采集到图像缓冲区1中等待处理,与此同时CPU利用这段时间处理图像缓冲区2中(上一帧)的图像,完毕后两个缓冲区的职能交换;CPU处理缓冲区1中采集的前一时刻的图像,而此时缓冲区2中的图像已被处理完毕,可以接收摄像头下一帧的采集图像。如此往复,两个缓冲区互换,不间断地运动便可实现伪实时处理。在处理环节上加Data Matrix识别功能,就能实现实时识别Data Matrix。采集图像和处理图像正好相差一帧,所以是“伪”实时的,但是假如计算机运算速度足够快,时间延迟的影响便可忽略。

这种方法的优点是既实现了实时性,又将采集和处理这两项进程分开,让CPU和摄像头分别独立并行地处理,充分利用了空闲时间。

3 识别结果统计与分析

通过编程,实现了对金属上的Data Matrix码进行识别,并统计了总的采集帧数(f)、帧率(f/s)、识别成功的总帧数、识别率等信息。实验证明在摄像头焦距以及光源都相当理想的情况下,识别率很高。

Data Matrix识别的成功率与很多因素有关,首先是Data Matrix符号本身,打印在纸上与打印在金属零件上的点阵式Data Matrix差异很大;其次是检测时的运动失真,会影响识别成功率;再次是背景图像的影响,Data Matrix符号与背景色反差越大,背景中干扰图像越少,识别成功率越高;光源、符号的旋转等都会对识别造成影响。

    3.1 运动检测的影响

Data Matrix检测常用在流水线上,这时需要考虑摄像头与被检测零件相对运动对识别的影响。在实验中用固定零件、移动摄像头的方法来模拟流水线中的运动检测,记录每次检测时摄像头的运动速度,以此找出零件上的Data Matrix能够被识别的最大相对运行速度。

现通过实验测得20组数据,以6mm×6mm的Data Matrix为考虑对象,结果如表1所示。

上结果,在光照和摄像头焦理想的情况下,最大识别的相对速度为2.00cm/s,比该速度再快可能会因运动失真导致Data Matrix无法识别。

3.2 干扰图像的影响

在相同条件下,背景干扰少的图像识别率较高,尤其当北京具有与Data Matrix类似矩形状图形时。在光照较好的条件下,测试金属零件上的Data Matrix识别率。在有背景干扰的情况和用子缓冲区屏蔽一些背景干扰的情况各测得10组数据,分别如表2所示。

表1 待测Data Matrix与摄像头的相对运动对识别的影响

速度(cm/s)1.041.061.411.561.691.701.752.002.032.09
能否识别√√√√√√√√×√
速度(cm/s)2.142.232.322.382.522.522.632.642.702.71
能否识别√√××××√×××

表2 背景干扰对识别的影响

有干扰83%84%62%81%68%92%85%60%87%74%
屏蔽干扰97%88%87%84%92%90%99%83%85%90%

可见,用于缓冲区屏蔽一些无用的背景图像后,识别效果总体上要略好于未屏蔽。

3.3 光源的影响

光源对识别成功率的影响反映在图像整体的明暗对比度上。对金属零件上的Data Matrix而言,其更多的是影响符号的清晰程度。光源位置如果选取不得当,由于金属的反光特性,金属表面会形成一片亮度特别大的镜面反射区,给Data Matrix图像造成强烈的干扰。

一种比较好的方法是用侧光的方法。由于金属零件上的Data Matrix码是气动打印产生的,打印处会有高低起伏,这些区域的反光是温反射,不同于其他区域的镜面反射光,侧光助于把点阵与金属反光的背景分开,将摄像头避开了金属的镜面反光。图4对比了侧光和反射光下的二维码状态。

3.4 识别程序的适应性

识别程序的适应性指适应不同尺寸和打印类型Data Matrix的能力。本文中考虑的打印类型有金属表面气动打印、金属表面电动针式打印和标准纸面激光打印三种。实验结果表明,程序对气动式打印Data Matrix码的识别能力普遍好于同样是金属材质的电动针式打印Data Matrix码。不同尺寸的识别率基本相等。打印在纸上的标准Data Matrix由于图形标准、颜色稳定、分辨率高等因素无需作太多的图像增强和膨胀就能够被计算机识别,识别率非常高。

Data Matrix二维码编码原理及其识别技术 Data Matrix二维码由美国国际资料公司(International Data Matrix)于1989年发明,是一种由黑色、白色的色块以正方形或长方形组成的二维码,其发展构想是希望在较小的标签上存储更多的信息量。DM码适合于小零件的的标识,直接印刷在实体上,被广泛应用在电路、药品等小件物品以及制造业的流水线生产过程。 阅读详情

相关推荐

C#--解析DataMatrix二维码

C#–解析DataMatrix码 最近在玩解析图片中的DM码。DM码在图片中显得尺寸小,而且也不清晰。一开始直接上谷歌的zxing,有些能解析出来,但是有些却显得无能为力。后来找到一个DataMatrix.net,用它解析,成功率大大提升。在调用zxing或者DM进行解析时,进行了 1 裁减–把二维码区域裁减出来(DM码在图片中太小,是必要的一步) 2 解析,如果不成功则旋转90度解析,直到...

taiguisheng的博客 9092

关于Data Matrix 基于ECC200标准的编码原理和相关开源代码

Data Matrix是一种二维码标签,可以用来储存信息,简称DM码。 本文记录学习Data Matrix的解码及加密,本文主要针对ECC200标准。|Data codewords|Stuffing codewords| Correction codewords|Data codewords: 从原始数据编码得到的数据字 Stuffing codewords:如果数据字区域没有填满,用来填充的字 Correction codewords: 基于数据字和填充字,用 Reed-Solomon算法来校验产生的校验

wudong11的博客 1万+

OpenMV图像处理的方法4

扫码识别,分类加运用

zhazhawoaini的博客 5764

什么是Data Matrix二维码

  Data Matrix二维码由美国国际资料公司(International Data Matrix)于1989年发明,是一种由黑色、白色的色块以正方形或长方形组成的二维码,其发展构想是希望在较小的标签上存储更多的信息量。DM码的最小尺寸是目前所有条码中最小的,特别适合于小零件的的标识,直接印刷在实体上,被广泛应用在电路、药品等小件物品以及制造业的流水线生产过程。Data Matrix可分ECC140与ECC200两种类型。   DataMatrix 的构成如下图所示,在边部分配置 L 字形的定位标识和

sqxskj的博客 4450

手把手教你用ZXing库生成Data Matrix二维码(附完整Java代码示例)

本文详细介绍了如何使用ZXing库在Java中高效生成Data Matrix二维码,包括环境配置、核心参数定制化、平台特定集成方案以及高级应用与故障排查。通过完整的代码示例和实用技巧,帮助开发者快速掌握二维码生成技术,适用于工业标识、医疗设备和物流管理等场景。

ansible6ops的博客 197

C++高级编程开发系列课程-1.1二维码、一维码图像生成功能开发

应用场景:一维码、二维码的生成(图片)在印刷领域、网站服务器开发以及一些工业物流领域的应用程序开发中经常遇到;本节课程以实用代码开发为主,略过相关理论(可自行搜索一维码二维码知识)。学习目的:通过本章节学习,可直接参考案例实现一维码、二维码的生成代码实现。ZXing(Zebra Crossing)是一个开源的、多格式的一维码和二维码处理库,支持多种条形码和二维码的编码和解码功能。ZXing 库支持广泛的一维码和二维码格式,适用于各种应用场景,包括零售、物流、工业和身份识别等。

HaiJiaoShouWangZhe的博客 1904

DPM条码扫描如何助力制造业可追溯性

直接零件标记是指将条形码或二维符号雕刻、蚀刻或压印到材料上。常用方法包括激光打标、点阵喷丸和化学蚀刻。数据矩阵(Data Matrix)因其高数据密度和纠错能力而成为应用最广泛的条形码格式。

控件与插件之大全 506

二维码生成软件设计与QR Code/Data Matrix实现

二维码技术作为现代信息交互的重要载体,凭借其高容量、高容错和快速识别等特性,已广泛渗透至工业制造、物流追踪、数字支付、广告营销等多个领域。其核心在于通过二维空间排列的黑白模块编码数据,实现信息的离线传递与智能设备间的快速通信。本章将从二维码的起源与发展历程讲起,逐步解析其标准化体系,涵盖QR Code、Data Matrix等主流格式的结构特征与应用场景差异。通过对比分析不同格式的编码效率与适用环境,帮助读者建立对二维码技术整体架构的清晰认知,为后续深入理解其编码原理与实现机制奠定基础。

weixin_42593701的博客 1438

二维码Data Matrix简介及在VS2010中的编译

二维码Data Matrix简介及在VS2010中的编译

hddryjv的博客 1057

C#二维码生成与集成解决方案

在当今数字化社会,二维码已成为信息交换的重要载体,广泛应用于支付、物流、身份认证等多个领域。二维码生成技术的核心在于能够将大量信息压缩编码进一个较小的黑白格子图案中,同时保持信息的完整性与纠错能力。本章将从二维码的基本原理讲起,概述其应用与生成技术的演变,为读者提供一个扎实的知识基础,从而更好地理解和应用后续章节中将介绍的C#语言生成二维码的方法。Data Matrix二维码是一种矩阵二维码编码系统,它能够在极小的空间内存储大量的数据。这使其特别适用于工业自动化和电子行业中的标记和跟踪应用。

weixin_31776191的博客 1110

二维码识别技术详解与应用实战

二维码(QR Code)是一种二维条码技术,能够高效存储和传输信息,已成为现代信息交互中不可或缺的工具。自1994年由日本Denso Wave公司发明以来,二维码经历了从静态数据存储到动态交互应用的演变,广泛应用于移动支付、物流追踪、智能设备互联等领域。本章将系统介绍二维码的基本定义、发展历程及其在现代信息技术中的关键作用。通过分析其典型应用场景与识别需求,帮助读者建立对二维码识别技术的整体认知框架,为后续深入学习编码原理与识别算法奠定基础。

weixin_42511373的博客 2131

VisionMaster之二维码识别

是指通过图像处理和模式识别技术,解析二维码图像并提取其中编码信息的过程,二维码是由一种黑白方块组成的二维码图形,能够存储文本、链接等数据,识别后可对数据进行下一步处理。

weixin_51967454的博客 1444

Android二维码生成与解析实战教程

二维码是一种可以存储信息的图形表示,最早出现在1994年,由日本电装公司发明。它通过黑白相间的方块排列,编码了一串数字或字符。二维码的广泛应用包括但不限于商品追溯、身份验证、支付、文件分享等多种场景,它为信息的传播和交换提供了极大的便利。Zxing(”Zebra Crossing”)是一个开源的,用Java实现的跨平台的条码(1D和2D)图像处理库。它广泛用于各种项目中进行条码和二维码的识别、生成和扫描。

weixin_42629522的博客 1102

Halcon一维码与二维码识别技术解析

Halcon机器视觉系统提供了一维码和二维码的完整处理方案,支持多种编码格式(如EAN-13、QR码等)。其核心技术包括:1)通过图像预处理增强条码对比度;2)自动定位和解码算法;3)参数可调校的识别模型。系统能处理复杂场景下的条码识别,包括旋转、畸变、微小尺寸等情况,并支持批量处理和多类型条码混合识别。典型应用于工业检测、物流追踪等领域,特别适合需要高精度识别的自动化场景。

过客 669

GitHub开源项目ZXing二维码开发详解

ZXing(Zebra Crossing)是一个开源的、跨平台的条形码与二维码图像识别库,广泛应用于Java、Android、iOS及Web开发中。该项目由Google主导开发,采用Java语言编写核心解码逻辑,支持多种图像格式输入,具备良好的可移植性与扩展性。其核心功能包括图像采集、预处理、解码与结果输出,涵盖EAN、QR Code、Data Matrix等主流编码格式。ZXing采用模块化设计,开发者可根据需求灵活定制识别流程。

weixin_42284380的博客 1030

6-3 根据派生类写出基类(Java解法)(PTA)

主要是看main函数里调用了什么方法和输出样例,一一对应一下有思路再写就很简单.建议使用IDEA自动生成,可以少写很多代码。

u012137663的博客 1142

金属圆点Data Matrix 二维码扫描实现

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34341117的博客 1831

RK3588部署rtmpose模型

摘要: 本文详细介绍了在RK3588开发板上部署RTMPose模型的全流程。首先在Ubuntu环境中搭建MMCV框架,通过MMPose工具将PTH模型转换为ONNX格式。随后使用RKNN-Toolkit2将ONNX模型转换为RKNN格式,并完成开发板部署。关键步骤包括模型转换(PTH→ONNX→RKNN)、环境配置和推理验证,最终实现人体姿态估计功能。整个过程涉及MMPose、RKNN-Toolkit等工具链的使用,为边缘计算场景下的实时姿态分析提供了可行方案。

qq_44224801的博客 1219

Java开发者必看:Data Matrix ECC200二维码的工业应用与避坑指南

本文为Java开发者深入解析Data Matrix ECC200二维码在工业自动化与物流追溯中的核心应用。文章重点探讨了在Spring Boot项目中集成ECC200标准时,如何规避编码处理、图像生成、打印优化及高并发性能等常见陷阱,并提供实战代码与配置指南,助力构建稳定可靠的工业级二维码生成服务。

book8的博客 541

Hadoop实战:用MapReduce分析YouTube视频数据集(附完整代码)

本文提供了一个完整的Hadoop MapReduce实战教程,指导读者使用MapReduce框架分析YouTube视频数据集,统计不同视频类别的数量分布。教程涵盖从数据获取、预处理、HDFS操作到Java代码编写、作业提交及结果可视化的全流程,并附有完整代码,帮助开发者深入理解分布式计算思想。

lilh34434的博客 198

学Simulink--基于多能源系统协同与能源互联网的电网系统场景实例:风光氢储一体化系统的能量管理与调度仿真

在全球“双碳”目标驱动下,高比例可再生能源并网成为电网发展的核心方向。然而,风电与光伏具有强随机性与间歇性,给电网稳定运行带来巨大挑战。风光氢储一体化系统(Wind-Solar-Hydrogen-Storage Integrated System)通过将可再生能源发电电解水制氢氢气储存与燃料电池发电有机结合,构建了一个长时储能与能量形态转换的闭环系统,是实现能源互联网与零碳电力系统的关键路径。✅平抑波动:氢储能可实现跨天、跨周储能✅能量转化:电→氢→电/热/交通燃料,实现多能互补✅长时储能。

amy_mhd的博客 1072

二维码简介

二维码(Two-dimensional code)是用某种特定的几何图形按一定规律在平面(二维方向)分布的黑白相间的图形记录数据符号信息的方式。现实生活中,二维码普遍存在我们的周围,例如:产品防伪/溯源、广告推送、网站链接、数据下载、商品交易、定位/导航、电子凭证、车辆管理、信息传递、名片交流、wifi共享等。     在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使

计算机视觉小菜鸟的专栏 4840

Python白色飘雪(完整代码)

Python绘制白色飘雪动画的完整代码。

AIGC 3万+
上一篇: iPhone消息推送机制实现与探讨
下一篇: Google发布代码转换工具 可移植安卓程序至iOS
soft_monkey
博客等级 码龄22年 14粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值