畢業(yè)設(shè)計(jì)-二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)設(shè)計(jì)-二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)設(shè)計(jì)-二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)設(shè)計(jì)-二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)設(shè)計(jì)-二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩73頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、題目名稱:二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)2014 年 5 月 二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)二維碼的解碼器Design and Implementation ofTwo-Dimensional Code Generation andRecognition systemThe Two-Dimensional Code Decoder2014 年 5 月摘要條碼技術(shù)是一種融編碼,印刷,數(shù)據(jù)采集和處理與一體的自動(dòng)識(shí)別技術(shù)。條碼分為一維碼和二維碼。二維碼除了具有一般一維碼的優(yōu)點(diǎn)外還具有信息容量大,可靠性高的優(yōu)點(diǎn)。本論文首先介紹了二維碼的種類,并介紹了QR Code的編碼規(guī)則。然后分析了基于圖像處理

2、的二維碼解碼算法的一般過程, 并對(duì)圖像預(yù)處理二維碼 的定位與校正以及數(shù)據(jù)糾錯(cuò)過程中涉及到的關(guān)鍵算法進(jìn)行分析比較針對(duì)快速響應(yīng) 矩陣碼 ( Q R c o d e ) , 詳細(xì)設(shè)計(jì)基于圖像處理的Q R 碼解碼算法, 為了降低算法復(fù)雜度并提高識(shí)別效率, 改進(jìn)了二維碼圖像的二值化算法和Q R 碼定位算法。并對(duì)算法改進(jìn)后的執(zhí)行效率以及容錯(cuò)性能進(jìn)行分析, 結(jié)合算法執(zhí)行時(shí)間分析結(jié)果對(duì)關(guān)鍵算法進(jìn)行優(yōu)化。實(shí)驗(yàn)結(jié)果表明, 改進(jìn) 的 Q R 碼解碼算法執(zhí)行效率較高而 且穩(wěn) 定 , 并且在 光照不均存在 噪聲 以及 圖像變形等情況下均可以正確解碼。關(guān)鍵詞:圖像處理;二維碼識(shí)別;二維碼解碼算法AbstractBarco

3、de technology is an automatic identification technology that is consist of coding,printing,data acquisition and processing. Barcode can be divided into one-dimensional barcode and two-dimsional barcode. In addition to the advantages of the one-dimensional barcode,two-dimensional barcode also has the

4、 information capacity, and high reliability. This paper introduces the types of 2D barcode and the QR Code encoding rules . Then,analyze 2D barcode decoding algorithm that is based on image processing,compare the different algorithm in the processing of image pre-processing ,position and adjustment

5、and data correction .Then detailed design the decoding algorithm for QR Code,improve the binarization algorithm for 2D barcode image and QR Code positioning algorithm . By analyzing the execution time of the decoding algorithm ,find and optimize the key algorithms.The experimental results show that

6、the improved QR Code decoding algorithm is efficient and stable ,and can identify the QR Code image uneven illumination,with noise or deformation.Key Words: Image processing; Two-dimensional code recognition;2D barcode decoding algorithm目錄摘要 I.I. . TOC o 1-5 h z Abstract III目 錄 I.V. HYPERLINK l book

7、mark8 o Current Document 第1章緒論 1 HYPERLINK l bookmark10 o Current Document 研究背景與意義 1 HYPERLINK l bookmark12 o Current Document 二維碼識(shí)別技術(shù)的當(dāng)前研究現(xiàn)狀 1 HYPERLINK l bookmark14 o Current Document 研究內(nèi)容 3 HYPERLINK l bookmark16 o Current Document 論文組織結(jié)構(gòu) 3 HYPERLINK l bookmark18 o Current Document 第2章QR 碼編碼規(guī)則 4

8、HYPERLINK l bookmark20 o Current Document QR 碼符號(hào)結(jié)構(gòu) 4 HYPERLINK l bookmark22 o Current Document QR 碼編碼方法 5 HYPERLINK l bookmark24 o Current Document 第3章二維碼識(shí)別系統(tǒng)的總體框架 8 HYPERLINK l bookmark26 o Current Document 二維碼識(shí)別系統(tǒng)的目標(biāo) 8 HYPERLINK l bookmark28 o Current Document 二維碼識(shí)別系統(tǒng)的功能需求 8 HYPERLINK l bookmark30

9、 o Current Document 二維碼解碼功能的設(shè)計(jì) 9二維碼識(shí)別系統(tǒng)總體流程實(shí)現(xiàn)規(guī)劃 9圖像預(yù)處理模塊流程 10二維碼譯碼模塊流程 11 HYPERLINK l bookmark32 o Current Document .軟件開發(fā)平臺(tái) 12 HYPERLINK l bookmark34 o Current Document 第 4章 圖像預(yù)處理模塊的設(shè)計(jì)與實(shí)現(xiàn)13 HYPERLINK l bookmark36 o Current Document 彩色圖像灰度化 13 HYPERLINK l bookmark38 o Current Document 圖像去噪 14 HYPERLI

10、NK l bookmark40 o Current Document 圖像二值化 14第 5章 二維碼解碼模塊的設(shè)計(jì)與實(shí)現(xiàn) 16二維碼解碼流程 16 HYPERLINK l bookmark45 o Current Document 探測(cè)圖像識(shí)別的設(shè)計(jì)與實(shí)現(xiàn) 16尋找探測(cè)圖形 16圖像校正 19 HYPERLINK l bookmark47 o Current Document 二維碼版本信息確定的設(shè)計(jì)與實(shí)現(xiàn) 19確定每個(gè)模塊的寬和高 19二維碼粗略版本確定 20 HYPERLINK l bookmark49 o Current Document 二維碼模塊采樣的設(shè)計(jì)與實(shí)現(xiàn) 21二維碼差分圖像

11、 21二維碼模塊采樣 22 HYPERLINK l bookmark51 o Current Document 二維信息解碼的設(shè)計(jì)與實(shí)現(xiàn) 23版本信息的確定 23二維碼格式信息的實(shí)現(xiàn) 25去除二維碼掩膜的實(shí)現(xiàn) 26得到數(shù)據(jù)流 27數(shù)據(jù)糾錯(cuò)28各模式下的譯碼 28 HYPERLINK l bookmark53 o Current Document 第 6 章 系統(tǒng)的調(diào)試、運(yùn)行與測(cè)試32 HYPERLINK l bookmark55 o Current Document 系統(tǒng)開發(fā)過程中的問題與解決方法32關(guān)于尋像圖形的尋找 32關(guān)于二維碼的版本信息 32二維碼模塊的采樣 32加載靜態(tài)庫 32 HY

12、PERLINK l bookmark57 o Current Document 系統(tǒng)的運(yùn)行與測(cè)試33運(yùn)行結(jié)果 33運(yùn)行性能分析 34 HYPERLINK l bookmark65 o Current Document 第7章 結(jié) 論 36致謝 37 HYPERLINK l bookmark69 o Current Document 參考文獻(xiàn) 38附錄 39附錄A: 主要源程序39附錄B: 軟件使用說明書46VI 二維碼生成與識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)- 二維碼的解碼器 第 1 章 緒論本章首先介紹本文課題研究背景與意義, 然后從二維碼的識(shí)別技術(shù)當(dāng)前研究現(xiàn)狀 , 最后介紹了本文的研究內(nèi)容工作描述以及論

