APP下载

高压设备放电紫外图像光斑区域特征提取

2022-04-15段文双闫书佳单鸿涛卢金科

计算技术与自动化 2022年1期
关键词:计算机视觉鼠标

段文双 闫书佳 单鸿涛 卢金科

摘 要:现有的关于鼠标输入的测试自动化方法大多需要调用被测设备底层操作系统接口或者向操作系统植入测试辅助工具。这些方法具有侵入性,在一些具有封闭性、或者安全性要求高的设备上无法使用。提出了一种非侵入式的鼠标输入测试自动化方法,通过USB信号激励器给入输入激励,通过外部摄像头和计算机视觉方法定位鼠标指针,校准视觉和激励器空间鼠标移动关联,确定鼠标移动尺度,最终完成相应鼠标动作。案例研究表明该方法具有较高的测试执行准确度,有良好的实用价值。

关键词:计算机视觉;测试自动化;鼠标;非侵入式

中图分类号: TP311      文獻标识码:A

A Computer Vision Based Mouse Input Test Automation Method

ZHOU Xu,QIAN Ju

(College of Computer Science and Technology, Nanjing University of Aeronautics

and Astronautics,Nanjing, Jiangsu 211106, China)

Abstract:The existing test automation methods about mouse input require calling the underlying operating system of the device under test or install test enabling tools on the underlying system. These methods are intrusive and hence cannot be used on closed or securitysensitive systems.This paper presents a nonintrusive test automation method for mouse input. The method uses computer vision techniques to obtain mouse positions from camera captured desktop images and uses USB signal stimulator to fire mouse events.It first introduces an algorithm to calibrate the correlation between mouse move on the visual space and that on the stimulator space. Then the required mouse moves are calculated and the mouse clicks are activated via the USB stimulator.Case study shows that this method has high test execution accuracy and is practical for use.

Key words:computer vision; test automation; mouse; nonintrusive

鼠标设备对于日常工作和生活必不可少。软件测试中,很多场景下需要对鼠标加以操作。这些操作往往涉及鼠标不断移动、点击等,上述动作如果通过人工实现则低效、耗时。为了提高测试效率,需要对鼠标输入进行测试自动化[1],自动进行鼠标指针移动,完成鼠标点击功能。将测试人员从繁琐的手工测试中解放出来,节省时间和人力成本。F7F8A21B-9E1C-47AE-BBCB-C48400AF1B6D

关于鼠标输入的测试自动化,现有的技术大致可以分为两类:一类是基于系统调用的方式,通过调用底层操作系统编程接口,控制鼠标指针移动、点击。例如通过Windows系统提供的PostMessage接口完成鼠标指令发送和接收[2]、通过安卓平台中的adb shell sendevent指令完成点击输入功能[3]等;第二类是基于硬件模拟,通过不同的硬件设备对鼠标命令进行拦截、仿真[4][5]。第一类针对鼠标设备进行的测试自动化技术具有侵入性。这些技术需要在被测设备中安装或启用测试辅助工具[6],访问设备底层操作系统。第二类基于硬件模拟的测试自动化技术虽然无需在被测系统中植入测试辅助工具,具有一定的非侵入性,但其硬件仿真设备需要与被測系统通过电子线路相连接,要求被测目标开放内部物理结构,允许接入信号,在控制鼠标指针进行移动点击时,需要根据待测设备屏幕接收的信号对其进行控制。对于一些系统封闭和高安全性要求的设备,例如军用显控台等,这些测试自动化技术难以应用。

非侵入式测试具有免植入工具、天然跨平台等特点。然而,实现真正非侵入式的鼠标测试自动化技术颇具挑战,特别是在不通过底层系统或显示接口获取桌面图像的情况下,鼠标指针不易定位,鼠标移动速度不易控制,实现准确的鼠标移动和点击存在难度。为此,提出了一种基于视觉拍摄的鼠标测试自动化研究技术。该技术通过外部摄像头跟踪鼠标指针并完成定位,使用USB信号激励器完成鼠标指针移动点击,并同步视觉空间和激励器空间鼠标的移动,实现非侵入性的测试。

通过控制激励器,驱动鼠标指针实现移动点击待测桌面上的不同应用等案例研究,表明该技术具有较高的测试执行准确度。该测试自动化方法可适用于多种不同工作场景下的机器设备,例如普通的工作笔记本、禁止调用操作系统底层接口的军用显控台等。扩展了测试自动化技术的应用范围,为现有技术无法应用的测试场景,提供了有效技术支撑,为测试自动化创造了更多的技术选择。

