遮罩的作用
資料與錯誤更正位元放好之後,有些區域可能出現同一種顏色的長串模組,或看起來像定位圖案的形狀。遮罩的做法是,凡是簡單公式成立的地方就翻轉模組,讓深淺分布更平均。
遮罩只作用於資料與錯誤更正區。定位、時序與對位圖案、格式與版本資訊,以及深色模組,都不會被遮罩。
八種遮罩
遮罩編號為 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:列、行與乘積的更複雜組合
如何選出最佳遮罩
編碼器會試遍八種遮罩,並用四項扣分規則為每個結果評分,採用總扣分最低的遮罩,讓完成的 QR Code 更容易被相機讀取。
有些產生器會省略完整評估,直接使用固定的遮罩,這樣仍能產生有效的 QR Code,但可能稍微難掃描一點。Micro QR Code 使用較少的四種遮罩,並有自己的評分規則。
- 規則 1:同一列或同一行中同色的長串
- 規則 2:同色的 2 × 2 區塊
- 規則 3:類似 1:1:3:1:1 定位圖案比例的圖樣
- 規則 4:整體深色與淺色模組的失衡程度