13、文的組織結(jié)構(gòu)。研究背景與意義一維條碼是由一組粗細(xì)不同,黑白相同的,條,空及相對(duì)應(yīng)的字符(數(shù)字字母)組成的條形符號(hào),只是在一個(gè)方向(一般是水平方向)表達(dá)信息,在垂直方向不表達(dá)任何信息,其一定的高度一般是為了便于閱讀器的對(duì)準(zhǔn)。但是一維條形碼存儲(chǔ)的數(shù)據(jù)容量較?。?0 個(gè)字符左右),只能包含字母和數(shù)字,條碼尺寸較大(空間利用率很低)并且一旦損壞就不能識(shí)別。二維條形碼是在一維條形碼的基礎(chǔ)上發(fā)展起來的,是用某種特定的幾何圖形按一定的規(guī)律在平面上分布的條,空相見的圖形來記錄數(shù)據(jù)符號(hào)信息,克服了一維碼的缺點(diǎn)。并且由于二維碼的信息密度高,存儲(chǔ)量大,糾錯(cuò)能力強(qiáng),而且其本身具有一定的防偽功能而得到迅速發(fā)展。國外的二

14、維碼技術(shù)已經(jīng)處于應(yīng)用階段,并且已研制了性能較好的二維碼識(shí)別系統(tǒng)。而我國雖也研制出了用于識(shí)別二維碼的系統(tǒng),但和國外相比還是有一定的差距的。由于二維碼這種新興的自動(dòng)識(shí)別技術(shù)有其他自動(dòng)識(shí)別技術(shù)無法比擬的優(yōu)勢(shì),它一出現(xiàn)就受到的很高的重視。本文研究的解碼技術(shù)主要針對(duì)的是QR碼。QR碼是由日本 Denso公司于 1994年 9月研制的一種矩陣二維碼符號(hào),它除具有一維條碼及其它二維條碼所具有的信息容量大、可靠性高、可表示漢字及圖象多種文字信息、保密防偽性強(qiáng)等優(yōu)點(diǎn)外,還具有如下主要特點(diǎn):普通的一維條碼只能在橫向位置表示大約 20 為的字母或數(shù)字信息,無糾錯(cuò)功能,使用時(shí)候需要后臺(tái)數(shù)據(jù)庫的支持,而二維條碼是橫向縱

15、向都存有信息,可以放入字母、數(shù)字、漢字、照片、指紋等大量信息,相當(dāng)一個(gè)可移動(dòng)的數(shù)據(jù)庫。如果用一維條碼與二維條碼表示同樣的信息,QR 二維碼占用的空間只是條碼1 11 的面積。二維碼已廣泛應(yīng)用與社會(huì)的各個(gè)系統(tǒng),如商品信息獲取,網(wǎng)站跳轉(zhuǎn),廣告推送,手機(jī)電商,防偽追溯,優(yōu)惠促銷,會(huì)員管理,手機(jī)支付等,因此研究二維碼的識(shí)別系統(tǒng)具有很重要的意義。二維碼識(shí)別技術(shù)的當(dāng)前研究現(xiàn)狀二維碼的識(shí)別系統(tǒng)主要包括兩類: 專用二維碼掃描器和安裝有二維碼解碼軟件. 下面主要介紹基于軟件的二維碼識(shí)別的發(fā)展現(xiàn)狀。二維碼掃描器的生產(chǎn)商主要有ARGOX公司Symbol訊寶公司(2004 年被摩托羅拉公司收購)CIPherlab 公

16、司以及國內(nèi)的福建新大陸公司ARGOX公司的AS一 950 影像式二維碼掃描器具備綠光指引功能??炫?(QuickMark) 二維碼是目前移動(dòng)終端上最快的一維碼二維碼解碼軟件之一,支持 Apple105 Android Windows phone 和 symbian560 四種智能手機(jī)平臺(tái), 具有快速識(shí)別自動(dòng)解碼等功能并針對(duì)互聯(lián)網(wǎng)應(yīng)用, 增加一維碼產(chǎn)品信息查詢聯(lián)網(wǎng)搜索信息二維碼生成分享網(wǎng)址URL直接訪問等功能。我查查是一款基于圖形傳感器和移動(dòng)互聯(lián)網(wǎng)的商品條形碼比價(jià)的生活實(shí)用類手機(jī)應(yīng)用。 條碼掃描支持一維EAN碼、 QR碼 (二維碼)、 二維WEPC碼和快遞單號(hào)( code128碼)等。通過我查查

17、,照一照商品條碼,哪家店有賣、售價(jià)多少、店家的電話地址、營業(yè)時(shí)間、網(wǎng)址等等信息,馬上會(huì)顯示在手機(jī)屏幕上。QR 掃描器為iPhone 及 iPod Touch 而設(shè)的一個(gè)便攜式QR碼掃描器??焖偌坝行У膶?shí)時(shí)自動(dòng)檢測(cè)模式。有以下特點(diǎn)- 實(shí)時(shí)掃描模式- 通過電郵、FaceBook 或Twitter 分享出去 - 綜合網(wǎng)頁瀏覽器- 綜合地圖瀏覽- 新的界面設(shè)計(jì)- 創(chuàng)建屬于您的 QR碼 - MECARD支持- 網(wǎng)膜圖形 - 用電郵發(fā)送掃描的照片。此外,微信、QQ也有二維碼解碼功能。二維碼解碼軟件的實(shí)現(xiàn)依賴于二維碼解碼算法, 但是二維碼解碼算法過程復(fù)雜 , 而且使用的相關(guān)技術(shù)繁多, 所以目前的解碼算法的研

18、究主要是對(duì)解碼算法過程中關(guān)鍵技術(shù)的研究。二維碼掃描器采用硬件解碼, 具有識(shí)別效率高可識(shí)別多種二維碼適應(yīng)能力強(qiáng)等優(yōu)點(diǎn) , 但是技術(shù)封閉且價(jià)格昂貴; 而二維碼解碼軟件采用軟件解碼, 具有成本低技術(shù)開放等優(yōu)點(diǎn), 但是識(shí)別效率一般, 對(duì)運(yùn)行平臺(tái)要求較高, 而且目前僅能識(shí)別 QR碼 。此外 , 可以通過對(duì)二維碼進(jìn)行改造來提高識(shí)別效率Microsoft Tag , 即彩色條碼可以利用較低的分辨率條碼圖像來提供較高的數(shù)據(jù)容量, 與傳統(tǒng)二維碼相比 , 彩色條碼降低了對(duì)采集圖像分辨率的需求。Ankit Mohan 等結(jié)合光學(xué)原理和二維碼技術(shù), 設(shè)計(jì)了一種新的載體形式, 取名為 Bokode , 基本原理為在二維

19、碼上添加透鏡( 或者是具有小孔的隔光片), 實(shí)現(xiàn)對(duì)Bokode的遠(yuǎn)距離識(shí)別。研究內(nèi)容本文主要圍繞二維碼的解碼的關(guān)鍵技術(shù)進(jìn)行研究,主要研究基于圖像處理的二維碼解碼關(guān)鍵技術(shù)。主要介紹了圖像預(yù)處理, 二維碼定位技術(shù)以及數(shù)據(jù)譯碼過程中的關(guān)鍵算法。并在此基礎(chǔ)上詳細(xì)設(shè)計(jì)了基于圖像處理的QR碼解碼算法, 主要對(duì)二維碼的二值化算法和QR碼定位算法進(jìn)行改進(jìn)。 本文的主要工作包括 : 分析基于圖像處理的二維碼解碼算法中的關(guān)鍵技術(shù); 詳細(xì)設(shè)計(jì)基于圖像處理的QR碼解碼算法 , 對(duì)二維碼圖像的二值化算法和QR碼定位算法進(jìn)行改進(jìn)。論文組織結(jié)構(gòu)本文一共分為六章,各章的大致內(nèi)容如下:第一章,緒論。本章首先介紹了本文課題的背景

