當你頻繁和二維碼照面的時候,你有沒有過這樣的好奇:為什么用手機掃一下就會看到一個“花花世界”?二維碼的顏色為什么是黑白相間的呢?這些不規則幾何圖形中究竟藏著怎樣的“秘密”?
二維碼起源日本,原本是Denso Wave公司為了追蹤汽車零部件而設計的一種條碼。20世紀80年代曾風靡日韓,在我國也應用多年。

掃描公園植物二維碼獲取信息。
二維碼,又稱二維條形碼,是相對于一維條形碼而言的,它是根據某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖像輸入設備或光電掃描設備自動識讀以實現信息自動處理。二維碼儲存的信息量很大,有數據顯示,最多可記錄1850個大寫字母,2710個數字或500多個漢字。
我們看一個二維碼,最先看到的當然是幾何圖形。這些圖形中,藏了不少重要的“部件”。南京郵電大學計算機學院副教授黃海平為我們做了詳細分析。
首先,QR二維碼的三個“角”上有三個方塊,可別小瞧這方塊,它叫位置探測圖形。有了這三個點,不管是從哪個方向讀取二維碼,信息都可以被識別。即使將二維碼圖形旋轉,也可以識別。也許你會問,為什么不是四個角上都有方塊呢?事實上,是可以設更多的點,但幾何知識告訴我們,3點就可以確定一個平面,節省出的一個角可以嵌入更多信息。
另外,二維碼上還有一些圖形混雜在幾何圖形中,是肉眼看不出來的,比如定位圖形和分隔符。定位圖形就是圖中連接三個位置探測圖形之間的兩根“線”,它的作用是決定二維碼符號中模塊的坐標,而分隔符的作用是將位置探測圖形與符號的其余部分分開。也就是說,通過掃描能讀取的數據信息在二維碼中的位置是由定位圖形和分隔符決定的。

還有兩個圖形肉眼也難以發現,位于左下角位置探測圖形上面的是“版本信息”,每個二維碼都有一個版本號,我們常說的V1.0、V2.0就是版本;包圍在三個位置探測圖形周邊的則是“格式信息”,這指的是這個二維碼采用的編碼格式。
二維碼為什么是黑白相間的?黑色表示二進制的“1”,白色表示二進制的“0”。“我們之所以對二維碼進行掃描能讀出那么多信息,就是因為這些信息被編入了二維碼之中。”黃海平說,“制作二維碼輸入的信息可以分成三類,文本信息,比如名片信息;字符信息,比如網址、電話號碼;還有圖片信息,甚至還可以包括簡短的視頻。”至于數據信息到底在黑白相間的矩形中的什么位置,非專業人士是無法知曉的,“這都是后臺的工作了,QR碼有自動的規則,將信息安排在二維碼相應的位置。”黃海平說。
和數據信息混在一起編入二維碼的還有糾錯碼信息。這是因為當我們對二維碼進行掃描時,不能保證掃的每一位信息都正確,這就需要依賴糾錯碼信息了。
此外,二維碼中還藏著非常重要的校正圖形。當二維碼遭到污染或者破壞時,校正圖形保證了沒有被破壞的信息仍然可以被識別。 即使二維碼的損毀面積高達50%,信息仍然可以被讀取。
說到這里,掃描二維碼為什么能讀取信息就好理解了。“在我們用光電掃描器或者手機智能終端的掃描軟件進行掃描時,其實是一個解碼的過程,解碼恰恰是編碼的逆過程。”黃海平說。