999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于農產品質量安全追溯的QR Code編碼應用與實現

2012-12-31 00:00:00王永紅
湖北農業科學 2012年23期

摘要:針對農產品質量安全追溯平臺中重要的條碼技術,比較了一維條碼和QR Code二維條碼的差異,分析了QR Code二維條碼的編碼方法。以農產品質量安全追溯碼32108811422681000001002112006為例,給出了QR Code二維條碼編碼的Java EE實現,經過試點應用,證明方法是可行的。

關鍵詞:農產品質量安全追溯;QR Code;Java EE

中圖分類號:TP391.4;F252 文獻標識碼:A 文章編號:0439-8114(2012)23-5486-05

Application and Implementation of QR Code Encoding Based on the Quality and Safety Traceability for Agricultural Products

WANG Yong-hong

(Depantment of Information Engineering, Jiangsu Animal Husbandry Veterinary College/Taizhou Agriculture Internet of Things Engineering Center, Taizhou 225300, Jiangsu, China)

Abstract: Targeted important bar code technology in quality safety traceability platform, the differences of the one-dimensional bar codes and QR Code barcode were compared and the theoretical basis of the QR Code barcode was described, and QR Code barcode encoding method was analyzed. Finally, taking the quality safety traceability code 32108811422681000001002112006 as an example, the realization of QR Code 2D barcode encoding was given. It proved that the method was feasible by the pilot application.

Key words: agricultural products quality safety traceability; QR Code; Java EE

農產品質量安全追溯是國內外研究的熱點[1,2]。食品追溯的研究起源于歐盟,針對食品安全問題,歐盟2004年就要求對銷售的所有食品能夠進行跟蹤和追溯,2006年再次強調從農場到餐桌的全過程可追溯性[3]。中國農產品質量安全追溯系統也出臺了一系列法律法規,如《農產品質量安全法》以及國家質檢總局實施的中國條碼推進工程,奠定了食品安全追溯的基礎[4]。目前,食品安全追溯方面的規定僅涉及信息記錄和保存的要求[5]。條碼技術是農產品質量安全追溯平臺的關鍵技術之一[6]。結合農產品質量安全追溯管理體系研究與試點項目,對QR Code(Quick Response Code,快速響應矩陣碼)二維條碼在農產品質量安全追溯平臺中的編碼等應用進行了研究。

1 QR Code二維條碼簡介

條碼有一維條碼與二維條碼之分。一維條碼優點是識讀快速、準確、可靠,制作成本低,缺點是信息容量很小。二維條碼與一維條碼相比,在二維方向上表示信息,其存儲容量比一維條碼有質的提升,多達幾千個字符,是一種簡潔而廉價的信息存儲方式[7]。根據編碼原理,二維條碼通常分為行排式二維條碼、矩陣式二維條碼[8]。QR Code屬于矩陣式二維條碼,為日本Denso公司研制,是一種新型圖形符號自動識讀處理碼制。QR Code 是目前應用最廣泛的二維條碼之一[9,10]。在農產品追溯平臺中采用了QR Code二維條碼。

2 QR Code的編碼方法

QR Code編碼器將用戶輸入的信息數據進行編碼,編碼結果以矩陣符號的形式輸出。根據ISO/IEC 18004-2006[11]、GB/T 18284-2000 QR Code快速響應矩陣碼標準規定[12],編碼方法如下。

2.1 編碼模式和糾錯等級確定

結合編碼規則,確定要進行編碼的數據類型,不同的數據采用合適的模式編碼。為應對污損還需加入糾錯區域。因為QR Code各版本符號的數據容量不同,因此,按照存儲的數據容量選取合適的版本。默認情況下選擇最小的符號版本。

QR Code符號數據容量(碼字數D)計算公式為:

D=(A×A-B-C)/8 (1)

A=17+4×V (2)

其中碼字的長度為8位二進制。A為各版本符號每邊的模塊數,取值范圍21~177;V為版本號,取值范圍1~40;B為功能圖形的模塊數;C為格式及版本信息的模塊數,版本1~6的值為31,版本7~40的值為67。