20、和意義,然后介紹了二維碼識(shí)別的研究現(xiàn)狀。最后介紹本文的研究內(nèi)容和組織結(jié)構(gòu)。第二章,二維碼的編碼規(guī)則。本章主要從QR Code的數(shù)據(jù)編碼,數(shù)據(jù)糾錯(cuò),和圖像掩碼三個(gè)方面介紹QR Code。第三章, 二維碼識(shí)別系統(tǒng)的總體框架。本章主要介紹了二維碼識(shí)別系統(tǒng)的目標(biāo),功能需求,總體流程和開發(fā)條件。第四章,二維碼圖像預(yù)處理模塊的設(shè)計(jì)和實(shí)現(xiàn)。本章主要介紹了二維碼圖像的灰度化,圖像的去噪和圖像的二值化。并對(duì)二值化算法進(jìn)行了改進(jìn)。第五章,二維碼解碼模塊的設(shè)計(jì)與實(shí)現(xiàn)。本章在第四章的基礎(chǔ)上進(jìn)行解碼。主要介紹了二維碼的定位算法,二維碼格式信息和版本信息的實(shí)現(xiàn)方法,二維碼模塊的采樣方法。二維碼解碼信息的設(shè)計(jì)與實(shí)現(xiàn)。第六章

21、,系統(tǒng)的調(diào)試,運(yùn)行和測(cè)試。本章主要介紹設(shè)計(jì)本系統(tǒng)遇到的問題和功能測(cè)試。第 2 章 QR 碼編碼規(guī)則QR 碼符號(hào)結(jié)構(gòu)每個(gè) QR 碼由名義上的正方形模塊構(gòu)成,組成正方形陣列,它由編碼區(qū)域和包括尋像圖形、分隔符、定位圖形在內(nèi)的功能圖形組成,功能圖形不能用于數(shù)據(jù)編碼。符號(hào)的四周由空區(qū)包圍。如圖2.1 所示。圖 2.1 QR 碼符號(hào)結(jié)構(gòu)符號(hào)版本和規(guī)格QR碼符號(hào)共有40 種規(guī)格,分別是版本l 搬本 40,版本 1 的規(guī)格為21x21 個(gè)模塊,版本2 為 25x25 模塊。以此類推,版本N 的規(guī)格每行每列為21+4(N 一 1)個(gè)模塊。尋像圈形尋像圖形包括3 個(gè)位置相同的位置探測(cè)圖形,分別位于符號(hào)的左上角、

22、右上角、和左下角,如圖2-1 所示。每個(gè)位置探測(cè)圖形可以看作是由3 個(gè)重疊的同心的正方形組成,他們分別為7 7 個(gè)深色模塊、5x5 個(gè)淺色模塊、3X3個(gè)深色模塊。位置探測(cè)圖形的模塊寬度比為1 : 1: 3: 1: l 。符號(hào)中其它地方遇到類似圖形的可能性極小。因此,識(shí)別組成尋像圖形的3 個(gè)位置探測(cè)圖形,可以明確地確定視場(chǎng)中符號(hào)的位置和方向。分隔符每個(gè)位置探測(cè)圖形和編碼區(qū)域之間有寬度為1 個(gè)模塊的分隔符,如圖 2-1 所示。全部由淺色模塊組成。定位圖形定位圖形是垂直和水平方向一個(gè)模塊寬的一列和一行,由深色淺色模塊交替組成,其開始和結(jié)尾都是深色模塊,如圖2-1 所示。校正圖形每個(gè)校正圖形可看作是3

23、 個(gè)重疊的同心正方形,由5 5 個(gè)深色模塊、3 3 個(gè)淺色模塊以及位于中心的一個(gè)深色模塊組成。校正圖形的數(shù)量由QV,碼的版本號(hào)決定,版本2 及以上的符號(hào)均有校正圖形。編碼區(qū)域編碼區(qū)域包括表示數(shù)據(jù)碼字、糾錯(cuò)碼字、版本信息和格式信息的符號(hào)字符。空白區(qū)空白區(qū)為環(huán)繞在符號(hào)四周的4 個(gè)模塊寬的區(qū)域,其反射率與淺色模塊相同。QR 碼標(biāo)準(zhǔn)中編碼步驟如圖2.2所示圖 2.2 QR 碼編碼步驟QR 碼編碼方法數(shù)據(jù)編碼將輸入的數(shù)據(jù)轉(zhuǎn)換為一個(gè)位流,如果ECI 是缺省的,那么一個(gè)數(shù)據(jù)流將包括模式指示符、字符計(jì)數(shù)指示符、數(shù)據(jù),最后以4 位終止符0000 表示。其結(jié)構(gòu)如圖2.3所示。圖 2.4 定義了每個(gè)模式的模式指示符

24、,圖2.5 定義了采用不同版本的字符計(jì)數(shù)指示符的長度。下面介紹幾種常用的編碼模式。2.3 數(shù)據(jù)編碼結(jié)構(gòu)圖 2.4 模式指示符圖 2.5 字符計(jì)數(shù)指示符數(shù)字模式數(shù)字模式下,將輸入的數(shù)據(jù)每三位分為一組轉(zhuǎn)化為10 位二進(jìn)制數(shù),剩余位轉(zhuǎn)化為 7 位或 4 位二進(jìn)制數(shù)。最后將二進(jìn)制數(shù)據(jù)連接起來并在前面加上模式指示符和數(shù) 字計(jì)數(shù)指示符。字母模式在字母模式下,將輸入的數(shù)據(jù)以兩個(gè)字符為一組,將前面字符的值乘以45 與第二個(gè)字符的值相加,結(jié)果轉(zhuǎn)化為11 位二進(jìn)制數(shù),若剩余一位,則將其轉(zhuǎn)化為6 位二進(jìn)制數(shù)。最后將二進(jìn)制數(shù)據(jù)連接并在前面加上模式指示符和數(shù)字計(jì)數(shù)指示符。(3)8 位字節(jié)模式在 8 位字節(jié)模式模式下,直

25、接將二進(jìn)制數(shù)連接起來并在前面加上模式指示符和字符指示符。中國漢字模式在中國漢字模式下,每個(gè)漢字符由兩個(gè)字節(jié)表示,字符值為GB2312圖形字符的內(nèi)碼值。將數(shù)據(jù)字符兩個(gè)字節(jié)為一組轉(zhuǎn)化為1 3 位二進(jìn)制數(shù),然后二進(jìn)制數(shù)連接起來并在前面加上模式指示符和字符指示符。糾錯(cuò)編碼QR 碼采用糾錯(cuò)算法生成一系列糾錯(cuò)碼字,添加在數(shù)據(jù)碼字序列后面,使得符號(hào)在遇到損壞時(shí)不致丟失數(shù)據(jù)。糾錯(cuò)共有4 個(gè)糾錯(cuò)等級(jí),分別是: L 級(jí)糾錯(cuò)容量:7;M級(jí)糾錯(cuò)容量:15;Q級(jí)糾錯(cuò)容量:25;H級(jí)糾錯(cuò)容量30。掩膜掩模的目的是均衡地安排深色與淺色模塊,以及盡可能地避免位置探測(cè)圖形的位圖 101l101 出現(xiàn)在符號(hào)的其他區(qū)域。掩模不用于

