Van gegevens naar patroon
Een QR-code maken begint met het kiezen van een coderingsmodus die bij de gegevens past: numeriek, alfanumeriek, byte of kanji. De encoder zet de gegevens om in bits, verdeelt ze in codewoorden van 8 bits en voegt Reed-Solomon-foutcorrectiecodewoorden toe op het gekozen niveau. Daarna kiest hij de kleinste versie waarin alles past.
De codewoorden worden in een zigzagpad in het raster gelegd, waarbij de vaste patronen worden overgeslagen. Ten slotte past de encoder een van acht maskerpatronen toe om grote lege vlakken of verwarrende vormen te doorbreken, en legt hij het masker en het foutcorrectieniveau vast in de formaatinformatie.
- Kies de coderingsmodus
- Codeer de gegevens en voeg foutcorrectiecodewoorden toe
- Kies de versie (grootte)
- Plaats zoek-, timing- en uitlijnpatronen
- Vul de gegevensmodules in
- Pas het beste van acht maskers toe en schrijf de formaatinformatie
Van camerabeeld naar gegevens
Decoderen doorloopt dezelfde stappen in omgekeerde volgorde. De scanner vindt de drie zoekpatronen, waarvan de verhouding 1:1:3:1:1 tussen donker en licht opvalt in de meeste beelden, en gebruikt ze samen met de timing- en uitlijnpatronen om het raster in kaart te brengen. Hij leest de formaatinformatie, verwijdert het masker en verzamelt de codewoorden.
Reed-Solomon-decodering herstelt daarna de codewoorden die verkeerd zijn gelezen, tot de grens van het foutcorrectieniveau. Is te veel beschadigd, dan mislukt het lezen van de code in plaats van dat er verkeerde gegevens uitkomen, en daarom geven QR-codes zelden onzinnige resultaten.
Waarom grootte en contrast ertoe doen
Elke stap hangt ervan af dat de camera donkere en lichte modules kan onderscheiden. Kleine modules, laag contrast, schittering, onscherpte of een ontbrekende stille zone brengen meer modules in twijfel, en foutcorrectie kan maar een beperkte hoeveelheid opvangen. Korte gegevens, sterk contrast en een vrije rand maken het de decoder zo makkelijk mogelijk.