柯熙政, 宋云鳳
(1. 西安理工大學自動化與信息工程學院,陜西西安710048; 2. 陜西省智能協同網絡軍民共建重點實驗室,陜西西安710048)
由于可見光具有資源豐富、無需無線電頻譜證、無電磁干擾、保密性好等優點[1,2],有著非常廣闊的應用前景。基于移動終端的可見光通信(VLC)技術的應用場景多種多樣。手機可見光通信技術可以作為現有無線通信的有效補充。現有研究成果如2012年,日本卡西歐公司[3]研發了使用屏幕背光進行信號發送,使用攝像頭接收光信號的手機。2012年,英國愛丁堡大學工學的Christos Danakis等[4]研究了使用智能手機攝像頭捕獲LED閃光燈的快速亮滅變化來接收數據。2012年,美國密歇根州立大學計算機科學與工程系的Tian Hao等[5]研究了彩色條碼流智能手機系統。2014年,中國電信集團北京研究所Zeng Y、Chen Y、Feng S等[6]研究了基于二維碼的移動設備可見光通信系統。
2014年,諾森比亞大學工程與環境學院的Rayana Boubezari等[7]研究了智能手機可見光通信數據檢測方法。2014年,紐約州立大學布法羅分校Kui Ren等[8]提出了一種安全的基于快速響應二維碼(Quick-Response code,QR)的移動設備可見光通信系統,并在2016年進一步優化了基于二維碼的可見光通信系統方案。
卡西歐公司使用的是RGB(Red,Green,Blue)三原色進行信息編碼,通過攝像頭來識別閃爍的RGB三原色所傳達的信息,受限于編碼方式,傳輸的數據量比較小。愛丁堡大學使用的通信方式傳輸的信息內容比較少。密歇根州立大學使用高度定制的條形碼來提高系統吞吐量,但此方案并不實用。中國電信集團北京研究所采用的是結構附加模式生成QR碼,ZXing(生成二維碼庫)的代碼在Mode(模式)類中只是定義了這種模式,并沒有提供結構附加模式的實現,需要通過對ZXing的Java代碼進行改寫和擴充來實現這種模式的編解碼功能,但其編解碼牽涉的程序類比較多,編解碼過程比較復雜。紐約州立大學采用的是8位二進制模式生成二維碼,這種形式的數據傳輸是在二維碼的數據編碼階段添加一個序列號的標頭,并把每個序列號和每個數據塊一起封裝成一個包,然后通過后續編碼流程生成二維碼。由于二維碼的編碼和解碼牽涉的程序類比較多,其編解碼過程比較復雜。本文采用的是二維碼編碼中的混合模式生成QR碼,提出的方案是基于ZXing庫開發,通過JSON(JavaScript Object Notation)格式先對數據處理再進行編碼。基于JSON格式獨有的結構(鍵值對和數組結構)特點,把編碼過程中實現的對數據封裝轉變成先對數據封裝處理再編碼生成QR碼,這樣大大簡化了編碼和解碼過程。
JSON是種輕量級的數據交換格式,使用了完全獨立于語言的文本格式。JSON有兩種結構:①“名稱/值”對的集合;②值的有序列表,通常被理解為數組。本文采用JSON的這兩種結構實現了對數據的處理。
QR碼[9]又稱快速響應矩陣碼,它除了具有二維條碼的共同特點[10]——信息容量大、可讀性高、可表示漢字及圖像等多種格式信息之外,還有以下特點[11]:超高速識讀、全方位識讀、高效表示漢字。這使得QR碼得到迅速發展,現如今QR碼已成為全球應用最為廣泛的一種二維碼,QR碼的基本結構如圖1所示。

圖1 QR碼基本結構圖Fig.1 QR code basic structure diagram
由圖1可知,QR碼由編碼區域和功能圖形組成。功能圖形是用于符號定位與特征識別的特定圖形,不用于數據編碼。符號的四周留有空白區。基于這種特殊結構具有完美的定位功能及很好的糾錯能力,將其應用到移動終端可見光通信系統中。
基于手機-手機方式的近距離數據傳輸可見光通信系統示意圖,如圖2所示。

圖2 手機間數據傳輸示意圖Fig.2 Schematic diagram of data transmission between mobile phones
手機可見光通信系統的原理圖如圖3所示。圖3主要包括兩個模塊,即發送端和接收端,發送端包括數據源、JSON處理、編碼、產生QR碼圖像;接收端包括手機攝像頭、解碼、數據處理、輸出數據。手機可見光通信系統發射端的基本思想是將數據源(待傳輸的信息)先進行JSON處理,然后將處理后的數據編碼,最終生成動態的QR圖像再發射出去。接收端是用手機攝像頭對連續的二維碼圖像進行解碼,再進行數據重組處理,最后恢復出原始數據。

圖3 手機通信系統原理示意圖Fig.3 Schematic diagram of the mobile phone communication system
2.2.1系統結構
手機可見光通信系統結構如圖4所示。圖4中,手機可見光通信系統由三個部分組成,分別為顯示屏(發送端)、攝像頭(接收端)、傳輸軟件。傳輸流程包括待傳輸數據、圖像生成、連續圖像傳輸、圖像識別、轉換回待傳輸數據5個步驟。