26、功能圖形,用多個(gè)矩陣圖形連續(xù)地對(duì)已知的編碼區(qū)域的模塊圖形( 格式信息和版本信息除外) 進(jìn)行XOR操作。對(duì)不同掩模圖形的結(jié)果計(jì)分,選擇得分最低的掩模方案。第 3 章 二維碼識(shí)別系統(tǒng)的總體框架二維碼識(shí)別系統(tǒng)的目標(biāo)QR碼的主要應(yīng)用的項(xiàng)目可分成四類:自動(dòng)化文字傳輸:通常應(yīng)用在文字的傳輸,利用快速方便的模式,讓人可以輕松輸入如地址、電話號(hào)碼、行事歷等,進(jìn)行名片、進(jìn)程數(shù)據(jù)等的快速交換。數(shù)字內(nèi)容下載:通常應(yīng)用在電信公司游戲及影音的下載,在帳單中打印相關(guān)的QR碼信息供消費(fèi)者下載,消費(fèi)者通過QR碼的解碼,就能輕易連接到下載的網(wǎng)頁,下載需要的數(shù)字內(nèi)容。網(wǎng)址快速鏈接:以提供用戶進(jìn)行網(wǎng)址快速鏈接、電話快速調(diào)用等。身分

27、鑒別與商務(wù)交易:許多公司現(xiàn)在正在推行QR碼防偽機(jī)制,利用商品提供的 QR碼鏈接至交易網(wǎng)站,付款完成后系統(tǒng)發(fā)回QR碼當(dāng)成購買身分鑒別,應(yīng)用于購買票券、販賣機(jī)等。在消費(fèi)者端,也開始有企業(yè)提供了商品品牌確認(rèn)的服務(wù),通過QR碼鏈接至統(tǒng)一驗(yàn)證中心,去核對(duì)商品數(shù)據(jù)是否正確,并提供生產(chǎn)履歷供消費(fèi)者查詢,消費(fèi)者能夠更明白商品的信息,除了能夠杜絕仿冒品,對(duì)消費(fèi)者的 購物更是多了一層保護(hù)。二維碼識(shí)別系統(tǒng)的功能需求本系統(tǒng)是實(shí)現(xiàn)二維碼的編碼與譯碼。首先根據(jù)二維碼的編碼規(guī)則生成二維碼,然后采集二維碼,將采集的二維碼圖像郊游解碼器進(jìn)行解碼。二維碼可以包含許多信息,最常見的是一些產(chǎn)品信息。當(dāng)然還可以包含一個(gè)鏈接地址;一個(gè)短

28、信內(nèi)容;一個(gè)后臺(tái)應(yīng)用程序等。本解碼器主要實(shí)現(xiàn)下面幾個(gè)功能:顯示產(chǎn)品信息如果二維碼包含的是這一類信息,就直接顯示出來。跳轉(zhuǎn)鏈接地址如果二維碼的信息是一個(gè)鏈接地址,那么本軟件就調(diào)用相應(yīng)的瀏覽器去打開這個(gè)鏈接地址。發(fā)送短信如果二維碼的信息是一跳短信息,那么本軟件就調(diào)用發(fā)短信的程序去發(fā)送這個(gè)短信。系統(tǒng)的功能需求流程圖如3.1 下所示。圖 3.1 系統(tǒng)功能圖二維碼解碼功能的設(shè)計(jì)二維碼識(shí)別系統(tǒng)總體流程實(shí)現(xiàn)規(guī)劃二維碼識(shí)別系統(tǒng)模塊之間以及系統(tǒng)總體算法的實(shí)現(xiàn)規(guī)劃,各模塊之間以及系統(tǒng)總體算法的流程,如圖3.2所示。圖 3.2 二維碼識(shí)別系統(tǒng)框架圖首先對(duì)拍攝的圖像進(jìn)行圖像預(yù)處理,預(yù)處理的步驟將在下一小節(jié)介紹。然后對(duì)

29、圖像預(yù)處理模塊流程圖像預(yù)處理如圖3.3,步驟如下:對(duì)采樣的圖像進(jìn)行灰度化處理對(duì)步驟一處理的圖像進(jìn)行去噪處理對(duì)步驟二處理的圖像二值化處理3.3 圖像預(yù)處理流程3.3.3 二維碼譯碼模塊流程譯碼模塊流程如圖3.4,步驟如下:(1)對(duì)格式信息譯碼根據(jù)采集得到的二維碼模塊得到二維碼的信息數(shù)據(jù),對(duì)格式進(jìn)行糾錯(cuò)和譯碼。(2)對(duì)版本信息譯碼根據(jù)采集得到的二維碼黑白模塊和版本信息在二維碼中的位置得到二維碼的版本信息,對(duì)版本信息進(jìn)行糾錯(cuò)和譯碼。(3)各模式下的數(shù)據(jù)譯碼根據(jù)得到的數(shù)據(jù)流就可以對(duì)二維碼進(jìn)行模式譯碼。針對(duì)各模式的編碼規(guī)則對(duì)各模式下的二維碼數(shù)據(jù)流盡心數(shù)據(jù)譯碼。圖 3.4 二維碼譯碼模塊流程3.4. 軟件

30、開發(fā)平臺(tái)本系統(tǒng)是針對(duì)android 系統(tǒng)的,所以開發(fā)語言必須是java 。由于二維碼識(shí)別屬jar 包。至于開發(fā)平臺(tái),本系統(tǒng)選用的是eclipse 。第 4 章 圖像預(yù)處理模塊的設(shè)計(jì)與實(shí)現(xiàn)二維碼圖像預(yù)處理可以分為3 個(gè)部分 : 彩色圖像的灰度化利用中值濾波進(jìn)行圖像平滑以及利用灰度圖像二值化技術(shù)分割圖像。4.1 彩色圖像灰度化實(shí)際情況下, 通常直接采集到的是彩色圖像, 每個(gè)像素有R G B 三個(gè)顏色分量 ,每個(gè)顏 色分量的取值范圍為0 到 255 。 而二維碼是以黑白模塊構(gòu)成, 而顏色不包含任何信息( 這里指的是傳統(tǒng)二維碼, 彩色條碼除外) , 所以首先要對(duì)采集到得彩色圖像進(jìn)行灰度化處理, 通常采

31、用式4.1 進(jìn)行灰度化處理。其中Cr,Cg,Cb分別為 R,G,B 分 量的權(quán)值, 且滿足 Cr +Cg+Cb= 1。W=Cr*R+Cg*G+Cb*B.(4.1)但實(shí)際上按上述的公式灰度化得到的灰度圖像對(duì)光照均勻下拍攝的圖像效果較好, 但對(duì)光照不均勻的圖像處理效果就不是太好。本文采用另一種方法灰度化圖像。首先將原始RGB 三通道圖像分離成HSV 圖像,然后針對(duì)色相,飽和度,亮度進(jìn)行處理。將色相控制在紫色區(qū),飽和度控制在中間區(qū),亮度控制在中間區(qū)。消除過亮過暗的區(qū)域,消除低飽和度區(qū)域。這樣得到的圖像效果較好。如圖4.1.1 是源圖像, 圖 4.1.2是根據(jù)公式4.1 灰度化結(jié)果,圖 4.1.3是根

32、據(jù)分離HVS 得到的結(jié)果。4.1.1 原圖片4.1.2 式 (4.1) 得到圖像4.1.3 由HVS得到的圖像4.2 圖像去噪設(shè)備采集到的圖像一般都因受到干擾而含有噪聲。條碼圖像的噪聲主要來自兩個(gè)方面。首先是條碼表面的各種形式的污損,這方面噪聲只能憑借條碼本身的糾錯(cuò)算法進(jìn)行糾錯(cuò)。噪聲的另外一個(gè)來源是來自光學(xué)采集系統(tǒng),這部分的噪聲是滿足泊松分布的鹽粒噪聲,用適當(dāng)大小的矩形窗口的中值濾波非常適于條碼圖像。當(dāng)然,由于當(dāng)前各種設(shè)備的硬件性能比較好,這方面的噪聲還不是很嚴(yán)重,對(duì)于OR 這樣的塊狀的條碼,可以對(duì)每一塊區(qū)域統(tǒng)計(jì)黑白點(diǎn)數(shù),確定是黑、白塊的時(shí)候直接就會(huì)去掉了鹽粒噪聲的影響,但是對(duì)于成像質(zhì)量不是很

