原文鏈接:https://typefully.com/DanHollick/qr-codes-T7tLlNi
作者 | Dan Hollick
譯者 | 彎月
出品 | CSDN(ID:CSDNnews)
QR碼(Quick Response Code,快速響應矩陣圖碼)是二維碼的一種,于1994年由日本汽車零組件大廠電裝公司的原昌宏所發明,用于在制造過程中跟蹤零件。
在日常生活中,條形碼的使用也很常見,但它們有一定的局限性:只能以特定的角度讀取,并且存儲的數據量非常有限。
而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碼的基本知識!

