掩模有什么作用
数据和纠错位放好之后,某些区域可能出现一长串同色模块,或者出现看起来像定位图案的形状。掩模的做法是:凡是某个简单公式成立的地方就翻转模块,让深色和浅色分布得更均匀。
掩模只作用于数据和纠错区域。定位图案、时序图案和校正图案、格式与版本信息,以及深色模块,从不加掩模。
八种掩模
掩模编号为 000 到 111。每一种都由一个关于模块所在行 i 和列 j 的条件定义;条件成立的地方,该模块就被翻转。读取器从格式信息中得知掩模编号,再套用同一个掩模把它还原。
- 000:(i + j) mod 2 = 0,棋盘格
- 001:i mod 2 = 0,隔行交替
- 010:j mod 3 = 0,每隔三列
- 011:(i + j) mod 3 = 0,斜条纹
- 100 到 111:行、列和乘积的更复杂组合
如何选出最佳掩模
编码器会试遍全部八种掩模,并用四条罚分规则给每个结果打分。使用总罚分最低的那种掩模,能让成品二维码更便于相机读取。
有些生成器跳过完整评估,直接使用固定的掩模,这样产生的二维码依然有效,但可能稍难扫描。Micro QR 码使用一组较小的四种掩模,有自己的评分规则。
- 规则 1:一行或一列中出现长串同色
- 规则 2:2 × 2 的同色块
- 规则 3:类似 1:1:3:1:1 定位比例的图案
- 规则 4:深色与浅色模块整体比例失衡