33、高,而條碼圖像本身比較小的情況下(即最小模塊寬度沒有超過3 個(gè)象素點(diǎn)), 對(duì)圖像進(jìn)行濾波去掉噪聲就顯得比較重要了。中值濾波是抑制噪聲的非線性處理方法。對(duì)于給定的n 個(gè)數(shù),將它們按大小有序排列。當(dāng)n 為奇數(shù)時(shí),處于中間位置的那個(gè)數(shù)值稱為這n 個(gè)數(shù)的中值。當(dāng)n 為偶數(shù)時(shí),位于中間位置的兩個(gè)數(shù)值的平均值稱為這n 個(gè)數(shù)的中值。中值濾波的方法運(yùn)算簡(jiǎn)單,易于實(shí)現(xiàn),而且能較好地保護(hù)邊界但有時(shí)會(huì)失掉圖像中的細(xì)線和小塊的目標(biāo)區(qū)域。鄰域的大小決定在多少個(gè)數(shù)值中求中值,窗口的形狀決定在什么樣的幾何空問中取元素計(jì)算中值。對(duì)二維圖像,窗口的形狀可以是矩形、十字形等,它的中心一般位于被處理點(diǎn)上。窗口的大小及形狀對(duì)濾波效果

34、影響很大。一般是 5 5 窗口,過大和過小都會(huì)對(duì)條碼圖像產(chǎn)生較大的副作用。本系統(tǒng)直接調(diào)用OpenCV 的cvSoomth()函數(shù)即可實(shí)現(xiàn)。4.3 圖像二值化因?yàn)槎S碼是由黑白模塊組成的, 本身分割較為明顯, 所以二維碼的圖像分割通常采用二值化方法, 二值化方法具有速度快,容易實(shí)現(xiàn)等優(yōu)點(diǎn)。 二值化方法是通過選取閾值, 然后用閾值來對(duì)圖像中每個(gè)像素進(jìn)行判斷, 如果灰度值大于該閾值 , 則用灰度值的最大值替換該像素值; 相反 , 若果灰度值小于閾值 , 則用灰度值的最小值替換該像素值。 二值化算法過程就是求解閾值的過程 , 根據(jù)閾值值選取范圍的不同二值化算法又可以分為全局閾值值算法和局部閾值算法。全

35、局閾值算法是選用唯一且固定的閾值對(duì)整幅圖像進(jìn)行二值化處理, 當(dāng)圖像的灰度直方圖具有明顯雙峰時(shí)全局閡值算法處理結(jié)果較好; 局部閾值算法是通過將圖像劃分為若干局部窗口, 然后對(duì)每個(gè)窗口分別計(jì)算閾值并進(jìn)行二值化處理, 局部閾值算法對(duì)于復(fù)雜圖像 ( 亮度不均,有噪聲或是背景灰度變化比較大 ) 二值處理效果好,但是增加算的復(fù)雜度。本文采用的是局部閾值進(jìn)行圖像二值化,算法思想是: 將以當(dāng)前像素為中心的一個(gè)鄰域內(nèi), 灰度值的最大值和最小值的平均值做為該像素的閾值, 然后用該閾值對(duì)當(dāng)這個(gè)像素進(jìn)行二值化, 每個(gè)像 素的閉值單獨(dú)計(jì)算, 所 以 算法的復(fù)雜度較高。設(shè)當(dāng)前像素坐標(biāo)為( x ,y) , 鄰域 窗 口選用

36、 以當(dāng)前像素為中心的正方形正方形邊長為2w +1. 算法流程如下:(1) 計(jì)算圖像中各點(diǎn)(x,y)的閾值 w(x,y):w(x, y) 0.5* (max f (x m, y n) min f (x m, y n)( 4.1)w m w, w n w;(2)對(duì)圖像中的各像素點(diǎn)(x,y)用w(x,y)的值逐點(diǎn)二值化全局閾值算法復(fù)雜度最小, 但是對(duì)于圖像光照不均時(shí)處理效果不好; 局部的閾值算法改進(jìn)了全局閾值算法對(duì)光照不均時(shí)的處理效果, 但是相應(yīng)增加了算法復(fù)雜度, 而且會(huì)在分塊邊緣產(chǎn)生邊緣效應(yīng); 上述算法對(duì)光照不均的圖像處理效果最好, 但是算法復(fù)雜度最大。下面對(duì)上述算法進(jìn)行比較 , 其中 N 為圖像

37、 的 像素個(gè)數(shù), W 為上述算法的正方形窗口邊長。表 4.1 二值化算法比較算法全局閾值算法局部閾值算法光照不均勻處理效果較差較好時(shí)間復(fù)雜度O(N)O(NW2)第 5 章 二維碼解碼模塊的設(shè)計(jì)與實(shí)現(xiàn)二維碼解碼流程QR 碼解碼模塊的功能架構(gòu)如圖5.1 所示。圖 5.1 QR 碼解碼模塊功能架構(gòu)圖QR 碼解碼過程是編碼過程的逆過程,圖5.2是該過程的流程。探測(cè)圖像識(shí)別的設(shè)計(jì)與實(shí)現(xiàn)尋找探測(cè)圖形QR 條碼符號(hào)是由一系列的正方形模塊構(gòu)成的一個(gè)二維條碼陣列,已知 QR 碼探1: 1: 3 : l : l 深淺交替變換,且這種性質(zhì)在圖像變形不是太嚴(yán)重和任QR 碼的位置探測(cè)圖形特點(diǎn),采用了邊緣信息QR 碼符號(hào)

38、的四個(gè)頂點(diǎn)。假設(shè)源圖像的主體是QR 碼,則可以利用下述方法找到QR 碼的四個(gè)頂點(diǎn)。5.2 算法流程圖對(duì)QR碼所在圖像逐行逐列掃描,。 開辟一個(gè)矩陣lengthBufferx 用于儲(chǔ)存圖像中某行深色或淺色模塊的長度,其中第i 個(gè)元素表示原圖像某一行或某一列,第 x 段模塊的長度。遍歷矩陣lengthBuffer , 當(dāng)發(fā)現(xiàn)某條線段與其后四條線段的長度滿足1: 1:3: 1: 1 時(shí), ( 根據(jù)實(shí)際情況,每一元素寬度的允許偏差為O 36) 。找到這條線段的起始坐標(biāo)和終止坐標(biāo). 將這條滿足的線段保存在一個(gè)集合lineAcross 中。5.3 位置探測(cè)圖形掃描線重復(fù)步驟 (1)(2) ,直到所有行列被

39、掃描完。遍歷集合lineAcross ,若某條線段的起始坐標(biāo)與其相鄰線段的起始坐標(biāo)相距不超過4 像素,則認(rèn)為是一個(gè)線段群,記錄圖像中這類線段群擁有線段數(shù)最大數(shù)n,當(dāng)某個(gè)線段群的線段個(gè)數(shù)不小于0.8*n ,則判斷其為QR碼中符合條件的線段群,并刪除不符合的線段群。將 lineAcross 矩陣中記錄的點(diǎn)用最小二乘法擬合成一條直線Y=bx+a: 其中2(xi )( yi ) (xi )( xi yi )aN (xi ) (xi )(5.1)b N(xiyi)2 (xi)( 2yi)(5.2)N (xi ) (xi )這條直線就是QR 碼所在區(qū)域的左側(cè)邊緣線用上述方法求出QR 碼的邊界的四條擬合直線

40、L1,L2,L3,L4. 如圖 5.4 所示 .最后求取直線的交點(diǎn), 作為 Q R 碼的四個(gè)頂點(diǎn), 定位結(jié)束。5.4 直線擬合結(jié)果5.2.2 圖像校正上述得到的圖像可能會(huì)出現(xiàn)傾斜,故還需要進(jìn)行旋轉(zhuǎn)處理。由上述4 條線就可以得到二維碼圖像的旋轉(zhuǎn)角度和二維碼的中心坐標(biāo)。根據(jù)圖像的旋轉(zhuǎn)原理和插值算法就可以校正圖像。二維碼版本信息確定的設(shè)計(jì)與實(shí)現(xiàn)確定每個(gè)模塊的寬和高由前面步驟提取出來的QR碼的四周已經(jīng)不再含有多余信息。但在拍攝的時(shí)QR碼可能會(huì)變成了矩形。所以單位模塊在X軸方向和在Y軸方向上的邊長需要分別確定。首先在符號(hào)邊緣的水平方向和垂直方向?qū)μ崛〕龅腝R碼進(jìn)行掃描。當(dāng)探測(cè)到預(yù)選區(qū) (遇到深淺模塊按照

41、1: 1: 3: 1: 1 變化的地方),注意圖像中一行像素與位置探測(cè)圖形的外邊緣相遇的第一點(diǎn)A 和最后一點(diǎn)B。對(duì)該圖像中的相鄰像素行重復(fù)探測(cè),記下每條探測(cè)線A, B 間的距離以,以及探測(cè)線的數(shù)量N。直到在中心方塊X軸方向所有穿過位置探測(cè)圖形的直線被全部識(shí)別。用同樣的方法掃描Y軸方向。如圖 5.5 所示。5.5.確定模塊寬高所以 QR 碼在 X 軸的寬度為:DX1i DX2i DX3i x3 7 (N1x N2x N3x)QR 碼在Y 軸的高度為:DY1iDY2iDY3iy3 7 (N1y N2y N3y)5.3.2 二維碼粗略版本確定(5.3)(5.4)首先根據(jù)QR 碼的符號(hào)結(jié)構(gòu)確認(rèn)QR 碼

