常見(jiàn)二維碼上那些奇怪的圖案是什么
常見(jiàn)的二維碼上為啥三個(gè)角上有方塊
這是三個(gè)定位點(diǎn),圖形旋轉(zhuǎn)也不影響識(shí)別
要了解二維碼的原理,我們先要來(lái)好好認(rèn)識(shí)一下它?,F(xiàn)在最常見(jiàn)的二維碼是QR二維碼(QR是一種碼制),我們便以它為例。
我們看一個(gè)二維碼,最先看到的當(dāng)然是幾何圖形。這些圖形中,藏了不少重要的“部件”。南京郵電大學(xué)計(jì)算機(jī)學(xué)院副教授黃海平為我們做了詳細(xì)分析(下圖)。
首先,QR二維碼的三個(gè)“角”上有三個(gè)方塊,可別小瞧這方塊,它叫位置探測(cè)圖形。有了這三個(gè)點(diǎn),不管是從哪個(gè)方向讀取二維碼,信息都可以被識(shí)別。即使將二維碼圖形旋轉(zhuǎn),也可以識(shí)別。也許你會(huì)問(wèn),為什么不是四個(gè)角上都有方塊呢?事實(shí)上,是可以設(shè)更多的點(diǎn),但幾何知識(shí)告訴我們,3點(diǎn)就可以確定一個(gè)平面,節(jié)省出的一個(gè)角可以嵌入更多信息。
另外,二維碼上還有一些圖形混雜在幾何圖形中,是肉眼看不出來(lái)的,比如定位圖形和分隔符。定位圖形就是圖中連接三個(gè)位置探測(cè)圖形之間的兩根“線”,它的作用是決定二維碼符號(hào)中模塊的坐標(biāo),而分隔符的作用是將位置探測(cè)圖形與符號(hào)的其余部分分開(kāi)。也就是說(shuō),通過(guò)掃描能讀取的數(shù)據(jù)信息在二維碼中的位置是由定位圖形和分隔符決定的。
還有兩個(gè)圖形肉眼也難以發(fā)現(xiàn),位于左下角位置探測(cè)圖形上面的是“版本信息”,每個(gè)二維碼都有一個(gè)版本號(hào),我們常說(shuō)的V1.0、V2.0就是版本;包圍在三個(gè)位置探測(cè)圖形周邊的則是“格式信息”,這指的是這個(gè)二維碼采用的編碼格式。
二維碼為什么是黑白相間的
黑色表示二進(jìn)制的“1”,白色表示二進(jìn)制的“0”
“我們之所以對(duì)二維碼進(jìn)行掃描能讀出那么多信息,就是因?yàn)檫@些信息被編入了二維碼之中。”黃海平說(shuō),“制作二維碼輸入的信息可以分成三類,文本信息,比如名片信息;字符信息,比如網(wǎng)址、電話號(hào)碼;還有圖片信息,甚至還可以包括簡(jiǎn)短的視頻。”
數(shù)據(jù)信息是怎么被編入的呢?信息輸入后,首先要選擇一種信息編碼的碼制?,F(xiàn)在常見(jiàn)的二維碼都是以QR碼作為編碼的碼制。
QR碼是矩陣式二維碼,它是在一個(gè)矩形空間內(nèi),通過(guò)黑、白像素在矩陣中的不同分布,來(lái)進(jìn)行編碼的。我們知道電腦使用二進(jìn)制(0和1)數(shù)來(lái)貯存和處理數(shù)據(jù),而在二維碼中,用黑白矩形表示二進(jìn)制數(shù)據(jù)我們?nèi)庋勰芸吹降暮谏硎镜氖嵌M(jìn)制“1”,白色表示二進(jìn)制的“0”,黑白的排列組合確定了矩陣式二維條碼的內(nèi)容,以便于計(jì)算機(jī)對(duì)二維碼符號(hào)進(jìn)行編碼和分析。
為了讓我們更形象地了解,黃海平對(duì)信息“bcde”進(jìn)行了QR編碼(同時(shí)為了防泄露置入了密鑰“a”,這是為了保護(hù)信息),這樣經(jīng)過(guò)編碼,就出現(xiàn)了一個(gè)全部由0和1組成矩形的排列。由這個(gè)信息又生成了二維碼。
至于數(shù)據(jù)信息到底在黑白相間的矩形中的什么位置,非專業(yè)人士是無(wú)法知曉的,“這都是后臺(tái)的工作了,QR碼有自動(dòng)的規(guī)則,將信息安排在二維碼相應(yīng)的位置。”黃海平說(shuō)。
和數(shù)據(jù)信息混在一起編入二維碼的還有糾錯(cuò)碼信息。這是因?yàn)楫?dāng)我們對(duì)二維碼進(jìn)行掃描時(shí),不能保證掃的每一位信息都正確,這就需要依賴糾錯(cuò)碼信息了。
此外,二維碼中還藏著非常重要的校正圖形。當(dāng)二維碼遭到污染或者破壞時(shí),校正圖形保證了沒(méi)有被破壞的信息仍然可以被識(shí)別。也就是說(shuō),我們掃描讀出的信息在二維碼中備份了很多份。“即使二維碼的損毀面積高達(dá)50%,信息仍然可以讀取。”這也就是我們對(duì)著一個(gè)二維碼掃描時(shí),不需要只掃描整個(gè)圖形,而只對(duì)著圖形的某一個(gè)部分,就可能成功獲取信息的原因。不信你可以試試!
說(shuō)到這里,掃描二維碼為什么能讀取信息就好理解了。“在我們用光電掃描器或者手機(jī)智能終端的掃描軟件進(jìn)行掃描時(shí),其實(shí)是一個(gè)解碼的過(guò)程,解碼恰恰是編碼的逆過(guò)程。具體說(shuō)來(lái),是位置探測(cè)圖形定位二維碼的區(qū)域,根據(jù)二維碼的編碼格式信息和糾錯(cuò)碼,對(duì)數(shù)據(jù)進(jìn)行解讀。如果編碼時(shí)經(jīng)過(guò)加密處理,解碼時(shí)則需要加密時(shí)的密鑰信息。”
也許你有個(gè)疑問(wèn),此前條形碼在生活里也已經(jīng)有諸多應(yīng)用,比如超市貨架上的東西都有條形碼,二維碼相比條形碼有什么優(yōu)點(diǎn)呢?
黃海平說(shuō),條形碼是一維的,而二維碼是采用縱橫向編碼的,儲(chǔ)存的信息量就大很多。有數(shù)據(jù)顯示,最多可記錄1850個(gè)大寫(xiě)字母,2710個(gè)數(shù)字或500多個(gè)漢字。另外,二維碼的空間利用率高;二維碼除了常見(jiàn)的OR碼,還可以用其他碼制進(jìn)行編碼。還有,前面說(shuō)到的糾錯(cuò)能力和校正能力,以及加密功能,都是二維碼的優(yōu)勢(shì)。
為什么掃二維碼的一部分也能看到信息
校正圖形藏在二維碼中,有多個(gè)數(shù)據(jù)信息備份