金 葦,錢 巨,孟祥臻
(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左右雙目測距誤差,本方法誤差更小,可用于觸屏設備的非侵入式測試,具備良好的應用前景。
通過邊緣檢測算法實現了屏幕的精準輪廓提取任務,具有較強的魯棒性。同時利用雙目視覺定位原理獲取采樣點的三維坐標從而擬合出屏幕的平面方程,確定屏幕范圍,避免了深度空洞問題,實現了依據屏幕在二維圖像中的位置求出屏幕在三維空間位置的目標。
在未來工作中,由于屏幕所處環境可能更為復雜,如何在復雜環境中識別屏幕位置會有更大挑戰,值得后續進一步研究。