42、的版本號(hào)。QR 碼共有 40 種版本,分別是版本1、版本2、版本40。版本1 的規(guī)格為21 模塊 x21 模塊,版本2 為 25模塊 25 模塊。以此類推,每一版本符號(hào)比前一版本每邊增加4 個(gè)模塊,直到版本40,規(guī)格177 模塊 177 模塊。假設(shè)QR碼的版本號(hào)為v, QR每行的模塊數(shù)為n=4*v+17。 則版本號(hào)可以由式(5.5)確定。其中,width , height 分別為提取出QR 碼的邊長。QR 碼每邊模塊數(shù)width/x=height/y.height 17vy或4(5.5)width17但是由于計(jì)算機(jī)的浮點(diǎn)數(shù)運(yùn)算產(chǎn)生誤差,公式(5.5)得到的版本號(hào)不是太準(zhǔn)確,所以本文采用另一種方

43、法確定版本號(hào)。如圖 5.6 所示,二維碼的定位線是由黑白模塊交叉組成的,所以可以掃描定位線的黑白模塊。從a 點(diǎn)開始掃描,如果當(dāng)前像素是白色,下一個(gè)像素是黑色,則找的一個(gè)白色模塊,直到遍歷到b 點(diǎn)得到白色模塊數(shù)n。所以即可確定模塊總數(shù)N=14+(n-1)*2, 版本號(hào) v=(N-21)/4+1.同理掃描垂直方向上的定位線也可以確定版本號(hào)。5.6 二維碼定位線二維碼模塊采樣的設(shè)計(jì)與實(shí)現(xiàn)一般的方法是利用平均法對(duì)OR 碼劃分 N*N 個(gè)網(wǎng)格, 每個(gè)網(wǎng)格的中心進(jìn)行取樣,得到歸一化的QR 碼圖像。但是此時(shí)許多應(yīng)該處于網(wǎng)格內(nèi)的模塊發(fā)生偏移,有的甚至跨越了2 個(gè)柵格,平均法劃分QR 碼往往會(huì)造成誤差。這往往是

44、由于計(jì)算機(jī)的浮點(diǎn)誤差產(chǎn)生:圖像的長度以像素的個(gè)數(shù)(整數(shù))計(jì)量,而式(5.3)和式(5.4)中 X, Y通常為浮點(diǎn)數(shù),計(jì)算機(jī)取整數(shù)為步長。將會(huì)產(chǎn)生累計(jì)誤差。本文采用另一種方法對(duì)二維碼模塊進(jìn)行采樣。二維碼差分圖像我們知道二維碼是由黑白模塊組成的,對(duì)二維碼圖像進(jìn)行二值化處理后,二維碼的每個(gè)像素是由0 1 表示。假設(shè)0 代表黑色1 代表白色。那么一個(gè)黑色模塊是由一個(gè)區(qū)域的0 組成, 一個(gè)白色模塊是由一個(gè)區(qū)域的1 組成。 黑白模塊的邊緣是由0 1像素組成的。這就是說在一個(gè)模塊的中心附近像素值幾乎不變,但是在黑白模塊的邊緣像素值的變化很大。如圖5.7,模塊 A B C 的中心附近的像素值不變,但是他們的邊

45、緣像素值會(huì)變化,從0 變成 1 或從 1 變成0。根據(jù)這個(gè)特點(diǎn)我們可以對(duì)圖像做行差和列差運(yùn)算,就可以得到垂直邊緣和水平邊緣的信息。這樣我們就可以劃分二維碼。即二維碼每個(gè)模塊的中心位置差分結(jié)果變化小,邊緣位置變化大。5.7 二維碼二進(jìn)制圖像數(shù)據(jù)二維碼模塊采樣由上述原理我們就可以對(duì)二維碼進(jìn)行采樣,步驟如下:以行為例對(duì)圖像做差分運(yùn)算d(x,y)=|f(x,y)-f(x,y+1)|得到x方向的差分圖像imgX,如圖5.8。其中 f(x,y) 表示第 x 行 y列的像素值。( 2)以列為例對(duì)圖像做差分運(yùn)算d(x,y)=|f(x,y)-f(x+1,y)|得到y(tǒng)方向的差分圖像 imgY.( 3)對(duì)imgX,

