От данни до шаблон
Създаването на QR код започва с избор на режим на кодиране, който пасва на данните: цифров, буквено-цифров, байтов или за кандзи. Кодерът превръща данните в битове, разделя ги на 8-битови кодови думи и добавя кодови думи за коригиране на грешки по Рийд–Соломон на избраното ниво. След това избира най-малката версия, в която данните се побират.
Кодовите думи се нареждат в мрежата по зигзагообразен път, който заобикаля фиксираните шаблони. Накрая кодерът прилага една от осемте маски, за да разбие големите празни области или объркващите форми, и записва маската и нивото на коригиране на грешки в информацията за формата.
- Избор на режим на кодиране
- Кодиране на данните и добавяне на кодови думи за коригиране на грешки
- Избор на версия (размер)
- Поставяне на позиционните, времевите и изравняващите шаблони
- Запълване на модулите с данни
- Прилагане на най-добрата от осемте маски и записване на информацията за формата
От изображение на камерата до данни
Декодирането изпълнява същите стъпки в обратен ред. Скенерът намира трите позиционни шаблона, чието съотношение 1:1:3:1:1 между тъмно и светло се откроява в повечето изображения, и с тяхна помощ, заедно с времевите и изравняващите шаблони, изчертава мрежата. Чете информацията за формата, премахва маската и събира кодовите думи.
След това декодирането по Рийд–Соломон поправя всички неправилно прочетени кодови думи, до границата на нивото на коригиране на грешки. Ако е повредено прекалено много, кодът не се чете, вместо да върне грешни данни, и затова QR кодовете рядко дават изкривени резултати.
Защо размерът и контрастът са важни
Всяка стъпка зависи от това камерата да различава тъмните модули от светлите. Дребните модули, ниският контраст, отблясъците, размазването или липсващата тиха зона поставят повече модули под съмнение, а коригирането на грешки може да поеме само определено количество. Късите данни, силният контраст и чистото поле дават на декодера най-лесната задача.