智能手机利用二维码路标进行定位定姿的方法研究*

2020-01-02 06:21葛雯斐牛小骥蒋郡祥吴宜斌
传感技术学报 2019年12期
关键词:路标顶点二维码

葛雯斐,牛小骥,蒋郡祥,吴宜斌

(武汉大学卫星导航定位技术研究中心,武汉 430079)

随着城市的发展和建设,建筑物越来越多,建筑物的室内环境也越来越复杂。由于人们的工作和生活的大部分时间是在室内环境中度过,因此人们对室内位置服务有着非常迫切的需求。目前主流的室内定位技术主要是基于蓝牙[1]、WiFi[2]、UWB[3]、地磁[4]、Zigbee[5]、和视觉[6]等方式。每种定位技术都有各自的优缺点,加之成本、技术复杂性等因素,室内定位技术并没有在国内得到广泛应用[7]。

受益于智能手机的普及,相机作为智能手机的基础传感器,为视觉定位的发展提供了硬件基础。同时,由于用二维码作为视觉标志物具有成本低、易于布设、可靠性高等特点,在目前的技术条件下,采用二维码作为视觉标志物进行室内定位成为了研究的热点。

在应用二维码作为视觉标志物的研究中,文献[8-10]在QR Code内储存位置等信息,用户通过移动设备扫码得到QR Code的位置等信息之后直接用于导航、规划等,没有进一步解算拍摄设备的位置和姿态。文献[11]将QR Code作为视觉标志物应用于机器人的室内定位中,文献[12]将2D Bar Codes应用在机器人室内定位中。QR Code和2D Bar Codes均为日常生活中广泛使用的二维码类型,在机器人应用场景中,干扰二维码较少;但是在行人通过智能手机进行室内定位的场景中,如地下车库,大型商场等,环境中存在较多QR Code和2D Bar Codes等类型的二维码,将会对定位造成干扰。文献[13]使用AR tag标记码辅助机器人进行视觉SLAM定位,文献[14]设计了一种张贴在天花板上的二维码标志物用于机器人的室内定位,但是这两种码都只有一种编码模式,其数据储存单元的大小固定,无法应对拍摄距离差异大的场景。

行人通过智能手机相机拍摄得到的包含二维码路标在内的图像由于受到距离、角度、光线、杂乱背景等情况的干扰,如何确定图像中二维码的位置是后续解码和定位定姿解算的关键。文献[15]根据二维码中符合深色-浅色-深色-浅色-深色相应元素所占的比例为1∶1∶3∶1∶1的规律检测出二维码定位符点的位置,从而确定二维码在图像中的位置。但是当拍摄到的二维码图像有较大的形变时,该比例关系被破坏,检测失误率较高。文献[16]提出一种基于边缘增强的二维码区域快速检测定位算法,对工业中的二维码区域能够快速检测。文献[17]利用卷积神经网络进行二维码的检测,该方法可以应对复杂的环境,但是由于神经网络参数多,计算量大,不适合智能手机平台。文献[18-19]在研究中使用Zxing库实现二维码的生成和检测,Zxing是由Google开源并持续维护的1D/2D条码处理库,是目前应用最广泛的二维码开源类库之一,在很多研究中被作为工具进行扩展和使用。由于Zxing库主要是在产品识别、工业生产等领域用来读取信息,它的主要应用场景具有拍摄距离较近,拍摄角度变化范围较小等特点,因此并不适用于手机用户进行室内定位这种拍摄距离和角度变化都较大的场景。

据此,本文设计一种专门用于定位定姿的二维码路标,该二维码路标具有粗码、细码两种编码结构,与现有的二维码具有很强的区分度,且具有易于识别、工作距离远、范围广等特点。同时针对该二维码路标提出一种检测算法,能够稳健、准确地从图像中检测到二维码路标。检测到二维码路标后,提取二维码顶点的图像坐标并解码获得顶点对应的世界坐标,利用EPnP算法[20]解算手机相机中心的位置和姿态。