46、imgY做或運(yùn)算得到二維碼差分圖像img=imgX|imgY;( 4)通過公式(5.3) ( 5.4)得到的x, y 得到行方向和列方向模塊中點(diǎn)的大致取樣點(diǎn),在該取樣點(diǎn)左右很小的區(qū)域( 本文的區(qū)域?yàn)? 個(gè)像素 ) 滑動(dòng)如表5-1 ,找到min(p(x,y) ,并記下此位置。表 5-1 像素取樣123405678( 5)根據(jù)步驟(4)得到的位置,在源圖像上尋找對(duì)應(yīng)的點(diǎn),若該點(diǎn)為黑色此模塊就為黑色,反之,此模塊就為白色。反復(fù)尋找就可歸一化二維碼。圖 5.8 左圖為源圖像右圖為列差圖像二維信息解碼的設(shè)計(jì)與實(shí)現(xiàn)版本信息的確定版本信息為18位,其中6位數(shù)據(jù)位,通過BCH( 18, 6)編碼計(jì)算出12個(gè)糾

47、錯(cuò)位。 6 位數(shù)據(jù)為版本信息,最高位為第一位。12 位糾錯(cuò)信息在6 位數(shù)據(jù)之后。只有版本7 40 的符號(hào)包含版本信息,沒有任何版本信息的結(jié)果全為0。所以不必對(duì)版本信息進(jìn)行掩模。最終的版本信息應(yīng)映射在符號(hào)中預(yù)留的位置,見圖5.9。需要注意的是,由于版本信息的正確譯碼是整個(gè)符號(hào)正確譯碼的關(guān)鍵,因此版本信息在符號(hào)中出現(xiàn)兩次以提供冗余。版本信息的最低位模塊放在編號(hào)為0 的位置上,最高位放在編號(hào)為17 的位置上。版本信息生成步驟見圖5.10,版本信息的模塊布置見圖5.11 。5.9 二維碼版本信息5.10 二維碼版本信息生成步驟圖 5.11 版本信息模塊布置由得到的采樣圖像就可以得到版本信息,存放在ve

48、rsionInfo1,versionInfo2 數(shù)組中。 用 versionInfo1 和正確的版本信息比較,如果在誤差范圍內(nèi),取前 6位就可以得到版本信息,如果不在,用 versionInfo2 和正確的版本信息比較,如果在誤差范圍內(nèi),取前 6 位就可以得到版本信息,如果不在,則版本得到信息失敗。二維碼格式信息的實(shí)現(xiàn)如圖 5.12 所示,格式信息有15 位數(shù)據(jù)位組成,其中15 , 14位存放的是二維碼糾錯(cuò)等級(jí),13,12,11 位存放的是用于圖像掩膜的圖像數(shù)字。10-1 位是對(duì)應(yīng)的糾 TOC o 1-5 h z 錯(cuò)數(shù)據(jù)。格式信息的生成步驟下所示.設(shè)定糾錯(cuò)級(jí)別為M: 00掩膜圖形參考: 101

49、數(shù)據(jù):00101BCH位 :00110011100掩膜前的位序列:0010100110011100用于XOR操作的掩膜圖形:101010000010010格式信息掩膜圖形:100000011001110可以用下面的方法得到格式信息,糾錯(cuò)級(jí)別,掩膜圖像。用上面的采樣信息得到格式信息的15 位數(shù)據(jù)流,保存在數(shù)組Info 中, 和正確的 15 位格式信息比較,如果在誤差范圍內(nèi),執(zhí)行步驟(2), 否則,格式信息獲取失敗。去除掩膜。將 Info 中的15位數(shù)據(jù)和101010000010010做異或操作,得到?jīng)]掩膜之前的格式信息,放在formatInfo 中。取數(shù)組 formatInfo 中的前 2 位就

50、可得到糾錯(cuò)級(jí)別,取 3-5 位就可得到用于圖像掩膜的圖形。圖 5.12 二維碼格式信息圖 5.13 二維碼格式信息生成去除二維碼掩膜的實(shí)現(xiàn)由 5.5.2 中得到的掩膜圖像可以用于去除二維碼上的掩膜圖像,得到二維碼的原始數(shù)據(jù)。表 5-2 給出了掩模圖形的參考(放置于格式信息中的二進(jìn)制參考)和掩模圖形生成的條件。掩模圖形是通過將編碼區(qū)域(不包括為格式信息和版本信息保留的部分)內(nèi)那些條件為真的模塊定義為深色而產(chǎn)生的。所示的條件中,i 代表模塊的行位置, j 代表模塊的列位置,( i,j ) =(0,0) 代表符號(hào)中左上角的位置。表 5-2 掩模圖形的參考掩膜參考圖像條件000(i + j) mod

51、2 = 0001i mod 2 = 0010j mod 3 = 0011(i + j) mod 3 = 0100(i div 2) + (j div 3) mod 2 = 0101(i j) mod 2 + (i j) mod 3 = 0110(i j) mod 2+(i j) mod 3) mod 2 = 0111(i j)mod 3 +(i+j) mod 2) mod 2 = 0由上述條件得到每個(gè)模塊的0 或 1 和未掩膜之前的圖像的每個(gè)模塊進(jìn)行XOR操作就可以得到原始的二維碼數(shù)據(jù)。得到數(shù)據(jù)流多數(shù)碼字在符號(hào)中表示為規(guī)則的2 4 個(gè)模塊的排列。其排列有兩種方式,垂直布置( 2 個(gè)模塊寬,4

52、個(gè)模塊高);如果需要改變方向,可以水平布置(4 個(gè)模塊寬,2 個(gè)模塊高)。 當(dāng)改變方向或緊靠校正圖形或其他功能圖形時(shí),需用不規(guī)則符號(hào)字符,如圖5.13。我們可以將整個(gè)碼字序列視為一個(gè)單獨(dú)的位流,將其(最高位開始)按從右向左,按向上和向下的方向交替的布置于兩個(gè)模塊寬的縱列中。并跳過功能圖形占用的區(qū)域,在縱列的頂部或底部改變方向,每一位應(yīng)放在第一個(gè)可用的位置。這樣從右下角遍歷圖像就可以得到數(shù)據(jù)流。5.13 版本 2-M 符號(hào)的符號(hào)字符布置數(shù)據(jù)糾錯(cuò)QR 碼的糾錯(cuò)是按段進(jìn)行的,根據(jù)版本和糾錯(cuò)等級(jí),將數(shù)據(jù)碼字序列分為1 個(gè)或多個(gè)段,對(duì)每段分別進(jìn)行糾錯(cuò)運(yùn)算,分段規(guī)則可查標(biāo)準(zhǔn)。根據(jù)版本和糾錯(cuò)等級(jí)將數(shù)據(jù)碼字序

53、列分為n 塊。 對(duì)每一塊,按照糾錯(cuò)碼字編碼電路計(jì)算相應(yīng)塊的糾錯(cuò)碼字。數(shù)據(jù)碼字為多項(xiàng)式各項(xiàng)的系數(shù),第一個(gè)數(shù)據(jù)碼字為最高次項(xiàng)的系數(shù),第一個(gè)糾錯(cuò)碼字前的最后一個(gè)數(shù)據(jù)碼字是最低次項(xiàng)的系數(shù)。糾錯(cuò)碼字是數(shù)據(jù)碼字被糾錯(cuò)多項(xiàng)式x)除得的余數(shù)。余數(shù)的最高次項(xiàng)系數(shù)為第一個(gè)糾錯(cuò)碼字,最低次項(xiàng)系數(shù)為最后一個(gè)糾錯(cuò)碼字。不同的糾錯(cuò)碼字?jǐn)?shù)對(duì)應(yīng)不同的糾錯(cuò)多項(xiàng)式甙x),顫x)的具體系數(shù)可以參照國家標(biāo)準(zhǔn)。通過糾錯(cuò)可以得到正確的符號(hào)信息,接下來就要進(jìn)行數(shù)據(jù)譯碼的工作。各模式下的譯碼本系統(tǒng)主要針對(duì)的是數(shù)字模式,字母數(shù)字模式和8 位字節(jié)模式下的譯碼。數(shù)字模式:數(shù)字模式下的編碼規(guī)則如下所示。在版本1,糾錯(cuò)級(jí)別為H 的情況下,編碼0123