在選擇糾錯等級時,L使得符號盡可能最小,M為標準等級,Q具有高可靠性的等級,H實現最高的可靠性。但是,糾錯等級從L到M,同樣數據的符號尺寸會增加。

以追溯碼32108811422681000001002112006為例分析QR Code編碼。追溯碼長29位數字,選擇數字模式編碼。當版本號為1-L時,數據容量可達41個字符,因此,有充分的空間存放追溯碼。取版本號為1,糾錯等級為L,計算數據容量。

每邊模塊數:A=17+4×V=17+4×1=21。查表可知,功能圖形模塊數B=202,格式及版本信息的模塊數C=31;則數據容量D=(A×A-B-C)/8=(21×21-202-31)/8=26字節,剩余0個二進制位。其中,編碼數據碼字容量為19字節,糾錯碼字容量為26-19=7字節。

2.2 數據碼字編碼

首先將數據轉化為二進制位流,再根據數據類型確定相應的模式指示符。模式指示符由模式決定。ECI模式指示符為0111,中國漢字模式指示符為1101,字母數字模式指示符為0010,數字模式指示符為0001,8位字節模式指示符為0100,然后在數據信息的最后加上終止符。在將二進制序列每8位作為一個碼字時,按需補填充位和填充碼字。編碼后的數據流構成為:模式指示符+字符計數指示符+編碼后的數據流+終止符+填充碼字。

對追溯碼32108811422681000001002112006按照數字模式進行編碼,每3位一組分組,每組轉化成對應的10位或7位二進制數,具體見表1。

將二進制數連接為一個序列:

0101000001 0001011000 0001110010 0011100010 1100101010 0000000000 0000001010 0000010101 0001111000 0000110

模式指示符為0001。字符計數指示符轉換為二進制(版本1-L為10位)計算:

字符數為29→0000011101

在二進制數據前加上模式指示符0001和字符計數指示符00001010,得到二進制序列如下:

0001 0000011101 0101000001 0001011000 0001110010 0011100010 1100101010 0000000000 0000001010 0000010101 0001111000 0000110

數據模式中位流長度B計算如下:

B=4+C+10×(D DIV 3)+R (3)

其中,C為字符計數指示符的位數;D為輸入的數字字符數;R為填充位數。

R=0,當(D MOD 3)=0時4,當(D MOD 3)=1時7,當(D MOD 3)=2時

追溯碼的位流長度B=4+10+10×(29 DIV 3)+7=4+10+10×9+7=111

所需填充位=112-111=1。

將上述二進制數分成8位碼字,并加入所需填充位(用下劃線標出)。帶填充位的8位碼字流如下:

00010000 01110101 01000001 00010110 00000111 00100011 10001011 00101010 00000000 00000000 10100000 01010100 01111000 00001100(14個碼字)

由計算得知,版本為1,糾錯等級為L的QR Code,數據碼字容量為19,所以需要交替加填充碼字11101100 0001000l,將符號的數據碼字容量填滿:

00010000 01110101 01000001 00010110 00000111 00100011 10001011 00101010 00000000 00000000 10100000 01010100 01111000 00001100 00000000 11101100 0001000l 11101100 0001000l(5個填充碼字)

經過編碼輸出的含有填充碼字的實際數據碼字(以十六進制表示)如下:

10 75 41 16 07 23 8B 2A 00 00 A0 54 78 0C 00 EC 11 EC 11

2.3 糾錯碼字編碼

考慮到條碼污損,需要糾錯碼字進行糾錯。糾錯等級決定糾錯能力。糾錯碼字一般糾正拒讀和替代兩種類型的錯誤。拒讀錯誤,即在錯誤碼字位置已知的前提下,沒掃描到符號或無法譯碼的符號字符;替代錯誤,即在不知道錯誤位置的前提下,譯碼發生錯誤也就是錯誤譯碼的符號字符。

根據版本和糾錯等級,將數據碼字序列分塊,每一個塊分別計算糾錯碼字。糾錯碼字是糾錯碼多項式g(x)除以數據碼字多項式所得的余數。運算是在伽羅華域GF(28)中進行的。用該域的主模塊多項式x8+x4+x3+x2+1的基元а來生成糾錯碼字生成多項式。QR Code的多項式算法用位的模2算法(即異或算法)和字節的模100011101算法。余數多項式的最高次項即是第一個糾錯碼字,最低次項是最后一個糾錯碼字,也是整個塊的最后一個碼字。由2.1和查表可知,版本1-L碼字總數c為26,數據碼字數k為19,糾錯碼字數r為7,糾錯塊數為1。

