金 苇,钱 巨,孟祥臻
(1. 南京航空航天大学 计算机科学与技术学院,江苏 南京 210016;2. 软件新技术与产业协同创新中心,江苏 南京 210023)
智能触屏设备越来越多地出现在汽车电子、智能家居等领域,给软件测试带来挑战。为增强测试技术的适用性,基于机器人或专用触控装置的非侵入式测试技术得到了越来越多的重视。这些非侵入式测试无须被测设备操作系统提供接口,从设备外部发起拟真的人机交互操作,对触屏设备进行测试。此类技术不依赖被测设备的操作系统,具有很好的跨平台性。现有研究中,Optofidelity TOUCH用专门设计的机器人装置检测触控屏幕的响应性能等指标。RoScript利用二维机器人实现非侵入式的自动化测试,其可以针对移动设备开展GUI测试。Axiz基于通用微型机器人来实现触屏设备测试自动化。然而,这些方法均要求设备位于水平面,无法对具有复杂形态的立体空间设备进行测试,例如车载屏幕。
为了解决针对立体空间设备的测试,需要确定待点击目标在三维空间中的位置。现有方法多利用双目视觉定位原理确定物体的三维坐标。然而双目视觉定位原理在物体边缘或者颜色较深的位置处采集的数据精度会降低甚至失效,出现深度空洞,因此直接利用双目视觉定位原理计算屏幕中某一点的三维坐标效果并不稳定。一个解决办法是首先确定屏幕在三维空间中的位置,再由点击目标在屏幕中的相对位置求出其在三维空间中的位置。该方法的关键在于如何自动确定屏幕在三维空间中的位置。对此,目前尚缺少有效解决方法。
提出一种构建屏幕三维空间模型从而定位屏幕的方法。首先获取屏幕的二维图像,通过视觉目标识别得到屏幕在二维图像中的位置。其次使用基于双目视觉的双目相机对屏幕区域进行三维坐标采样,拟合采样数据计算得到屏幕所在平面的方程,最后确定屏幕范围从而构建屏幕三维空间模型,完成屏幕的定位。实验表明,通过本方法定位的屏幕位置与现实世界中屏幕的实际位置误差在5mm以内,具有较好的定位效果。
利用双目相机的视差原理计算触控屏幕在三维空间中的所在位置。而对双目视觉的研究需要建立在相机成像模型的基础之上。
使用的相机其成像模型为针孔成像模型,如图1所示。针孔成像模型描述了三维空间中的点的坐标与其在针孔相机成像平面上的投影之间的数学关系。针孔成像模型共包括光心、光轴以及成像平面三个部分。空间中的一点可以通过光心在成像平面上形成倒立的对应点′。
图1 针孔成像模型图
利用双目相机获取目标位置的深度信息。基于双目相机的双目视觉是模拟人眼从两个不同角度观察同一物体,利用两幅图像的视差计算出物体的深度信息。图2为双目视觉成像的原理图。本项目所采用的双目视觉模型为平行双目视觉,即左右相机的光轴平行安装于同一直线上。本方法将左相机作为主相机,即相机坐标系对应为左相机的相机坐标系。
图2 双目视觉成像原理图
点为空间中一物体,该物体在两个相机中的成像点分别为(,)和(,)。与分别为两台相机的光心,与分别为两相机图像像素坐标系原点,为两个相机之间的距离,又称为基线距离。点在左相机坐标系下坐标为(,,),与为相机内部参数。假设左右相机经过校准内参相同并处于同一平面,两坐标系原点仅在轴上偏移。 则由相似三角形定理可得下式,其中为左右相机的焦距:
(1)
整理可得点在左相机坐标系下的坐标 (,,)为:
(2)
本文提出的三维空间屏幕定位方法利用双目相机完成屏幕的定位。
如图3所示,双目相机摆放于屏幕正前方,相机型号为ZED2,其可以分别从左右相机获取普通的RGB图像,同时可以利用双目视觉定位原理计算出左相机RGB图像中某像素点对应物体在三维空间中的位置。
图3 三维空间屏幕定位方法装置图
三维空间屏幕定位算法的目的为计算出屏幕所在平面在三维空间中的方程(,)以及屏幕的四个顶点在三维空间中的坐标。该算法主要包括两步,分别为屏幕轮廓提取与构建屏幕三维空间模型,屏幕轮廓提取是为了确定屏幕在二维图像中的位置,构建屏幕三维空间模型则是依据屏幕在二维图像中的位置,利用双目视觉原理进行深度测量,确定屏幕在三维空间中的位置。
三维空间屏幕定位算法总体流程如图4所示。首先从双目相机左相机获取待检测屏幕的RGB图像,对图像进行预处理后,利用Canny边缘检测算法从中获取屏幕的轮廓信息,得到屏幕顶点位置,从而确定屏幕在二维图像中的区域。之后从二维屏幕区域中选取一系列采样点,利用双目相机确定采样点在三维空间中的坐标,根据三维采样点拟合出屏幕的平面方程。最后根据平面方程修订屏幕顶点的三维坐标,确定屏幕在三维空间中的范围以完成屏幕三维空间模型的构建。下面介绍详细过程。
图4 三维空间屏幕定位算法总体流程图
对屏幕进行定位首先需要确定屏幕在二维图像中的位置。本文提出的屏幕轮廓提取算法可以从双目相机左摄拍摄的RGB图像中提取屏幕的精确轮廓,从而确定屏幕在二维图像中的位置。
为了消除屏幕周围复杂环境对屏幕轮廓提取的干扰,本方法后续将只对图像的中心区域进行边缘检测处理,因此首先将待检测的屏幕放置于双目相机左相机的视野中央,使得屏幕位于RGB图像中心位置。屏幕轮廓提取算法主要由图片预处理以及边缘检测两部分组成,如算法3.1所示。
算法3.1 屏幕轮廓提取算法 Input: Image RGB图像Output: Points 屏幕四个顶点的二维坐标begin1.function GetScreenContour(Image);2.gray← toGray(Image);3.gaussian← gaussianBlur(gray);4.binary← toBinary(gaussian);5.closed← toBinary(binary);6.contours← cannyDetect(closed);7.maxContour ←ϕ;8.for contour in contours:9. thisArea← area(contour);10. if area(contour) > maxArea then11. maxContour←contour;12. maxArea←thisArea;13. end14.end15.points← approxPolyDp(contour); end
在对图像实行边缘检测算法之前,需要对图像进行预处理从而提升后续边缘检测的效果,该步骤对应算法3.1的第2~5行。
在利用左相机获取屏幕的RGB图像后,首先对RGB图像进行灰度处理获取灰度图像,接着利用高斯滤波消除图像中的噪点,之后对图像进行二值化处理,使图像中的边缘信息更加明显。最后对图像进行闭运算处理,填补图像边缘中的空隙。
在对图像进行过预处理之后,需要提取屏幕的精准轮廓。
Canny边缘检测算法是一种通过寻找图像梯度局部极大值的边缘检测算法。该方法通过两个阈值来检测图像的强边缘与弱边缘,只有当弱边缘与强边缘发生连接时,弱边缘才会被输出。其相比一般边缘检测方法去噪能力更强,能在去除噪声的同时较好检测真正的弱边缘。
本方法对经过预处理的屏幕图像进行Canny边缘检测,从图像中获取多条轮廓线,对应算法3.1第6行。由于本方法要求屏幕放置于相机视野中央,因此屏幕的轮廓会是所有轮廓线中所围区域面积最大的一个。因此从识别到的所有轮廓线中选取所围面积最大的轮廓线作为屏幕的轮廓,对应算法3.1第7~14行。最后对该轮廓线进行多边形拟合,拟合为四边形,得到屏幕的四个顶点,对应算法3.1第15行。效果如图5所示。
图5 轮廓提取示意图
至此就完成了屏幕轮廓的提取,确定了屏幕在二维图像中的范围。利用Canny边缘检测算法可以不依赖大规模数据集,在简单环境下的使用效果可以满足使用需要。
受限于双目相机的定位精度,其在物体边缘或者颜色较深的位置处采集的数据精度会降低甚至失效,出现深度空洞。所以通过双目相机直接获取屏幕中某一点的三维坐标是一个不稳定的方法。于是本方法通过采样多个屏幕范围内的三维坐标来拟合屏幕所在平面的方程,消除少量失效深度数据造成的干扰。同时根据屏幕顶点的三维坐标确定屏幕的大小范围,构建屏幕的三维空间模型。
三维空间模型的构建依赖于在屏幕范围内选取的多个三维采样点,为了得到三维采样点则需要在二维屏幕图像内获取二维采样点,具体方法为:首先在左相机拍摄的二维图像的屏幕范围内随机选取个采样点以及4个屏幕顶点的二维坐标,得到二维采样点(,)。
接着根据式(3),利用双目相机的双目定位原理由二维采样点的像素坐标获取采样点在相机坐标系下的三维坐标,
(,,)=(,)
(3)
根据式(4),将多个采样点的三维坐标构成一个样本集。
={,…,,,2,3,4}
(4)
其中=<,,>(=1,2,…,),代表随机选取的个采样点,=<,,>(=1,…,4),代表4个屏幕顶点的三维坐标。为了兼顾后续平面拟合的速度以及准确性,一般取值为20~30,采样点效果如图6所示。
图6 三维深度采样示意图
在利用双目相机成功得到三维采样点={,…,,,2,3,4}后,利用最小二乘法对这+4个三维坐标进行平面拟合计算出屏幕所在平面在相机坐标系中的三维空间方程(,)。
最小二乘法是一种通过最小化误差的平方和来寻找与数据最佳匹配的函数的优化方法。最小二乘法的矩阵形式可以表示为:
=
(5)
其中为*的矩阵,与分别为*1和*1的列向量。当存在向量使得‖-‖最小时,我们称为该方程的最小二乘解。本方法利用正规方程组得到最小二乘解为:
=()
(6)
已知屏幕平面方程可以表达为如下形式
=++
(7)
利用最小二乘法与采样点数据可以拟合出屏幕平面方程的系数,,。此时对应的最小二乘矩阵形式为:
(≥3)
(8)
其中(,,),(,,)等为采样点的三维坐标,利用上式即可求出平面方程系数,,。
由于通过双目相机直接获取的4个屏幕顶点坐标不一定在拟合出的平面方程中,因此需要将这4个屏幕顶点的三维坐标投影到上一步计算出的平面中作为屏幕新的四个顶点以最终确定屏幕的范围。最终得到相机坐标系下屏幕所在平面的方程(,)、屏幕四个顶点的坐标位置以及通过计算屏幕顶点间的距离得到屏幕的物理世界长度与物理世界宽度,从而完成屏幕三维空间模型的构建,如图7所示。
图7 屏幕三维空间模型构建示意图
为了针对本文所提出的屏幕定位算法进行验证,本章节首先利用本文提出的屏幕定位算法得到屏幕三维空间模型,接着在屏幕范围内选取9个三维测试点,控制经过校准的机械臂对测试点进行触控操作。通过观察机械臂触控效果来评估本方法的有效性。
实验设备主要包括一台双目相机、一台机械臂以及一台用于处理图像的计算机。双目相机固定在支架上位于触控屏幕的前方,用于采集图像。实验设备及参数如表1所示。
表1 实验设备参数表
由于经过校准后的机械臂的重复定位精度在0.2mm以内,因此机械臂的触控效果可以反映本方法对屏幕定位的精度如何。触控效果主要由两方面因素组成:①机械臂实际触控位置与预期触控位置在二维屏幕内的距离。②机械臂实际触控时间。这两个因素可以反映机械臂实际的触控效果如何,也就反映了本方法对屏幕定位的效果。
本文在二维屏幕范围内随机选取9个测试点,根据测试点的二维坐标(,)与屏幕三维空间模型,利用式(9)生成测试点的三维坐标置=<,,>,其中为屏幕左上角的三维坐标,以及分别为屏幕上边缘与左边缘方向的单位向量。
=+·+·
(9)
控制机械臂将测试点的三维坐标作为目标点对屏幕进行触控操作。同时待测屏幕内装有检测程序,可以检测外部触控的实际触控位置(,)与触控时间。
机械臂完成触控后,计算预期触控位置与实际触控位置之间距离的平均值,如式(10)所示。
=
(10)
一共进行20组触控测试,为了增加实验环境的多样性,共在两种屏幕相对于相机的倾斜角度下进行了实验。实验结果如表2所示。
表2 实验结果表
由表中多组实验数据可知,每组的预期触控位置与实际触控位置之间的平均距离均在3mm左右。触控时间在0.3s左右,与标准触控时间0.2s仅相差0.1s,触控时间长则代表触控时深度过大,触控时间短则表明触控时深度较小,触控时间越接近标准触控时间0.2s,则说明触控位置越为准确。将机械臂本身的运动精度考虑在内,以上数据可以证明本文提出的三维空间屏幕定位方法有较高准确度,相比于郭攀等的10mm左右双目测距误差,本方法误差更小,可用于触屏设备的非侵入式测试,具备良好的应用前景。
通过边缘检测算法实现了屏幕的精准轮廓提取任务,具有较强的鲁棒性。同时利用双目视觉定位原理获取采样点的三维坐标从而拟合出屏幕的平面方程,确定屏幕范围,避免了深度空洞问题,实现了依据屏幕在二维图像中的位置求出屏幕在三维空间位置的目标。
在未来工作中,由于屏幕所处环境可能更为复杂,如何在复杂环境中识别屏幕位置会有更大挑战,值得后续进一步研究。