54、4567.把上述數(shù)字分為三組:012 345 67.把它們轉(zhuǎn)換成二進(jìn)制012-0000001100; 354-0101011001; 67 -1000011.把這三個(gè)二進(jìn)制串起來:0000001100 0101011001 1000011.把數(shù)字的個(gè)數(shù)轉(zhuǎn)換成二進(jìn)制( V1-H 是 10bits) 8個(gè)數(shù)字的二進(jìn)制是:0000001000.把數(shù)字編碼模式0001 和第四步的編碼加到前面:0001 0000001000 00000011000101011001 1000011 TOC o 1-5 h z 譯碼的過程是編碼的逆過程。過程如下:(1)首先得到數(shù)字個(gè)數(shù)n(對(duì)于版本1-H)即得到第5-15

55、 位的數(shù)據(jù),如果 n=3 執(zhí)行(2),否則執(zhí)行(3)(2)接著取10 位數(shù)據(jù)流,轉(zhuǎn)換成10 進(jìn)制得到3 個(gè)數(shù)字str,保存在content中 ,content+=str;并令n=n-3.如果n=3,繼續(xù)執(zhí)行(2),否則執(zhí)行(3)(3)如果n=2,取接下來的7 為數(shù)據(jù)流,轉(zhuǎn)換成10進(jìn)制得到2個(gè)數(shù)字str,保存在content中 ,content+=str;否則執(zhí)行(4).(4)如果n=1,取接下來的4 為數(shù)據(jù)流,轉(zhuǎn)換成10進(jìn)制得到1 個(gè)數(shù)字str,保存在content中 ,content+=str;否則執(zhí)行(5).(5)結(jié)束。上述算法執(zhí)行完后就可以得到數(shù)字模式下的解碼內(nèi)容。數(shù)字字母模式:其編碼規(guī)

56、則為:將輸入的數(shù)據(jù)分為兩個(gè)字符一組,用11 位二進(jìn)制表示。將前面字符的值乘以45 與第二個(gè)字符的值相加,將所得的結(jié)果轉(zhuǎn)換為11 位二進(jìn)制數(shù)。如果輸入的數(shù)據(jù)的字符數(shù)不是2 的整數(shù)倍,將最后一個(gè)字符編碼為6 位二進(jìn)制數(shù)。將所得的二進(jìn)制數(shù)據(jù)連接起來并在前面加上模式指示符和字符計(jì)數(shù)指示符,按表3 的規(guī)定在字母數(shù)字模式中,字符計(jì)數(shù)指示符的長度為9、 11 或 13 位,其定義見表3。將輸入的字符數(shù)編碼為9、 11 或 13 位二進(jìn)制數(shù),放在模式指示符之后,二進(jìn)制數(shù)據(jù)序列之前 .如下所示。字母數(shù)字模式的編碼/譯碼表如表5-3 所示。表 5-3 字母數(shù)字模式的編碼/譯碼表 TOC o 1-5 h z 譯碼過

57、程如下:首先得到字母?jìng)€(gè)數(shù)n(對(duì)于版本1-H)即得到第5-15 位的數(shù)據(jù),如果n=2 執(zhí)行步驟 (2),否則執(zhí)行步驟(3)。接著取 11 位數(shù)據(jù)流,轉(zhuǎn)換成45 進(jìn)制得到2 個(gè)字母 str,保存在 content中 ,content+=str;并令n=n-2.如果n=2,繼續(xù)執(zhí)行(2),否則執(zhí)行(3).如果n=1,接著取6 位數(shù)據(jù)流,根據(jù)字母數(shù)字模式的編碼/譯碼表規(guī)則轉(zhuǎn)換成對(duì)應(yīng)的 1 個(gè)字母保存在content中 ,content+=str。否則執(zhí)行(4)結(jié)束。8 位字節(jié)模式譯碼在本模式中,一個(gè)8 位碼字直接表示一個(gè)輸入數(shù)據(jù)字符的JIS8字符值,即密度為每個(gè)字符8 位。在非缺省的其它ECI 中,它

58、直接表示一個(gè)8 位字節(jié)的值。將二進(jìn)制數(shù)據(jù)連接起來并在前面加上模式指示符和字符計(jì)數(shù)指示符。8 位字節(jié)模式的字符計(jì)數(shù)指示符為8 位或 16 位,將輸入字符數(shù)轉(zhuǎn)換為8 位或 16 位二進(jìn)制數(shù)據(jù)放在模式指示符之后,二進(jìn)制數(shù)據(jù)序列之前。 TOC o 1-5 h z 8 位字節(jié)模式譯碼如下:(1)首先得到字母?jìng)€(gè)數(shù)n(對(duì)于版本1-H)即得到第5-12位的數(shù)據(jù),如果 n=1 執(zhí)行步驟 (2),否則執(zhí)行步驟(3)。接著取 8 位數(shù)據(jù)流,轉(zhuǎn)換成10 進(jìn)制得到對(duì)應(yīng)的ASCII 值 str,保存在content中 ,conternt+=str;并令n=n-1.如果n=1,繼續(xù)執(zhí)行(2),否則執(zhí)行(3).結(jié)束。第 6章

59、系統(tǒng)的調(diào)試、運(yùn)行與測(cè)試軟件在開發(fā)完畢后,將進(jìn)行整合與測(cè)試。然而系統(tǒng)測(cè)試是保證系統(tǒng)質(zhì)量和可靠性的關(guān)鍵一步,是針對(duì)于系統(tǒng)開發(fā)過程成功與否的測(cè)試階段。系統(tǒng)測(cè)試有著很多種方法,更需要時(shí)效性。系統(tǒng)測(cè)試作為軟件開發(fā)過程中的最后一個(gè)關(guān)鍵,關(guān)系到了軟件質(zhì)量、軟件的可交付性和軟件項(xiàng)目的實(shí)施周期,系統(tǒng)測(cè)試在開發(fā)工程中有著不可獲取的一部分。系統(tǒng)開發(fā)過程中的問題與解決方法關(guān)于尋像圖形的尋找在掃描圖像的時(shí)候有些像素點(diǎn)不在圖像圖像中,可是也在一定程度上滿足1:1:3:1:1 ,原因就在于對(duì)這個(gè)比例誤差范圍的規(guī)定。如果誤差過大,會(huì)出現(xiàn)很多不滿足的線段;如果誤差過小,有些尋像圖像線段又找不到,所以必須尋找合適的誤差范圍。經(jīng)過

60、反復(fù)測(cè)試發(fā)現(xiàn)誤差在0.2-0.37 之間具有較好的效果。關(guān)于二維碼的版本信息由于二維碼有很多版本信息,每個(gè)版本包含的信息由數(shù)據(jù)碼字,總碼字,糾錯(cuò)碼字,塊數(shù),容量等信息。這些信息的讀取直接影響程序的結(jié)果。故另外設(shè)計(jì)了一個(gè)類用于存儲(chǔ)這些信息。只要用的這些信息就可以調(diào)用該對(duì)象,雖然占用了一些內(nèi)存,但是提高了運(yùn)行速度。二維碼模塊的采樣本文采用的是根據(jù)二維碼的定位線采樣二維碼模塊。由于二維碼的探測(cè)圖形附近并沒有定位線。對(duì)探測(cè)圖形附近的模塊本文采用的是根據(jù)模塊的平均高寬進(jìn)行取樣。由于平均高寬是浮點(diǎn)型,計(jì)算機(jī)浮點(diǎn)型運(yùn)算會(huì)產(chǎn)生誤差。所以這一區(qū)域的取樣可能會(huì)產(chǎn)出錯(cuò)誤。加載靜態(tài)庫由于要應(yīng)用OpenCV的jar 包

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論