追溯碼經編碼后進行RS糾錯編碼,生成多項式為x7+а87x6+а229x5+а146x4+а149x3+а238x2+а102x+а21,得到糾錯碼字(以十六進制表示)如下:

07 A1 F4 88 6A BE 39

2.4 生成最終碼字

數據編碼和糾錯編碼完成后,依次將每一塊的數據碼字和糾錯碼字裝配成最終的序列。一般情況下,QR Code符號的數據和糾錯塊能填滿符號的碼字容量,某些版本需要添加3、4或7個剩余位才能填滿編碼區域的模塊數。

版本1-L只有1個糾錯塊,每個數據塊碼字數19,糾錯碼字數7,所以信息的最終碼字序列如下:

10 75 41 16 07 23 8B 2A 00 00 A0 54 78 0C 00 EC 11 EC 11 07 A1 F4 88 6A BE 39

2.5 布置矩陣模塊

將得到的最終碼字按照模塊放入矩陣中,再加入功能模塊的信息,構成完整的條碼符號。模塊的布置是從符號的右下角開始向左邊進行,整體自上向下或者自下向上進行。

版本1-L有21×21個模塊,最終碼字流排列在21×21的矩陣的編碼區域,尋像圖形、分隔符、定位圖形和校正圖形等排列在21×21的矩陣的功能圖形區域。格式信息的模塊位置暫時空置。具體見圖1。

2.6 添加掩模圖形

掩模的目的是為了QR Code的可靠識別,均衡符號中深淺模塊的數量,避免尋像圖形等相關功能圖形排列在其他區域。為了便于掩模的操作,在進行掩模前標記功能圖形的二進制位值,QR Code的版本決定了功能圖形的位置。根據QR Code標準中的掩模圖形,依次對QR Code符號進行掩模,并對掩模圖形結果進行評價。掩模只用于編碼區域,掩模的過程主要通過異或操作完成。追溯碼掩模圖形結果評價如表2。從表2可知,罰分最少的為掩模圖形Maskpattern 3,即掩模圖形參考為011,采用的掩模條件為(i+j)mod 3=0(i為行號,j為列號)。

2.7 格式信息計算

格式信息為15位,其中有5個數據位,以及用BCH(15,5)編碼計算出的10個糾錯位。第1、2數據位是符號的糾錯等級,L、M、Q、H糾錯等級二進制指示符分別為01、00、11和10。格式信息數據的第3、4、5位為掩模圖形參考。格式信息的計算過程如下。

由QR Code符號的糾錯等級和掩模圖形得到5位二進制數據位;以數據位串為系數的多項式被生成多項式g(x)=x10+x8+x5+x4+x2+x+1除得到剩余多項式系數,因此得到10位糾錯位;糾錯位串附加到數據位串后形成BCH(15,5)碼串;掩模圖形101010000010010位串異或(XOR)運算掩模;將格式信息模塊圖形填入QR Code符號的保留區域內。格式信息的最低位模塊編號為0,最高位編號為14。位置為(4V+9,8)的模塊總固定為深色,不作為格式信息組成。

追溯碼編碼,選擇糾錯等級為L,由2.6可知,最佳掩模圖形為011,格式信息計算如下:

1)設定糾錯等級L為01;掩模圖形參考為011;數據為01011。

2)生成多項式:x3+x+1,將次數升至(15-5):x13+x11+x10,被g(x)除后得(x10+x8+x5+x4+x2+x+1)x3+(x7+x3+x2+x+1)

10位BCH位:0010001111;掩模前的位序列:010110010001111;用于XOR操作的掩模圖形:101010000010010;格式信息模塊圖形:111100010011101。

按照版本1的格式信息在矩陣中的排列規則,把上述得到的格式信息放到矩陣中。格式信息在符號中出現兩次以提供冗余。結果如圖1。

2.8 版本信息計算

