Från data till mönster
Att skapa en QR-kod börjar med att välja ett kodningsläge som passar data: numeriskt, alfanumeriskt, byte eller kanji. Kodaren omvandlar data till bitar, delar upp dem i kodord om 8 bitar och lägger till Reed–Solomon-kodord för felkorrigering på vald nivå. Därefter väljer den den minsta version som ryms.
Kodorden läggs in i rutnätet i en sicksackbana som hoppar över de fasta mönstren. Till sist tillämpar kodaren ett av åtta maskmönster för att bryta upp stora tomma ytor eller förvirrande former, och registrerar masken och felkorrigeringsnivån i formatinformationen.
- Välj kodningsläge
- Koda data och lägg till kodord för felkorrigering
- Välj version (storlek)
- Placera sök-, synkroniserings- och justeringsmönster
- Fyll i datamodulerna
- Tillämpa den bästa av åtta masker och skriv formatinformationen
Från kamerabild till data
Avkodningen utför samma steg i omvänd ordning. Skannern hittar de tre sökmönstren, vars förhållande 1:1:3:1:1 mellan mörkt och ljust sticker ut i de flesta bilder, och använder dem tillsammans med synkroniserings- och justeringsmönstren för att kartlägga rutnätet. Den läser formatinformationen, tar bort masken och samlar in kodorden.
Reed–Solomon-avkodningen rättar sedan de kodord som lästs fel, upp till gränsen för felkorrigeringsnivån. Om för mycket är skadat misslyckas läsningen i stället för att ge felaktiga data, och det är därför QR-koder sällan ger förvrängda resultat.
Varför storlek och kontrast spelar roll
Varje steg förutsätter att kameran kan skilja mörka moduler från ljusa. Små moduler, låg kontrast, reflexer, oskärpa eller en saknad tystzon gör fler moduler osäkra, och felkorrigeringen klarar bara att ta upp så mycket. Korta data, stark kontrast och fri marginal ger avkodaren det enklaste jobbet.