作者 | Dan Hollick
譯者 | 彎月
QR 碼(Quick Response Code,快速響應矩陣圖碼)是二維碼的一種,于 1994 年由日本汽車零組件大廠電裝公司的原昌宏所發明,用于在制造過程中跟蹤零件。
在日常生活中,條形碼的使用也很常見,但它們有一定的局限性:只能以特定的角度讀取,并且存儲的數據量非常有限。
而 QR 碼解決了這些問題。
QR 碼最大的特征為其左上、右上、左下三個大型的如同 " 回 " 字的正方圖案,名叫 " 定位標志 ",用于幫助解碼軟件定位,如下圖紅色方塊所示。
還有一個較小的正方圖案,名叫 " 校正標志 ",用于幫助解碼軟件識別 QR 碼的方向和角度,這樣解碼軟件就可以從任何角度讀取 QR 碼,如下圖粉紅色方塊所示。

每個 QR 碼都有黑白相間的點線,稱為 " 定時標志 ",用于確定 QR 碼的寬度以及點數,如下圖藍色點線所示。

下圖中虛線可以告訴讀者整個 QR 可以有多大,其中版本 2 是最小的版本,版本 40 是最大的。

有關格式的信息存儲在定位標志附近的兩條點帶中,如下圖的黃色點所示。
格式信息存儲了兩次,因此即使 QR 碼被部分遮擋也可以讀取。

格式信息保存了三種關鍵信息:
掩碼的類型
糾錯等級
糾錯格式

糾錯等級代表了 QR 碼中存儲了多少冗余信息,糾錯的目的是即使部分信息丟失也仍然可以讀取。
L 等級(Low)
7% 的字碼可被修正
M 等級(Medium)
15% 的字碼可被修正
Q 等級(Quartile)
25% 的字碼可被修正
H 等級(High)
30% 的字碼可被修正
糾錯等級越高,就意味著冗余等級越高,因此 QR 碼遭到破壞時仍然能被讀取的可能性就越高。如下 QR 碼雖然右下角有一大片被覆蓋,但仍然能被讀取,你可以試試看。
QR 碼在白色區域和黑色區域數量相同時讀取的效果最好。如果數據區域出現連續的空白或者連續的黑色區,就需要用到掩碼。

當利用掩碼處理 QR 碼時,數據區上對應掩模黑色模塊的單元將會反轉。
白色區域會變為黑色,而黑色區域會變為白色。

QR 碼提供八種掩碼模型,這些掩碼會被逐個嘗試,直到找到效果最好的掩碼。掩碼的信息會存儲下來,供讀取裝置解除掩碼使用。

最終,我們將得到實際數據。
不過,這個數據是從右下角開始的,按照如下圖所示的方向返回。
由于 QR 碼可以從任何角度讀取,因此實際上從哪里開始讀取都沒關系。

QR 碼中的第一塊信息可以告訴我們數據編碼的模式,而第二塊信息是數據的長度。
在我們的例子中,每個字符包含 8 個比特(也就是一個字節),一共有 24 個字節。

上圖中,綠色空間存儲的是我們的數據,后面還有大量未使用的空間。
這些空間被用來存儲糾錯信息,如下圖中紫色空間所示,目的是在 QR 碼遭到損壞時依然能夠讀取,當然實際的工作方式非常復雜,我不打算在此詳細討論。

以上就是 QR 碼的基本知識!
最后附上一張完整的說明圖。

原文地址:http://www.myzaker.com/article/63282861b15ec038646c2478