1 测试自动化总体结构

提出的测试自动化系统包括摄像头、鼠标激励器和测试控制软件等几个主要部分,基本结构如所图1示。

摄像头拍摄整个屏幕,用来跟踪鼠标位置,且保持成像平面平行于桌面屏幕。鼠标激励器与待测设备通过USB相连,用来控制鼠标指针移动。激励器中只能实现鼠标指针相对移动功能,不支持绝对位置定位,并且操作系统鼠标移动速度设置不确定,激励器中发出一个鼠标移动命令,具体在桌面空间发生的鼠标移动规模不确定。鼠标控制过程无需向待测设备植入测试辅助软件。测试控制软件根据摄像头获取的信息决策鼠标动作,向鼠标激励器发送移动命令实现鼠标输入的测试自动化。

在上述系统上,鼠标输入测试自动化的目标是给定一个如下形式的控制指令:

自动定位目标控件位置,将鼠标准确移动到该位置,并实现点击。

方法的总体流程主要包括三个步骤:

(1)鼠标指针定位;

(2)校准视觉与激励器空间鼠标移动关联;

(3)实现鼠标动作。

鼠标输入测试自动化过程首先定位待测屏幕中鼠标指针位置。鼠标指针定位是进行鼠标移动、点击的基础。由于鼠标图标较小,在不同位置、不同背景下,并不总是能视觉识别,为此,本文提出一种校准和识别鼠标位置的方法,通过试探性移动和多次识别来尝试找出鼠标位置。由于操作系统中的鼠标移动速度设置不确定,在摄像头采集的图像中,摄像头还可能相对桌面屏幕发生一定的旋转,导致鼠标从当前位置到目标位置的水平、垂直方向移动和桌面空间、鼠标激励器空间的移动并不一致,移动角度、移动尺度都存在偏差。本文提出一种视觉空间和激励器空间的鼠标移动同步方法,来校准视觉空间鼠标移动和激励器空间鼠标移动的关联,进而根据视觉空间所需的鼠标移动决策激励器空间所需的鼠标移动,驱动鼠标激励器,完成鼠标动作。

2 鼠标指针定位

实现鼠标输入的测试自动化,首先需要对鼠标指针在屏幕中的位置进行定位。为视觉定位鼠标,本研究在拍摄的屏幕的图像中,首先截图获得鼠标的形态,作为定位的模板。定位算法首先控制鼠标进行一次初始移动,目的是为了防止某些被测设备中鼠标长时间未使用而出现隐藏的状态,通过一次移动确保鼠标出现在屏幕内。然后,在摄像头获取的待测设备现场屏幕图中应用SIFT[7]算法匹配鼠标图像,来定位鼠标位置。

为了防止屏幕背景过多的干扰鼠标图像匹配,提高鼠标指针往不同方向移动时匹配的准确性,较为精确地获得每个方向上视觉空间与激励器空间鼠标移动之间的关联。选择将鼠标指针尽可能移往屏幕中背景信息较少的区域。采用SIFT算法计算图像特征点,并将鼠标移向特征点较少的区域,认为在该区域中,屏幕的背景信息相对较少。如图2所示,通过摄像头获得待测设备屏幕图像后,对初始鼠标附近区域进行特征点检测,附近区域分为四个方向分别是上、下、左、右。附近区域的大小和鼠标指针初始截图一样大。将鼠标指针初始区域记为origin,在图中用白色框标出。对于鼠标指针附近的上、下、左、右四个区域,分别记为top、bottom、left、right。在图中用黑色框标出,在每个区域中,我们计算该区域内部特征点集合,用诸如fp(top)的形式表示,最后,我们求出四个区域中特征点集合中数目最少的区域,用areaMin表示,则areaMin的表达式为:

同时,在进行鼠标图像匹配时,为了进一步减少图像背景对模板匹配的干扰,选择为模板图像增加Alpha[8]通道。本文为鼠标图像增加Alpha通道,目的是将鼠标指针与图像背景隔离,使鼠标指针背景变为透明,在进行特征点计算与匹配时,就不会误计算背景中的特征点而导致误匹配。

3 视觉和激励器空间鼠标移动同步关系

每利用鼠标激励器驱动鼠标移动一次,在对应的被测设备的桌面空间,鼠标指针便会发生一次改变,在摄像头拍摄的屏幕图像中,鼠标指针的像素位置也会相应地发生改变。在三个空间中发生的鼠标移动在方向和尺度上都有可能存在不同。为控制鼠标指针移动到摄像头拍摄屏幕图像中的指定位置,需要识别不同空间鼠标移动间的关联,进行鼠标移动间的同步。F7F8A21B-9E1C-47AE-BBCB-C48400AF1B6D