版本信息為18位,其中有6個數據位,以及通過BCH(18,6)編碼計算出的12個糾錯位。版本1-6的符號不包含版本信息,結果全為0,不必對版本信息進行掩模。

版本信息的最低位模塊編號為0,最高位編號為17。版本信息在符號中出現兩次以提供冗余。追溯碼使用版本1,未用到版本信息。

3 QR Code二維條碼應用實現

在農產品質量安全追溯平臺中,QR Code二維條碼起著農產品追溯信息傳遞載體的作用。追溯平臺實現時,基于Java EE中間件,通過JSP的圖形界面,從區域數據中心獲取農產品關鍵數據,形成追溯碼,然后生成QR Code符號。

3.1 QR Code編碼實現

生成QR Code符號預先設置QR Code版本、糾錯等級、模式。使用Hashtable設置使用的文字編碼,然后建立BitMatrix,再把BitMatrix寫入圖片。QR Code編碼接口如下:

public interface Encoder

{……

//Hashtable設置糾錯等級、字符集等參數;設置模式;輸入字符轉換成二制位流;計算模式指示符、字符計數指示符;添加填充位和填充碼字;編碼生成Matrix;生成QRCode符號;

public static void encode(String content, ErrorCorrectionLevel ecLevel, Hashtable hints, QRCode qrCode) throws WriterException;

//選擇模式KANJI、BYTE、ALPHANUMERIC和NUMERIC;

public static Mode chooseMode(String content, String encoding);

//初始化QRCode,設置版本號、模式、糾錯等級、碼字總數、數據碼字數、糾錯塊數、糾錯碼字數、矩陣大小;

private static void initQRCode(int numInputBytes, ErrorCorrectionLevel ecLevel, Mode mode, QRCode qrCode) throws WriterException;

//添加數字碼字;

static void appendNumericBytes(String content, BitArray bits);

//添加填充位、填充碼字;

static void terminateBits(int numDataBytes, BitArray bits) throws WriterException;

//添加模式指示符;

static void appendModeInfo(Mode mode, BitArray bits);

//添加字符計數指示符;

static void appendLengthInfo(int numLetters, int version, Mode mode, BitArray bits) throws WriterException;

//轉換成二進制位流;

static void appendBytes(String content, Mode mode, BitArray bits, String encoding) throws WriterException;

//帶糾錯的交替;

static void interleaveWithECBytes(BitArray bits, int numTotalBytes, int numDataBytes, int numRSBlocks, BitArray result) throws WriterException;

//計算糾錯碼字,調用ReedSolomonEncoder的encode(toEncode, numEcBytesInBlock)方法;

static byte[ ] generate ECBytes(byte dataBytes[ ], int numEcBytesInBlock);

//添加糾錯碼字

private static void appendECI(ECI eci, BitArray bits);

//計算罰點;

private static int calculateMaskPenalty(ByteMatrix matrix);

//根據罰點,選擇掩模圖形參考

private static int chooseMaskPattern(BitArray bits, ErrorCorrectionLevel ecLevel, int version, ByteMatrix matrix) throws WriterException;

……

}

3.2 QR Code符號的生成

運行QR Code編碼系統,根據追溯碼信息生成QR Code符號。追溯碼為

32108811422681000001002112006,生成的QR Code符號如圖2。

4 小結

條碼是農產品質量安全追溯中重要的組成部分。QR Code編碼是追溯平臺中識別產品在追溯鏈上痕跡的技術保障。只有編碼正確實現,才能保證在發生農產品質量安全問題時快速獲取生產源頭,準確地定位到企業,采取應急措施[13],實現農產品追溯的目的。該文分析了追溯碼的QR Code編碼整個過程,研究了QR Code編碼在農產品質量安全追溯中的應用實現,并基于Java EE實現了QR Code編碼。采用QR Code編碼的農產品質量安全追溯平臺經過城市試點應用,效果反映很好。

參考文獻:

[1] 葉 勇,張友華,樂 毅,等.食品安全追溯研究[J].華中農業大學學報(社會科學版),2011(2):130-133.

[2] 趙金燕,王白娟,楊秀娟,等.畜產品可追溯系統的設計與研究[J].電子設計工程,2011,19(5):143-145.

