二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)_第1頁(yè)
二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)_第2頁(yè)
二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)_第3頁(yè)
二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)_第4頁(yè)
二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、本科畢業(yè)設(shè)計(jì)論文題 目二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)學(xué)生姓名學(xué) 號(hào)院系專 業(yè)指導(dǎo)教師時(shí) 間二維碼生成與掃描識(shí)別系統(tǒng)設(shè)計(jì)設(shè)計(jì)總說(shuō)明條碼技術(shù)是一種融編碼,印刷,數(shù)據(jù)采集和處理與一體的自動(dòng)識(shí)別技術(shù)。條碼分為一維碼和二維碼。二維碼除了具有一般一維碼的優(yōu)點(diǎn)外還具有信息容量大,可靠性高的優(yōu)點(diǎn)。本次設(shè)計(jì)內(nèi)容包括三局部:1二維碼的生成系統(tǒng)設(shè)計(jì),生成系統(tǒng)主要完成了從輸入數(shù)據(jù)到生成相應(yīng)二維碼的功能,使用MyEclipse 10軟件編程,編程語(yǔ)言為Java。2二維碼圖像采集系統(tǒng)設(shè)計(jì),圖像采集系統(tǒng)完成了生成二維碼后采集到上位機(jī)的功能,使用KeiluVision5軟件編程,編程語(yǔ)言為C,系統(tǒng)使用的硬件由計(jì)算機(jī)、STM32

2、F103RCT6開(kāi)發(fā)板和OV7670攝像頭等組成。3二維碼的識(shí)別系統(tǒng)設(shè)計(jì),識(shí)別系統(tǒng)主要完成了對(duì)采集到的二維碼圖片進(jìn)行譯碼復(fù)原出所攜帶信息的功能,使用VC+6.0編程,編程語(yǔ)言為C+。本文介紹了QR code二維碼的結(jié)構(gòu)、標(biāo)準(zhǔn)及編解碼過(guò)程,以及采集圖像上傳上位機(jī)的過(guò)程。系統(tǒng)實(shí)現(xiàn)了一般文字信息、數(shù)字等的編碼、圖像采集和譯碼的功能。關(guān)鍵詞:二維碼技術(shù); 二維碼生成; QR code;二維碼識(shí)別Design of two-dimensional code generation and scan recognition systemDesign DescriptionBar code technolog

3、y is a kind of automatic identification technology, which is a kind of financial coding, printing, data acquisition, processing and integration. Bar code is divided into one dimensional code and two-dimensional code. In addition to the advantages of the general one-dimensional code, two-dimensional

4、code has the advantages of large information capacity and high reliability.This design includes three parts:(1) two-dimensional code generation system design, generation system mainly completed from the input data to generate the corresponding two-dimensional code function, the use of MyEclipse 10 s

5、oftware programming, programming language for Java.(2) the two-dimensional code image acquisition system design, image acquisition system to complete the two-dimensional code generated after the acquisition of the function of the upper computer, the use of KeiluVision5 software programming, programm

6、ing language C, system uses the hardware by the computer, the STM32F103RCT6 development board and the OV7670 camera and so on.(3) the two-dimensional code recognition system design, the recognition system mainly completes the acquisition to the two-dimensional code picture to carry on the decoding t

7、he information carries the information the function, uses the VC+6.0 programming, programming language for C+.This paper introduces the structure, standard and encoding and decoding process of code QR two-dimensional code, as well as the process of acquiring the image of the host computer. System to

8、 achieve the general text information, digital coding, image acquisition and decoding functions.Key words: Two dimensional code technology; Two-dimensional code generation; QR code ; Two-dimensional code recognition目錄1緒論11.1設(shè)計(jì)背景與意義11.2二維碼在國(guó)內(nèi)外的狀況12 QR碼編碼規(guī)那么42.1 QR碼符號(hào)結(jié)構(gòu)42.2 QR碼編碼方法53二維碼生成系統(tǒng)設(shè)計(jì)83.1二維碼編碼

9、83.2二維碼編碼程序?qū)崿F(xiàn)104二維碼圖像采集134.1硬件介紹134.1.1 STM32簡(jiǎn)介134.1.2 STM32中斷144.1.3 OV7670介紹144.2硬件連接關(guān)系及原理174.2.1硬件連接關(guān)系174.2.2硬件原理174.2.3軟件實(shí)現(xiàn)184.2.4運(yùn)行實(shí)現(xiàn)225二維碼識(shí)別系統(tǒng)設(shè)計(jì)245.1二維碼識(shí)別系統(tǒng)245.2識(shí)別程序?qū)崿F(xiàn)265.3運(yùn)行實(shí)現(xiàn)276總結(jié)29致謝30參考文獻(xiàn)31附錄1:生成源程序32附錄2:采集源程序及原理圖35附錄3:識(shí)別源程序41 1緒論1.1設(shè)計(jì)背景與意義二維碼是用某種特定的幾何圖形按一定規(guī)律在平面二維方向分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。二維碼是

10、DOI,數(shù)字對(duì)象唯一識(shí)別符的一種。二維碼能夠在橫向和縱向兩個(gè)方位同時(shí)表達(dá)信息。它具有存儲(chǔ)容量大、可靠性高、保密防偽性強(qiáng)、本錢(qián)低等優(yōu)點(diǎn)。在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯根底的“0、“1比特流的概念,使用假設(shè)干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖像輸入設(shè)備或掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。在許多種類的二維條碼中,常用的碼制有:Data Matrix,maxi code, Aztec,QR Code,PDF417,Ultra code等,QR Code碼是1994年由日本DW公司創(chuàng)造1。QR即快速反響的意思,源自創(chuàng)造者希望QR碼可讓其內(nèi)容快速被解碼。QR碼最常見(jiàn)于日本、韓

11、國(guó);并為目前日本最流行的二維空間碼條。但二維碼的平安性也正備受挑戰(zhàn),帶有惡意軟件和病毒正成為二維碼普及道路上的絆腳石。開(kāi)展與防范二維碼的濫用正成為一個(gè)亟待解決的問(wèn)題。每種有其特定的字符集;每個(gè)字符占有一定的寬度;具有一定的校驗(yàn)功能等。同時(shí)還具有對(duì)不同行的信息自動(dòng)識(shí)別功能及處理圖形旋轉(zhuǎn)變化等特點(diǎn)。 二維碼是一種比一維碼更高級(jí)的條碼格式。一維碼只能在一個(gè)方向一般是水平方向上表達(dá)信息,而二維碼在水平和垂直方向都可以存儲(chǔ)信息。一維碼只能由數(shù)字和字母組成,而二維碼能存儲(chǔ)漢字、數(shù)字和圖片等信息,因此二維碼的應(yīng)用領(lǐng)域要廣得多。因此二維碼的研究具有光明的前景。1.2二維碼在國(guó)內(nèi)外的狀況我國(guó)對(duì)二維碼技術(shù)的研究開(kāi)

