亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于農(nóng)產(chǎn)品質(zhì)量安全追溯的QR Code編碼應用與實現(xiàn)

        2012-12-31 00:00:00王永紅
        湖北農(nóng)業(yè)科學 2012年23期

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

        關鍵詞:農(nóng)產(chǎn)品質(zhì)量安全追溯;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

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

        1 QR Code二維條碼簡介

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

        2 QR Code的編碼方法

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

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

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

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

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

        A=17+4×V (2)

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

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

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

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

        2.2 數(shù)據(jù)碼字編碼

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

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

        將二進制數(shù)連接為一個序列:

        0101000001 0001011000 0001110010 0011100010 1100101010 0000000000 0000001010 0000010101 0001111000 0000110

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

        字符數(shù)為29→0000011101

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

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

        數(shù)據(jù)模式中位流長度B計算如下:

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

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

        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。

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

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

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

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

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

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

        2.3 糾錯碼字編碼

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

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

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

        07 A1 F4 88 6A BE 39

        2.4 生成最終碼字

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

        版本1-L只有1個糾錯塊,每個數(shù)據(jù)塊碼字數(shù)19,糾錯碼字數(shù)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的矩陣的編碼區(qū)域,尋像圖形、分隔符、定位圖形和校正圖形等排列在21×21的矩陣的功能圖形區(qū)域。格式信息的模塊位置暫時空置。具體見圖1。

        2.6 添加掩模圖形

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

        2.7 格式信息計算

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

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

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

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

        2)生成多項式:x3+x+1,將次數(shù)升至(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的格式信息在矩陣中的排列規(guī)則,把上述得到的格式信息放到矩陣中。格式信息在符號中出現(xiàn)兩次以提供冗余。結果如圖1。

        2.8 版本信息計算

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

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

        3 QR Code二維條碼應用實現(xiàn)

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

        3.1 QR Code編碼實現(xiàn)

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

        public interface Encoder

        {……

        //Hashtable設置糾錯等級、字符集等參數(shù);設置模式;輸入字符轉換成二制位流;計算模式指示符、字符計數(shù)指示符;添加填充位和填充碼字;編碼生成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,設置版本號、模式、糾錯等級、碼字總數(shù)、數(shù)據(jù)碼字數(shù)、糾錯塊數(shù)、糾錯碼字數(shù)、矩陣大小;

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

        //添加數(shù)字碼字;

        static void appendNumericBytes(String content, BitArray bits);

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

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

        //添加模式指示符;

        static void appendModeInfo(Mode mode, BitArray bits);

        //添加字符計數(shù)指示符;

        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;

        //計算糾錯碼字,調(diào)用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);

        //根據(jù)罰點,選擇掩模圖形參考

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

        ……

        }

        3.2 QR Code符號的生成

        運行QR Code編碼系統(tǒng),根據(jù)追溯碼信息生成QR Code符號。追溯碼為

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

        4 小結

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

        參考文獻:

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

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

        [3] 李 晴,陳聯(lián)誠,胡月明,等.農(nóng)產(chǎn)品安全監(jiān)測與追溯系統(tǒng)設計與實現(xiàn)[J].農(nóng)機化研究,2011,33(4):1-4.

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

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

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

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

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

        [9] 劉寧鐘,蘇 軍,孫 涵.工業(yè)控制環(huán)境中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] 余 華,吳振華.農(nóng)產(chǎn)品追溯碼的編碼研究[J].中國農(nóng)業(yè)科學,2011,44(23):4801-4806.

        (責任編輯 王曉芳)

        欧美怡红院免费全部视频| 粉嫩的极品女神尤物在线| 精品国产sm最大网站| 久久99精品久久久久久秒播 | 99久久人妻精品免费二区| 96免费精品视频在线观看| 麻美由真中文字幕人妻| 久久夜色国产精品噜噜亚洲av| 东北少妇不带套对白| 国产精品亚洲五月天高清| 亚欧免费无码AⅤ在线观看| 午夜男女靠比视频免费| 一本色道久久88亚洲精品综合 | 久久久久久av无码免费看大片| 欧美日韩亚洲国产无线码| 99青青草视频在线观看| 国产午夜福利久久精品| 久久香蕉国产精品一区二区三| 视频一区视频二区亚洲免费观看 | 精品中文字幕手机在线| 日本av亚洲中文字幕| 美女av一区二区三区| 亚洲人成人网毛片在线播放| 日本高清二区视频久二区| 国产自拍av在线观看视频| 老外和中国女人毛片免费视频 | 亚洲av毛片成人精品| 日本伊人精品一区二区三区| 少妇丰满大乳被男人揉捏视频| 午夜短视频日韩免费| 一区二区三区在线观看精品视频| 精品无码久久久久久久久水蜜桃| 欧美gv在线观看| 乱人伦人妻中文字幕不卡| 国产精品一区二区三区播放| 久久久无码精品亚洲日韩按摩| 久久综合给日咪咪精品欧一区二区三| 亚洲素人av在线观看| 国产精品美女久久久免费| 老湿机香蕉久久久久久| 青青草极品视频在线播放|