張靈鳳,馮 鋒,黃 恒,2
(1.寧夏大學(xué) 信息工程學(xué)院,寧夏 銀川 750021;2.中國(guó)礦業(yè)大學(xué) 銀川學(xué)院,寧夏 銀川 750011)
二維碼技術(shù)的生成原理的分析與研究
張靈鳳1,馮 鋒1,黃 恒1,2
(1.寧夏大學(xué) 信息工程學(xué)院,寧夏 銀川 750021;2.中國(guó)礦業(yè)大學(xué) 銀川學(xué)院,寧夏 銀川 750011)
本文針對(duì)二維碼編譯原理進(jìn)行了深入分析和研究,并詳細(xì)描述了QR Code技術(shù)生成二維碼過(guò)程中的編譯規(guī)則,分別對(duì)數(shù)據(jù)編碼和糾錯(cuò)碼編碼進(jìn)行了全面分析,最后還簡(jiǎn)單介紹了使生成的二維碼矩陣布局更合理以便于掃碼器更清楚的讀取信息的掩碼。二維碼采用雙維更高效編碼的方法,通過(guò)詳細(xì)描述二維碼編譯原理,和引入實(shí)例進(jìn)行說(shuō)明驗(yàn)證,進(jìn)一步說(shuō)明了二維碼雙維編碼的高效性;在代碼編制上利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的"0"、"1"比特流的概念的巧妙性;和生活中二維碼使用的方便性。
二維碼;編譯規(guī)則;數(shù)據(jù)編碼;QR Code技術(shù)
二維碼(2-dimensional bar code)又叫做二維條碼,它是在一維條形碼的基礎(chǔ)上發(fā)展起來(lái)的一種二維條碼,在功能方面,與一維條形碼有許多共同功能,在從一維向二維發(fā)展的過(guò)程中,也具備了二維碼獨(dú)特的功能。二維碼識(shí)別信息的方法是通過(guò)圖象進(jìn)行讀碼,有專門(mén)的掃碼器和掃碼軟件,自動(dòng)辨別讀取信息從而實(shí)現(xiàn)了信息處理自動(dòng)化,它的圖形編譯規(guī)則和條碼技術(shù)具有一些共性 (每一種碼制都有其特定的字符集,每個(gè)字符都占有一定的寬度,都具有一定的校驗(yàn)功能等)。但同時(shí)又具有對(duì)不同領(lǐng)域的信息自動(dòng)識(shí)別功能和處理圖形旋轉(zhuǎn)變化點(diǎn)。
1)可以高密度編碼,信息容量大
2)編碼范圍廣。
3)容錯(cuò)能力強(qiáng),具有糾錯(cuò)功能。
4)譯碼可靠性高。
5)可引入加密措施。
6)成本低,易制作,持久耐用。
1)信息獲取(名片、地圖、WIFI密碼、資料)
名片、地圖、WIFI密碼、資料等信息,都可以編碼成二維碼,二維碼識(shí)別設(shè)備可以自動(dòng)識(shí)別獲取。
2)網(wǎng)站跳轉(zhuǎn)
二維碼掃描可以實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)到微博、手機(jī)網(wǎng)站、pc網(wǎng)站。
3)廣告推送
通過(guò)二維碼存放廣告地址,推薦客戶掃碼進(jìn)行廣告宣傳。
4)手機(jī)電商
用戶通過(guò)掃碼,手機(jī)直接購(gòu)物下單。
5)防偽溯源
用戶掃碼即可查看物品的生產(chǎn)地,后臺(tái)商家也可以獲取最終產(chǎn)品的消費(fèi)地。
6)優(yōu)惠促銷
用戶掃碼,可以下載電子優(yōu)惠券和抽獎(jiǎng)。
7)會(huì)員管理
8)用戶手機(jī)上掃碼獲取電子會(huì)員信息和享受VIP服務(wù)。
9)手機(jī)支付
掃描商品二維碼,通過(guò)銀行或第三方支付提供的手機(jī)端通道完成商品支付。
本文主要針對(duì)我們生活中常見(jiàn)的QR Code進(jìn)行簡(jiǎn)單的介紹。
1)編碼文字集合
①數(shù)字編碼(Numeric mode)
包括數(shù)字0-9,要編碼的數(shù)字每3位為一組,如果數(shù)字位數(shù)不是3的倍數(shù),最后留的1、2位數(shù)字單獨(dú)成組。
②字符編碼(Alphanumeric mode)
包括數(shù)字0-9,大寫(xiě)字母A到Z(沒(méi)有小寫(xiě)),以及符號(hào)$、%、*、+、-、.、/、:和空格。 在編碼中,字符需要先轉(zhuǎn)換成字符索引表(如表1)中相應(yīng)的45進(jìn)制的數(shù),再進(jìn)行二進(jìn)制轉(zhuǎn)換。
③字節(jié)編碼(Byte mode)
可以是0-255的ISO-8859-1字符。有些二維碼的掃描器可以自動(dòng)檢測(cè)是否是UTF-8的編碼。
2)數(shù)據(jù)表示
在二維碼圖中黑色方格代表二進(jìn)制數(shù)的1,白色方格代表二進(jìn)制數(shù)的0。
表1 字符索引表
3)標(biāo)準(zhǔn)尺寸
Version 1的尺寸是21*21,每增加一個(gè)版本每邊增加4個(gè)模塊,Version 40的尺寸是177*177。
4)資料容量
針對(duì)QR Code最大尺寸40-H計(jì)算的最大資料容量(如表2所示)。
表2 QR Code最大資料容量
5)糾錯(cuò)碼
QR Code分為四種糾錯(cuò)級(jí)別,不同級(jí)別修正容量不同,級(jí)別越高修正容量越高(如表3所示),表4列出了Version1糾錯(cuò)碼的一些特性,糾錯(cuò)碼的作用就是即使二維碼有部分殘缺也能被識(shí)別。
表3 QR Code糾錯(cuò)碼各級(jí)別修正容量
表4 糾錯(cuò)碼的特性
6)QR Code形式
QR Code類型繪制的二維碼形狀是矩形,圖1是一個(gè)簡(jiǎn)單的QR Code類型二維碼的示例圖。
圖1 QR Code形式二維碼示例圖
各QR Code編碼符號(hào)是黑色和白色正方形的小方塊進(jìn)行排列組成的矩陣式二維條碼,整個(gè)QR Code圖形分為功能圖形和編碼區(qū)格式。位置檢測(cè)圖形、位置檢測(cè)圖形分隔符和定位圖形及校正圖形的結(jié)合組成功能圖形。數(shù)據(jù)的編碼是分為不同領(lǐng)域。QR Code四邊的周圍是空白區(qū)。圖2是Version 7 QR Code的結(jié)構(gòu)示例圖。
圖2 QR Code的結(jié)構(gòu)示例圖
1)數(shù)據(jù)分析
首先確定要編碼內(nèi)容[17-19]的字符類型,按照轉(zhuǎn)換規(guī)則轉(zhuǎn)換成相應(yīng)的符號(hào)字符,然后選擇糾錯(cuò)等級(jí),糾錯(cuò)等級(jí)越高其真實(shí)的編碼數(shù)據(jù)的容量越小。如表5,Version1的各等級(jí)糾錯(cuò)碼下的QR Code的數(shù)據(jù)容量。
表5 不同等級(jí)QR Code的數(shù)據(jù)容量
2)數(shù)據(jù)編碼
編碼就是要將指定的編碼字符按編碼規(guī)則轉(zhuǎn)換成電腦能識(shí)別的二進(jìn)制數(shù),根據(jù)介紹,以下分別以數(shù)字和字母做兩個(gè)實(shí)例進(jìn)行分析講解。在編碼開(kāi)始首先要確定編碼字符的模式指示符,如表6所示。在編碼過(guò)程中,二進(jìn)制編碼的字符計(jì)數(shù)碼長(zhǎng)度如表7所示。
表6 模式指示符
實(shí)例一
在Version 1的尺寸下,糾錯(cuò)級(jí)別為H的情況下,編碼:
表7 字符計(jì)數(shù)指標(biāo)的字節(jié)位數(shù)
實(shí)例二
在Version 1的尺寸下,糾錯(cuò)級(jí)別為M的情況下,編碼:I COME FROME CHINA.
①?gòu)淖址饕碇姓业絀 COME FROME CHINA.這 18 個(gè)字條的索引如下:(18,36,12,24,22,14,36,15,27,24,22,36,12,17,18,23,10,42)。
②兩兩分組: (18,36)(12,24)(22,14)(36,15)(27,24)(22,36)(12,17)(18,23)(10,42)。
③把每一組轉(zhuǎn)成11 bits的二進(jìn)制:
(18,36)18*45+36等于846轉(zhuǎn)成 01101001110
(12,24)12*45+24等于564轉(zhuǎn)成 01000110100
(22,14)22*45+14 等于 1004轉(zhuǎn)成01111101100
(36,15)36*45+15 等于 1635轉(zhuǎn)成11001100011
(27,24)27*45+24 等于 1239轉(zhuǎn)成10011010111
(22,36)22*45+36 等于 1026轉(zhuǎn)成10000000010
(12,17)12*45+17等于557轉(zhuǎn)成 01000101101
(18,23)18*45+23等于833轉(zhuǎn)成 01101000001
(10,42)10*45+42 等于 492 轉(zhuǎn)成 00111101100
④然后把這些二進(jìn)制連接起來(lái):
⑤把字符的個(gè)數(shù)轉(zhuǎn)成二進(jìn)制(查表7 Version 1-M為9 bits):18個(gè)字符,18轉(zhuǎn)成 000010010。
⑥在頭上加上表5查找的字母編碼標(biāo)識(shí) 0010和第5步的個(gè)數(shù)編碼。
⑦在結(jié)尾加上終止符0000。
⑧將第7步得到的數(shù)據(jù)計(jì)算位數(shù),按8 bits重排,如果不是8的倍數(shù),在數(shù)據(jù)最后加0補(bǔ)足,使數(shù)據(jù)總位數(shù)是8的倍數(shù)。
⑨1-M的最大長(zhǎng)度是128(查表5),上一步得到的數(shù)據(jù)長(zhǎng)度是120,所以還需要8位補(bǔ)齊碼補(bǔ)足。補(bǔ)齊碼就是重復(fù)11101100 00010001這兩個(gè)8位字節(jié)。
3)糾錯(cuò)碼字的生成
將數(shù)據(jù)碼字分為相應(yīng)數(shù)量的塊(如表4是Version1的分塊表),每一塊分別計(jì)算出糾錯(cuò)碼字并添加到數(shù)據(jù)碼字后。
QR Code的多項(xiàng)式算法用位的模2算法和字節(jié)的模100011101算法。這是伽羅瓦域28以100011101表示主模塊多項(xiàng)式:X8+X4+X3+X2+1。
數(shù)據(jù)碼字是多項(xiàng)式的系數(shù),第一個(gè)數(shù)據(jù)碼字是最高次項(xiàng)的系數(shù),最低次項(xiàng)的系數(shù)是第一個(gè)糾錯(cuò)碼字前的最后一個(gè)數(shù)據(jù)碼字。
糾錯(cuò)碼字是數(shù)據(jù)碼字被糾錯(cuò)碼多項(xiàng)式g(x)除得的余數(shù)。余數(shù)的最高次項(xiàng)系數(shù)是第一個(gè)糾錯(cuò)碼,以此類推,最低此項(xiàng)系數(shù)是最后一個(gè)糾錯(cuò)碼字,也是整個(gè)塊的最后一個(gè)碼字。
糾錯(cuò)算法可以用圖3所示的除法電路來(lái)實(shí)現(xiàn)。
圖3 糾錯(cuò)碼字編碼電路
4)構(gòu)成信息的最終碼字序列
綜上所述,最終碼字序列包括數(shù)據(jù)碼字、糾錯(cuò)碼字和必要時(shí)的剩余碼字,構(gòu)造最終碼字序列的步驟如下:
①根據(jù)版本和糾錯(cuò)等級(jí)將數(shù)據(jù)碼字序列分為n塊。
②對(duì)每一塊算出相應(yīng)的糾錯(cuò)碼字。
③按順序依次將每一塊的數(shù)據(jù)和糾錯(cuò)碼字裝配成最終序列:數(shù)據(jù)塊1的碼字1;數(shù)據(jù)塊2的碼字1;數(shù)據(jù)塊3的碼字1;……數(shù)據(jù)塊n的最后一個(gè)碼字;糾錯(cuò)塊1的碼字1;糾錯(cuò)塊2的碼字1;糾錯(cuò)塊3的碼字1;……糾錯(cuò)塊n的最后一個(gè)碼字。例如5-H版本的分塊情況如圖4所示。
圖4 5-H版本數(shù)據(jù)編碼分塊情況
5-H版本的最終碼字序列是:D1,D12,D23,D35,D2,D13,D24,D36, … ,D11,D22,D33,D45,D34,D46,E1,E23,E45,E67,E2,E24,E46,E68,… ,E22,E44,E66,E88。 在必要的情況下,要在碼字的最后加上剩余位0。
5)碼字在矩陣中的布置
在QR Code中符號(hào)中包括規(guī)則和不規(guī)則兩種類型的符號(hào)字符。符號(hào)字符是以2個(gè)模塊寬從符號(hào)的右下角開(kāi)始分配布置,并自右向左,從下向上或從上向下交替進(jìn)行。
具體情況的字符位的布置如圖5、圖6和圖7所示。
圖5 向上或向下的規(guī)則字符位的布置
圖6 布置方向改變字符位的布置
圖7 臨近校正圖形字符位的布置
然后是填接我們的最終編碼,最終編碼的填充方式從右下角開(kāi)始填我們的各個(gè)bits,1是黑色,0是白色。如果遇到了上面的非數(shù)據(jù)區(qū),則繞開(kāi)或跳過(guò)。
6)掩碼
這樣下來(lái),我們的圖就填好了,但是,也許那些點(diǎn)并不均衡,為了QR Code閱讀的可靠性,最好均衡的安排矩陣中的黑白模塊,所以,我們還要進(jìn)行掩模,QR有8個(gè)掩模圖形可以使用。所謂掩模,就是和上面生成的圖做XOR操作。掩模只會(huì)和數(shù)據(jù)區(qū)進(jìn)行XOR操作,不會(huì)影響功能區(qū)。
上個(gè)世紀(jì)八十年代末就有國(guó)家開(kāi)始了二維碼的研究,對(duì)二維碼表示符號(hào)問(wèn)題已經(jīng)開(kāi)始研制出許多種碼制,無(wú)論哪一種二維碼信息存放密度都比一維碼要高。二十世紀(jì)九十年代初我國(guó)才正式開(kāi)始對(duì)二維碼的研究,如今二維碼已經(jīng)普及到我們生活的方方面面。在當(dāng)今社會(huì),手機(jī)掃碼的普及伴隨著二維碼已經(jīng)普遍被人們使用。本文在結(jié)合生活中對(duì)二維碼的接觸使用進(jìn)一步深入分析了二維碼如何編譯信息、糾錯(cuò)碼的容錯(cuò)機(jī)制以及碼字的矩陣排列。進(jìn)一步體現(xiàn)了二維碼高密度編碼的優(yōu)勢(shì),單位面積內(nèi)信息容量大且編碼范圍廣;二維碼除了編碼信息還有還有容錯(cuò)能力,有糾錯(cuò)功能,這樣有效的增加了譯碼的可靠性;根據(jù)我們的生活經(jīng)驗(yàn),手機(jī)隨時(shí)隨地掃二維碼,方便快捷,成本也低,網(wǎng)上有專門(mén)的二維碼制作工具,制作過(guò)程簡(jiǎn)單,而且持久耐用。
[1]張君楓.二維碼綜述 [J].消費(fèi)電子,2013(14):127.
[2]周娣.淺談二維碼的應(yīng)用[J].齊魯工業(yè)大學(xué)學(xué)報(bào),2011,25(2):62-64.
[3]陳世平.平和蜜柚使用二維碼技術(shù) [J].中國(guó)果業(yè)信息,2012(5):60.
[4]馬妮娜.淺析物聯(lián)網(wǎng)中二維碼的應(yīng)用 [J].河南科技,2014(18):206.
[5]徐國(guó)輝,陳婕嫻.手機(jī)二維碼技術(shù)原理及應(yīng)用[J].信息與電腦:理論版,2013(1):18-19.
[6]張建君.使用二維碼原理的防盜彈子鎖芯:CN,CN 101839089 A[P].2010.
[7]張學(xué)勇.基于二維碼的票務(wù)管理系統(tǒng) [D].廣州:華南理工大學(xué),2011.
[8]黃吉蘭.二維條碼QR Code編碼原理及實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù)學(xué)術(shù)交流,2013(12):2904-2908.
[9]林存艷.基于Android平臺(tái)的QR二維碼生成與解碼的研究與實(shí)現(xiàn)[D].濟(jì)南:山東師范大學(xué),2015.
[10]劉毅華.基于手機(jī)二維碼視角的企業(yè)產(chǎn)品與服務(wù)策略[J].消費(fèi)導(dǎo)刊,2015(8):285.
[11]胡瀟斐,蔡棟,趙愛(ài)玲.二維碼技術(shù)在電力通信資源管理中的應(yīng)用研究[J].數(shù)字通信世界,2016(2).
[12]時(shí)欣悅.二維碼的相關(guān)問(wèn)題[J].中國(guó)電子商務(wù),2014(12):78.
[13]卜巍,段惟榮.二維碼行業(yè)應(yīng)用研究[C]//中國(guó)計(jì)算機(jī)用戶協(xié)會(huì)網(wǎng)絡(luò)應(yīng)用分會(huì)2013年網(wǎng)絡(luò)新技術(shù)與應(yīng)用年會(huì),2013.
[15]楊軍,劉艷,杜彥蕊.關(guān)于二維碼的研究和應(yīng)用[J].應(yīng)用科技,2002,29(11):11-13.
[16]董忠言,蔣理興,肖凱.一種二維編碼標(biāo)尺的數(shù)字水準(zhǔn)儀系統(tǒng)原理設(shè)計(jì)與試驗(yàn)進(jìn)展[J].測(cè)繪科學(xué)技術(shù)學(xué)報(bào),2015,32(2):114-119.
[17]郝杰.大規(guī)模多用戶MIMO系統(tǒng)導(dǎo)頻波束形成預(yù)編碼算法及仿真[J].西安工業(yè)大學(xué)學(xué)報(bào),2015,35(6):506-510.
[18]白瑀,曹巖,房亞?wèn)|.面向多品種小批量制造的刀具可視化輔助編碼設(shè)計(jì)[J].西安工業(yè)大學(xué)學(xué)報(bào),2015,35(4):293-297.
[19]汪鶴,王勁松,張道農(nóng).基于FPGA的智能變電站二次設(shè)備曼徹斯特編碼同步研究[J].電力信息與通信技術(shù),2015,13(4):26-29.
Analysis and study of the principle of the generation of QR code technology
ZHANG Ling-feng1,F(xiàn)ENG Feng1,HUANG Heng1,2
(1.College of Information Engineering,Ningxia University,Yinchuan 750021,China;2.China University of Mining Institute of Yinchuan,Yinchuan 750011,China)
QR Code compiling principle,this paper makes a deep analysis and research,and describes in detail the QR Code technology in the process of generating QR Code compiling rules,respectively for data coding and error correcting Code coding has carried on the thorough analysis,finally introduced the generated QR Code matrix layout is more reasonable to sweep Code clearer to read the information of mask.Qr code with double d more efficient coding method,through the detailed description of qr code compiling principle,and introduced the practical validation,further illustrates the efficiency of double d qr code coding;On the compiled code using which form the basis of computer internal logic"0",the concept of"1"bit stream is clever;Qr code and life of ease of use.
QR Code; compile the rules; data encoding; QR Code technology
TN919.8;TP391.11
A
1674-6236(2017)17-0001-05
2016-10-19稿件編號(hào):201610100
國(guó)家自然科學(xué)基金(71561023);寧夏高等學(xué)??茖W(xué)研究(NGY2015035)
張靈鳳(1992—),女,山西太原人,碩士研究生。研究方向:RFID射頻工程、無(wú)線傳感器網(wǎng)絡(luò)、互聯(lián)網(wǎng)。