二维码分类

news/2024/12/2 23:57:34/

二维码分类

最近在做二维码解码的项目。用的是zxing库+VS2015+OPENCV3.4,网上说ZBAR库也ok;
概念: 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二位方向上)分布的黑白相间的图形记录数据符号信息的图形。

一维条码

一维条码是由一组粗细不同、黑白(或彩色)相间的条、空及其相应的字符(数字字母)组成的标记,即传统条码。

一维条码示意图:
一维码示意图
二维条码

二维条码是用某种特定的几何图形按一定规律在平面(二维方向)上分布的条、空相间的图形来记录数据符号信息。
二维码:

二维码示意图

二维条码也有许多不同的码制,就码制的编码原理而言,通常分为三种类型:

1.线性堆叠式二维码
2.矩阵式二维码
3.邮政码

线性堆叠式二维码
编码原理:建立在一维条码基础之上,按需要堆积成两行或多行,整体风格类似一维码。
线性堆叠式二维码示意图:

线性式堆叠式二维码
矩阵式二维码

在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,是最为常见的二维码类型,其中包含了最为流行的QR_Code。
矩阵式二维码示意图:
常见矩阵式二维码
邮政码

邮政码通过不同长度的条进行编码,主要用于邮件编码,如:POSTNET、BPO 4-STATE,一般通过不同长度的条作为邮件编码。
在这里插入图片描述

目前流行的三大国际标准:
PDF417:不支持中文
DM:专利未公开,需支付专利费用
QR Code:专利公开,支持中文

QR Code比其他二维码相比具有的优势:

  1. 识读速度快
  2. 数据密度大
  3. 占用空间小

QR Code是由日本Denso公司于1994年研制的一种矩阵二维码符号吗,全称是Quick Response Code

Data Matrix码
ata Matrix原名Data code,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于1989年发明,整个图形尺寸伸缩自如,大可以做成1米1米。小可以做成0.30.3mm。Data Matrix又可分为ECC000-140与ECC200两种类型,ECC000-140具有多种不同等级的错误纠正功能,而ECC200则透过Reed-Solomon演算法产生多项式计算出错误纠正码,其尺寸可以依需求印成不同大小,但采用的错误纠正码应与尺寸配合,由于其演算法较为容易,且尺寸较有弹性,故一般以ECC200较为普遍,常应用于电子产品表面。
ECC200 是最新的 Data Matrix码版本,可以配置为正方形或矩形。ECC200 已国际标准化。当需要 Data Matrix 码时,通常使用 ECC200 版本。
Data Matrix(ECC200)码结构
Data Matrix 码的数据区域四周为 L 形框(称为“对准图案”)和点线(称为“时钟图案”)。读取器将捕获这些图案,通过图像处理技术确定代码的位置。因此,可从任何方向上读取 Data Matrix 码。
当模块数目超过 24 × 24 时,代码将分成区块,每侧不会超过 24 个模块。此结构可防止代码失真。
在这里插入图片描述
共有 24 种代码尺寸,范围为从 10 × 10 模块到 144 × 144 模块(对于矩形,共有六种尺寸)。
当某个代码的模块数目超过 26 × 26(对于数据,模块数目超过 24 × 24)时,它会划分为区块,如下所示,每侧不超过 24 个模块。此结构可防止代码失真。

在这里插入图片描述

工程中用到的一些二维码:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
AprilTags
换了份工作又要开始解码了,我是上辈子看太多毛片被诅咒了吗?要如此折磨我,不出意外的话,未来两年的工作重心就放在解码相关项目上。
最近的工作主要是以AprilTags二维码为主,AprilTags在概念上类似于QR码,因为它们是一种二维条形码。 但是,降低了复杂度以满足实时性要求,它们被设计用于编码更小的数据有效载荷(4到12位之间),从而可以更长距离地检测它们。 此外,它们设计用于高定位精度 - 可以计算AprilTag相对于相机的精确3D位置。
与普通二维码相比, AprilTags可在更远距离、较差光线和更扭曲的图像环境下被检测到。 AprilTags可应对所有种类的图像失真问题,而二维码并不能。也就是说, AprilTags只能将数字D编码作为其有效载荷。
官网:https://april.eecs.umich.edu/software/apriltag.html
git仓库地址:https://github.com/AprilRobotics/apriltag

AprilTags可以应用于:

相机标定
目标大小估计
测量相机到目标的距离
3D 定位(3D positioning)
机器人
SLAM
自主导航(autonomous navigation)

AprilTag family默认的是:Tag36h11,在AprilTags中有六个系列families:

Tag36h11
TagStandard41h12
TagStandard52h13
TagCircle21h7
TagCircle49h12
TagCustom48h12

在这里插入图片描述

标签系列的区别?

例如,TAG16H5家族,16为16个像素块,5为假阳性值,其实际上是一个4x4的方形标签。一般来说,默认使用族TAG36H11。当然现在AprilTag更新到了第三代,使用tagStandard41h12更好。

APRILTAG原理
AprilTag内容主要包含三个步骤。

第一步:根据梯度检测出图像中的各种边缘
第二步:在边缘图像中找出需要的四边形图案并进行筛选
AprilTag尽可能的对检测出的边缘检测,首先剔除非直线边缘,在直线边缘进行邻接边缘查找,最终若形成闭环则为检测到一个四边形)