给定一个由鼠标激励器触发的桌面空间鼠标移动(py)的映射为激励器-视觉鼠标移动映射。

以图3为例,在激励器空间中鼠标指针从初始位置向右上方运动。Δx和Δy分别表示激励器驱动鼠标移动时,激励器中设置的鼠标移动步长,Δdx和Δdy分别表示在对应的鼠标激励器中设置的鼠标移动步长下,激励器驱动鼠标移动一次,鼠标指针在桌面空间的水平、垂直方向移动尺度,Δpx和Δpx分别表示在同样的鼠标移动步长下,鼠标移动一次,鼠标指针在视觉空间的水平、垂直方向移动尺度。在激励器空间中定义好鼠标移动步长并发送激励器信号时,就会相应的在桌面空间移动固定的距离,因此激励器空间与桌面空间鼠标移动是一种缩放关系,而因摄像头旋转导致成像倾斜时,激励器空间移动一次,视觉空间的移动并不是固定的,因此本节的目标,就是为了找出激励器空间中鼠标移动一次与视觉空间移动时的指针移动对应关系。

3.1 激励器单位有效移动方法

在计算不同方向上激励器-视觉鼠标移动映射关系时,若在鼠标激励器中设置的鼠标移动步长过长,在鼠标指针移动一次时,可能会导致鼠标指针已经移动到待测设备的屏幕边缘位置,从而鼠标激励器中驱动鼠标移动一次与实际的桌面鼠标指针移动距离产生了错误的缩放关系,最终导致激励器-视觉鼠标移动的映射也发生了错误。因此,本文提出一种激励器单位有效移动的方法,计算激励器中驱动鼠标两次单位移动后的鼠标指针横纵坐标位置,判断鼠标进行一次激励器单位移动时是否已经移动到待测屏幕边缘位置,从而避免产生激励器与视觉桌面鼠标移动时错误的映射关系。

提出一种在激励器进行单位移动时,判断其是否有效移动的方法。激励器单位有效移动是指激励器驱动鼠标进行一次单位移动,鼠标指针在移动前后,指针的横坐标和纵坐标位置都发生了改变,即鼠标在移动之前没有到达屏幕的边界。

为了防止鼠标移动时已经触碰到屏幕边界,导致实际移动距离与预期移动距离不符,本文采取两次试探,分别将鼠标向同一方向移动两次,若两次移动后鼠标坐标位置不同,则认为第一次移动是有效移动,保留第一次移动距离,作为计算视觉空间的移动距离。具体流程是:

(1)记录初始鼠标指针坐标位置;

(2)往某方向移动鼠标一次,定位其坐标;

(3)再次同方向移动鼠标,并定位其坐标;

(4)判断两次坐标是否相同,若相同,则为无效移动,此时反向移动鼠标指针多次,并记录其坐标位置。

(4)若两次坐标不同,则认为第一次移动一定是有效移动,计算第一次移动鼠标指针前后的坐标偏量。

3.2 激励器-视觉鼠标移动映射关系

在实际通过摄像头对待测屏幕进行拍摄时,摄像头成像相对桌面屏幕可能发生一定的旋转,导致激励器驱动鼠标在桌面上的水平或竖直方向移动一次时,在成像结果像素空间的移动并不一定是水平或竖直的,且鼠标指针在桌面上各个方向的移动速度也不一致。同时,激励器驱动鼠标在桌面空间的移动步长与激励器内设置的步长不一定相同,导致激励器步长与桌面移动步长存在一种缩放关系,且根据成像大小不同,桌面移动步长与成像移动步长也存在一种缩放关系。因此,需要计算出成像旋转以及不同缩放比例情况下,激励器驱动鼠标指针移动一次,在像素空间移动与桌面上移动之间的关系。

首先给出激励器空间与像素空间的缩放关系。通过激励器驱动鼠标指针在桌面上进行一次移动,在激励器空间,设移动步长为(Δx,Δy),将激励器与桌面空间鼠标移动缩放尺度记为k1,桌面空间鼠标移动与像素空间鼠标指针移动缩放尺度记为k2,则激励器驱动鼠标指针移动后,在只考虑缩放关系的情况下,将像素空间移动步长记为(Δx',Δy'),则用公式可以表示为:

