QR码生成原理(一)

一、什么是QR码

QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示一下:

这个图如果被正确解码,应该看到我的名字和邮箱。

二、QR码的特点

说到QR码的特点,一是高速读取(QR就是取自“Quick Response”的首字母),对读取速度的体验源自于我手机上的一个软件,象上面贴出的码图,通过摄像头从拍摄到解码到显示内容也就三秒左右,对摄像的角度也没有什么要求;

二是高容量、高密度;理论上内容经过压缩处理后可以存7089个数字,4296 个字母和数字混合字符,2953个8位字节数据,1817个汉字;

三是支持纠错处理;纠错处理相对复杂,目前我还没有深入了解,按照QR码的标准文档说明,QR码的纠错分为4个级别,分别是:

  • level L : 最大 7% 的错误能够被纠正;
  • level M : 最大 15% 的错误能够被纠正;
  • level Q : 最大 25% 的错误能够被纠正;
  • level H : 最大 30% 的错误能够被纠正;

四是结构化;看似无规则的图形,其实对区域有严格的定义,下图就是一个模式2、版本1的QR图结构(关于QR码的"模式"、"版本"将在后面进行介绍):

在上图21*21的矩阵中,黑白的区域在QR码规范中被指定为固定的位置,称为寻像图形(finder pattern) 和 定位图形(timing pattern)。寻像图形和定位图形用来帮助解码程序确定图形中具体符号的坐标。

黄色的区域用来保存被编码的数据内容以及纠错信息码。

蓝色的区域,用来标识纠错的级别(也就是Level L到Level H)和所谓的"Mask pattern",这个区域被称为“格式化信息”(format information)。

五是扩展能力。QR码的Structure Append特点,使一个QR码可以分解成多个QR码,反之,也可以将多个QR码的数据组合到一个QR码中来

 

 

三、QR码的模式和版本

前面提到过QR码的模式(Model)和版本(Version)。QR码分为Model1和Model2两种模式,Model1是对QR的初始定义,Model2是对Model1的扩展,目前使用较为普遍的是Model2,本文的所有说明也仅用于Model2。

QR图的大小(size)被定义为版本(Version),版本号从1到40。版本1就是一个21*21的矩阵,每增加一个版本号,矩阵的大小就增加4个模块(Module),因此,版本40就是一个177*177的矩阵。(版本越高,意味着存储的内容越多,纠错能力也越强)。

三、QR码支持的编码内容

QR码支持编码的内容包括纯数字、数字和字符混合编码、8位字节码和包含汉字在内的多字节字符。其中:

数字:每三个为一组压缩成10bit。

字母数字混合:每两个为一组,压缩成11bit。                                  

8bit字节数据:无压缩直接保存。

多字节字符:每一个字符被压缩成13bit。

 

  • 15
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: MATLAB的QR码编码方法基于两个步骤:数据编码和纠错编码。 数据编码: 数据编码是将需要编码的文本转换成二进制编码,并根据QR码规范进行分段和填充操作。在QR码中,每个版本规定了数据容量,因此在编码时需要考虑数据容量限制。数据编码分为数字、字母、汉字、8位字节编码等多种方式,具体的编码方案可以根据需要进行选择。 纠错编码: 纠错编码是为了提高QR码的稳定性和识别率,将编码后的数据进行进一步处理。采用的是RS码纠错编码方式,通过添加冗余信息的方式,可实现纠错等级从7%~30%之间的错误纠正能力。RS编码在数据重组时也可以起到数据完整性检查的作用。 综上所述,QR码的编码步骤相对较为简单,但需要注意不同版本的规定以及纠错级别的选择。在MATLAB中可以调用相应的QR码编码函数,根据需要进行参数的设置,快速地实现QR码的编码。 ### 回答2: matlabqr码的编码是一种二维码编码方式,采用的是矩阵正交分解技术。它可以将字符、数字、链接、文本等信息编码成黑白像素块的形式,成为一个独一无二的矩阵图案,方便人们进行扫描识别。 matlabqr码的编码分为四个步骤:信息区编码、数据填充、格式信息生成和版本信息生成。信息区编码是将输入的数据按照相应的规则进行编码。数据填充是为了在不同的版本或格式信息中能够正确地解码数据而进行的填充处理。格式信息和版本信息是分别加入到qr码中的两个特殊位置中,其中格式信息包含了识别qr码的必要信息,而版本信息则包含了qr码版本的信息。 matlabqr码的编码使用的是纠错编码技术,可以通过加入适当的纠错码来保证在一定比例的损坏情况下仍能正确解码。此外,matlabqr码的编码还可以根据需求进行调整,比如可以对编码的矩阵大小、编码规则等进行自定义,以满足不同应用场景下的需求。 总体来说,matlabqr码的编码是一种高效、可靠、灵活的编码方式,已经广泛应用于商业、交通、安防等领域。 ### 回答3: MATLAB中的QR码是一种二维矩阵条形码,用于快速标识产品、服务以及网站等信息。QR码可以存储较大的信息内容,并且比传统的一维条形码具有更高的错误修正能力和更多的编码方式。 在MATLAB中,我们可以使用函数“qrcode”的方式来生成QR码。具体的步骤如下: 1. 生成QR码数据 首先,我们需要确定将要存储QR码中的信息。在MATLAB中,可以直接使用字符串或字符数组来表示信息。例如,我们将要创建一个存储“Hello World”信息的QR码,那么可以这样做: info = "Hello World"; 2. 设置QR码参数 在生成QR码之前,我们需要设置一些参数,以便控制生成后的QR码的大小、版本、纠错等级等。一般来说,我们可以根据需要指定QR码的大小和纠错等级,其他参数可以采用默认值。例如,我们可以这样设置参数: size = 200; % QR码大小,以像素为单位 level = "H"; % 纠错等级,包括 L(7%)、M(15%)、Q(25%)和 H(30%) 3. 生成QR码 最后,我们可以使用函数“qrcode”来生成QR码。该函数的输入参数为信息字符串和QR码参数,输出为一个QR码图像矩阵。例如,我们可以这样生成QR码: img = qrcode(info, "Level", level, "Version", 10, "ModuleSize", size/21); 其中,“Version”参数表示QR码的版本号,可以根据信息内容和指定的纠错等级自动确定。而“ModuleSize”参数则表示QR码中每个方块的大小。 4. 呈现QR码 最后,我们可以将生成QR码矩阵图像显示出来。例如,我们可以用imshow函数呈现QR码: imshow(img); 当然,我们也可以将QR码直接保存为图像文件,以便于后续的使用。例如,我们可以这样保存QR码: imwrite(img, "qr_code.png"); 在生成QR码时,还可以设置其他参数,如前景色、背景色、边框宽度、版本号等。使用函数“qrmaker”可以更好地控制QR码生成,并且可以生成多个QR码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值