マスク処理の役割
データと誤り訂正のビットを配置すると、同じ色が長く続く部分や、ファインダーパターンに似た形が生じることがあります。マスク処理は、単純な式が成り立つ場所のモジュールを反転させることで、これを解消し、明暗をより均等に分散させます。
マスクの対象は、データと誤り訂正の領域だけです。ファインダー、タイミング、アライメントの各パターン、形式情報と型番情報、ダークモジュールには、マスクをかけません。
8種類のマスク
マスクには、000から111までの番号が付いています。それぞれ、モジュールの行iと列jに関する条件で定義され、条件が成り立つモジュールが反転されます。リーダーは、形式情報からマスク番号を知り、同じマスクをもう一度かけて元に戻します。
- 000:(i + j) mod 2 = 0、市松模様
- 001:i mod 2 = 0、1行おきの縞
- 010:j mod 3 = 0、3列ごと
- 011:(i + j) mod 3 = 0、斜めの縞
- 100〜111:行、列、積を組み合わせた、より複雑な条件
最適なマスクの選び方
エンコーダーは、8種類のマスクをすべて試し、それぞれの結果を4つのペナルティ規則で採点します。合計のペナルティが最も低いマスクが使われ、完成したコードはカメラで読み取りやすくなります。
ジェネレーターによっては、すべてを評価せずに固定のマスクを使うものもあります。それでも有効なコードはできますが、読み取りがわずかに難しくなることがあります。マイクロQRコードは、4種類のより小さなマスクの集合と、独自の採点規則を使います。
- 規則1:行または列で同じ色が長く続く
- 規則2:同じ色の2×2のブロック
- 規則3:1:1:3:1:1というファインダーパターンの比率に似たパターン
- 規則4:暗いモジュールと明るいモジュールの全体的な偏り