缩放关系计算完成后,接下来计算激励器空间与像素空间鼠标指针移动满足的旋转关系。将激励器驱动鼠标进行步长(Δx,Δy)的移动后,视觉空间鼠标指针移动步长记为Δx″,Δy″,则应首先根据(Δx,Δy)和缩放尺度,通过上述公式,得到像素空间移动步长(Δx',Δy')。再根据像素空间移动步长,计算视觉空间移动步长,其计算公式为:

根据此公式以及在鼠标激励器上驱动鼠标指针向每个方向进行一次单位移动,即可计算出旋转角θ和缩放尺度k1k2的积,最后将这两个参数带入上述公式,即可得到在鼠标激励器中驱动鼠标指针移动一次,实际在像素中每个方向的移动尺度。具体的做法是:以鼠标激励器驱动鼠标指针向右进行一次有效单位移动为例,令Δx=1,Δy=0,根据鼠标指针移动前后,获取鼠标指针在像素空间中的坐标变换为(Δx″,Δy″),则可以得到如下公式:

在该公式中,Δx″和Δy″为已知量,将这两个公式分别进行平方后再相加,最后可以得到k1k2的積,即为激励器空间与像素空间鼠标移动的缩放尺度,再计算得到的缩放尺度再带回此公式,可求出旋转角度θ。在计算出倾斜角θ和缩放尺度后,可以将θ与缩放尺度带入旋转关系公式中,得到激励器-视觉鼠标移动的映射关系。根据此移动映射关系,在鼠标激励器中驱动鼠标指针进行单位移动时,可以获取相应的在像素空间鼠标移动的尺度。

在通过鼠标移动计算激励器-视觉鼠标移动映射关系时,还需考虑到鼠标指针移动后,图像匹配未成功的情况,例如,在用SIFT算法进行鼠标图像的特征点匹配时,鼠标移动一次后,并未匹配成功,但是移动两次或者多次之后可以完成鼠标指针图像匹配,鉴于此种情况,本文给出一个鼠标移动序列,如下所示,M表示鼠标指针移动后的图像匹配结果集。

其中,将任意两个在同方向移动后,能够定位的鼠标指针记为Mi(x,y),Mj(m,n),Mi,Mj∈ M。根据指针位置,算出鼠标在像素空间移动前后的距离,并带入旋转公式中,再根据移动次数,可以算出θ角和缩放尺度,作为旋转公式中的未知参数的解。将该序列中任意能够定位的多个同方向移动后的鼠标指针,两两进行角度和缩放尺度计算。最后,对于每次能够定位的点,我们将计算得到的角度相加并求平均值,得到较为精确的旋转角度,并带入坐标转换矩阵中,并将缩放尺度也进行同样的操作。以计算平均角度为例,将角度的平均值记为θ-,对于每次计算得到的角度,将其记为θ。则的表达式为:F7F8A21B-9E1C-47AE-BBCB-C48400AF1B6D

其中count(i,j)表示可定位同方向鼠標指针对个数。

4 鼠标动作的实现

获得激励器-视觉鼠标移动映射关系后,下一步是实现鼠标移动,对目标控件进行点击,完成鼠标设备的非侵入式测试自动化。该方法是主要思想是通过计算待点击应用与鼠标指针之间的位置,根据激励器-视觉鼠标移动关系,计算鼠标指针移动到待点击应用时需要移动的次数。输入数据是鼠标指针在待测桌面中的初始坐标位置,输出是鼠标指针在待测桌面中的最终停留位置。

本文采用Arduino Leonardo[9]和esp8266[10]模块来模拟鼠标设备,并将其通过杜邦线连接,如图5所示。

方法首先定位像素空间中待点击应用与鼠标指针初始位置,并根据两者位置,计算需要移动的次数。具体的计算方法为,根据3.2节中对缩放关系和旋转关系矩阵的描述,将公式进行整合,整合情况如下所示,首先计算鼠标指针位置与待点击应用位置在不同方向上的移动关系,得到缩放尺度和旋转角度。

并根据待点击应用位置与鼠标初始指针位置,可以得到上述公式中的Δx''和Δy'',最后可以得出需要移动的次数Δx和Δy。

若Δx或者Δy是整数,则在进行鼠标移动时,只需向激励器先发送Δx次信号,再发送Δy次信号即可。若Δx或者Δy是非整数(即小数),则需先向激励器发送整数部分次数的信号,例如若Δx= 5.4,先向激励器发送5次水平方向移动信号,然后对于剩下的0.4次,将激励器中的移动步长改为原先设置好的移动步长step_size* 0.4,作为最后一次的移动步长。对于竖直方向,也采取同样的操作。

