孟一飛, 毛 威, 孟 斌, 楊麗娟
(寧夏大學(xué) 物理與電子電氣工程學(xué)院,寧夏 銀川 750021)
真人射擊游戲又稱為生存游戲或野戰(zhàn)游戲,是一種半競技性團(tuán)體對抗射擊運(yùn)動,游戲中玩家通過游戲槍擊中對手出局模擬軍事戰(zhàn)斗?,F(xiàn)有真人射擊游戲比賽用槍主要包括實(shí)體彈丸發(fā)射槍和電子槍兩類。彈丸類游戲槍能帶給玩家更真實(shí)的射擊體驗(yàn)感,但這種方式缺乏精準(zhǔn)公平的制裁方法,輸贏的評判僅依賴于玩家的誠實(shí)。電子槍利用光通信技術(shù),通過向接收器發(fā)射紅外激光信號模擬射擊和人員中彈,然而其缺點(diǎn)是玩家只有在對準(zhǔn)接收器射擊時(shí),才會被判定有效擊中,接收器僅輸出有無擊中目標(biāo)的邏輯量,無法獲知射擊距離、瞄準(zhǔn)角等更精確的評分指標(biāo)。針對以上問題,本文提出一種基于機(jī)器視覺的射擊游戲仲裁系統(tǒng)設(shè)計(jì)。
本文所提出的仲裁系統(tǒng)基于AprilTag標(biāo)簽機(jī)器視覺檢測技術(shù)[1],粘貼在玩家身上的AprilTag靶標(biāo)提供參與者的身份標(biāo)識和位姿數(shù)據(jù)。游戲槍瞄準(zhǔn)鏡前端裝有攝像頭,用于捕獲靶標(biāo)圖案。攝像頭通過掃描玩家身上的靶標(biāo)得到該玩家與游戲槍的相對距離和角度差,系統(tǒng)利用以上信息判定得分?;跈C(jī)器視覺技術(shù)的優(yōu)勢在于:系統(tǒng)能夠檢測瞄準(zhǔn)射擊點(diǎn)和AprilTag標(biāo)簽的相對誤差,細(xì)化評估對被擊目標(biāo)的傷害程度。相比電子槍信號接收器,粘貼在玩家身上的標(biāo)簽幾乎不會帶來負(fù)重。
基于靶標(biāo)檢測方案面臨的最大挑戰(zhàn)是攝像機(jī)視野和可用分辨率的限制。游戲槍識別標(biāo)簽的難易取決于射擊距離和目標(biāo)玩家的移動速度[2]。當(dāng)槍械與標(biāo)簽距離較遠(yuǎn),標(biāo)簽在攝像機(jī)中的尺寸會非常小,對識別帶來極大的障礙。當(dāng)游戲槍與靶標(biāo)距離較近時(shí),即使玩家移動速度很慢,攝像機(jī)也可能只拍攝到標(biāo)簽的一部分,無法報(bào)告一次有效檢測。這些限制決定了AprilTag標(biāo)簽只能在很小的距離范圍內(nèi)和較慢的移動速度下被檢測識別,標(biāo)準(zhǔn)的AprilTag標(biāo)簽不適合在真人射擊游戲這種長距離、高速度的檢測環(huán)境中使用。
為提升標(biāo)簽的可檢測范圍和定位精度,本文提出了一種雙層嵌套式標(biāo)簽的設(shè)計(jì)方案,具體做法是在大標(biāo)簽中嵌入一個(gè)小標(biāo)簽,使攝像機(jī)在更大動態(tài)范圍內(nèi)至少識別到一個(gè)標(biāo)簽。此外,將貝葉斯數(shù)據(jù)融合方法[3]應(yīng)用于雙層嵌套式標(biāo)簽的位姿估計(jì)中,通過融合內(nèi)外兩層標(biāo)簽的位姿測量值作為整體靶標(biāo)的位姿,有效減小了靶標(biāo)的定位誤差。
視覺基準(zhǔn)標(biāo)簽是一種印有特殊圖案的二維碼標(biāo)志,通過攝像機(jī)拍攝包含標(biāo)簽的圖片,經(jīng)算法處理后即可得到標(biāo)簽6個(gè)自由度的空間位姿信息[4]。相比GPS,MoCap(motion capture)等定位傳感器[5],視覺基準(zhǔn)標(biāo)簽因其靈活性高,成本低廉,在應(yīng)用于多目標(biāo)集群定位方面擁有更大的優(yōu)勢。使用時(shí)只需打印出標(biāo)簽并粘貼在待測目標(biāo)上,即可獲取目標(biāo)的位姿信息。
AprilTag標(biāo)簽由Sagitov A教授在2010年國際機(jī)器人與自動化會議上提出。由于該標(biāo)簽在檢測率、碼間漢明距離、對扭曲和遮擋的魯棒性等各個(gè)方面均優(yōu)于其他標(biāo)簽[6],近年來,在目標(biāo)跟蹤、視覺定位、即時(shí)定位與地圖構(gòu)建(simultaneous localization and mapping,SLAM)準(zhǔn)確性評估測試和人機(jī)交互方面得到了廣泛的應(yīng)用。自第一代AprilTag提出以來,標(biāo)簽圖案和檢測算法在不斷被改進(jìn)和優(yōu)化。2016年,Wang J和Olson E提出了第2代AprilTag[7],在探測器中應(yīng)用新的邊界分割算法,在沒有犧牲定位精度的前提下降低了假陽性率和計(jì)算時(shí)間。2019年,Krogius M等人提出了第3代AprilTag標(biāo)簽[8],使用圓形和環(huán)形的標(biāo)簽圖案設(shè)計(jì),增加了二維碼的數(shù)據(jù)密度。
本文討論一種基于AprilTag標(biāo)簽智能檢測技術(shù)的射擊游戲仲裁系統(tǒng),系統(tǒng)中,游戲參與者身上貼有帶編碼信息的靶標(biāo)標(biāo)簽,通過安裝在游戲槍上的攝像頭采集靶標(biāo)標(biāo)簽,并通過單應(yīng)性變換、外參評估等算法,計(jì)算游戲槍在被擊發(fā)時(shí),靶標(biāo)與游戲槍的相對距離和角度差,從而判定對手的損傷程度。游戲槍上的視頻處理系統(tǒng)通過無線通信模塊將靶標(biāo)位姿發(fā)送到云服務(wù)器,服務(wù)器后端對數(shù)據(jù)二次處理轉(zhuǎn)換成射擊得分。游戲玩家通過登錄仲裁系統(tǒng)手機(jī)客戶端訪問服務(wù)器查看個(gè)人得分、總分排名、團(tuán)隊(duì)?wèi)?zhàn)局勝負(fù)等戰(zhàn)績信息。
基于以上功能需求,本文設(shè)計(jì)了如圖1所示的系統(tǒng)框架結(jié)構(gòu)。真人射擊游戲智能仲裁系統(tǒng)由智能游戲槍、云服務(wù)器、手機(jī)客戶端三個(gè)子系統(tǒng)組成。每個(gè)子系統(tǒng)依靠自身主控器獨(dú)立運(yùn)行,子系統(tǒng)間通過無線通信傳遞信息。
圖1 智能仲裁系統(tǒng)框架結(jié)構(gòu)
圖像獲取模塊主要實(shí)現(xiàn)仿真槍擊發(fā)監(jiān)測、視頻流捕捉與圖像處理、串口通信及控制傳輸控制協(xié)議(transmission control protocol,TCP)通信功能。游戲槍采用OV7725CMOS圖像傳感器采集現(xiàn)場圖像,使用CortexM7內(nèi)核的STM32H743VI ARM芯片作為主控器。ATWINC1500與處理器通過串口連接,在系統(tǒng)中執(zhí)行游戲槍與服務(wù)器的通信任務(wù)。前后端使用套接字網(wǎng)絡(luò)接口發(fā)送和接收數(shù)據(jù)。
智能仲裁系統(tǒng)云服務(wù)器實(shí)現(xiàn)數(shù)據(jù)儲存、得分計(jì)算以及與游戲槍和手機(jī)客戶端的數(shù)據(jù)交互功能。本文系統(tǒng)選擇阿里云ECS(Elastic Compute Service)實(shí)例作為服務(wù)器方案。為實(shí)現(xiàn)服務(wù)器數(shù)據(jù)儲存和與前端設(shè)備無線通信的功能,需要在服務(wù)器端部署Mysql數(shù)據(jù)庫并配置TCP服務(wù)。數(shù)據(jù)庫主要包含用戶注冊信息表、裝備列表、靶標(biāo)位姿監(jiān)測表。使用PHP搭建手機(jī)客戶端后端MVC框架,用以響應(yīng)前端發(fā)起的請求。
手機(jī)客戶端主要用于服務(wù)器訪問及數(shù)據(jù)應(yīng)用操作。本文設(shè)計(jì)使用Vue.js語言基于uni-App框架開發(fā)真人射擊游戲仲裁系統(tǒng)手機(jī)客戶端,該方案在客戶端跨端靈活性和開發(fā)成本方面擁有更強(qiáng)的優(yōu)勢。玩家通過登錄客戶端將游戲槍編號及靶標(biāo)編號提交至服務(wù)器,實(shí)現(xiàn)玩家—游戲槍—靶標(biāo)的三重綁定。系統(tǒng)通過綁定關(guān)系分辨玩家,并以游戲槍編號作為主鍵更新得分。最后由計(jì)分頁面報(bào)告當(dāng)前玩家最新一次射擊分?jǐn)?shù)。
圖2為AprilTag36h11家族0號標(biāo)簽的解碼流程,具體步驟如下:
1)將原圖轉(zhuǎn)換為灰度圖,計(jì)算梯度的幅值和方向,使用基于圖的Felzenszwalb聚類算法,將梯度相同的像素聚類形成線段,如圖2(a)所示。
2)為每條線段添加方向語義,尋找線段終點(diǎn)附近的新線段,彌合線段間的斷點(diǎn),并明確線段的圍繞關(guān)系,判斷其能否圍成滿足環(huán)繞規(guī)則的封閉四邊形,見圖2(b)。
3)如圖2(c)所示,將已檢測的四邊形內(nèi)部分成10×10的網(wǎng)格,遍歷每個(gè)小方格內(nèi)部的像素點(diǎn),如果小方格所在區(qū)域二值化后的像素點(diǎn)超過區(qū)域內(nèi)像素點(diǎn)總數(shù)的50 %為1,則認(rèn)為整個(gè)小方格是白色,解碼為1,反之解碼為0。如圖2(d)所示,探測器已將二維碼的36個(gè)比特塊載荷解碼,得到該標(biāo)簽的碼字為0xd5d628584。
圖2 AprilTag36h11_0標(biāo)簽解碼流程
4)若解碼得到的碼字與字典庫成功匹配,接下來對標(biāo)簽進(jìn)行位姿解析。首先利用標(biāo)簽4個(gè)頂點(diǎn)在空間和圖像中的4對坐標(biāo),以及相機(jī)的內(nèi)參矩陣,構(gòu)建P4P(perspective—4-point)[9]方程。通過DLT(direct linear transform)方法計(jì)算出單應(yīng)性變換矩陣H,對3×3的單應(yīng)性矩陣H進(jìn)行奇異值分解(SVD),得到如式(1)所示的投影矩陣P和外參矩陣E。外參矩陣包含了標(biāo)簽的旋轉(zhuǎn)變換分量Rij和平移變換分量Tk,s為兩組齊次坐標(biāo)映射的尺度參數(shù)
(1)
通過聯(lián)立式(2)方程組求解Rij和Tk元素
h00=sR00/fx,h01=sR01/fx,h02=sTx/fx,…
(2)
旋轉(zhuǎn)矩陣R的第3列[R02R12R22]T通過其他兩列叉乘計(jì)算[10],恢復(fù)后的旋轉(zhuǎn)矩陣如式(3)所示
(3)
由式(4)將旋轉(zhuǎn)矩陣R轉(zhuǎn)換為標(biāo)簽3個(gè)自由度旋轉(zhuǎn)角
(4)
標(biāo)簽中心與攝像機(jī)相對距離d通過式(5)計(jì)算得出
(5)
遠(yuǎn)距離射擊時(shí),標(biāo)簽檢測率較低的主要原因是二維碼在圖像中占用的像素過少,一個(gè)簡單的解決辦法是使用長焦鏡頭,這樣在遠(yuǎn)距離處仍然能夠拍攝到清晰的二維碼圖案,以提升靶標(biāo)檢測率。然而長焦鏡頭視野范圍相對狹窄,如圖3所示,只有在游戲槍離目標(biāo)較遠(yuǎn)時(shí),靶標(biāo)才能完整出現(xiàn)在攝像機(jī)視野之內(nèi),當(dāng)游戲槍接近目標(biāo)時(shí),靶標(biāo)在圖像中的比例會不斷增大,最終二維碼的邊緣會超出畫面,無法被探測器識別。此外,遠(yuǎn)距離瞄準(zhǔn)會導(dǎo)致微小的標(biāo)簽抖動被放大,當(dāng)目標(biāo)移動速度較快時(shí),容易造成標(biāo)簽剛一出現(xiàn)在畫面中就移出視野,攝像頭很難捕捉到連續(xù)運(yùn)動的標(biāo)簽。這些限制決定了游戲槍只能檢測到小范圍內(nèi)低速運(yùn)動的AprilTag標(biāo)簽,檢測距離距離d必須滿足dmin 圖3 標(biāo)簽超出攝像機(jī)視野 為解決以上問題,本文設(shè)計(jì)了如圖4所示的雙層嵌套式AprilTag標(biāo)簽,通過將2個(gè)大小不同的AprilTag標(biāo)簽疊加在一起,合成一個(gè)近似分形圖案的靶標(biāo)??紤]到玩家射擊時(shí)將靶標(biāo)中心作為瞄準(zhǔn)點(diǎn),因此本文設(shè)計(jì)將兩個(gè)標(biāo)簽的中心重合。這樣設(shè)計(jì)的優(yōu)點(diǎn)是,滿足實(shí)際應(yīng)用的同時(shí)避免了內(nèi)外層標(biāo)簽坐標(biāo)系的轉(zhuǎn)換。由于解碼過程中規(guī)定比特塊的顏色是區(qū)域內(nèi)超過半數(shù)像素的顏色,所以小尺寸二維碼的面積要小于大尺寸二維碼中心4個(gè)比特塊面積和的50 %,確保不干擾外層標(biāo)簽解碼。 圖4 嵌套式AprilTag設(shè)計(jì)方案 為內(nèi)外層標(biāo)簽分配不同的尺度因子能夠補(bǔ)償內(nèi)外層標(biāo)簽因尺寸不同造成的位姿測量偏差,然而這就要求探測器能夠區(qū)分內(nèi)外層標(biāo)簽。一個(gè)有效的方法是,在設(shè)計(jì)中將編號為奇數(shù)的二維碼作為大尺寸基底靶標(biāo),編號為偶數(shù)的二維碼作為小尺寸嵌入靶標(biāo)。探測器解碼后,讀取編號的奇偶,有選擇性地將尺度因子代入式(1)中運(yùn)算,這樣保證了在僅檢測到一個(gè)標(biāo)簽的情況下,也能獲知整體靶標(biāo)的定位信息。 當(dāng)攝像頭同時(shí)捕捉到內(nèi)外層標(biāo)簽時(shí),來自兩個(gè)標(biāo)簽的位姿測量數(shù)據(jù)總有一定程度的不一致性,這主要來源于噪聲的影響,使用貝葉斯數(shù)據(jù)融合算法能夠有效解決這一問題。貝葉斯數(shù)據(jù)融合算法是一種基于貝葉斯理論的統(tǒng)計(jì)算法,能夠通過已知Z向量估計(jì)未知的n維向量X。概率密度函數(shù)P(Z|X)描述了Z關(guān)于X的條件概率,當(dāng)狀態(tài)變量X的信息與之前的觀測值偏差過大,可以通過似然函數(shù)提供更準(zhǔn)確的測量結(jié)果。X的先驗(yàn)信息可以封裝為先驗(yàn)概率P(X=x)。嵌套式靶標(biāo)內(nèi)外層標(biāo)簽測量數(shù)據(jù)的融合模型如式(6)所示 p(X=x|Z=z1,z2)= (6) 式中P(Z=z1|X=x)為外層標(biāo)簽觀測值的概率模型,P(Z=z2|X=x)為內(nèi)層標(biāo)簽觀測值的概率模型,P(Z=z1,z2)為所有可能的測量值。使用高斯分布作為標(biāo)簽觀測值的概率模型,外層標(biāo)簽和內(nèi)層標(biāo)簽的概率模型如式(7)和式(8)所示 (7) (8) 根據(jù)貝葉斯理論,兩個(gè)標(biāo)簽融合測量值的最大后驗(yàn)估計(jì)由式(9)定義 (9) 解出嵌套式靶標(biāo)位姿的最優(yōu)估計(jì)量為 (10) 式中z1為外層標(biāo)簽解碼預(yù)測出的位姿,z2為內(nèi)層標(biāo)簽解碼預(yù)測出的位姿,σ1和σ2分別為外層標(biāo)簽和內(nèi)層標(biāo)簽位姿測量值的標(biāo)準(zhǔn)差。 本文使用Unity引擎生成AprilTag靶標(biāo)數(shù)據(jù)集以分析檢測率和定位精度。探測器以單線程模式運(yùn)行在Intel?CoreTMi9—9900X CPU 3.50GHz內(nèi)核的處理器上。實(shí)驗(yàn)中,物理攝像機(jī)使用70 mmIMAX型傳感器,感光元件尺寸為70.41 mm×52.63 mm,標(biāo)簽尺寸為0.1 m×0.1 m,圖像分辨率為640×480,攝像機(jī)內(nèi)參矩陣[11]為 (11) 在檢測率測試中,攝像機(jī)開啟后位于原點(diǎn),AprilTag標(biāo)簽在鏡頭前以預(yù)先規(guī)定的路徑和速度通過,當(dāng)標(biāo)簽進(jìn)入攝像機(jī)視野后觸發(fā)捕獲。靶標(biāo)的移動速度為2 m/s,測試距離從0.5 m到10 m,增量為0.5 m。在每個(gè)標(biāo)定距離點(diǎn)的測試中運(yùn)行13次,最后收集標(biāo)簽的檢測率。圖5是標(biāo)準(zhǔn)AprilTag標(biāo)簽和嵌套式AprilTag標(biāo)簽在不同距離下的檢測率。從圖中可以看出,嵌套式標(biāo)簽的檢測率比標(biāo)準(zhǔn)標(biāo)簽的檢測率高很多,可檢測距離范圍也明顯大于標(biāo)準(zhǔn)標(biāo)簽。 圖5 標(biāo)簽檢測率對比 圖6比較了在探測器同時(shí)檢測到大小兩個(gè)標(biāo)簽的情況下,是否使用貝葉斯數(shù)據(jù)融合算法對標(biāo)簽定位精度的影響。實(shí)驗(yàn)中,設(shè)置攝像頭與標(biāo)簽的距離在4~8.5 m之間,該距離范圍內(nèi)探測器能夠同時(shí)檢測到內(nèi)外層標(biāo)簽。從圖中可以看出,當(dāng)使用貝葉斯數(shù)據(jù)融合算法時(shí),靶標(biāo)與攝像機(jī)距離測量值的相對誤差大約12.7 %。當(dāng)不使用貝葉斯數(shù)據(jù)融合算法時(shí),相對誤差的增加到了23.3 %。 圖6 定位誤差對比 為驗(yàn)證智能仲裁系統(tǒng)在實(shí)際應(yīng)用中的表現(xiàn),本文設(shè)計(jì)了如圖7所示的實(shí)驗(yàn)場景。測試過程中,佩戴AprilTag靶標(biāo)的機(jī)器人在場地中沿設(shè)定好的軌跡向前移動,實(shí)驗(yàn)人員使用游戲槍瞄準(zhǔn)機(jī)器人射擊,仲裁系統(tǒng)手機(jī)客戶端實(shí)時(shí)報(bào)告當(dāng)前得分及靶標(biāo)位姿信息。 圖7 智能仲裁系統(tǒng)手機(jī)客戶端(左)與測試場景(右) 圖8為任意4次成功命中后從仲裁系統(tǒng)客戶端獲得的標(biāo)簽位姿數(shù)據(jù)和得分信息。坐標(biāo)原點(diǎn)為射擊點(diǎn),空心圓圈是系統(tǒng)預(yù)測出的靶標(biāo)中心坐標(biāo),圓圈附近的數(shù)值是各命中點(diǎn)的得分。從圖中可以看出,命中點(diǎn)距離射擊點(diǎn)越遠(yuǎn)得分越高,靶標(biāo)中心越接近瞄準(zhǔn)點(diǎn)得分越高,本文系統(tǒng)實(shí)現(xiàn)了在無需人工參與下,利用機(jī)器視覺靶標(biāo)檢測算法,對玩家的射擊表現(xiàn)給出客觀公正的評分。 圖8 靶標(biāo)位姿預(yù)測結(jié)果及效果評估 本文設(shè)計(jì)了一種基于機(jī)器視覺靶標(biāo)檢測技術(shù)的真人射擊游戲仲裁系統(tǒng)。該系統(tǒng)利用游戲槍瞄準(zhǔn)鏡前端的攝像頭檢測玩家身上的雙層嵌套式AprilTag標(biāo)簽,并通過標(biāo)簽預(yù)測對手與游戲槍的相對距離和角度差,判斷命中情況。雙層標(biāo)簽在可識別范圍方面表現(xiàn)出了更強(qiáng)的優(yōu)勢,更滿足真人射擊游戲這種動態(tài)距離變化大的檢測需求。使用貝葉斯數(shù)據(jù)融合算法融合大小兩個(gè)標(biāo)簽的定位信息,提高了嵌套式靶標(biāo)整體的定位精度。本文系統(tǒng)已在室內(nèi)完成了功能測試,下一步將在更復(fù)雜的室外環(huán)境中測試系統(tǒng)的有效性。3.3 基于貝葉斯數(shù)據(jù)融合的靶標(biāo)定位算法設(shè)計(jì)
4 系統(tǒng)實(shí)現(xiàn)與實(shí)驗(yàn)結(jié)果分析
4.1 靶標(biāo)檢測率與定位誤差分析
4.2 系統(tǒng)測試
5 結(jié) 論