Fra data til mønster
Når man laver en QR-kode, begynder man med at vælge en kodningstilstand, der passer til dataene: numerisk, alfanumerisk, byte eller kanji. Koderen omsætter dataene til bits, deler dem i kodeord på 8 bit og tilføjer Reed–Solomon-fejlrettelseskodeord på det valgte niveau. Derefter vælger den den mindste version, der kan rumme dem.
Kodeordene lægges i gitteret i en zigzagbane, der springer de faste mønstre over. Til sidst anvender koderen ét af otte maskemønstre for at bryde store tomme flader eller forvirrende former op og gemmer masken og fejlrettelsesniveauet i formatoplysningerne.
- Vælg kodningstilstand
- Kod dataene og tilføj fejlrettelseskodeord
- Vælg versionen (størrelsen)
- Placer søge-, timing- og justeringsmønstre
- Udfyld datamodulerne
- Anvend den bedste af otte masker, og skriv formatoplysningerne
Fra kamerabillede til data
Afkodning kører de samme trin i omvendt rækkefølge. Scanneren finder de tre søgemønstre, hvis forhold på 1:1:3:1:1 mellem mørkt og lyst adskiller sig fra de fleste billeder, og bruger dem sammen med timing- og justeringsmønstrene til at kortlægge gitteret. Den læser formatoplysningerne, fjerner masken og samler kodeordene.
Reed–Solomon-afkodning retter derefter de kodeord, der blev læst forkert, op til grænsen for fejlrettelsesniveauet. Hvis for meget er beskadiget, mislykkes læsningen i stedet for at give forkerte data, og derfor giver QR-koder sjældent forvansket indhold.
Hvorfor størrelse og kontrast betyder noget
Hvert trin afhænger af, at kameraet kan skelne mørke moduler fra lyse. Små moduler, lav kontrast, genskin, uskarphed eller et manglende stilleområde gør flere moduler usikre, og fejlrettelse kan kun opsluge en vis mængde. Korte data, stærk kontrast og en fri margen gør dekoderens arbejde lettest.