第三步:进行二维码编码和二维码解码
编码方式分为三种,其黑边色块长度分别为8,7,6三个色块长度,对于解码内容,要在检测到的四边形内生成点阵列用于计算每色块的值,再根据局部二值模式(Local Binary Patterns)构造简单分类器对四边形内的色块进行分类,将正例色块编码为1将负例色块编码为0,就可以得到该二维码的编码。得到编码以后再与已知库内的编码进行匹配,确定解码出的二维码是否为正确。

APRILTAG图像生成
下载openmv软件

中国官网地址:http://openmv.cc (点击 软件下载)
美国官网下载地址:https://openmv.io/pages/download
安装后打开,依次按照图示进行,选择相应文件夹生成即可
在这里插入图片描述
四、OPENMV实现
利用OpenMV自带函数 find_apriltags 寻找Apriltag


import sensor, image, time, mathsensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QQVGA) # 如果分辨率更大,我们的内存会耗尽...
sensor.skip_frames(time = 2000)
sensor.set_auto_gain(False)  # 必须关闭此功能,以防止图像冲洗…
sensor.set_auto_whitebal(False)  # 必须关闭此功能,以防止图像冲洗…
clock = time.clock()# 注意!与find_qrcodes不同,find_apriltags方法不需要对图像进行镜头校正# apriltag代码最多支持可以同时处理6种tag家族。
# 返回的tag标记对象,将有其tag标记家族及其在tag标记家族内的id。def family_name(tag):if(tag.family() == image.TAG16H5):return "TAG16H5"if(tag.family() == image.TAG25H7):return "TAG25H7"if(tag.family() == image.TAG25H9):return "TAG25H9"if(tag.family() == image.TAG36H10):return "TAG36H10"if(tag.family() == image.TAG36H11):return "TAG36H11"if(tag.family() == image.ARTOOLKIT):return "ARTOOLKIT"while(True):clock.tick()img = sensor.snapshot()for tag in img.find_apriltags(): # 如果没有给出家族,默认TAG36H11。img.draw_rectangle(tag.rect(), color = (255, 0, 0))img.draw_cross(tag.cx(), tag.cy(), color = (0, 255, 0))print_args = (family_name(tag), tag.id(), (180 * tag.rotation()) / math.pi)print("Tag Family %s, Tag ID %d, rotation %f (degrees)" % print_args)print(clock.fps())

另外,在查阅资料的时候发现MaixPY 也可以实现类似的功能。

在这里插入图片描述
在这里插入图片描述

最后感谢慕课网老师:https://www.imooc.com/video/10311
参考:https://www.freesion.com/article/42341128173/


http://www.ppmy.cn/news/228659.html

相关文章

扫描项目中的二维码关注微信公众号

首先要知道的几点: 1、让用户扫描我们的二维码首先需要知道扫描者是否已经关注该微信公众号。 2、我们需要知道自己微信公众号的唯一标识。 微信公众号中提供了开发者测试公众号,地址:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo…

二维码纠错级别

二维码纠错级别指的是在识别二维码时,对于损坏或模糊的二维码的容错能力。 一般来说,二维码有四个纠错级别: L (低):可以纠正7%左右的错误。 M (中):可以纠正15%左右的错误。 Q (高):可以纠正25%左右的错误…

二维码介绍

二维码介绍 二维码(2-dimensional bar code、二维条码)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的、黑白相间的、记录数据符号信息的图形;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1…

二维码QR 码纠错级别

二维码的纠错功能原理是? 例如,需要编码的码字数据有 100个,并且想对其中的一半,也就是 50个码字进行纠错, 则计算方法如下。纠错需要相当于码字2倍的符号,因此在这种情况下的数量为 50个2 100码字。因此, 全部码字数量为 200个, 其中用作纠错的码字为 50个,所以计算得出, 相…

QR二维码掩码质量评价算法

这个二维码掩码选择评分算法简单但是切合实际,以及掩码的设计的算法,细思极恐!值得记录! QR二维码掩码技术: 原因:当二维码中黑色或者白色块过多,会导致二维码的信息识别困难和容易丢失。所以需…

二维码超分效果评价指标

1 PSNR(Peak Signal-to-Noise Ratio)——峰值信噪比 1.1 概述 PSNR 是信号的最大功率和信号噪声功率之比,来测量已经被压缩的重构图像的质量,通常以分贝(dB)来表示。PSNR 指标越高,说明图像质量越好。 P S N R 10 ⋅ log ⁡ 10 ( M A X I…

二维码也有质量标准

二维条码用到现在,很多人可能还不知道二维条码和一维条码一样,也是有品质要求的,这里我做一些科普,让大家了解一下二维条码品质的那些事情。 我想我们用几个问题来帮助大家来做个初步的认知。 问题1,条码是什么&…

用客户喜欢的方式触达,才是收集反馈的正确姿势

客户反馈,对于企业完善产品、优化服务以及提升体验有着不可替代的作用。然而,客户反馈的收集工作并不如想象中的简单:根据研究机构——Medallia Research的调查显示,44%的消费者在填写反馈时,有过中途放弃的经历。企业…