Od dat ke vzoru
Vytvoření QR kódu začíná výběrem režimu kódování, který odpovídá datům: číselný, alfanumerický, bajtový nebo kanji. Kodér převede data na bity, rozdělí je na 8bitová kódová slova a přidá kódová slova opravy chyb Reed–Solomon na zvolené úrovni. Poté vybere nejmenší verzi, do které se data vejdou.
Kódová slova se do mřížky ukládají klikatou cestou, která přeskakuje pevné vzory. Nakonec kodér použije jednu z osmi masek, aby rozbil velké prázdné plochy nebo matoucí tvary, a zapíše masku a úroveň opravy chyb do informací o formátu.
- Zvolit režim kódování
- Zakódovat data a přidat kódová slova opravy chyb
- Vybrat verzi (velikost)
- Umístit vyhledávací, časovací a zarovnávací vzory
- Vyplnit datové moduly
- Použít nejlepší z osmi masek a zapsat informace o formátu
Od snímku z fotoaparátu k datům
Dekódování probíhá stejnými kroky opačně. Skener najde tři vyhledávací vzory, jejichž poměr tmavého a světlého 1:1:3:1:1 se na většině obrazů výrazně odlišuje, a s pomocí časovacích a zarovnávacích vzorů podle nich zmapuje mřížku. Přečte informace o formátu, odstraní masku a shromáždí kódová slova.
Dekódování Reed–Solomon pak opraví všechna špatně přečtená kódová slova, a to až do limitu dané úrovně opravy chyb. Je-li poškozeno příliš mnoho, kód se raději nepřečte, než aby vrátil chybná data, a proto QR kódy málokdy dávají zkomolené výsledky.
Proč záleží na velikosti a kontrastu
Každý krok závisí na tom, zda fotoaparát rozliší tmavé moduly od světlých. Malé moduly, nízký kontrast, odlesky, rozmazání nebo chybějící klidová zóna vyvolávají pochybnosti o dalších modulech a oprava chyb dokáže pojmout jen omezené množství. Krátká data, silný kontrast a volný okraj dávají dekodéru tu nejlehčí práci.