目录
二维码简介
二维码的全称是二维条码,有多种编码方式,如QR Code、Data Matrix、Code 49、PDF417、Code 16K、Code One等。
日常生活中常用的二维码是QR二维码。以下以QR二维码为例。
二维码结构

- 位置探测图形、位置探测图形分隔符、定位图形:这三个图形用于定位二维码
- 校正图形:用于确定二维码的方向
- 格式信息:用于保存二维码的纠错等级的位置,分为L、M、Q、H
- 版本信息:用于确定二维码的大小,二维码共有40种版本的矩阵(一般为黑白色),从21x21(版本1)到177x177(版本40),每个版本二维码都会前一版本二维码的每边上增加4个模块
- 数据和纠错码字:用于保存将数据信息转化成二进制位流和纠错字符的位置
二维码的编码流程

- 数据分析:确定编码的字符类型,按相应的字符集转换成符号字符;选择纠错等级,在规格一定的条件下,纠错等级越高,真实数据的容量就越小
- 数据编码:按模式下相应的字符集转换成二进制逻辑值,将二进制逻辑值排列为位流,对于字母、中文、日文等,只是分组方式、模式等内容有所区别,基本方法是一致的。虽然二维码比一维条码具有更强大的信息记载能力,但其容量也是有限的
- 纠错编码:按需对上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字。在二维码规格和纠错等级确定的情况下,其所能容纳的码字总数和纠错码字数也就确定了。如:当纠错等级为H时,版本10的二维码能容纳346个码字,其中包括224个纠错码字。这224个纠错码字能够纠正112个替代错误(如黑白颠倒)或者224个数据读取错误(无法读到或者无法译码),因此纠错容量为112/346=32.4%,就是说,二维码区域中大约有1/3的码字是冗余的。
- 构造最终数据信息:在规格确定的情况下,按需对上面的码字序列分块,并根据纠错等级和分块的码字对每个分块进行计算,得出相应的纠错码字区块,把纠错名字区块按顺序构成一个序列,产生纠错码字,并把纠错码字加入数据码字序列后面,形成一个新的序列。
- 构造矩阵:将位置探测图形、位置探测图形分隔符、定位图形、校正图形放入矩阵中,并把上面的完整序列填充到相应规格二维码矩阵的区域中
- 掩膜:掩膜通常用在符号的编码区域,使得二维码图形中的深色和浅色(黑色和白色)区域的分布比率最优
- 生成格式和版本信息:格式和版本信息放在相应区域内,版本7~40包含了版本信息,没有版本信息的全为0。二维码上有两个位置包含了版本信息,它们是相互冗余的。版本信息共18位,构成了6x3的矩阵,其中6位是数据位,如版本8,数据位是001000,后面的12位是纠错位。
二维码的译码流程
二维码的译码模块可以选择两种方式读取文件:
- 一种是直接读入包含条码的图像文件,定位二维码图像区域,进行译码

在读取图像文件后,由于在采集二维码图像的过程容易受到倾斜、燥声等因素的干扰,所以需要在定位二维码之前先进行图像预处理,图像预处理一般包括图像倾斜矫正、平滑滤波、二值化和图像旋转等。
- 另一种是读入包含条码信息的二维码文件,进行译码。
二维码相关参考网址
https://www.tec-it.com/zh-cn/support/knowbase/barcode-overview/linear/Default.aspx

https://zhuanlan.zhihu.com/p/524814952

1059

被折叠的 条评论
为什么被折叠?



