二维码的工作原理

又称: 二维码编码, 二维码解码, 二维码原理

定义

二维码先把数据转成码字,加上里德-所罗门纠错,再把比特放进围绕固定图案的网格里,这些图案帮助摄像头找到、摆正并读取二维码。

从数据到图案

生成二维码首先要选择适合数据的编码模式:数字、字母数字、字节或汉字。编码器把数据转成比特,切分成 8 位的码字,并按选定的等级加上里德-所罗门纠错码字,然后选择能容纳这些数据的最小版本。

码字按锯齿形路径排入网格,跳过固定图案。最后,编码器套用八种掩模图案之一,打散大片空白区域或容易混淆的形状,并把掩模和纠错等级记录在格式信息中。

  • 选择编码模式
  • 编码数据并加上纠错码字
  • 选择版本(尺寸)
  • 放置定位、时序和校正图案
  • 填入数据模块
  • 从八种掩模中选出最佳的一种,并写入格式信息

从相机图像到数据

解码就是把这些步骤倒过来。扫描器找到三个定位图案,它们深浅比例为 1:1:3:1:1,在大多数图像中都很显眼,再结合时序和校正图案来映射网格。接着读取格式信息,去除掩模,收集码字。

随后,里德-所罗门解码会修复被读错的码字,上限取决于纠错等级。如果损坏太多,二维码会读取失败,而不是返回错误数据,所以二维码很少出现乱码结果。

为什么尺寸和对比度很重要

每一步都依赖相机能分辨深色模块和浅色模块。模块太小、对比度低、反光、模糊或缺少静区,都会让更多模块变得难以判断,而纠错能吸收的损坏是有限的。保持数据简短、对比度强、边距清晰,就能让解码器的工作最轻松。

常见问题

手机怎么知道二维码在哪儿?

它会寻找位于角上的三个大方块定位图案。它们独特的 1:1:3:1:1 比例让扫描器能从任意角度找到它们,并推算出方向。

二维码为什么要有掩模图案?

掩模按固定规则翻转模块,避免出现大片纯色区域,以及看起来像定位图案的形状。编码器会试遍全部八种掩模,保留读取最可靠的那一种。

二维码倒过来还能读吗?

能。定位图案会告诉扫描器方向,所以二维码在任何旋转角度下都可以读取。

来源与标准

全部术语