Maskenmuster: Die verborgene Optimierung in jedem QR-Code
Die acht Maskenmuster, die Strafpunktbewertung und wie der Encoder die optimale Maske für die Lesbarkeit auswählt.
Maskenmuster: Die verborgene Optimierung in jedem QR-Code
Jeder QR-Code wendet vor der Fertigstellung des Symbols eines von acht Maskenmustern auf seinen Datenbereich an. Die Maskierung ist essenziell, um problematische visuelle Muster zu verhindern, die Scanner verwirren würden, und der Auswahlprozess umfasst ein cleveres Strafpunkt-Bewertungssystem.
Warum Maskierung notwendig ist
Ohne Maskierung könnten kodierte Daten große Blöcke einheitlicher Farbe erzeugen, Muster, die Such- oder Taktmuster imitieren, oder andere Strukturen, die die zuverlässige Dekodierung stören. Die Maskierung verknüpft die Datenmodule per XOR mit einem mathematischen Muster, um diese problematischen Bereiche aufzubrechen.
Die acht Maskenmuster
Jede Maske wird durch eine Bedingung definiert, die auf Modulkoordinaten (Zeile i, Spalte j) angewendet wird:
| Maske | Bedingung | Visueller Effekt |
|---|---|---|
| 000 | (i + j) mod 2 = 0 | Schachbrettmuster |
| 001 | i mod 2 = 0 | Horizontale Streifen |
| 010 | j mod 3 = 0 | Vertikale Streifen (jede 3. Spalte) |
| 011 | (i + j) mod 3 = 0 | Diagonalmuster |
| 100 | (i/2 + j/3) mod 2 = 0 | Blockmuster |
| 101 | (ij) mod 2 + (ij) mod 3 = 0 | Sternmuster |
| 110 | ((ij) mod 2 + (ij) mod 3) mod 2 = 0 | Rautenmuster |
| 111 | ((i+j) mod 2 + (ij) mod 3) mod 2 = 0 | Komplexe Mischung |
Wo eine Maskenbedingung wahr ergibt, wird das entsprechende Datenmodul invertiert (schwarz wird weiß, weiß wird schwarz). Strukturelle Elemente wie Suchmuster, Taktmuster und Ausrichtungsmuster werden nie maskiert.
Strafpunktbewertung
Der Encoder wendet alle acht Masken an und bewertet jede anhand von vier Strafregeln:
- Benachbarte Module: Aufeinanderfolgende Module gleicher Farbe in einer Zeile oder Spalte (Strafe steigt mit der Lauflänge)
- Blockstrafe: 2x2-Blöcke von Modulen gleicher Farbe
- Suchmusterähnliche Muster: Sequenzen, die dem Verhältnis 1:1:3:1:1 des Suchmusters ähneln
- Farbbalance: Abweichung vom 50/50-Verhältnis dunkler zu heller Module
Die Maske mit der niedrigsten Gesamtstrafe wird ausgewählt und in der Formatinformation vermerkt.
Auswirkung auf die Scanbarkeit
Während alle acht Masken gültige QR-Codes erzeugen, führt die strafbasierte Auswahl typischerweise zu einer spürbaren Verbesserung der Scanzuverlässigkeit. Schlechte Maskenwahl kann die Scanzeit erhöhen oder bei bestimmter Scanner-Hardware zu Fehlern führen, insbesondere unter schwierigen Lichtverhältnissen.
Wichtige Erkenntnisse
- Acht Maskenmuster verhindern problematische visuelle Muster im Datenbereich
- Masken werden per XOR mit Datenmodulen verknüpft (strukturelle Elemente werden nicht maskiert)
- Vier Strafregeln bewerten jeden Maskenkandidaten
- Die Maske mit der niedrigsten Strafbewertung wird automatisch ausgewählt
- Die Maskenwahl wird in den Formatinformationsbits vermerkt