12、始于1993年,中國(guó)物品編碼中心對(duì)幾種常用的二維碼PDF417、QR Code、Data Matrix、Maxi Code、Code 49、Code 16K、Code One的技術(shù)標(biāo)準(zhǔn)進(jìn)行了翻譯和跟蹤研究。隨著我國(guó)市場(chǎng)經(jīng)濟(jì)的不斷完善和信息技術(shù)的迅速開(kāi)展,國(guó)內(nèi)對(duì)二維碼這一新技術(shù)的需求與日俱增。中國(guó)物品編碼中心在原國(guó)家質(zhì)量技術(shù)監(jiān)督局和國(guó)家有關(guān)部門(mén)的大力支持下,對(duì)二維碼技術(shù)的研究不斷深入。在消化國(guó)外相關(guān)技術(shù)資料的根底上,制定了兩個(gè)二維碼的國(guó)家標(biāo)準(zhǔn):二維碼網(wǎng)格矩陣碼和二維碼緊密矩陣碼,從而大大促進(jìn)了我國(guó)具有自主知識(shí)產(chǎn)權(quán)技術(shù)的二維碼的研發(fā)。目前我國(guó)二維碼的應(yīng)用主要在以下幾個(gè)方面:1醫(yī)療卡:我國(guó)的醫(yī)療衛(wèi)生

13、事業(yè)在近幾年來(lái)取得了令人矚目的開(kāi)展,很多中型以上的醫(yī)院都采用了計(jì)算機(jī)管理并且大跨步地向著網(wǎng)絡(luò)化的方向開(kāi)展。但是想要與國(guó)際水平接軌,各大醫(yī)院還需要調(diào)整開(kāi)展步伐,改善管理機(jī)制,提高自身的業(yè)務(wù)水平和管理水平,從而提高經(jīng)濟(jì)效益,增強(qiáng)競(jìng)爭(zhēng)力。想要到達(dá)這些目標(biāo),二維碼是不可或缺的必要武器。2身份證:我國(guó)經(jīng)濟(jì)在改革開(kāi)放以來(lái)得到了快速的開(kāi)展,城市和農(nóng)村之間人口流動(dòng)頻繁。特別是近幾年利用假身份證進(jìn)行犯罪的現(xiàn)象屢屢發(fā)生,國(guó)家的相關(guān)部門(mén)和公共財(cái)產(chǎn)受到了嚴(yán)重破壞。傳統(tǒng)居民身份證缺乏機(jī)器識(shí)別功能,許多關(guān)鍵部門(mén)無(wú)法對(duì)身份證進(jìn)行有效登記和驗(yàn)證,限制了公安部門(mén)的打擊力度。因此,使用二維碼提高現(xiàn)有居民身份證的防偽性能,是提高公

14、安部門(mén)執(zhí)法力度的一個(gè)十分積極有效的方法。 3醫(yī)用化驗(yàn)單:為了更好地發(fā)揮醫(yī)療投資效用,改善醫(yī)療管理,提高醫(yī)療效勞質(zhì)量,就要使用二維條碼技術(shù)來(lái)減少錯(cuò)誤,更準(zhǔn)確地配藥。通過(guò)正確地識(shí)別病人,從而快速獲取病例檔案來(lái)進(jìn)行各項(xiàng)檢查,提高對(duì)病人的臨床護(hù)理質(zhì)量。4移動(dòng)訂票:中國(guó)早在2005年由翼碼信息推出第一張電子電影票開(kāi)始,傳統(tǒng)形式的票券就朝著電子票的形式轉(zhuǎn)變,傳統(tǒng)的物流信息也轉(zhuǎn)變成了電子流。不僅節(jié)省了本錢(qián),還大大地提高了效率。 綜上所述,可見(jiàn)二維碼的技術(shù)已經(jīng)在我國(guó)得到比擬廣泛的應(yīng)用,但是相對(duì)于二維碼開(kāi)展比擬早的國(guó)家,如日本,美國(guó),我國(guó)仍顯得有很多的缺乏,因此,我國(guó)以不斷引進(jìn),消化,吸收國(guó)外的二維碼技術(shù),同時(shí)

15、加以創(chuàng)新,同時(shí)盡力推廣二維碼,使二維碼技術(shù)在我國(guó)能得到更加廣泛的應(yīng)用,從而方便人們的生活。 國(guó)外對(duì)二維碼技術(shù)的研究始于20世紀(jì)80年代末,在二維碼符號(hào)表示技術(shù)研究方面已研制出多種碼制,常見(jiàn)的有PDF417、QR Code、Code 49、Code 16K、Code One等。在二維碼標(biāo)準(zhǔn)化研究方面,國(guó)際自動(dòng)識(shí)別制造商協(xié)會(huì)AIM、美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)ANSI已完成了PDF417、QR Code、Code 49、Code 16K、Code One等碼制的符號(hào)標(biāo)準(zhǔn)。國(guó)際標(biāo)準(zhǔn)技術(shù)委員會(huì)國(guó)際電工委員會(huì)還成立了條碼自動(dòng)識(shí)別技術(shù)委員會(huì)ISO/IEC/JTC1/SC31,已制定了QR Code的國(guó)際標(biāo)準(zhǔn)ISO/IE

16、C 18004:2000?自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)條碼符號(hào)技術(shù)標(biāo)準(zhǔn)QR碼?,起草了PDF417、Code 16K、Data Matrix、Maxi Code等二維碼的ISO/IEC標(biāo)準(zhǔn)草案。在二維碼設(shè)備開(kāi)發(fā)研制、生產(chǎn)方面,美國(guó)、日本等國(guó)的設(shè)備制造商生產(chǎn)的識(shí)讀設(shè)備、符號(hào)生成設(shè)備,已廣泛應(yīng)用于各類二維碼應(yīng)用系統(tǒng)。二維碼作為一種全新的信息存儲(chǔ)、傳遞和識(shí)別技術(shù),自誕生之日起就得到了世界上許多國(guó)家的關(guān)注。美國(guó)、德國(guó)、日本等國(guó)家,不僅已將二維碼技術(shù)應(yīng)用于公安、外交、軍事等部門(mén)對(duì)各類證件的管理,而且也將二維碼應(yīng)用于海關(guān)、稅務(wù)等部門(mén)對(duì)各類報(bào)表和票據(jù)的管理,商業(yè)、交通運(yùn)輸?shù)炔块T(mén)對(duì)商品及貨物運(yùn)輸?shù)墓芾怼⑧]政部門(mén)對(duì)郵

