Was die Maskierung bewirkt
Nachdem die Daten- und Fehlerkorrekturbits platziert sind, können manche Bereiche lange Folgen einer Farbe oder Formen enthalten, die wie Suchmuster aussehen. Die Maskierung behebt das, indem sie Module überall dort umkehrt, wo eine einfache Formel zutrifft, wodurch Dunkel und Hell gleichmäßiger verteilt werden.
Die Maske wirkt nur auf den Daten- und Fehlerkorrekturbereich. Such-, Takt- und Ausrichtungsmuster, die Format- und Versionsinformationen und das dunkle Modul werden nie maskiert.
Die acht Masken
Die Masken sind von 000 bis 111 nummeriert. Jede ist durch eine Bedingung für Zeile i und Spalte j eines Moduls definiert; wo die Bedingung zutrifft, wird das Modul umgekehrt. Ein Lesegerät erfährt die Maskennummer aus den Formatinformationen und wendet dieselbe Maske erneut an, um sie rückgängig zu machen.
- 000: (i + j) mod 2 = 0, ein Schachbrett
- 001: i mod 2 = 0, abwechselnde Zeilen
- 010: j mod 3 = 0, jede dritte Spalte
- 011: (i + j) mod 3 = 0, diagonale Streifen
- 100 bis 111: kompliziertere Kombinationen aus Zeilen, Spalten und Produkten
Wie die beste Maske gewählt wird
Der Encoder probiert alle acht Masken aus und bewertet jedes Ergebnis mit vier Strafregeln. Verwendet wird die Maske mit der niedrigsten Gesamtstrafe, wodurch der fertige Code für Kameras leichter lesbar wird.
Manche Generatoren überspringen die vollständige Auswertung und verwenden eine feste Maske. Das ergibt weiterhin einen gültigen Code, der sich aber etwas schwerer scannen lassen kann. Micro-QR-Codes nutzen eine kleinere Menge von vier Masken mit eigener Bewertungsregel.
- Regel 1: lange Folgen derselben Farbe in einer Zeile oder Spalte
- Regel 2: 2 × 2 große Blöcke einer Farbe
- Regel 3: Muster, die dem Suchmuster-Verhältnis 1:1:3:1:1 ähneln
- Regel 4: allgemeines Ungleichgewicht zwischen dunklen und hellen Modulen