1 二维码路标设计

本文设计一种专门用于定位定姿的二维码路标,如图1所示,二维码路标为正方形,由隔离区、标志区、数据区三部分组成,其中,数据区由粗码和细码两种编码结构组成。

图1 二维码路标

隔离区:由于二维码多布设在浅色墙面等环境中,因此设置黑色隔离区用于将二维码路标与环境区分开,便于二维码的检测。

标志区:标志区由图1中所示左上角标志区、右上角标志区、右下角标志区、左下角标志区四个正方形区域组成,用来区分二维码路标的上下左右方向,便于在环境中检测到二维码之后将二维码旋转到正确的方向进行解码。

粗码:在数据区内,有一些较大的黑白格,如图1中绿色格网框出的12个区域。黑色方块表示二进制0,白色方块表示二进制1,图1中所示二维码路标的粗码的编码内容用二进制表示为010011010010,即10进制数字1234。粗码用于储存该二维码路标在编码库中对应的编号。在实际使用时,算法先根据用户的粗略位置查找对应的编码库,在每一个编码库中,粗码的编号对应此二维码路标的四个顶点的实际位置等信息。

细码:在每一个粗码方块内,有5×5共25个小的黑白方块,12个粗码格子内一共300个小方格。黑色小方格表示二进制0,白色表示1,细码内直接储存该二维码路标中心点的位置、姿态以及该正方形二维码路标的实际宽度,单位为m。

该二维码路标作为专门用于定位定姿的视觉标志物具有以下优势:①具有独立的编码和解码机制,与生活中其他功能的二维码具有很强的区分性,用户能够轻松从环境中辨识出该二维码路标,并用于定位定姿。②具有粗码和细码两种编码结构,细码储存定位定姿所需的所有信息,包括二维码路标中心点的位置、二维码路标的姿态及其实际宽度。当用户的拍摄距离不是很远的情况下,可以直接正确解码细码得到这些定位信息。而当拍摄距离较远时,如图2所示,由于摄像头的分辨率有限,此时细码已经无法正确解码。因此,在细码工作的基础上,本文设计的二维码路标中引入粗码的设计:粗码对应较大的黑白格,当拍摄距离较远时,依然能够对粗码进行正确解码,进一步从编码库中获取二维码路标对应的位置信息,为后续的定位服务。

拍摄设备:三星S6;二维码路标尺寸:20 cm×20 cm图2 拍摄距离为10 m时依然能够依靠粗码进行正确解码

2 二维码路标检测

对于布设了二维码路标的室内场景,为了保障用户体验,不应该对用户的拍摄行为有过多要求,如走过去近距离扫一扫或者必须端正手机拍摄等。理想的情况下,用户在任意距离、以任意角度拍摄一张包含二维码路标的环境图像,均可以获取到定位定姿结果。

图3 二维码路标正常拍摄角度范围

经过分析,在室内环境中,受空间大小、相机分辨率等因素限制,对于张贴在墙面上的二维码路标,用户拍摄二维码的距离一般在8 m以内。记垂直拍摄角度为0°,用户拍摄二维码的角度范围一般在[-75°,75°]内,如图3所示。本文实验采用的二维码路标的尺寸为20 cm×20 cm,当拍摄距离超过8 m或者拍摄角度超出[-75°,75°]时得到的二维码路标在图像中过小或者形变过于剧烈,不再适合用于定位定姿解算,予以舍弃。

由于非垂直拍摄的情况下拍摄得到的二维码路标不再是正方形,同时由于拍摄者的高度差异、拍摄时相机的旋转、相机畸变等问题,智能手机拍摄得到的二维码路标在图像中对应的区域会发生拉伸、扭曲等变化,如图4所示。

图4 拍摄得到的二维码路标发生了拉伸和扭曲