17、政包裹的管理、工業(yè)生產(chǎn)領(lǐng)域?qū)I(yè)生產(chǎn)線的自動(dòng)化管理。2 QR碼編碼規(guī)那么2.1 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)1符號(hào)版本和規(guī)格QR碼符號(hào)共有40種規(guī)格,分別是版本1到版本40,版本1規(guī)格為21*21個(gè)模塊,版本2為25*25模塊。以此類推,版本N的規(guī)格每行每列為21+4N-1個(gè)模塊。2尋像圖形尋像圖形包括3個(gè)位置相同的探測(cè)圖形,分別位于符號(hào)的左上角、右上角和左下角,如圖2-1所示。每個(gè)探測(cè)圖形可以看作是由三個(gè)

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

19、組成。校正圖形的數(shù)量由QR碼的版本號(hào)決定,版本號(hào)2及以上的符號(hào)均有校正圖形,本設(shè)計(jì)采用的版本號(hào)為7。6編碼區(qū)域編碼區(qū)域包括表示數(shù)據(jù)碼字、糾錯(cuò)碼字、版本信息和格式信息的符號(hào)字符。7空白區(qū)空白區(qū)為環(huán)繞在符號(hào)四周的4個(gè)模塊寬的區(qū)域,其反射率與淺色模塊相同。2.2 QR碼編碼方法國(guó)家質(zhì)量技術(shù)監(jiān)督局發(fā)布的QR碼標(biāo)準(zhǔn)中編碼步驟如圖2-2所示:圖2-2 QR編碼步驟1數(shù)據(jù)編碼將輸入的數(shù)據(jù)轉(zhuǎn)換為一個(gè)位流,如果ECI這種方式使得符號(hào)可以表示缺省字符集以外的數(shù)據(jù)是缺省的,那么一個(gè)數(shù)據(jù)流將包括模式指示符、字符計(jì)數(shù)指示符、數(shù)據(jù),最終以4位終止符0000表示。其結(jié)構(gòu)如圖2-3所示:圖2-3 數(shù)據(jù)編碼結(jié)構(gòu)1數(shù)字模式數(shù)字模

20、式下,將輸入的數(shù)據(jù)每三位分為一組轉(zhuǎn)化為10位二進(jìn)制數(shù),剩余位轉(zhuǎn)化為7位或4位二進(jìn)制數(shù)。最終將二進(jìn)制數(shù)據(jù)連接起來(lái)并在前面加上模式指示符和數(shù)字計(jì)數(shù)指示符。2字母模式在字母模式下,將輸入的數(shù)據(jù)以兩個(gè)字符為一組,將前面字符的值乘以45與第二個(gè)字符的值相加,結(jié)果轉(zhuǎn)化為11位二進(jìn)制數(shù),假設(shè)剩余一位,那么將其轉(zhuǎn)化為6位二進(jìn)制數(shù)。最后將二進(jìn)制數(shù)據(jù)連接并在前面加上模式指示符和數(shù)字計(jì)數(shù)指示符。38位字節(jié)模式在8位字節(jié)模式模式下,直接將二進(jìn)制數(shù)連接起來(lái)并在前面加上模式指示符和字符指示符。4中國(guó)漢字模式在中國(guó)漢字模式下,每個(gè)漢字符由兩個(gè)字節(jié)表示,字符值為GB2312圖形字符的內(nèi)碼值。將數(shù)據(jù)字符兩個(gè)字節(jié)為一組轉(zhuǎn)化為13

21、位二進(jìn)制數(shù),然后二進(jìn)制數(shù)連接起來(lái)并在前面加上模式指示符和字符指示符。(2) 糾錯(cuò)編碼QR采用糾錯(cuò)算法生成一系列糾錯(cuò)碼字,添加在數(shù)字碼字序列后面,使得符號(hào)在遇到損壞時(shí)不至喪失數(shù)據(jù)。糾錯(cuò)共有四個(gè)糾錯(cuò)等級(jí),分別是:L級(jí)糾錯(cuò)容量:7%;M級(jí)糾錯(cuò)容量:15%;Q級(jí)糾錯(cuò)容量:25%;H級(jí)糾錯(cuò)容量:30%。(3) 構(gòu)造最終信息在規(guī)格確定的條件下,將產(chǎn)生的序列按次序放入分塊中,按規(guī)定把數(shù)據(jù)分塊,然后對(duì)每一塊進(jìn)行計(jì)算,得出相應(yīng)的糾錯(cuò)碼字區(qū)塊,把糾錯(cuò)碼字區(qū)塊,按順序構(gòu)成一個(gè)序列,添加到數(shù)據(jù)碼字序列后面6。如D1,D12,D25,D35,D2,D13,D24,D36, . D11,D22,D33,D45,D34,D

22、46,E1.E23,E45,E67,E2,E24,E46,E68,.(4) 構(gòu)造矩陣將探測(cè)圖形、分隔符、定位圖形、校正圖形和碼字模塊放入矩陣中。把算出的完整序列填充到相應(yīng)規(guī)格的二維碼矩陣的區(qū)域中。(5) 掩模掩模的目的是均衡地安排深色與淺色模塊,以及盡可能地防止位置探測(cè)圖形的位圖1011101出現(xiàn)在符號(hào)的其他區(qū)域。掩模不用于功能圖形,用多個(gè)矩陣圖形連續(xù)地對(duì)的編碼區(qū)域的模塊圖形格式信息和版本信息除外進(jìn)行XOR操作。對(duì)不同掩模圖形的結(jié)果計(jì)分,選擇得分最低的掩模方案。(6) 格式和版本信息生成格式和版本信息放入相應(yīng)的區(qū)域內(nèi)。版本7-40都包含了版本信息,沒(méi)有版本信息的全為0。二維碼上兩個(gè)位置包含了版