圖4 手機可見光通信系統示意圖Fig.4 Mobile phone visible light communication system diagram
2.2.2發送端
1) 信息輸入
輸入信息的類型可以是數字、字母、漢字等,數據可以按照不同的行數生成二維碼,但行數是有限的,行數的選擇是和每張QR碼容量有關的,每張QR碼的容量是和QR的版本、糾錯級別和編碼模式的選擇有關的。
2) 生成二維碼
二維碼是一種基于光學圖像識讀的編碼技術。可用于智能手機間多幀通信。手機可見光通信系統本質上是一種光學圖像直接通信系統。基于Android開發環境下,借助二維碼ZXing庫[12]生成二維碼圖像。生成二維碼的流程圖如圖5所示。圖5包含兩部分,即數據處理部分和編碼部分,數據處理部分主要是基于JSON的兩種結構對待傳輸的數據進行處理,以每行最后一個字符是否是空格為分隔符,將處理后的每組數據、添加的每組索引號及分組的總個數信息封裝在一起,通過編碼生成QR碼,每個索引號和每組數據是一一對應的。這種方式便于解析數據。

圖5 生成二維碼的流程圖Fig.5 Flow chart for generating two-dimensional code
2.2.3接收端
接收端采用帶攝像頭的手機,調節發送端每幅QR碼的手機屏幕停留時間,使接收端能完整地將QR碼信息解析出來。識別二維碼流程圖如圖6所示。在圖6中,軟件識別過程包含兩部分,即解碼部分和數據重組部分。攝像頭將捕獲到的QR碼圖像交由解碼模塊處理,經過解碼,恢復出QR碼所包含的數據,然后對解碼出的數據進行JSON處理,解除封裝,取出有效數據。由于有效數據不是按照順序排列的,但又要保證恢復出原始數據,因此要對有效數據進行快速重組,輸出重組后的數據。由于攝像頭的捕獲速率比較低,在進行二維碼圖像識別時,會出現某一幀或幾幀二維碼圖像沒有被識別的情況,由于生成的每張QR碼圖像都包含了二維碼圖像總張數,所以在接收端會繼續對沒有被識別出來的二維碼圖像進行識別,直至將所有的二維碼圖像都識別出來,最后重組數據。

圖6 識別二維碼的流程圖Fig.6 Flow chart for identifying the QR code
2.2.4結果驗證
在圖7的發送界面中輸入數據,如圖8所示。將輸入的數據生成二維碼圖像,如圖9所示,之后將生成的二維碼圖像以一定的幀速順序地顯示在手機屏幕上。

圖7 發送二維碼圖像的界面Fig.7 Interface for sending QR code images

圖8 數據傳輸界面Fig.8 Data transmission interface
接收端識別界面如圖10所示。
二維碼圖像識別的實驗效果圖如圖11所示。最終顯示出原有的數據,如圖12所示。
圖11是在華為honor8手機上的實驗效果圖。實驗中發射端設定了不同的時間間隔(時間分別為3 s、2 s、1 s、…、100 ms,其中1 s至100 ms之間以100 ms為時間間隔),接收端識別時間間隔相對發射端變化而變化。經多次實驗對比分析得出,接收端攝像機解碼花費時間隨著發射端時間間隔的縮短而變長(實驗中發射端最短時間間隔為100 ms)。
為使相機捕捉圖像的效率更高,本文采用了自適應尺寸的縮略圖(自適應尺寸是為了適配手機屏幕,縮略圖經壓縮處理一般較小,不用再次緩存,可加速顯示圖片)來展示不同版本的QR Code,圖9生成的二維碼圖像使用了這種方式。對于相同的文本信息,版本越高,容錯性越高,信息量也越大,即二維碼的圖案更復雜,接收端攝像機所需解碼的時間也越長。經實驗對比分析,華為honor8在QR Code 版本為13時,接收端攝像機識別多幀二維碼困難。考慮到手機攝像頭捕獲率因素,一般選擇QR code版本10。
測試中,在Android開發環境下將待傳輸的數據生成二維碼圖像,通過控制每幅QR碼圖像的停留時間,進而控制信息的發送速率。通過多次測試,定性地分析了影響系統吞吐量的因素:
1) 手機攝像頭捕獲速率:測試結果表明,在不同平臺上刷新一幀QR碼花費的時間大致相同,而接收端攝像頭捕獲速率一般較低;
2) 編解碼時間:由于QR碼并非是針對智能手機設計,其編解碼消耗時間相對于傳統設備較長;

圖9 生成的QR碼圖像Fig.9 Generated QR code image

圖10 二維碼識別界面 Fig.10 QR code recognition interface

圖11 實驗效果圖Fig.11 Experimental renderings

圖12 識別出的數據Fig.12 Recognized data
3) 每張QR碼的存儲容量:考慮到幀刷新率受攝像頭捕獲速率的限制,必須要增加每張二維碼的存儲容量,以提高系統吞吐量。
本文可作為手機間無需借助WiFi進行數據傳輸的新方法,數據傳輸不依賴已有的通信網絡。該系統并沒有對現有移動設備系統做硬件更改,享有更簡單的結構。本文對提出的使用JSON格式來簡化基于二維碼的可見光通信編解碼技術進行了驗證。由于幀刷新速率受攝像頭捕獲速率的影響,所以相同的QR碼有多個攝像機幀圖像。因此,要想濾除重復的QR幀圖像就必須在提交QR幀圖像進行解碼之前,構建一個有效的過濾器。在后續工作中,將分別從提高傳輸速率、編解碼時間、每張QR碼的存儲容量等三個方面對該系統進行改善性研究,擴展手機可見光通信系統的應用范圍。