一种移动终端可见光数据收发系统的设计与实现
2019-05-28柯熙政宋云凤
柯熙政, 宋云凤
(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码,这样大大简化了编码和解码过程。
1 理论基础
1.1 JSON格式
JSON是种轻量级的数据交换格式,使用了完全独立于语言的文本格式。JSON有两种结构:①“名称/值”对的集合;②值的有序列表,通常被理解为数组。本文采用JSON的这两种结构实现了对数据的处理。
1.2 QR码特点和结构
QR码[9]又称快速响应矩阵码,它除了具有二维条码的共同特点[10]——信息容量大、可读性高、可表示汉字及图像等多种格式信息之外,还有以下特点[11]:超高速识读、全方位识读、高效表示汉字。这使得QR码得到迅速发展,现如今QR码已成为全球应用最为广泛的一种二维码,QR码的基本结构如图1所示。
图1 QR码基本结构图Fig.1 QR code basic structure diagram
由图1可知,QR码由编码区域和功能图形组成。功能图形是用于符号定位与特征识别的特定图形,不用于数据编码。符号的四周留有空白区。基于这种特殊结构具有完美的定位功能及很好的纠错能力,将其应用到移动终端可见光通信系统中。
2 移动终端可见光通信系统组成
2.1 移动终端可见光通信系统介绍
基于手机-手机方式的近距离数据传输可见光通信系统示意图,如图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 移动终端可见光通信系统的实现方案
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。
2.3 结果分析
测试中,在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码的存储容量:考虑到帧刷新率受摄像头捕获速率的限制,必须要增加每张二维码的存储容量,以提高系统吞吐量。
3 结 语
本文可作为手机间无需借助WiFi进行数据传输的新方法,数据传输不依赖已有的通信网络。该系统并没有对现有移动设备系统做硬件更改,享有更简单的结构。本文对提出的使用JSON格式来简化基于二维码的可见光通信编解码技术进行了验证。由于帧刷新速率受摄像头捕获速率的影响,所以相同的QR码有多个摄像机帧图像。因此,要想滤除重复的QR帧图像就必须在提交QR帧图像进行解码之前,构建一个有效的过滤器。在后续工作中,将分别从提高传输速率、编解码时间、每张QR码的存储容量等三个方面对该系统进行改善性研究,扩展手机可见光通信系统的应用范围。