23、本信息,它們是冗余的。版本信息共18位,6*3的矩陣,其中6位是數(shù)據(jù)位,如版本號(hào)8,數(shù)據(jù)位的信息是 001000,后面的12位是糾錯(cuò)位。本次設(shè)計(jì)需要完成二維碼的編碼,圖像采集以及譯碼功能。二維碼的編碼是將輸入數(shù)據(jù)生成相應(yīng)的二維碼,編碼過(guò)程是對(duì)數(shù)據(jù)進(jìn)行數(shù)據(jù)分析、編碼、糾錯(cuò)、確定格式版本信息等的過(guò)程,編碼語(yǔ)言采用Java,使用MyEclipse 10軟件編程,需要下載使用QR code.jar包,生成二維碼版本采用版本號(hào)7,糾錯(cuò)采用M級(jí)糾錯(cuò)容量:15%,最終圖片保存為bmp格式;圖像采集是要將生成的二維碼采集到上位機(jī),使用KeiluVision5軟件編程,編程語(yǔ)言為C,采集過(guò)程為使用STM32開(kāi)發(fā)

24、板驅(qū)動(dòng)OV7670攝像頭拍照,拍照后的圖片緩存到攝像頭自帶的FIFO緩存器中,編輯程序?qū)崿F(xiàn)FIFO讀寫(xiě)功能,將圖片數(shù)據(jù)通過(guò)USB線輸出到上位機(jī)當(dāng)中,并以截圖方式保存到上位機(jī);二維的識(shí)別系統(tǒng)主要完成了對(duì)采集到的二維碼圖片進(jìn)行譯碼復(fù)原出所攜帶信息的功能,使用VC+6.0編程,編程語(yǔ)言為C+。譯碼是將采集到的圖片進(jìn)行圖像預(yù)處理,定位與校正,糾錯(cuò)等的過(guò)程。3二維碼生成系統(tǒng)設(shè)計(jì)3.1二維碼編碼 設(shè)計(jì)使用的開(kāi)發(fā)軟件是MyEclipse 10,首先要下載并安裝MyEclipse 10軟件,使用JAVA語(yǔ)言實(shí)現(xiàn)編程。 二維碼采用不同的編碼規(guī)那么共有幾十種,廣泛使用的有4、5種,目前使用率最好的編碼方式為DMD

25、ata Matrix和QR(Quick Response)兩種。由于實(shí)現(xiàn)二維碼的技術(shù)很多,各自互不兼容,這樣在市場(chǎng)上各自為戰(zhàn),普及率很低,針對(duì)此情況國(guó)家先后制定了PDF417和QR兩種編碼標(biāo)準(zhǔn)。本次編碼完全遵照國(guó)家標(biāo)準(zhǔn)編寫(xiě),符合市場(chǎng)標(biāo)準(zhǔn)。QR二維碼編碼模塊作為一個(gè)通用的二維碼編碼功能包,所提供的功能完全和國(guó)家標(biāo)準(zhǔn)一致,提供對(duì)數(shù)字、字母、8位字節(jié)模式和中國(guó)漢字等模式對(duì)應(yīng)的編碼方法,同時(shí)也提供對(duì)應(yīng)選擇編碼等級(jí)和糾錯(cuò)等級(jí)的功能。QR碼的主要功能應(yīng)用為:1自動(dòng)化文字傳輸:通常應(yīng)用在文字的傳輸,利用快速方便的模式,讓人可以輕松輸入如地址、 號(hào)碼等,進(jìn)行名片、進(jìn)程數(shù)據(jù)等的快速交換。2數(shù)字內(nèi)容下載:通常應(yīng)用

26、在電信公司游戲及影音的下載,在賬單中打印相關(guān)的QR碼信息供消費(fèi)者下載,消費(fèi)者通過(guò)QR碼的解碼,就能輕易連接到下載的網(wǎng)頁(yè),下載需要的數(shù)字內(nèi)容。3網(wǎng)址快速鏈接:以提供用戶進(jìn)行網(wǎng)址快速鏈接、 快速調(diào)用等。二維碼編碼流程如圖3-1所示:圖3-1二維碼編碼流程圖1數(shù)據(jù)分析:分析所輸入的數(shù)據(jù)流,確定要進(jìn)行編碼的字符的類型。QR 碼支持?jǐn)U充解釋,可以對(duì)與缺省的字符集不同的數(shù)據(jù)進(jìn)行編碼。QR 碼支持不同的模式,必要時(shí)可以進(jìn)行模式之間的轉(zhuǎn)換更高效地將數(shù)據(jù)轉(zhuǎn)換,以便為二進(jìn)制串。2數(shù)據(jù)編碼:將數(shù)據(jù)字符轉(zhuǎn)換為位流。在當(dāng)需要進(jìn)行模式轉(zhuǎn)換時(shí),在新的模式段開(kāi)始前參加模式指示符進(jìn)行模式轉(zhuǎn)換。在數(shù)據(jù)序列后面參加終止符。將產(chǎn)生的

27、位流分為每8位一個(gè)碼字,版本使用版本號(hào)7。3糾錯(cuò)編碼:按塊生成相應(yīng)的錯(cuò)誤糾正糾錯(cuò)碼字,并將其參加到相應(yīng)的數(shù)據(jù)碼字序列的后面。糾錯(cuò)容量為M:15%。4構(gòu)造最終信息:在每一塊中置入數(shù)據(jù)和糾錯(cuò)碼字,必要時(shí)加剩余位。5在矩陣中布置模塊:將尋像圖形、分隔符、定位圖形、校正圖形與碼字模塊一起放入矩陣。6掩模:依次將掩模圖形用于符號(hào)的編碼區(qū)域,并選擇其中使深色淺色模塊比率最優(yōu)且使不希望出現(xiàn)的圖形最少化的結(jié)果。3.2二維碼編碼程序?qū)崿F(xiàn)設(shè)計(jì)使用JAVA語(yǔ)言實(shí)現(xiàn)編程,使用的版本號(hào)為版本號(hào)7,糾錯(cuò)級(jí)別為M級(jí)糾錯(cuò)容量:15%,使用了QR code.jar包、Servlet和jsp等,首先需要新建Web Project

