物聯網編碼——二維碼編碼、解碼及發展(2)

一.二維碼概述

一.二維碼

二.QR碼

二.QR碼的標準

2.QR碼編碼

      第一步,數據分析。分析所輸入的數據流,確定要進行編碼的字符的類型。QR碼支持擴充解釋,可以對與缺省的字符集不同的數據進行編碼。

      第二步,數據編碼。將數據字符轉換爲位流。在當需要進行模式轉換時,在新的模式段開始前加入模式指示符進行模式轉換。在數據序列後面加入終止符。將產生的位流分爲每8位一個碼字。必要時加入填充字符以填滿按照版本要求的數據碼字數。

      第三步,糾錯編碼。按需要將碼字序列分塊,以便按塊生成相應的糾錯碼字,並將其加入到相應的數據碼字序列的後面。

      第四步,構造最終信息。在每一塊中置入數據和糾錯碼字,必要時加剩餘位。

      第五步,在矩陣中佈置模塊。將尋象圖形、分隔符、定位圖形、校正圖形與碼字模塊一起放入矩陣。

      第六步,掩模。依次將掩模圖形用於符號的編碼區域。評價結果,並選擇其中使深色淺色模塊比率最優且使不希望出現的圖形最少化的結果。

      第七步,格式和版本信息。生成格式和版本信息(如果用到時),形成符號。

      版本信息可將多達16個QR碼符號以一定的結構方式鏈接起來,如果一個符號是一個結構鏈接信息的一部分,那麼,它用位於最前邊的三個符號字符組成的標頭來指示。結構鏈接模式指示符0011放在第一個符號字符中的四個高位。結構鏈接模式指示符之後,緊接兩個結構鏈接碼字,它們分佈在第一個符號字符的四個低位、第二個符號字符的八位以及第三個符號字符的四個高位。第一個碼字是符號序列指示符,第二個碼字是奇偶校驗數據,它在結構鏈接信息的所用同一鏈接的QR碼符號中是相同的,用以確認所有閱讀的符號是同一結構鏈接信息的一部分。結構鏈接頭後緊接以第一個模式指示符開始的符號的數據碼字。如果採用ECI缺省模式之外的一個或者多個ECI模式,那麼,每一個由ECI模式指示符與ECI模式指定符組成的ECI標頭應緊接在結構鏈接頭後。

 3.QR碼的解碼

      從識讀一個QR碼符號到輸出數據字符的譯碼步驟時編碼程序的逆過程。

      1)定位並獲取符號圖像。深色淺色模塊識別位“0”和“1”的陣列;

      2)識讀格式信息(如果需要,去除掩模圖形並完成對格式信息模塊的糾錯,識別糾錯等級與掩模圖形參考);

      3)識讀版本信息,確定符號的版本;

      4)用掩模圖形參考已經從格式信息中得出對編碼區的位圖進行異或處理消除掩模;

      5)根據模塊排列規則,識讀符號字符,恢復信息的數據與糾錯碼字;

      6)用與糾錯級別信息相對應的糾錯碼字檢測錯誤,如果發現錯誤,立即糾錯;

      7)根據模式指示符和字符計數指示符將數據碼字劃分成多個部分;

      8)最後,按照使用的模式譯碼得出數據字符並輸出結果。

      參考譯碼算法在圖像中尋找符號並進行譯碼,譯碼算法參照圖像中的深色淺色狀態。

      1)選擇圖像的反射率最大值與最小值之間的中值確定閾值,使用閾值將圖像轉化位一系列深色與淺色像素;

      2)確定尋象圖形,在QR碼中的尋象圖形由位於符號的4個角中的3個角上的3個相同的位置探測圖形組成。每一個位置探測圖形的模塊序列有一個深色-淺色-深色-淺色-深色次序構成,各元素的相對寬度的比例是1:1:3:1:1。對本譯碼算法,每一元素寬度的允許誤差爲0.5(即單個模塊的方塊的尺寸允許範圍爲0.5~1.5,3各模塊寬度的方塊的寬度允許尺寸範圍爲2.5~3.5);

           a)當探測到預選區時,注意圖像中一行像素與位置探測圖形的外邊緣相遇的第一點和最後一點A和B。對該圖像中的相鄰

