摘要:設計了一種基于嵌入式Linux的二維碼自動識別系統(tǒng)。對系統(tǒng)的軟硬件結(jié)構進行了詳細分析,提出了一種包含圖像二值化、信息定位和譯碼的二維碼識別算法。實驗證明了該系統(tǒng)設計的可行性和二維碼識別算法的有效性。
關鍵詞:二維碼識別;嵌入式Linux系統(tǒng);QR碼;計算機視覺
中圖分類號:TP391.4 文獻標識碼:A 文章編號:1007-9599 (2012) 17-0000-02
1 引言
隨著移動互聯(lián)網(wǎng)技術的發(fā)展,二維碼作為一種新的信息技術在人們生活中的應用越來越廣泛,例如票據(jù)識別、網(wǎng)上購物、手機支付、儲存運輸、食品追溯、設備管理、圖書借閱、身份識別等。二維碼信息量大、容易進行快速自動數(shù)據(jù)采集,在國內(nèi)外已經(jīng)成為人們生活中快捷便利的信息交流方式,能在不同應用環(huán)境下對二維碼進行快速可靠地識別也是目前研究的熱點。二維碼未來在移動互聯(lián)網(wǎng)和物聯(lián)網(wǎng)中也將承擔重要作用,騰訊董事會主席馬化騰在2012中國互聯(lián)網(wǎng)大會上指出“二維碼將在線上線下結(jié)合的過程中發(fā)揮巨大作用,并將成為線上線下的關鍵入口,通過攝像頭拍攝二維碼就可以把現(xiàn)實世界和網(wǎng)絡世界連接起來?!?/p>
2 嵌入式Linux系統(tǒng)的優(yōu)勢
嵌入式linux是將日益流行的Linux操作系統(tǒng)進行裁剪修改,使之能在嵌入式計算機系統(tǒng)上運行的一種操作系統(tǒng),采用Linux做嵌入式系統(tǒng)具有如下優(yōu)勢。第一,Linux是開源的,繼承了Internet上無限的開放源代碼資源,可以根據(jù)具體應用進行修改;第二,Linux內(nèi)核小、效率高,性能優(yōu)異;第三,Linux是免費的操作系統(tǒng),在價格上極具競爭力;第四,Linux適應于多種CPU和多種硬件平臺,是一個跨平臺的系統(tǒng),軟件移植性好;第五,便于模塊化設計,應用產(chǎn)品開發(fā)周期短,易于處理實時信號、安全性和穩(wěn)定性好。
3 二維碼識別系統(tǒng)
3.1 系統(tǒng)結(jié)構
在系統(tǒng)硬件層包括典型輸入輸出設備的USB攝像頭和觸摸屏,借助Linux內(nèi)核提供USB攝像頭驅(qū)動和觸摸屏驅(qū)動,方便上層程序控制攝像頭和觸摸屏。在系統(tǒng)用戶層,借助V4L(Video for Linux)接口實現(xiàn)視頻采集系統(tǒng),利用OPENCV庫實現(xiàn)圖像處理的基本操作,借助QT來實現(xiàn)系統(tǒng)界面。二維碼識別核心模塊則是用C++編寫,為了系統(tǒng)的可擴展性把二維碼識別部分編譯成了庫文件,提供給上層調(diào)用接口。
3.2 輸入和輸出模塊設計
圖像采集和顯示是二維碼識別系統(tǒng)的基本輸入輸出模塊。嵌入式Linux圖像采集用的最多的是V4L,該內(nèi)核為應用程序提供了大量的圖像采集API,這些API對下層的采集設備是透明的,不用關心采集設備是USB攝像頭或者專業(yè)的COMS攝像頭。嵌入式Linux圖像采集采用V4L2(Video for Linux Two)接口,圖像采集過程主要包括:(1)打開設備文件,查詢設備功能;(2)選擇視頻,并設置視頻格式;(3)申請幀緩沖空間、幀緩沖入隊列;(4)開始視頻采集;(5)停止視頻采集,關閉設備。為了實時地在觸摸屏上顯示圖像,重寫了跨平臺圖形用戶界面應用程序框架QT 的paintEvent事件,實現(xiàn)圖像獲取、格式轉(zhuǎn)化、顯示區(qū)域重繪等。
3.3 二維碼識別算法
二維碼識別模塊是整個識別系統(tǒng)的核心,為了更好的復用,我們把他編譯成了庫文件。在對二維碼圖像進行預處理之后,從QR碼符號到輸出數(shù)據(jù)字符的譯碼步驟是編碼程序的逆過程。由于QR碼在國內(nèi)使用的廣泛性,下面以QR碼的識別為例介紹二維碼的識別過程。二維碼識別過程如下:(1)對圖像進行二值化處理,為了提高不同光照和對比度下的識別率,采用自適應閥值算法進行二值化處理。(2)使用輪廓查找方法來找到3個尋像圖形,利用尋像圖形的坐標計算出編碼區(qū),獲取二維碼的版本信息和格式信息。(3)用掩模圖形對編碼區(qū)的位圖進行異或處理消除掩模。(4)根據(jù)有關標準設定的模塊排列規(guī)則,識讀符號字符,恢復信息的數(shù)據(jù)與糾錯碼字[7]。(5)按照使用的模式譯碼得出數(shù)據(jù)字符并輸出結(jié)果。
4 系統(tǒng)實現(xiàn)與驗證
開發(fā)的嵌入式二維碼識別系統(tǒng)如圖1所示。采用的硬件系統(tǒng)包括:ARM處理器S3C2440,內(nèi)存容量256M,外存容量512M,開發(fā)板“友善之臂MINI2440”,200萬像素USB攝像頭和3.5寸觸摸屏。系統(tǒng)實現(xiàn)的軟件環(huán)境:操作系統(tǒng)Linux-2.6.24,圖像處理庫OPENCV-1.0.0,圖形用戶界面QT-embeded-4.6.7,編譯器ARM-LINUX-GCC-4.4.3,調(diào)試器GDB-6.8。預留對外數(shù)據(jù)接口:RJ45網(wǎng)口和232串口。
測試用圖可以根據(jù)編碼算法自己生成,也可以使用互聯(lián)網(wǎng)上現(xiàn)有的二維碼圖像。如圖2所示,(a)為攝像頭采集到的二維碼圖像;(b)為二維碼識別結(jié)果“http://www.haut.edu.cn”,這是河南工業(yè)大學的主頁地址。在圖像有噪聲、旋轉(zhuǎn)、光照變化等條件進行多次實驗,均能得到不錯的識別效果,總體識別率達到96%。
5結(jié)論
本文設計了一種嵌入式二維碼識別系統(tǒng),對系統(tǒng)硬件結(jié)構和軟件移植進行了深入分析,重點對二維碼識別算法進行了分析,該系統(tǒng)具有通用性強、擴展性好、方便用戶使用等特點。經(jīng)過硬件設計和軟件移植,實驗驗證了該系統(tǒng)設計的可行性和二維碼譯碼算法的有效性。
參考文獻:
[1]王文豪,張亞紅,朱全銀,單勁松.QR Code二維條形碼的圖像識別[J].計算機技術與發(fā)展,2009,19(10):123-126.
[2]劉志海,曾慶良.條形碼技術與程序設計[M].北京:清華大學出版社,2009.
[3]Hallinan C. 嵌入式LINUX開發(fā)(英文版)[M].北京:人民郵電出版社,2008.
[作者簡介]
于俊偉(1980-),男,博士,講師,主要研究領域為模式識別、計算機視覺。