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