博客專欄

EEPW首頁 > 博客 > 二維碼究竟是怎么被掃出來的

二維碼究竟是怎么被掃出來的

發(fā)布人:電巢 時間:2022-11-27 來源:工程師 發(fā)布文章
image.png


我們每天都會掃大量的二維碼,乘坐地鐵需要掃描二維碼、付款時需要掃描二維碼,那你有沒有想過,二維碼到底是怎么被識別出來的呢?

image.png


雖然每一個二維碼都是不同的樣子,但它們本質上都是由無數個黑色小方塊和白色小方塊組成。二維碼雖然看起來就是一坨正方形的東西,但實際上我們可以根據它們的功能將其分別理解為定位區(qū)、儲存區(qū)以及格式區(qū),我們用不同的顏色將它們區(qū)分開來。如下圖。

image.png


首先是定位區(qū)由三個大的方塊兒,以及兩條與其他區(qū)域藏在一起的直線組成。無論是二維碼內儲存的任何信息,手機在照射到二維碼時,首先便通過識別這三個方塊進行定位,確定二維碼的范圍和方向。通過定位之后,我們無論用任何角度去掃機器,都能對二維碼進行準確的識別。

除去定位區(qū),剩下的部分全部由造型規(guī)整的黑白方塊組成,就是數據儲存的區(qū)域。在這里,我們就要提一下二進制。我們都知道在計算機上所有的信息都由數字0和1交替組成。而在二維碼中黑色小方塊代表了1,白色小方塊代表了0。數據信息在不同的編碼規(guī)則中,按照著0和1交替組成。假如在使用的二進制編碼,中英文數字O的二進制排列是01001111。那么在二維碼中就有一個白色方塊,一個黑色方塊,兩個白色方塊和四個黑色方塊依次組成。手機對著一掃以八個方塊為主,由右下角開始依次讀取,并把這些黑白方塊轉換為0和1。再將其識別為二進制數字序列,然后進行編碼,便能知道二維碼中的信息了。當然這只是一個簡單的原理,具體實際應用中整個識別的運算過程會更加復雜一些。

image.png


說到這,二維碼中的信息就被提取出來了。我們剛剛還提到一個格式區(qū),這是干什么的呢?實際在識別方面呢,二維碼還包含了一定的容錯機制。數據序還可以做更細的劃分,將其中一部分劃出來作為容錯區(qū)域。當二維碼出現破損和遮擋時,容錯區(qū)的數據備份便可以作為補充輔助識別。而根據容錯區(qū)域的大小,我們可以將二維碼的容錯等級分為四級,大小由7%到30%不等,區(qū)域越大,容錯率自然越高。儲存區(qū)域也會相應減小,而這個容錯等級就被藏在了格式區(qū)內。那么在識別前,機器就需要先對格式區(qū)進行掃描。了解到二維碼的容錯等級后,再對內容進行準確識別。

image.png


image.png


除此之外,二維碼還根據大小分為了四十個不同的版本,不同的大小可以包含的數據多少也不盡相同。在格式區(qū)內也包含了二維碼大小的版本信息。機器在識別前也會對這一部分提前掃描識別。在實際應用中,二維碼的識別順序是按照定位去進行定位,格式去預識別二維碼信息,最后在儲存區(qū)讀取二維碼數據的順序進行的。


*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



關鍵詞: 二維碼

相關推薦

技術專區(qū)

關閉