Що робить маскування
Після розміщення бітів даних і корекції помилок деякі ділянки можуть мати довгі серії одного кольору або форми, схожі на пошукові шаблони. Маскування виправляє це, інвертуючи модулі там, де виконується проста формула, що рівномірніше розподіляє темне й світле.
Маска застосовується лише до області даних і корекції помилок. Пошукові шаблони, шаблони синхронізації та вирівнювання, інформація про формат і версію та темний модуль ніколи не маскуються.
Вісім масок
Маски пронумеровано від 000 до 111. Кожну задає умова щодо рядка i та стовпця j модуля; де умова виконується, цей модуль інвертується. Зчитувач дізнається номер маски з інформації про формат і застосовує ту саму маску ще раз, щоб скасувати її.
- 000: (i + j) mod 2 = 0, шахівниця
- 001: i mod 2 = 0, чергування рядків
- 010: j mod 3 = 0, кожен третій стовпець
- 011: (i + j) mod 3 = 0, діагональні смуги
- від 100 до 111: складніші комбінації рядків, стовпців і добутків
Як обирають найкращу маску
Кодувальник пробує всі вісім масок і оцінює кожен результат за чотирма штрафними правилами. Використовується маска з найменшою сумою штрафів, що робить готовий код легшим для зчитування камерами.
Деякі генератори пропускають повне оцінювання й використовують фіксовану маску, що все одно дає чинний код, але його може бути трохи важче сканувати. Micro QR використовують меншу множину з чотирьох масок із власним правилом оцінювання.
- Правило 1: довгі серії одного кольору в рядку чи стовпці
- Правило 2: блоки 2 × 2 одного кольору
- Правило 3: шаблони, схожі на співвідношення пошукових шаблонів 1:1:3:1:1
- Правило 4: загальний дисбаланс між темними й світлими модулями