為什麼二維碼無論是畫的還是刻的都能掃出來東西?

阿鑫大大


二維碼是個由黑白小方塊組成的神奇圖案,已然成為我們生活當中非常重要的一部分。收錢付款、APP互加好友、帳號登陸都需要掃一掃二維碼。

為什麼二維碼無論是畫的還是刻的都能掃出來東西?

這二維碼中的黑白小方塊兒究竟有何神奇之處,為什麼隨便一掃總能帶我們所需的東西,而且無論是畫出來、印刷打印出來或刻出來都掃出來東西?

首先,我們需要了解二維碼的原理。

二維碼又稱二維條碼,常見的二維碼為QR Code,QR全稱Quick Response,是一個近幾年來移動設備上超流行的一種編碼方式,它比傳統的Bar Code條形碼能存更多的信息,也能表示更多的數據類型。
二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的黑白相間的圖形記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。

二維碼內容能否識別和容錯率有關與製作材質無關

通過上方二維碼構成圖,我們可以看到,二維碼圖案就是由三個大方塊(定位圖案)和碼元組成。

QR碼從360°任一方向均可快速讀取。其奧秘就在於QR碼中的3處定位圖案,可以幫助QR碼不受背景樣式的影響,實現快速穩定的讀取。

無論二維碼是通過打印、印刷、手繪或是雕刻的方式製作,無論使用的是什麼材質, 只要碼元清晰,都能快速識別。二維碼能否識別和容錯率有關,與製作材質無關。

什麼是容錯率:
  • 容錯率也叫糾錯率,就是指二維碼可以被遮擋後仍能被正常掃描,而這個能被遮擋的最大面積就是容錯率。
  • 基本概念:最常見的QR二維碼,用的是裡德-所羅門碼(RS)來做糾錯。分有幾級,糾錯級別越高,整體需要攜帶的信息越多:L級可糾正約7%錯誤、M級別可糾正約15%錯誤、Q級別可糾正約25%錯誤、H級別可糾正約30%錯誤。RS碼原理比較複雜,整體基於“任意k個確定點可表示一個階數至少為k-1的多項式”,實際上發送超過k個點,就算中間有一些錯誤,也能通過數學原理反推出最初的多項式,從而獲得信息。並不是所有位置都可以缺損,像最明顯的那三個角上的方框,直接影響初始定位。中間零散的部分是內容編碼,可以容忍缺損。

  • 由於調整糾錯率的時候,二維碼的圖案分佈也要重新調整,所以每次調整糾錯率,二維碼的圖案都會發生變化。


簡而言之,二維碼就是將我們能看懂的文字語言,以機器語言的形式存儲了起來。其中黑色小方塊代表的是1,白色小方塊代表的是0,黑白相間的圖案其實就是一串編碼,掃碼的過程就是翻譯這些編碼的過程。

所以,二維碼怎麼印,印在哪裡不重要,重要只要黑白相間的圖案沒有缺失就能識別。

以上是我的回答,希望對您有所幫助。僅為個人觀點,如果您有不同看法,歡迎下方評論。我是【稻客說】,專注辦公技巧分享, 覺得有用,煩請點個贊、關注一下,謝謝。

稻客說



理論上可以實際上很難。

二維碼說白了就是一個方格平面上的點位讀取。

先在平面上畫出位置確定、校正圖形和版本信息等內容

然後將信息編碼為二進制,填入數據區

填寫完數據區後,為了不留大量空白,還得選擇MASK填充碼作為區域填充,這些填充碼是會被算法略過的,但是不寫填充碼就會出現讀取失敗的情況。

在理解原理且手動進行編碼換算的情況下,你可以手動計算出一個精確的二維碼,畢竟一個最簡單的二維碼只有21*21的大小,計算工作量並不大。只要事先打好格子一個個格子填黑或留白,完成這個二維碼生成過程並不是非常難的事情。如果是為了學習並融會貫通二維碼的相關技術這麼做也無可厚非。如果是為了其他原因比如挑戰自我的話,就有點無聊了。


分享到:


相關文章: