Andmetest mustrini
QR-koodi loomine algab andmetele sobiva kodeerimisrežiimi valimisega: numbriline, tähtnumbriline, baidi- või kanji-režiim. Kodeerija teisendab andmed bittideks, jagab need 8-bitisteks koodisõnadeks ja lisab valitud tasemel Reed–Solomoni veaparanduse koodisõnad. Seejärel valib ta väikseima sobiva versiooni.
Koodisõnad paigutatakse ruudustikku siksakilises teekonnas, mis jätab püsivad mustrid vahele. Lõpuks rakendab kodeerija ühte kaheksast maskimustrist, et murda suuri tühje alasid või segadust tekitavaid kujundeid, ning salvestab maski ja veaparanduse taseme vormiteabesse.
- Valitakse kodeerimisrežiim
- Andmed kodeeritakse ja lisatakse veaparanduse koodisõnad
- Valitakse versioon (suurus)
- Paigutatakse tuvastus-, ajastus- ja joondusmustrid
- Täidetakse andmemoodulid
- Rakendatakse parim kaheksast maskist ja kirjutatakse vormiteave
Kaamerapildist andmeteni
Dekodeerimine käib samad sammud vastupidises järjekorras. Skanner leiab kolm tuvastusmustrit, mille tumeda ja heleda suhe 1:1:3:1:1 eristub enamikust piltidest, ning kasutab neid koos ajastus- ja joondusmustritega ruudustiku kaardistamiseks. Ta loeb vormiteavet, eemaldab maski ja kogub koodisõnad.
Reed–Solomoni dekodeerimine parandab seejärel valesti loetud koodisõnad veaparanduse taseme piires. Kui liiga suur osa on kahjustatud, jääb kood lugemata, mitte ei anna valesid andmeid, mistõttu annavad QR-koodid harva moonutatud tulemusi.
Miks on suurus ja kontrast olulised
Iga samm sõltub sellest, et kaamera eristab tumedaid mooduleid heledatest. Väikesed moodulid, madal kontrast, peegeldus, hägusus või puuduv vaikne ala viivad rohkem mooduleid kahtluse alla ning veaparandus suudab neelata vaid teatud määral. Lühikesed andmed, tugev kontrast ja vaba ääris teevad dekodeerija töö kõige lihtsamaks.