5 测试自动化框架使用效果

在实验时尽可能时成像平面平行于桌面屏幕,同时可以使摄像头旋转,与桌面屏幕呈现一定旋转角度。在该旋转角度下,尝试对桌面屏幕中位于鼠标指针不同方向的应用进行点击测试。同时,为鼠标指针点击选择不同的目标控件,观察控件是否准确打开,并将目标控件位于鼠标指针的不同方向,如图5所示。

本文对该种情况下鼠标指针移动点击进行七次执行实验,计算脚本执行后,鼠标指针与待点击应用之间的距离,在计算该距离时,首先为待点击应用截取一张长宽相同的图像,并将该图像长度(或宽度)记为width,然后计算鼠标最终停留的像素坐标位置与待点击应用中心像素坐标的欧式距离[11],记为distancemouse_img,将此距离与图像长度的一半相除,得到指针停留位置与目标位置距离,该距离越小,则表示指针停留位置与目标位置越接近。

并观察待点击目标控件是否被打开。七次实验执行结果如表1所示。以上数据表明该鼠标非侵入式测试自动化方法具有较高的准确度。

6 小 结

本文提出了一个基于视觉拍摄的鼠标输入测试自动化技术,该技术使用摄像头捕捉鼠标在屏幕中的移动,并进行鼠标指针定位。通过鼠标激励器控制鼠标指针移动,并校准鼠标激励器中的鼠标移动与实际视觉成像中鼠标指针移动之间的关系。实验研究表明本方法只需将鼠标激励器插入待测设备中,即可完成对不同设备的非侵入式鼠标测试自动化,能够满足测试人员对各种不同工作场景下鼠标的测试需求,具有较高的使用价值。

参考文献

[1] C. Hsueh, Y. Cheng and W. Pan, "Intrusive Test Automation with Failed Test Case Clustering," 2011 18th AsiaPacific Software Engineering Conference, Ho Chi Minh, 2011.

[2] 胡智文,陈连运,余增亮.通过鼠标自动控制实现程序的自动化操作[J].计算机工程与应用,2003.

[3] 古锐,肖璞.基于Appium的Android应用自动化测试框架的研究[J].现代计算机(专业版), 2018.

[4] Cheng Y P, Liang D, Wang W J. KORAT—A platform independent test automation tool by emulating keyboard/mouse hardware signals[C]//2016 IEEE AUTOTESTCON. IEEE, 2016.

[5] Yu, Zhengwei, et al. "A Novel Automated GUI Testing Echnology Based on Image Recognition." 2016 IEEE 18th International Conference on High Performance Computing and Communications; IEEE 14th International Conference on Smart City; IEEE 2nd International Conference on Data Science and Systems . IEEE, 2016.F7F8A21B-9E1C-47AE-BBCB-C48400AF1B6D

[6] 2020.UIAutomator.http://developer.android.com/tools/testingsupportlibrary.

[7] G. Shi, X. Xu and Y. Dai, "SIFT Feature Point Matching Based on Improved RANSAC Algorithm," 2013 5th International Conference on Intelligent HumanMachine Systems and Cybernetics, Hangzhou, 2013.

[8] H. Zhang, Y. Zhou, L. Chen and J. Zhao, "Image Alpha Matting via Residual Convolutional Grid Network," 2019 IEEE Global Conference on Signal and Information Processing (GlobalSIP), Ottawa, ON, Canada, 2019.

[9] 蔡睿妍.Arduino的原理及應用[J].电子设计工程,2012.

[10]张琥石,林伟龙,杨发柱,黄向军,金星伊,陈洁,罗晓春,张盈盈,甘辛.基于ESP8266 WiFi模块的物联网体温监测系统[J].物联网技术,2020.

[11]H. Wang et al., "Research on the Relationship between Classic DenavitHartenberg and Modified DenavitHartenberg," 2014 Seventh International Symposium on Computational Intelligence and Design, Hangzhou, 2014, pp. 26-29, doi: 10.1109/ISCID.2014.F7F8A21B-9E1C-47AE-BBCB-C48400AF1B6D

猜你喜欢

计算机视觉鼠标
基于深度卷积神经网络的物体识别算法
双目摄像头在识别物体大小方面的应用
机器视觉技术发展及其工业应用
危险气体罐车液位计算机视觉监控识别报警系统设计
鼠标折叠笔
妙用鼠标驱动
45岁的鼠标
超能力鼠标
鼠标也可以是这样的