针对用二维码路标进行智能手机定位定姿的应用,成功从图像中检测到二维码路标是实现定位定姿的前提。上述分析表明,在不同的拍摄条件下二维码路标在图像中的大小、形状、位置等会发生较大的变化,增加了在图像中检测二维码路标的位置的难度。本文结合所设计的二维码路标的特点以及拍摄范围的限制,提出一种稳健的二维码路标检测算法,以满足智能手机定位定姿需求。算法主要包括以下两个步骤:①对获取的图像进行预处理,简化并保留图像中的有效信息,降低后续处理复杂度;②通过轮廓检测将图像划分为不同的候选区,结合二维码路标的特点以及拍摄范围的限制对候选区进行筛选,保留二维码路标所在的候选区并提取其顶点的图像坐标,确定二维码路标在图像中的精确位置。

二维码路标检测算法的算法流程如图5所示。

图5 二维码路标检测算法流程图

2.1 图像预处理

首先对输入的含有二维码路标的图像进行预处理,依次对图像进行灰度化、直方图均衡化、 图像二值化、Canny算子[21]边缘检测、图像形态学运算,预处理在简化图像的同时改善图像的质量,使图像更有利于后续二维码路标的检测。预处理前后图像对比如图6所示。

图6 图像预处理前后对比

2.2 确定二维码路标在图像中的精确位置

确定二维码路标在图像中精确位置就是获得图像中每一个二维码路标的四个顶点的图像坐标。由于拍摄距离和角度等的变化使得二维码路标在图像中的大小、位置、形状都会发生变化,同时,图像中的一些环境物体也会对二维码路标的搜索造成干扰。由于二维码路标的外形设计为正方形,其内部是由黑白结构编码组成且编码规则已知,因此在图3所示的拍摄距离小于8 m、拍摄角度范围[-75°,75°]的情况下,利用二维码路标在图像中可能呈现的大小、形状等信息对二维码路标所在的区域与其他干扰进行区分,最终确定二维码路标在图像中的位置。基于上述条件,获取每一个二维码路标的四个顶点的图像坐标主要步骤为:

(1)划分候选区:首先对预处理之后的图像进行轮廓检测,轮廓检测利用OpenCV中的FindContours函数完成,将不同连通域的外轮廓提取出来,从而将图像中的连通域划分为不同的候选区。此时获得的候选区集合表示为L_all,二维码所在候选区的集合表示为L_code,L_code⊆L_all,同时可能会得到很多干扰候选区,其集合表示为L_other,L_other⊆L_all,且L_all=L_code∪L_other。

相机的内参矩阵为:

(1)

基于以上条件,得到二维码路标在图像中的大致宽度width和高度height范围,单位为像素:

(2)

宽高比的范围:

(3)

由于二维码拍摄不全时无法进行解码,因此,当某一候选区与图像边缘相交时,认为该候选区内即使包含二维码路标,也无法用于后续处理,予以剔除。

将大小不符合要求、宽高比不符合要求、与图像边缘有交点的候选区剔除,完成第一轮筛选。将该轮筛选留下的候选区集合记为L_(round_1),如图7所示。

图7 第一轮筛选前后对比

虽然智能手机拍摄得到的二维码路标在图像中对应的区域会发生拉伸、扭曲等变化,但是其形状依然近似四边形,利用这一特征可以进一步剔除一些干扰区域。具体的做法为:计算每个候选区的最小面积外接矩形(Minimum Area Bounding Rectangle,MABR)。在正常拍摄角度范围内,二维码路标所在的候选区的面积与其最小面积外接矩形的面积的比值大于0.5,因此剔除候选区面积和它的MABR的面积的比值小于0.5的候选区,完成第二轮筛选。将该轮筛选留下的候选区集合记为L_(round_2)。图8为图7(b)中的四个候选区的MABR,其中(a)、(c)、(d)为三个干扰候选区及其MABR,(b)为二维码路标所在的候选区及其MABR。

图8 4个不同候选区的MABR

(3)确定二维码路标的精确位置:通过上一步的两轮筛选,仅留下少量候选区,从候选区集合L_(round_2)中取出一个候选区,假设该候选区是二维码所在的候选区,寻找该区域的四个顶点。具体的做法为:

