二维码到底是怎么扫出来的:你兜里揣着的信息论奇迹
由 ToolOrbit 编辑团队撰写与维护
每篇指南都会围绕实际工作流准确性进行检查,并连接到可直接应用的浏览器工具。
Related tools
Use these ToolOrbit utilities to apply the workflow from this article.
由 ToolOrbit 编辑团队撰写与维护
每篇指南都会围绕实际工作流准确性进行检查,并连接到可直接应用的浏览器工具。
Use these ToolOrbit utilities to apply the workflow from this article.
你每周都要扫上几十个二维码——餐馆点菜、扫码付款、连 WiFi、电子票签到。这些布满像素颗粒感的方块早已无孔不入,以至于我们的大脑几乎不再将它们当作一项异质的存在。但藏在这黑白迷宫深处的,是一项极其巧妙的工程学壮举:一种拥有自纠错能力、无视方向角度、且在毫秒间即可被任何手机摄像头解算的高密度数据存储体系。
让我们从那些巨大的定位回形方块开始,一路剥到背后犹如神迹的纠错数学原理。
每一枚标准的二维码,都建立在一套强制性的固定结构元件之上,这是扫描器进行数据提取之前用来在空间中锚定自身姿态与角度的基石:
把一段自然文本变成一个二进制的像素棋盘,背后流着一条复杂得超乎预料的管道线:
这就是让二维码就算被撕掉一角、糊上一大摊灰或者光照灾难时依然能被扫出来的那道硬核魔法。里德-所罗门编码(Reed-Solomon codes)这一类前向纠错码,最早的面世背景是为了从几亿公里外侧耳倾听深空探测器发来的极其微弱的呻吟。
二维码一共划定了四个纠错能耐的级别:
天底下的好事都需要代价,这儿的交换筹码就是密度:越高的纠错必然意味着往里回填更多冗余的废字节,也就是说在装一样多信息的前提下,你的码必须被迫印得更大。这就解释了为啥餐厅点菜那个二维码(区区一个短网址,按低纠错捏)能印得巨小,而登机牌上的那个 PDF417 或 QR 码(密集的结构化私密数据,按高纠错上)就得长得更大块头。
一维条形码只能在横轴上靠变换宽度的竖棍子存数据。二维码打破了次元壁——在横轴和纵轴的二维平面上同时读写。这个看着极其简单的升维变化,带来了一连串天翻地覆的物理后果:
二维码技术本来只是 1994 年丰田旗下子公司"电装(Denso Wave)"搞出来追踪车间汽车零配件的一个内部工装。随后它在西方主流消费市场几乎沉寂了整整二十年。是被三件事联合着拉出了山洞:
二维码,堪称是信息论学派焊死在消费级应用端的一枚低调到泥里的勋章。它将编码的高效性、物理形变的鲁棒性以及来自数学的极致优雅,全都温柔地揉进了一枚邮票见方的纸片。你每一次漫不经心举起手机的扫码瞬间,底层其实都在毫秒之间跑完了一次实时的里德-所罗门解码工程——只是它干得太无懈可击了,以至于你这辈子都不需要想起它。