Od danych do wzoru
Tworzenie kodu QR zaczyna się od wyboru trybu kodowania pasującego do danych: numerycznego, alfanumerycznego, bajtowego albo kanji. Koder zamienia dane na bity, dzieli je na 8-bitowe słowa kodowe i dodaje słowa kodowe korekcji błędów Reeda-Solomona na wybranym poziomie. Następnie wybiera najmniejszą wersję, w której dane się mieszczą.
Słowa kodowe układa się w siatce zygzakiem, który omija stałe wzorce. Na koniec koder nakłada jeden z ośmiu wzorców maski, żeby rozbić duże puste obszary i mylące kształty, i zapisuje maskę oraz poziom korekcji błędów w informacji o formacie.
- Wybór trybu kodowania
- Zakodowanie danych i dodanie słów kodowych korekcji błędów
- Wybór wersji (rozmiaru)
- Umieszczenie wzorców wyszukiwania, synchronizacji i wyrównania
- Wypełnienie modułów danych
- Zastosowanie najlepszej z ośmiu masek i zapisanie informacji o formacie
Od obrazu z aparatu do danych
Dekodowanie wykonuje te same kroki w odwrotnej kolejności. Skaner znajduje trzy wzorce wyszukiwania, których proporcja ciemnych i jasnych pól 1:1:3:1:1 wyróżnia się na tle większości obrazów, i za ich pomocą oraz wzorców synchronizacji i wyrównania odwzorowuje siatkę. Odczytuje informację o formacie, usuwa maskę i zbiera słowa kodowe.
Dekodowanie Reeda-Solomona naprawia potem błędnie odczytane słowa kodowe, do granicy wyznaczonej przez poziom korekcji błędów. Jeśli uszkodzeń jest za dużo, kod się nie odczyta, zamiast zwrócić błędne dane, dlatego kody QR rzadko dają zniekształcone wyniki.
Dlaczego liczą się rozmiar i kontrast
Każdy krok zależy od tego, czy aparat odróżni ciemne moduły od jasnych. Małe moduły, niski kontrast, odblaski, rozmycie albo brak strefy ciszy sprawiają, że coraz więcej modułów budzi wątpliwości, a korekcja błędów poradzi sobie tylko z ograniczoną ich liczbą. Krótkie dane, mocny kontrast i wolny margines dają dekoderowi najłatwiejsze zadanie.