依次计算该候选区外轮廓上距离下面四条直线最近的点:①过图像左上角点(0,0)且斜率为-1的直线;②过图像右上角点(m,0)且斜率为1的直线;③过图像右下角点(m,n)且斜率为-1的直线;④过图像左下角点(0,n)且斜率为1的直线。

1.4 统计学方法 采用SPSS 22.0统计学软件对数据进行处理。计量资料以均数±标准差表示,组间比较采用t检验;计数资料以例(百分率)表示,组间比较采用χ2检验。以P<0.05为差异有统计学意义。

一般情况下,依次得到的四个点就是该候选区的四个顶点,如图9(a)所示。但是一些特殊情况下,如候选区的外轮廓的某条边平行于上述四条直线之一时,此时并不能得到候选区真正的顶点,如图9(b)所示。

判断得到的四个点是否为候选区真实顶点的原则为:当计算得到的四个点是候选区真正顶点的情况下,由该四个点为顶点构成的四边形的面积与候选区的面积的比值接近于1;当计算得到的四个点不是候选区真正顶点时,由该四个点为顶点构成的四边形的面积与候选区的面积的比值显著小于1,以此判断顶点提取失败。此时继续分别计算候选区外轮廓上距离图像上边沿、右边沿、下边沿、左边沿最近的四个点作为候选区的顶点,如图9中(c)。

图9 提取候选区顶点

图10 将候选区投影变换为正方形

得到候选区的四个顶点之后,将其进行投影变换转为正方形,如图10所示。由于二维码路标内部的编码规则已知,根据转换为正方形的区域内部的像素分布是否符合二维码路标编码规则判断该区域是否为二维码路标区域,将不是二维码路标的候选区剔除。

经过该轮筛选得到的候选区集合为L_(round_3),由于拍摄得到的照片中可能不止一个二维码路标,此时获得了L_(round_3)中每一个二维码路标所在的候选区的顶点的图像坐标,即确定了每一个二维码路标在图像中的精确位置。

3 解算相机位姿

根据二维码路标粗码、细码的编码规则,对上一步骤获得的每一个二维码路标进行解码获得该二维码路标四个顶点在世界坐标系下的三维坐标,与其在图像坐标系的像素坐标形成4对3D-2D坐标点对。当检测到N个二维码路标时,一共可以获得4N个3D-2D坐标点对。

对于三维物点和二维图像点之间的对应关系已知的情况,位姿估计经常被称为n点透视(PnP)问题[23]。PnP问题有很多种求解方法,如用三对点估计位姿的P3P[24]、直接线性变换(DLT)、EPnP(Efficient PnP)、UPnP[25]等。其中EPnP作为目前公认的最高效的解析算法,得到了广泛的应用。同时,当图像点被精确提取时,EPnP的计算精度很高。因此本文采用EPnP算法进行相机位姿的解算。

4 实验结果与分析

4.1 实验设计

由于二维码的设计与其检测算法紧密相关,无法用其他算法检测本文设计的二维码路标,也无法用本文的检测算法检测其他类型的二维码,因此,为了验证本文设计的二维码路标及其检测算法的性能,将其与Zxing库检测QR Code的性能进行对比。实验中使用的Zxing库版本为3.4.0。

设计并实施以下实验:

实验平台:Inter® CoreTMi5-7200 CPU,主频:2.50 GHz,内存:8.00 GB;

图11 实验环境

图像采集设备:三星s6智能手机(分辨率5 312×2 988像素,相机内参由张正友标定法标定);

其他设备:全站仪(GEOMAX ZT20Pro系列无棱镜型全站仪)、激光测距仪、量角器、皮尺、三脚架等。

二维码尺寸:20 cm×20 cm,张贴于白色泡沫板上并固定在三脚架上;