[3] 李 晴,陳聯誠,胡月明,等.農產品安全監測與追溯系統設計與實現[J].農機化研究,2011,33(4):1-4.

[4] 涂傳清,王愛虎.我國農產品質量安全追溯體系建設中存在的問題與對策[J].農機化研究,2011,33(3):16-20.

[5] 高思安.食品追溯體系監管機制的構建研究[J].科技信息,2011(31):12,164.

[6] 賈華國,袁遠松,劉 志.一種面向漢字的高壓縮比彩色二維條碼的設計與實現[J].浙江工業大學學報,2010,38(5):561-565.

[7] 沈 瀟,程善閩,許仲林.二維條碼在農藥商品流通中的應用[J].安徽農業科學,2010,38(35):20420-20422.

[8] 康春穎. 網絡二維碼圖片的生成算法研究[J].黑龍江大學自然科學學報,2009,26(2):216-219.

[9] 劉寧鐘,蘇 軍,孫 涵.工業控制環境中QR Code的檢測和識別算法[J].電子學報,2011,39(10):2459-2463.

[10] Denso wave. QR Code Features[EB/OL]. http://www.denso-wave.com/qrcode/index-e.html, 2010-12-20.

[11] ISO/IEC 18004-2006, Information technology-Automatic identification and data capture techniques-QR Code 2005 bar code symbology specification[S].

[12] GB/T 18284-2000,QR Code快速響應矩陣碼[S].

[13] 余 華,吳振華.農產品追溯碼的編碼研究[J].中國農業科學,2011,44(23):4801-4806.

(責任編輯 王曉芳)

主站蜘蛛池模板: 亚洲人成网7777777国产| 青青热久免费精品视频6| 国产素人在线| 天堂亚洲网| 99热这里只有精品免费国产| 国产精品大尺度尺度视频| 国产你懂得| 成年人视频一区二区| 69av在线| 国产综合欧美| 又粗又硬又大又爽免费视频播放| 美女扒开下面流白浆在线试听| jizz在线观看| 欧美一级视频免费| 精品91自产拍在线| 在线看片中文字幕| 日韩不卡高清视频| 亚洲一区二区黄色| AV网站中文| 国产成人做受免费视频| 成年人国产视频| 国产91透明丝袜美腿在线| 亚洲国产精品日韩专区AV| 亚洲综合18p| 久久这里只有精品国产99| 久青草免费在线视频| 免费在线播放毛片| 99视频在线看| 国产视频自拍一区| 亚洲国产天堂在线观看| 一级毛片不卡片免费观看| 国产成人亚洲精品色欲AV| 欧美全免费aaaaaa特黄在线| 久久无码免费束人妻| 亚洲视频一区| 狼友av永久网站免费观看| 国产一区二区在线视频观看| 国产精品香蕉| 成人av专区精品无码国产| 成人午夜久久| 在线观看免费国产| 国产AV毛片| 国产69精品久久久久妇女| 成人在线视频一区| 国产精品va| 久久婷婷六月| 亚洲成人高清无码| 久久精品欧美一区二区| 国产精品永久久久久| 亚洲成a人在线观看| 大陆精大陆国产国语精品1024| 亚洲男人在线| 欧美日韩福利| 强奷白丝美女在线观看| 男女性午夜福利网站| 国产精品刺激对白在线| 亚洲天堂视频在线播放| 久久亚洲AⅤ无码精品午夜麻豆| 午夜不卡福利| 最新国语自产精品视频在| 免费国产小视频在线观看| 伊人蕉久影院| 亚洲三级a| 欧美色视频网站| 无码综合天天久久综合网| 99在线视频免费| 亚洲AV无码久久精品色欲| 999在线免费视频| 亚洲视频影院| 精品综合久久久久久97超人| 国产在线精彩视频论坛| 国产精品浪潮Av| 成人亚洲视频| www亚洲天堂| 精品久久国产综合精麻豆| 97久久人人超碰国产精品| 老司国产精品视频91| 欧美三级不卡在线观看视频| 国产欧美日韩视频怡春院| 国产一区二区视频在线| 91久久国产综合精品女同我| 色综合久久88色综合天天提莫 |