Fra data til mønster
Å lage en QR-kode begynner med å velge en kodingsmodus som passer til dataene: numerisk, alfanumerisk, byte eller kanji. Koderen gjør dataene om til biter, deler dem i kodeord på 8 biter og legger til Reed–Solomon-kodeord for feilretting på det valgte nivået. Så velger den den minste versjonen som rommer alt.
Kodeordene legges inn i rutenettet i en sikksakkbane som hopper over de faste mønstrene. Til slutt bruker koderen ett av åtte maskemønstre for å bryte opp store tomme flater eller forvirrende former, og lagrer masken og feilrettingsnivået i formatinformasjonen.
- Velg kodingsmodus
- Kod dataene og legg til kodeord for feilretting
- Velg versjon (størrelse)
- Plasser søke-, tids- og justeringsmønstre
- Fyll inn datamodulene
- Bruk den beste av åtte masker og skriv formatinformasjonen
Fra kamerabilde til data
Dekoding går gjennom de samme trinnene i motsatt rekkefølge. Skanneren finner de tre søkemønstrene, hvis forhold på 1:1:3:1:1 mellom mørkt og lyst skiller seg ut fra de fleste bilder, og bruker dem sammen med tids- og justeringsmønstrene til å kartlegge rutenettet. Den leser formatinformasjonen, fjerner masken og samler kodeordene.
Reed–Solomon-dekoding retter deretter opp kodeord som ble feillest, opp til grensen for feilrettingsnivået. Hvis for mye er skadet, mislykkes lesingen i stedet for å gi feil data, og derfor gir QR-koder sjelden forvrengte resultater.
Hvorfor størrelse og kontrast har betydning
Hvert trinn avhenger av at kameraet kan skille mørke moduler fra lyse. Små moduler, lav kontrast, gjenskinn, uskarphet eller manglende stillesone gjør at flere moduler blir usikre, og feilretting kan bare fange opp en viss mengde. Korte data, sterk kontrast og fri marg gir dekoderen den letteste jobben.