像素行重複探測,直到在中心方塊X軸方向所有穿過位置探測圖形的直線被全部識別。

           b)重複步驟a),在圖像的Y軸方向,識別穿過位置探測圖形中心方塊的所有像素行。

           c)確定探測圖形中心,通過在X軸方向穿過位置探測圖形中心塊的最外層的像素線上A,B兩點連線的中點連一直線,用同樣方法在另一垂直方向上劃一直線,兩條直線的交點就是位置探測圖形的中心。

           d)重複步驟a)至c),確定其他兩個位置探測圖形的中心位置。

      3)通過分析位置探測圖形中心的座標,識別哪一個位置探測圖形是左上角圖形以及符號的旋轉角度來確定富豪的方位;

      4)確定距離D(是左上角位置探測圖形中心與右上角位置探測圖形中心之間距離)、兩個探測圖形的寬度,W_UL和W_UR;

      5)計算符號的名義模塊寬度尺寸X(X=(WUL+WUR)/14);

      6)初步確定符號的版本V=[(D/X)-10]/4;

      7)如果初步確定的符號版本等於或小於6,那麼該計算值即爲版本號。如果初步確定的符號版本等於或大於7,那麼版本信息應按下列步驟譯碼:

              a)用7除以右上角位置探測圖形的寬度尺寸W_UL,得到模塊尺寸CP_UR=W_UR/7;

              b)由A、B和C找出通過三個位置探測圖形中心的導向線AC、AB。根據與導向線相平行的直線、位置探測圖形的中心座標和模塊尺寸CP_UR確定在版本信息1區域中每一模塊中心的取樣網絡。二進制值0和1根據採樣網絡上的深色淺色的圖形來確定;

           c)通過檢測並糾錯確定版本,如果有錯,根據BCH糾錯原理,對版本信息模塊出現的錯誤進行糾錯;

           d)如果發現錯誤超過糾錯容量,那麼計算左下方位置探測圖形的寬度尺寸W_DL,並按上述步驟a)、b)、c)對版本信息2進行譯碼。

      8)對於沒有校正圖形的版本1符號,繼續一下的算法的第7*步和第8*步進行譯碼,然後轉至本算法的第9步。版本2以及更高版本的符號的譯碼要求由定義的座標決定的每一校正圖形的中心座標來確定取樣網絡;

          a)左上角位置探測圖形的寬度W_UL 除以7,計算模塊尺寸CP_UL(CP_UL =W_UL /7);

          b)根據左上角位置探測圖形P_UL 的中心A的座標,平行於從第7c)得到的導向直線AB和AC的直線以及模塊尺寸CP UL 初步確定校正圖形P1和P2的中心座標;

          c)從初定的中心座標的象素開始,掃描校正圖形P1和P2中的空白方塊的輪廓,確定實際的中心座標Xi和 Yj;

          d)根據左上角位置探測圖形P_UL 的中心座標和在c中得到的校正圖形P1和P2的實際中心座標值,估計校正圖形P3的初步中心座標;

          e)按照c中同樣的步驟找到校正圖形P3的實際中心座標;

          f)確定L_X 和L_Y,L_X是指校正圖形P2和P3兩中心之間的距離,L_Y是指校正圖形P1和P3兩中心之間的距離。用校正圖形的已定義的間距除L_X和L_Y,獲得位於符號左上角區域下邊的模塊節距CP_X和右邊的模塊節距CP_Y值。


               CP_X =L_X /AP
               CP_Y =L_Y /AP
               其中,AP是校正圖形中心的模塊間距.
               以同樣方式,找出L_X'和L_Y',L_X' 是左上部位置探測圖形P_UL 與校正圖形P1的中心座標之間的水平距離。L_Y' 是左上部位置探測圖形P_UL 的中心座標與校正圖形P2的中心座標之間的垂直距離。由下面給出的公式計算符號左上角區域中上邊的模塊節距CP_X和左邊的節距CP_X'值。
               CP_X' =L_X' /(校正圖形P1的中心模塊的列座標 — 左上部位置探測圖形PUL的中心模塊的列座標)
               CP_Y' =L_Y' /(校正圖形P2的中心模塊的行座標 — 左上部位置探測圖形PUL的中心模塊的行座標);

          g)依據代表符號左上區的每一邊的模塊節距值CP_X,CP_X',CP_Y和CP_Y',確定覆蓋符號的左上區的採樣網格;

          h)在同樣方式下,確定符號右上區(被右上角位置探測圖形P UR ,校正圖形P1,P3和P4所覆蓋)和符號左下區(被右上區位置探測圖形P_UR ,校正圖形P2,P3和P5覆蓋)的採樣網格;

          i)對校正圖形P6,由校正圖形P3、P4和P5的間距,穿過校正圖形P3和P4,P4和P5的中心的導向直線以及這些圖形的中心座標值得到的模塊間距CP_X, 和CP符號右下區值,估計它的初步的中心座標;


          j、重複步驟e—h,確定符號右下區的採樣網格;

          k、用同樣原則確定符號未覆蓋區的採樣網格。

      7*)重新確定定位圖形中,深色和淺色模塊的中心點的水平平均間距X。用類似的方法,計算左邊定位圖形中,深色與淺色模塊的中心點的垂直平均間距Y。

      8*)建立一個取樣網格:(a)穿過上部定位圖形的水平線,以及與之平行以Y值爲垂直間距的水平線,在水平參考線之上形成六條與之平行的水平線,水平參考線下方與之平行的水平線的數量由符號版本要求決定。(b)通過左邊定位圖形的垂直線,以及與之平行的以X值爲水平間距的垂直線,在垂直參考線左邊形成與之平行的六條垂直線,垂直參考線右邊與之平行的線的數量由符號的版本決定。

      9)對網格的每一交點上的圖象象素取樣,並根據閾值確定是深色塊還是淺色塊,構造一個位圖,用二進制的“1”表示深色的象素,用二進制的“0”表示淺色的象素;

      10)對與左上區位置探測圖形相鄰的格式信息譯碼,得到糾錯等級和用於符號的掩模圖形。如果檢測出錯誤超過格式信息的糾錯容量,那麼,採用同樣的程序對與右上部和左下部位置探測圖形相鄰的格式信息進行譯碼;

      11)用掩模圖形對符號編碼區進行異或(XOR)處理,解除掩模並恢復表示數據和糾錯碼字的符號字符。這與在編碼程序中採用的掩模處理過程的作用正好相反;

      12)根據符號字符的佈置中的排列規則確定符號碼字;

      13)根據符號版本和糾錯等級需求,按照碼字序列構造的交替處理的逆過程,重新將碼字序列按塊排列;

      14)執行錯誤檢測與糾錯譯碼程序,糾正替化錯誤與拒讀錯誤,直到符號版本和糾錯等級所規定的最大糾錯容量;

      15)通過重新組配數據塊序列,恢復原始信息的位流;

      16)將數據位流分成若干段,每一段由模式指示符開始,段的長度由在模式指標符後的字符計數指示符確定;

      17)根據採用的模式的規則,對每一段進行譯碼。

