Wat maskeren doet
Nadat de gegevens- en foutcorrectiebits zijn geplaatst, kunnen sommige gebieden lange reeksen van één kleur bevatten of vormen die op zoekpatronen lijken. Maskeren lost dat op door modules om te keren waar een eenvoudige formule waar is, waardoor donker en licht gelijkmatiger worden verdeeld.
Het masker geldt alleen voor het gegevens- en foutcorrectiegebied. Zoek-, timing- en uitlijnpatronen, de formaat- en versie-informatie en de donkere module worden nooit gemaskeerd.
De acht maskers
Maskers zijn genummerd van 000 tot 111. Elk wordt bepaald door een voorwaarde op rij i en kolom j van een module; waar de voorwaarde geldt, wordt die module omgekeerd. Een lezer leert het maskernummer uit de formaatinformatie en past hetzelfde masker opnieuw toe om het ongedaan te maken.
- 000: (i + j) mod 2 = 0, een dambordpatroon
- 001: i mod 2 = 0, afwisselende rijen
- 010: j mod 3 = 0, elke derde kolom
- 011: (i + j) mod 3 = 0, diagonale strepen
- 100 tot 111: ingewikkeldere combinaties van rijen, kolommen en producten
Hoe het beste masker wordt gekozen
De encoder probeert alle acht maskers en beoordeelt elk resultaat met vier strafregels. Het masker met de laagste totale straf wordt gebruikt, waardoor de afgewerkte code makkelijker door camera’s te lezen is.
Sommige generatoren slaan de volledige beoordeling over en gebruiken een vast masker, wat nog steeds een geldige code oplevert maar iets moeilijker te scannen kan zijn. Micro QR-codes gebruiken een kleinere set van vier maskers met een eigen scoreregel.
- Regel 1: lange reeksen van dezelfde kleur in een rij of kolom
- Regel 2: blokken van 2 × 2 in één kleur
- Regel 3: patronen die lijken op de zoekpatroonverhouding 1:1:3:1:1
- Regel 4: algehele onbalans tussen donkere en lichte modules