28、工程,然后將QR code.jar包添加到lib文件夾下,如圖3-2所示:圖3-2添加jar包顯示主要實(shí)現(xiàn)程序如下:/ 設(shè)置糾錯(cuò)能力 L%7 M%15 Q%25 H%30qrcode.setQrcodeErrorCorrect(M);/ 設(shè)置編碼 B代表二進(jìn)制來(lái)存儲(chǔ)信息rcode.setQrcodeEncodeMode(B);/ 獲取畫(huà)筆工具Graphics2D g2D = image.createGraphics();/ 設(shè)置背景色g2D.setBackground(new Color(255,255,255);/ 繪制矩形生成界面設(shè)置局部程序如下:程序編寫(xiě)完成,編譯,運(yùn)行無(wú)錯(cuò)。將編寫(xiě)程序部

29、署運(yùn)行后,生成界面為網(wǎng)頁(yè)版,翻開(kāi)本地網(wǎng)址 :/localhost:8080/ORCode/,顯示如圖3-3所示生成界面:g2D.clearRect(0, 0, 140, 140);/ 設(shè)置前景色g2D.setColor(Color.BLACK);/ 根據(jù)布爾數(shù)組填充圖片的格點(diǎn)g2D.fillRect(j * 3 + 2, i * 3 + 2, 3, 3);/ +2-偏移量g2D.dispose();/ 釋放畫(huà)筆工具image.flush();/ 去除殘留數(shù)據(jù)/ 以流的方式將image輸出,格式為bmpImageIO.write(image, bmp, response.getOutputStr

30、eam();生成界面設(shè)置局部程序如下:程序編寫(xiě)完成,編譯,運(yùn)行無(wú)錯(cuò)。將編寫(xiě)程序部署運(yùn)行后,生成界面為網(wǎng)頁(yè)版,翻開(kāi)本地網(wǎng)址 :/localhost:8080/ORCode/,顯示如圖3-3所示生成界面:圖3-3二維碼生成界面 運(yùn)行完成,在生成對(duì)話框中,輸入所要生成的信息內(nèi)容,點(diǎn)擊圖3-3中生成二維碼圖標(biāo),即可生成相應(yīng)的二維碼,生成后的顯示界面如圖3-4所示:圖3-4二維碼生成顯示界面至此,二維碼生成系統(tǒng)完成了對(duì)輸入數(shù)據(jù)信息的編碼,生成了相應(yīng)的二維碼??梢栽诓杉到y(tǒng)和譯碼系統(tǒng)中引用。4二維碼圖像采集4.1硬件介紹4.1.1 STM32簡(jiǎn)介STM32F103xx增強(qiáng)型系列使用高性能的ARM Cort

31、ex-M3 32位的RISC內(nèi)核,工作頻率為72MHz,內(nèi)置高速存儲(chǔ)器(高達(dá)512K字節(jié)的閃存和64K字節(jié)的SRAM),豐富的增強(qiáng)I/O端口和連接到兩條APB總線的外設(shè)。所有型號(hào)的器件都包含3個(gè)12位的ADC、4個(gè)通用16位定時(shí)器和2個(gè)PWM定時(shí)器,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口:多達(dá)2個(gè)I2C接口、3個(gè)SPI接口、2個(gè)I2S接口、1個(gè)SDIO接口、5個(gè)USART接口、一個(gè)USB接口和一個(gè)CAN接口。STM32F103xx大容量增強(qiáng)型系列工作于-40至+105的溫度范圍,供電電壓2.0V至3.6V,一系列的省電模式保證低功耗應(yīng)用的要求。STM32F103xx大容量增強(qiáng)型系列產(chǎn)品提供包括從64腳至1

32、44腳的6種不同封裝形式;根據(jù)不同的封裝形式,器件中的外設(shè)配置不盡相同。STM32有豐富的內(nèi)部資源,如下所示:RealView MDKMiertocontroller Development Kit基于ARM微控制器的專業(yè)嵌入式開(kāi)發(fā)工具;內(nèi)置閃存存儲(chǔ)器;內(nèi)置SRAM;嵌套的向量式中斷控制器(NVIC);外部中斷/事件控制器(EXTI);時(shí)鐘和啟動(dòng);自舉模式;DMA;RTC(實(shí)時(shí)時(shí)鐘)和后備存放器;窗口看門(mén)狗;I2C總線;通用同步/異步接受發(fā)送器(USART);串行外設(shè)接口(SPI);控制器區(qū)域網(wǎng)絡(luò)(CAN);通用串行總線(USB);通用輸入輸出接口(GPIO);ADC(模擬/數(shù)字轉(zhuǎn)換器);溫度

33、傳感器;串行線JTAG調(diào)試口(SWJ-DP)。4.1.2 STM32中斷ARM cortex_m3內(nèi)核支持256個(gè)中斷16個(gè)內(nèi)核+240外部和可編程256級(jí)中斷優(yōu)先級(jí)的設(shè)置,與其相關(guān)的中斷控制和中斷優(yōu)先級(jí)控制存放器NVIC、SYSTICK等也都屬于cortex_m3內(nèi)核的局部。STM32采用了cortex_m3內(nèi)核所以這局部仍舊保存使用,但STM32并沒(méi)有使用cortex_m3內(nèi)核全部的東西如內(nèi)存保護(hù)單元MPU等,因此它的NVIC是cortex_m3內(nèi)核的NVIC的子集。STM32可以支持的68個(gè)外部中斷通道,已經(jīng)固定的分配給相應(yīng)的外部設(shè)備。每個(gè)中斷通道都具備自己的中斷優(yōu)先級(jí)控制字節(jié)PRI_n

34、(8位,但在STM32中只使用4位,高4位有效),每4個(gè)通道的8位中斷優(yōu)先級(jí)控制字PRI_n構(gòu)成一個(gè)32位的優(yōu)先級(jí)存放器Priority Register。68個(gè)通道的優(yōu)先級(jí)控制字至少構(gòu)成17個(gè)32位的優(yōu)先級(jí)存放器,它們是NVIC存放器中的一個(gè)重要局部。4.1.3 OV7670介紹OV7670是OVOmmiVision公司生產(chǎn)的一個(gè)1/6寸的CMOS VGA圖像傳感器。該傳感器體積小、工作電壓低,提供單片VGA攝像頭和影像處理器的所有功能。通過(guò)SCCB總線控制,可以輸出整幀、子采樣、取窗口等方式的各種分辨率8位影響數(shù)據(jù)。該產(chǎn)品VGA圖像最高達(dá)30幀/秒。我們可以完全控制圖像質(zhì)量、數(shù)據(jù)格式和傳輸

35、方式。所有圖像處理功能過(guò)程包括伽瑪曲線、白平衡、飽和度、色度等都可以通過(guò)SCCB接口編程。OmmiVision圖像傳感器應(yīng)用獨(dú)有的傳感器技術(shù),通過(guò)減少或者消除光學(xué)或者電子缺陷如固定圖案噪聲、托尾、浮散等,提高圖像質(zhì)量得到清晰的穩(wěn)定的彩色圖像。OV7670的特點(diǎn)有:高靈敏度、低電壓適合嵌入式應(yīng)用;標(biāo)準(zhǔn)的SCCB接口,兼容I2C接口;支持RawRGB、RGB(GRB4:2:2,RGB565/555/444),YUV(4:2:2)和YCbCr(4:2:2)輸出格式;支持VGA、CIF和從CIF到40*30的各種尺寸;VarioPixel子采樣方式;支持自動(dòng)曝光控制、自動(dòng)增益控制、自動(dòng)白平衡、自動(dòng)消除

36、燈光條紋、自動(dòng)黑白平衡校準(zhǔn)等自動(dòng)控制功能。圖像質(zhì)量控制包括色飽度、色相、伽瑪、銳度和ANTI_BLOOM 等設(shè)置;支持閃光燈:LED燈;通用串行總線(USB);通用輸入輸出接口(GPIO);ADC(模擬/數(shù)字轉(zhuǎn)換器);串行線JTAG調(diào)試口(SWJ-DP);支持圖像縮放。OV7670功能框圖如圖4-1所示:圖4-1 OV7670功能框圖OV7670傳感器包括如下一些功能模塊:1感光整列Image ArrayOV7670總共有656*488個(gè)像素,其中640*480個(gè)有效即有效像素為30W。2時(shí)序發(fā)生器Video Timing Generator時(shí)序發(fā)生器具有的功能包括:整列控制和幀率發(fā)生7種不同

37、格式輸出、內(nèi)部信號(hào)發(fā)生器和分布、幀率時(shí)序、自動(dòng)曝光控制、輸出外部時(shí)序VSYNC、HREF/HSYNC和PCLK。3模擬信號(hào)處理Analog Processing模擬信號(hào)處理所有模擬功能,并包括:自動(dòng)增益AGC和自動(dòng)白平衡AWB。4A/D 轉(zhuǎn)換A/D原始的信號(hào)經(jīng)過(guò)模擬處理器模塊之后,分G和BR兩路進(jìn)入一個(gè)10 位的A/D 轉(zhuǎn)換器,A/D 轉(zhuǎn)換器工作在12M頻率,與像素頻率完全同步轉(zhuǎn)換的頻率和幀率有關(guān)。A/D范圍乘積和A/D的范圍控制共同設(shè)置A/D的范圍和最大值,允許用戶根據(jù)應(yīng)用調(diào)整圖片的亮度。5測(cè)試圖案發(fā)生器Test Pattern Generator測(cè)試圖案發(fā)生器功能包括:八色彩色條圖案、漸變

38、至黑白彩色條圖案和輸出腳移位“1。6數(shù)字處理器DSP這個(gè)局部控制由原始信號(hào)插值到RGB 信號(hào)的過(guò)程,并控制一些圖像質(zhì)量:7縮放功能Image Scaler這個(gè)模塊按照預(yù)先設(shè)置的要求輸出數(shù)據(jù)格式,能將YUV/RGB信號(hào)從VGA縮小到CIF以下的任何尺寸。8數(shù)字視頻接口Digital Video Port通過(guò)存放器COM21:0,調(diào)節(jié)IOL/IOH的驅(qū)動(dòng)電流,以適應(yīng)用戶的負(fù)載。9SCCB接口SCCB InterfaceSCCB接口控制圖像傳感器芯片的運(yùn)行,可以進(jìn)行通信。10LED和閃光燈的輸出控制LED and Storbe Flash Control OutputOV7670有閃光燈模式,可以控

39、制外接閃光燈或閃光LED的工作。OV7670的存放器通過(guò)SCCB時(shí)序訪問(wèn)并設(shè)置,SCCB時(shí)序和IIC時(shí)序十分類似。OV7670的圖像數(shù)據(jù)輸出格式有:VGA,即分辨率為640*480的輸出模式;QVGA,即分辨率為320*240的輸出格式,也就是本文檔我們需要用到的格式;QQVGA,即分辨率為160*120的輸出格式;PCLK,即像素時(shí)鐘,一個(gè)PCLK時(shí)鐘,輸出一個(gè)像素(或半個(gè)像素);VSYNC,即幀同步信號(hào);HREF /HSYNC,即行同步信號(hào)。4.2硬件連接關(guān)系及原理4.2.1硬件連接關(guān)系A(chǔ)LIENTEK OV7670攝像頭模塊與MCU連接需要16根信號(hào)線,以及2根電源線。這16根信號(hào)線與A

40、LIENTEK STM32開(kāi)發(fā)板的連接關(guān)系如表4-1所示:表4-1攝像頭模塊與開(kāi)發(fā)板連接關(guān)系OV7670攝像頭STM32開(kāi)發(fā)板D0D7PB0PB7SCLPC4SDAPC5WRSTPA0RCLKPA1RRSTPA4OEPA11WENPA12VSYNCPA154.2.2硬件原理圖4-2 攝像頭引腳圖ALIENTEK OV7670攝像頭模塊自帶了有源晶振,用于產(chǎn)生12M時(shí)鐘作為OV7670的XCLK輸入。同時(shí)自帶了穩(wěn)壓芯片,用于提供OV7670穩(wěn)定的2.8V工作電壓,并帶有一個(gè)FIFO芯片AL422B,該FIFO芯片的容量是384K字節(jié),足夠存儲(chǔ)2幀QVGA的圖像數(shù)據(jù)。模塊通過(guò)一個(gè)2*9的雙排排針P

41、1與外部通信,與外部的通信信號(hào)如表4-2所示:表4-2 OV7670模塊信號(hào)及其作用描述信號(hào)作用描述信號(hào)作用描述VCC3.3 模塊供電腳,接3.3.V電源FIFO_WENFIFO 寫(xiě)使能GND模塊地線FIFO_WRSTFIFO寫(xiě)指針復(fù)位OV_SCLSCCB通信時(shí)鐘信號(hào)FIFO_RRSTFIFO讀指針復(fù)位OV_SDASCCB通信數(shù)據(jù)信號(hào)FIFO_OEFIFO輸出使能FIFO_D7:0 FIFO輸出數(shù)據(jù)8位FIFO_VSYNCOV7670幀同步信號(hào)FIFO_RCLK 讀FIFO時(shí)鐘ALIENTEK OV7670攝像頭模塊存儲(chǔ)圖像數(shù)據(jù)的過(guò)程為:等待OV7670同步信號(hào)FIFO寫(xiě)指針復(fù)位FIFO寫(xiě)使能

42、等待第二個(gè)OV7670同步信號(hào)IFO寫(xiě)禁止。通過(guò)以上5個(gè)步驟,我們就完成了1幀圖像數(shù)據(jù)的存儲(chǔ)。在存儲(chǔ)完一幀圖像以后,我們就可以開(kāi)始讀取圖像數(shù)據(jù)了。讀取過(guò)程為:FIFO讀指針復(fù)位給FIFO讀時(shí)鐘FIFO_RCLK讀取第一個(gè)像素高字節(jié)給FIFO讀時(shí)鐘讀取第一個(gè)像素低字節(jié)給FIFO讀時(shí)鐘讀取第二個(gè)像素高字節(jié)讀取剩余像素結(jié)束。4.2.3軟件實(shí)現(xiàn)編程需下載安裝KeiluVision5軟件,使用C語(yǔ)言編程,需要下載安裝程序編程軟件,這里使用Fly Mcu V0.188下載地址“ /: mcuisp 。編程程序包含了STM32F103RCT6開(kāi)發(fā)板驅(qū)動(dòng)OV7670攝像頭拍照緩存到攝像頭自帶的FIFO功能和使

43、用串口上傳上位機(jī)顯示功能。上傳直接使用USB-232串口連接上位機(jī)實(shí)現(xiàn)。系統(tǒng)實(shí)現(xiàn)的功能流程圖如下所示:圖4-3 主函數(shù)流程圖主函數(shù)初始化主要是對(duì)系統(tǒng)時(shí)鐘初始化、串口初始化、延時(shí)初始化、攝像頭初始化和LED接口初始化,完成系統(tǒng)的初始配置,為程序運(yùn)行做準(zhǔn)備。更新上位機(jī)顯示,去除上位機(jī)已有的內(nèi)容,為接收新的內(nèi)容做準(zhǔn)備,時(shí)鐘信號(hào)到來(lái)時(shí),上位機(jī)接收顯示圖像。新圖像是否傳輸完成。用來(lái)檢測(cè)上傳一幀的圖像是否完全上傳成功,假設(shè)圖像未完全上傳那么返回到更新上位機(jī)顯示,重新上傳圖像,假設(shè)上傳成功,LED燈狀態(tài)取反,等待下一次圖像的上傳。如此反復(fù)循環(huán)。采集圖像流程圖如圖4-4所示:圖4-4 攝像頭采集流程圖主函數(shù)初

44、始化成功后,程序順序執(zhí)行判斷是否開(kāi)始采集圖像,假設(shè)成立,發(fā)送數(shù)據(jù)起始命令,準(zhǔn)備開(kāi)始采集圖像,假設(shè)不成立,那么直接結(jié)束,數(shù)據(jù)起始命令發(fā)送后,F(xiàn)IFO緩存器可讀,那么開(kāi)始上傳圖像,傳輸完成后,發(fā)送數(shù)據(jù)結(jié)束命令,停止讀FIFO數(shù)據(jù),如此一幀數(shù)據(jù)上傳完成,完成后,延時(shí)執(zhí)行,等待下一次采集圖像。在HARDWARE文件夾下新建一個(gè)OV7670的文件夾。然后新建如下文件:ov7670.c、sccb.c、ov7670.h、sccb.h、ov7670cfg.h等5個(gè)文件,將他們保存在OV7670文件夾下,并將這個(gè)文件夾參加頭文件包含路徑。另外,還需要用到exti.c和timer.c,所以把這兩個(gè)文件也參加HAR

45、DWARE組下。初始化OV7670相關(guān)的IO口,然后最主要是完成OV7670的存放器序列初始化。局部程序如下:u8 OV7670_Init(void)u8 temp;u16 i=0; delay_ms(200);delay_ms(1500);/設(shè)置IO口RCC-APB2ENR|=1APB2ENR|=1CRL|=0X00030033; /PA0/1/4 輸出 GPIOA-CRH|=0X83033000; /PA15 輸入、PA11/12/14輸出 GPIOB-CRL=0X88888888; /PC07輸入 SCCB_Init(); /初始化SCCB的IO口 if(SCCB_WR_Reg(0x12

46、,0x80)return 1;/復(fù)位SCCBMian函數(shù)局部代碼如下: Stm32_Clock_Init(9); /系統(tǒng)時(shí)鐘設(shè)置uart_init(72,115200); /串口初始化為115200delay_init(72); /延時(shí)初始化 OV7670_Init(); /初始化攝像頭LED_Init(); /初始化與LED連接的硬件接口while(OV7670_Init() /初始化OV7670EXTI15_Init(); /使能定時(shí)器捕獲OV7670_Window_Set(10,174,240,240);/設(shè)置窗口GPIOB-CRL=0X88888888; /設(shè)置數(shù)據(jù)IO口為輸入 whi

47、le(1) /設(shè)置IO口RCC-APB2ENR|=1APB2ENR|=1CRL|=0X00030033; /PA0/1/4 輸出 GPIOA-CRH|=0X83033000; /PA15 輸入、PA11/12/14輸出 GPIOB-CRL=0X88888888; /PC07輸入 SCCB_Init(); /初始化SCCB的IO口 if(SCCB_WR_Reg(0x12,0x80)return 1;/復(fù)位SCCBMian函數(shù)局部代碼如下: Stm32_Clock_Init(9); /系統(tǒng)時(shí)鐘設(shè)置uart_init(72,115200); /串口初始化為115200delay_init(72);

48、/延時(shí)初始化 OV7670_Init(); /初始化攝像頭LED_Init(); /初始化與LED連接的硬件接口while(OV7670_Init() /初始化OV7670camera_refresh();/更新顯示 if(i!=ov_frame)/DS0閃爍4.2.4運(yùn)行實(shí)現(xiàn)ALIENTEK STM32開(kāi)發(fā)板與攝像頭模塊的連接,是通過(guò)杜邦線連接的,由于線比擬長(zhǎng),容易受到外界干擾,導(dǎo)致圖像顯示錯(cuò)亂甚至顯示不出來(lái),所以本次設(shè)計(jì)采用不同方式對(duì)這些杜邦線進(jìn)行分開(kāi)處理,需要將數(shù)據(jù)線:首先D0D7捆綁在一起,然后將其他線捆綁在一起,這樣處理以后,可以有效防止圖像錯(cuò)亂,甚至不出圖像的問(wèn)題。最后,程序編寫(xiě)完

49、成,編譯、運(yùn)行無(wú)錯(cuò),下載代碼到STM32開(kāi)發(fā)板上,在攝像頭模塊初始化成功之后,調(diào)節(jié)焦距等即可顯示出圖像,最后截圖保存到上位機(jī)。圖像顯示如圖4-5所示:圖4-5 上位機(jī)顯示圖像圖像保存到上位機(jī)后如圖4-6所示:圖4-6 上位機(jī)保存后圖像圖片保存到上位機(jī)后,在識(shí)別系統(tǒng)時(shí)可以進(jìn)行解碼應(yīng)用。5二維碼識(shí)別系統(tǒng)設(shè)計(jì)5.1二維碼識(shí)別系統(tǒng)譯碼流程圖如下列圖所示:圖5-1 二維碼譯碼流程圖通過(guò)圖像的采集設(shè)備,得到含有條碼的圖像,此后主要經(jīng)過(guò)圖像預(yù)處理、條碼定位、讀取數(shù)據(jù)、糾錯(cuò)和解碼等步驟實(shí)現(xiàn)條碼的識(shí)別。1圖像預(yù)處理二維碼圖像預(yù)處理可分為三個(gè)局部:彩色圖像灰度化、利用中值濾波進(jìn)行圖像平滑以及利用灰度圖像二值化技術(shù)

50、分割圖像。如果原始采集圖像為彩色圖像。首先需要進(jìn)行灰度化處理。Xiong Zou 等13將二維碼的圖像預(yù)處理算法整體上分為兩類,即MBF算法和MFB算法。MBF算法是指先進(jìn)行二值化處理,然后進(jìn)行中值濾波;MFB算法指先進(jìn)行中值濾波,然后在對(duì)濾波結(jié)果進(jìn)行二值化處理。2彩色圖像灰度化通常直接采集到的是彩色圖像,每個(gè)像素有R紅、G綠、B藍(lán)三個(gè)顏色分量,每個(gè)顏色分量的取值范圍為0到255,而二維碼是以黑白模塊構(gòu)成,而顏色不包含任何信息,所以首先要對(duì)采集到的彩色圖像進(jìn)行灰度化處理,通常采用式5.1進(jìn)行灰度化處理,其中Cr、Cg、Cb分別R、G、B三個(gè)顏色分量的權(quán)值,且滿足Cr+Cg+Cb。 5.13二維

51、碼的定位定位算法就是在圖像中找到二維碼圖形確實(shí)切位置方法,同時(shí)得到二維碼的尺寸、所覆蓋的區(qū)域范圍、邊緣等信息。二維碼一般為矩形,所以二維碼的定位過(guò)程實(shí)際就是求矩形四個(gè)頂點(diǎn)的坐標(biāo)值的過(guò)程。二維碼的定位算法的主要研究方向有兩個(gè):一是利用不同二維碼的結(jié)構(gòu)特征來(lái)定位二維碼,即在圖像中尋找二維碼結(jié)構(gòu)中的尋像圖像,通過(guò)尋像圖像來(lái)定位二維碼;二是利用二維碼的形狀特征,二維碼通常是矩形,而且邊緣較為整齊,可以先通過(guò)圖像識(shí)別技術(shù)確定二維碼的邊緣,在通過(guò)邊緣的信息計(jì)算出二維碼的精確位置。在QR碼圖像的左上角、右上角和左下角各分布了一個(gè)位置探測(cè)圖形,定位圖像的模塊序列按照“黑-白-黑-白-黑次序排列,且各模塊相對(duì)寬

52、度滿足比例1:1:3:1:1,該算法分別從X方向和Y方向進(jìn)行直線掃描,找到滿足“黑-白-黑-白-黑次序且寬度比例為1:1:3:1:1的模塊序列;綜合X方向的掃描結(jié)果和Y方向的掃描結(jié)果,分別確定三個(gè)定位圖像的中心坐標(biāo);最后通過(guò)計(jì)算得到4個(gè)頂點(diǎn)的坐標(biāo)14。4二維碼的校正如果圖像僅僅是位置和角度上發(fā)生改變,可以直接通過(guò)圖像的平移和旋轉(zhuǎn)來(lái)進(jìn)行校正。但是實(shí)際情況下,往往由于圖像采集角度和QR碼本身的不平整,導(dǎo)致采集到得圖像發(fā)生畸變,所以需要更為復(fù)雜的校正操作。如果二維碼圖形僅僅是方向上發(fā)生改變,而幾何形狀沒(méi)有太大改變,可以通過(guò)簡(jiǎn)單的圖像旋轉(zhuǎn)來(lái)校正圖像。將圖像逆時(shí)針旋轉(zhuǎn)的表達(dá)式如下: 5.25.2識(shí)別程序

53、實(shí)現(xiàn)譯碼使用C+編寫(xiě),需下載使用MFC類庫(kù)。識(shí)別程序運(yùn)行后應(yīng)當(dāng)實(shí)現(xiàn)對(duì)第四章采集到圖像的譯碼。復(fù)原所攜帶的信息。程序運(yùn)行支持版本VC+5.0以上,本設(shè)計(jì)使用VC+6.0,所以需下載安裝VC+6.0軟件,譯碼是編碼的反過(guò)程,需對(duì)生成過(guò)程進(jìn)行反向編譯。首先需要?jiǎng)?chuàng)立新的工程。程序中QRcode版本相關(guān)信息,糾錯(cuò)信息局部代碼如下:int ncRSBlock;/ 糾錯(cuò)塊數(shù)int ncAllCodeWord;/ 塊內(nèi)碼字?jǐn)?shù)int ncDataCodeWord;/ 數(shù)據(jù)碼字?jǐn)?shù)碼字?jǐn)?shù)-RS碼字?jǐn)?shù) RS_BLOCKINFO, *LPRS_BLOCKINFO;/QRcode版本相關(guān)信息tint nAlignPoint6; / 校正圖形中心坐標(biāo)RS_BLOCKINFO RS_BlockInfo14; / 糾錯(cuò)塊信息RS_BLOCKINFO RS_BlockInfo24; / 糾錯(cuò)塊信息數(shù)據(jù)指針,顏色過(guò)濾局部代碼如下:public:BYTE * bitmap; /位圖數(shù)據(jù)指針BYTE * bitMatrix; /矩陣數(shù)據(jù)指針int DECIMAL_POINT;/小數(shù)點(diǎn)5.3運(yùn)行實(shí)現(xiàn)程序編寫(xiě)完成后,要進(jìn)行保存,檢查是否有編寫(xiě)錯(cuò)誤,編譯無(wú)錯(cuò)誤后,運(yùn)行程序,形成QRcodeDecode

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論