实验环境:由于室内场地限制,实验现场环境如图11所示,实验前将手机、二维码、全站仪均用三脚架固定。为了更加直观,将世界坐标系原点建立在二维码路标中心点,世界坐标系W系,相机坐标系C系如图12所示。

图12 世界坐标系(W系)和相机坐标系(C系)示意图

实验1 如图13所示,借助激光测距仪和量角器,使手机相机大致在0°、30°、45°、60°、75°方向上依次在距离二维码中心1,2,3,…,8 m位置处采集图像,每个位置采集5张图像,二维码路标和QR Code分别采集200张图像。在每个位置用全站仪测量出手机相机在世界坐标系下的真实位置和姿态。

图13 实验一示意图

图14 实验二示意图

实验2 如图14所示,将手机相机放置在0°方向上,手机绕Z轴依次逆时针旋转0°、15°、30°、45°,在距离二维码中心1,2,3,…,8 m位置处采集图像,

每个位置采集5张图像,二维码路标和QR Code分别采集160张图像,在每个位置用全站仪测量出手机相机在世界坐标系下的真实位置和姿态。

4.2 结果分析

实验一模拟实际应用中在不同距离、不同角度拍摄对算法性能的影响;实验二模拟在实际使用中由于相机绕Z轴旋转对算法性能的影响。用本文算法处理采集到的二维码路标图像,用Zxing库处理得到的QR Code图像,统计两种算法在不同拍摄条件下对二维码的检测准确率情况,实验结果如表1所示。

表1 Zxing库和本文算法在不同拍摄条件下对二维码的检测准确率情况对比

该结果表明,在拍摄距离小于8 m、拍摄角度范围[-75°,75°]、拍摄时相机发生旋转的情况下,本文设计的二维码路标都能够正常工作,二维码路标检测算法能够准确地检测到二维码路标,检测准确率100%。而Zxing库对QR Code的检测在拍摄距离大于5 m时检测成功率为0;当拍摄时发生倾斜或者旋转时,也会大幅度降低解码成功率。实验一和实验二中Zxing库对QR Code的检测准确率为48.5%。因此,相比于Zxing解码库,本文设计的二维码路标以及检测算法的工作范围更广、识别的准确率更高,满足手机用户室内定位的需求。

PnP问题的解算精度与点对个数、特征点的图像坐标精度、特征点之间的几何条件、PnP算法的性能等因素有关。对于实验中采用的20 cm×20 cm的单个二维码,共得到4对3D-2D点对,图15显示不同拍摄条件下由该位置拍摄得到的图像用EPnP算法解算得到的相机位置和姿态与真实位置和姿态的差值的绝对值。实验结果表明,拍摄距离小于6 m、拍摄角度小于60°的情况下,利用该方法可以得到 1 m 以内的位置误差,10°以内的姿态误差;当拍摄角度大于60°,拍摄距离大于6 m时,位置误差和姿态误差明显增大。同时,手机绕Z轴旋转对定位定姿性能几乎没有影响。

图15 不同拍摄条件下利用单张二维码进行智能手机定位定姿的精度

5 结论

本文设计了一种专门用于定位定姿的二维码路标,该二维码路标具有粗码、细码两种编码结构,具有易于识别、工作距离远、范围广等特点。同时,提出一种二维码路标检测算法,能够稳健、准确地从图像中检测到二维码路标。最后,利用二维码顶点的图像坐标及其世界坐标,使用EPnP算法解算手机相机中心的位置和姿态。实验结果表明,对于张贴在浅色背景中且无遮挡的二维码路标,在拍摄距离小于8 m、拍摄角度范围[-75°,75°]以内且拍摄时相机发生一定程度旋转的情况下,本文设计的二维码路标都能够正常工作,二维码路标检测算法能够准确地检测到二维码路标。因此该方法符合手机用户室内定位的需求,具有很高的实用价值。

猜你喜欢
路标顶点二维码
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
路标
二维码
小康二维码
路标
路标中的学问
让严肃的二维码呆萌起来
看清医改最要紧的两个路标
二维码,别想一扫了之