二.二維碼的發展趨勢

      全球新一輪技術革命和產業變革蓬勃興起,以雲計算、大數據、物聯網、區塊鏈等新經濟形態正在迅速發展,二維碼技術在新的經濟形態中正在發揮越來越重要的作用,由其催生的新產業新模式新業態不斷涌現,不斷改變着我們的生產生活方式。

      目前,在全球範圍內二維碼行業發展呈現出三大趨勢:

      一是全球技術發展迅速,二維碼碼制技術、編碼技術、識讀解析技術、存儲技術等較爲成熟穩定並多樣化,而且隨着移動網絡、智能終端等外部因素的發展而日益得到優化提升。

      二是全球應用廣泛深入,隨着物聯網、工業互聯網、大數據、雲計算、區塊鏈等新興經濟形態的發展,二維碼正成爲新的物品標識技術、移動互聯入口和貿易流通結算載體,滲透到全球經濟貿易和社會生活的各個領域,引起各國政府高度重視,預計到2020年二維碼及產業相關應用市場規模達到萬億人民幣以上。

      三是全球統一協調發展需求開始凸顯,各國二維碼標準間互通互聯的應用要求日益涌現,全球範圍內二維碼產業的健康發展仍潛藏諸多不確定性,二維碼的全球化、標準化發展日益成爲影響二維碼更好支撐全球貿易便利化、產業價值鏈重塑和數字經濟發展的關鍵因素。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章