二维码是如何设计出来的?

作者 | Dan Hollick
译者 | 弯月
出品 | CSDN(ID:CSDNnews)
QR码(Quick Response Code,快速响应矩阵图码)是二维码的一种,于1994年由日本汽车零组件大厂电装公司的原昌宏所发明,用于在制造过程中跟踪零件。
在日常生活中,条形码的使用也很常见,但它们有一定的局限性:只能以特定的角度读取,并且存储的数据量非常有限。
而QR码解决了这些问题。
QR码最大的特征为其左上、右上、左下三个大型的如同“回”字的正方图案,名叫“定位标志”,用于帮助解码软件定位,如下图红色方块所示。
还有一个较小的正方图案,名叫“校正标志”,用于帮助解码软件识别QR码的方向和角度,这样解码软件就可以从任何角度读取QR码,如下图粉红色方块所示。
图片
每个QR码都有黑白相间的点线,称为“定时标志”,用于确定QR码的宽度以及点数,如下图蓝色点线所示。
下图中虚线可以告诉读者整个 QR 可以有多大,其中版本 2 是最小的版本,版本40是最大的。
有关格式的信息存储在定位标志附近的两条点带中,如下图的黄色点所示。
格式信息存储了两次,因此即使QR码被部分遮挡也可以读取。
格式信息保存了三种关键信息:
掩码的类型
纠错等级
纠错格式
图片
纠错等级代表了QR码中存储了多少冗余信息,纠错的目的是即使部分信息丢失也仍然可以读取。
纠错等级越高,就意味着冗余等级越高,因此QR码遭到破坏时仍然能被读取的可能性就越高。如下QR码虽然右下角有一大片被覆盖,但仍然能被读取,你可以试试看。
QR码在白色区域和黑色区域数量相同时读取的效果最好。如果数据区域出现连续的空白或者连续的黑色区,就需要用到掩码。
当利用掩码处理QR码时,数据区上对应掩模黑色模块的单元将会反转。
白色区域会变为黑色,而黑色区域会变为白色。
QR码提供八种掩码模型,这些掩码会被逐个尝试,直到找到效果最好的掩码。掩码的信息会存储下来,供读取装置解除掩码使用。
图片
最终,我们将得到实际数据。
不过,这个数据是从右下角开始的,按照如下图所示的方向返回。
由于QR码可以从任何角度读取,因此实际上从哪里开始读取都没关系。
图片
QR码中的第一块信息可以告诉我们数据编码的模式,而第二块信息是数据的长度。
在我们的例子中,每个字符包含8个比特(也就是一个字节),一共有24个字节。
图片
上图中,绿色空间存储的是我们的数据,后面还有大量未使用的空间。
这些空间被用来存储纠错信息,如下图中紫色空间所示,目的是在QR码遭到损坏时依然能够读取,当然实际的工作方式非常复杂,我不打算在此详细讨论。
以上就是QR码的基本知识!
最后附上一张完整的说明图。
图片