Co robi maskowanie
Po ułożeniu bitów danych i korekcji błędów w niektórych obszarach mogą powstać długie ciągi jednego koloru albo kształty przypominające wzorce wyszukiwania. Maskowanie rozwiązuje to, odwracając moduły wszędzie tam, gdzie spełniony jest prosty wzór, co równomierniej rozkłada ciemne i jasne pola.
Maska dotyczy tylko obszaru danych i korekcji błędów. Wzorce wyszukiwania, synchronizacji i wyrównania, informacja o formacie i wersji oraz ciemny moduł nigdy nie są maskowane.
Osiem masek
Maski numeruje się od 000 do 111. Każda jest zdefiniowana warunkiem dotyczącym wiersza i oraz kolumny j modułu; tam, gdzie warunek jest spełniony, moduł jest odwracany. Czytnik poznaje numer maski z informacji o formacie i nakłada tę samą maskę ponownie, żeby ją cofnąć.
- 000: (i + j) mod 2 = 0, szachownica
- 001: i mod 2 = 0, naprzemienne wiersze
- 010: j mod 3 = 0, co trzecia kolumna
- 011: (i + j) mod 3 = 0, ukośne pasy
- 100 do 111: bardziej złożone kombinacje wierszy, kolumn i iloczynów
Jak wybiera się najlepszą maskę
Koder sprawdza wszystkie osiem masek i ocenia każdy wynik według czterech reguł kar. Używana jest maska z najniższą łączną karą, dzięki czemu gotowy kod łatwiej odczytują aparaty.
Niektóre generatory pomijają pełną ocenę i używają stałej maski, co nadal daje poprawny kod, ale może być nieco trudniejszy do zeskanowania. Kody Micro QR używają mniejszego zestawu czterech masek z własną regułą oceny.
- Reguła 1: długie ciągi tego samego koloru w wierszu lub kolumnie
- Reguła 2: bloki 2 × 2 jednego koloru
- Reguła 3: wzory przypominające proporcję wzorców wyszukiwania 1:1:3:1:1
- Reguła 4: ogólna nierównowaga między ciemnymi a jasnymi modułami