一種實(shí)時(shí)判別攝像機(jī)光軸的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種實(shí)時(shí)判別攝像機(jī)光軸的方法,尤其涉及一種用于實(shí)時(shí)判別機(jī)器視 覺中物體相對(duì)位姿的方法,屬于機(jī)器視覺領(lǐng)域。
【背景技術(shù)】
[0002] 隨著科技的發(fā)展,人機(jī)交互的需求變得越來越多,在電子游戲中加入人機(jī)交互會(huì) 使得游戲更加逼真,從而贏得市場(chǎng)。在模擬射擊游戲當(dāng)中,我們需要實(shí)時(shí)計(jì)算出虛擬槍打在 屏幕上的坐標(biāo)點(diǎn),這時(shí)必須知道虛擬槍和屏幕的相對(duì)位置。
[0003] 傳統(tǒng)方法是利用激光定位,即開槍射擊時(shí)打出激光,求出激光的位置即可得到虛 擬槍的射擊位置。這種方法存在以下缺點(diǎn):激光在強(qiáng)光背景下效果很不理想,且容易被LED 屏吸收,第二點(diǎn)是激光器對(duì)人眼安全存在隱患。另外的一種方法是固定虛擬槍在一個(gè)底盤 上,計(jì)算出虛擬槍的水平和俯仰角度,加上屏幕與虛擬槍的距離已知,便可求出虛擬槍的射 擊位置。缺點(diǎn)是機(jī)械精度要求高且用戶體驗(yàn)不好。
[0004] 另外一種做法是在游戲的顯示屏上安置LED作為特征點(diǎn)來判斷二者的相對(duì)位姿。 當(dāng)均勻地安置LED時(shí),如何在虛擬槍和屏幕的相對(duì)位姿發(fā)生變化時(shí)區(qū)分各個(gè)LED成為亟需 解決的問題。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明公開的一種實(shí)時(shí)判別攝像機(jī)光軸的方法,要解決的技術(shù)問題是利用游戲的 顯示屏上安置的LED與計(jì)算虛擬槍映射的位置關(guān)系,實(shí)現(xiàn)判別機(jī)器視覺中物體相對(duì)位姿, 且本發(fā)明判別速度快、結(jié)果精度高、受外界干擾小。
[0006] 本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的。
[0007] 本發(fā)明公開的一種實(shí)時(shí)判別攝像機(jī)光軸的方法,包括如下步驟:
[0008] 步驟一:在游戲顯示屏幕上安裝LED閃爍,所述的安裝LED閃爍的數(shù)量根據(jù)視場(chǎng)大 小而定。虛擬槍內(nèi)置用于實(shí)時(shí)采集屏幕上安裝LED閃爍圖像的高速相機(jī),并對(duì)采集屏幕上 安裝LED閃爍圖像進(jìn)行去除背景光處理,所述的去除背景光方法優(yōu)選幀間差分法。
[0009] 步驟二:根據(jù)虛擬槍實(shí)時(shí)采集游戲屏幕上LED閃爍的點(diǎn)數(shù)和LED閃爍的奇偶性建 立采集LED閃爍位置與游戲顯示屏幕LED閃爍實(shí)際位置的映射關(guān)系,實(shí)現(xiàn)實(shí)時(shí)判別機(jī)器視 覺中物體相對(duì)位姿。
[0010] 所述的步驟二具體實(shí)現(xiàn)方法為:
[0011] 步驟2. 1:定義采集游戲屏幕上LED閃爍圖像次數(shù)為奇數(shù)時(shí)為奇數(shù)幀,采集游戲屏 幕上LED閃爍圖像次數(shù)為偶數(shù)時(shí)為偶數(shù)幀。
[0012] 步驟2. 2 :給游戲屏幕上LED閃爍編號(hào),按順時(shí)針順序編為LED閃爍ULED閃爍2、 LED閃爍3、LED閃爍4、LED閃爍5、LED閃爍6,定義LED閃爍1、LED閃爍2、LED閃爍6為 奇場(chǎng),LED閃爍3、LED閃爍4、LED閃爍5為偶場(chǎng)。
[0013] 步驟2. 3 :LED閃爍點(diǎn)亮?xí)r,設(shè)置其值為正;LED閃爍熄滅時(shí),設(shè)置其值為0。
[0014] 步驟2. 4 :奇數(shù)幀時(shí),給LED閃爍ULED閃爍2、LED閃爍6通電點(diǎn)亮,偶數(shù)幀時(shí),給 LED閃爍3、LED閃爍4、LED閃爍5通電點(diǎn)亮。
[0015] 步驟2. 5 :判斷虛擬槍實(shí)時(shí)采集的LED閃爍對(duì)應(yīng)的編號(hào)是LED閃爍I、LED閃爍2、 LED閃爍6組中的一個(gè),或是LED閃爍3、LED閃爍4、LED閃爍5中的一個(gè)。
[0016] 步驟2. 5具體判斷方法為:當(dāng)采集游戲屏幕上LED閃爍奇數(shù)幀圖像閃爍時(shí),利用步 驟一中的幀間差分法實(shí)現(xiàn)當(dāng)前幀減去上一幀,提取LED閃爍的值和位置,當(dāng)前LED值為正則 判斷是LED閃爍1、LED閃爍2、LED閃爍6組中的一個(gè)。若LED值為負(fù)則判斷是LED閃爍 3、LED閃爍4、LED閃爍5組中的一個(gè)。當(dāng)采集游戲屏幕上LED閃爍偶數(shù)幀圖像閃爍時(shí),利 用步驟一中的幀間差分法實(shí)現(xiàn)當(dāng)前幀減去上一幀,提取LED閃爍的值和位置,當(dāng)前LED值為 正則判斷是LED閃爍3、LED閃爍4、LED閃爍5中的一個(gè)。若LED值為負(fù)則判斷是LED閃爍 1、LED閃爍2、LED閃爍6中的一個(gè)。
[0017] 步驟2. 6 :根據(jù)步驟2. 5判斷結(jié)果,結(jié)合LED閃爍I、LED閃爍2、LED閃爍3、LED閃 爍4、LED閃爍5、LED閃爍6的實(shí)際幾何關(guān)系判斷建立采集LED閃爍位置與游戲顯示屏幕 LED閃爍實(shí)際位置的映射關(guān)系。
[0018] 步驟2. 6具體判斷方法為:
[0019] 步驟2. 6. 1:若獲取LED閃爍的個(gè)數(shù)少于四個(gè),則判斷虛擬槍指向了屏幕外。
[0020] 步驟2. 6. 2 :若獲取LED閃爍的個(gè)數(shù)為四個(gè),利用步驟2. 5判斷其中有三個(gè)LED閃 爍為奇場(chǎng)LED閃爍,另一個(gè)為偶場(chǎng)LED閃爍的一個(gè),定義為參考點(diǎn);或者其中有三個(gè)LED閃 爍為偶場(chǎng)LED閃爍,另一個(gè)為奇場(chǎng)LED閃爍的一個(gè),定義為參考點(diǎn)。
[0021] 首先,求取攝像機(jī)采集的同組三個(gè)LED閃爍兩兩之間的距離,取最小的距離為a, 再求取另外一個(gè)LED閃爍分別到該組三個(gè)LED閃爍之間的距離,取最大距離為b。如果b < 2a,則判斷出獲取的四個(gè)LED閃爍映射的實(shí)際四個(gè)LED閃爍位置組成長方形,如果b> 2a,獲取的四個(gè)LED閃爍映射無效。
[0022] 定義參考點(diǎn)坐標(biāo)為(x3,y3),定義與參考點(diǎn)距離最遠(yuǎn)的為其對(duì)角上的LED閃爍坐標(biāo) 為(11,71),定義另外兩個(gè)1^閃爍坐標(biāo)為(1 2,72)和(14,74),通過(11,7 1)和(13,73)的直 線方程為:
[0026] 由于實(shí)際屏幕上對(duì)應(yīng)的LED閃爍坐標(biāo)值是已知的,即實(shí)現(xiàn)建立采集LED閃爍位置 與游戲顯示屏幕LED閃爍實(shí)際位置的映射關(guān)系。
[0027] 步驟2. 6. 3:若獲取LED閃爍的個(gè)數(shù)為五個(gè),利用步驟2. 5判斷其中有三個(gè)LED閃 爍為奇場(chǎng)LED閃爍,另外兩個(gè)為偶場(chǎng)LED閃爍的兩個(gè);或者其中有三個(gè)LED閃爍為偶場(chǎng)LED 閃爍,另外兩個(gè)為奇場(chǎng)LED閃爍的兩個(gè)。
[0028] 分別求取兩個(gè)LED閃爍到另外三個(gè)同一組的LED閃爍距離之和,取為cl和c2,取 cl、c2兩者較小的值對(duì)應(yīng)的LED閃爍與另外三個(gè)同一組的LED閃爍構(gòu)成四邊形,定義取cl、 c2兩者較小的值對(duì)應(yīng)的LED閃爍為參考點(diǎn)。
[0029] 定義參考點(diǎn)坐標(biāo)為(x3,y3),定義與參考點(diǎn)距離最遠(yuǎn)的為其對(duì)角上的LED閃爍坐標(biāo) 為(11,71),定義另外兩個(gè)1^閃爍坐標(biāo)為(1 2,72)和(14,74),通過(11,7 1)和(13,73)的直 線方程為:
[0033] 由于實(shí)際屏幕上對(duì)應(yīng)的LED閃爍坐標(biāo)值是已知的,即實(shí)現(xiàn)建立采集LED閃爍位置 與游戲顯示屏幕LED閃爍實(shí)際位置的映射關(guān)系。
[0034] 步驟2. 6. 4 :若獲取LED閃爍的個(gè)數(shù)為六個(gè),利用步驟2. 5判斷其中有三個(gè)LED閃 爍為奇場(chǎng)LED閃爍,另外三個(gè)為偶場(chǎng)LED閃爍。
[0035] 分別求取奇場(chǎng)三個(gè)LED閃爍到另外一組三個(gè)LED閃爍距離之和,取為dl、d2和d3, dl、d2和d3中最小者對(duì)應(yīng)的LED閃爍為LED閃爍2,偶場(chǎng)LED閃爍距離LED閃爍2最遠(yuǎn)的 為LED閃爍4 ;再分別求取偶場(chǎng)三個(gè)LED閃爍到另外一組三個(gè)LED閃爍距離之和,取為el、 e2和e3,el、e2和e3中最小者對(duì)應(yīng)的LED閃爍為LED閃爍5,偶場(chǎng)LED閃爍距離LED閃爍 5最遠(yuǎn)的為LED閃爍1。奇場(chǎng)余下的為LED閃爍6,偶場(chǎng)余下的LED閃爍3。
[0036] 取LED閃爍1、LED閃爍3、LED閃爍4、LED閃爍6構(gòu)成四邊形,由于實(shí)際屏幕上對(duì) 應(yīng)的LED閃爍坐標(biāo)值是已知的,即實(shí)現(xiàn)建立采集LED閃爍位置與游戲顯示屏幕LED閃爍實(shí) 際位置的映射關(guān)系。
[0037] 步驟2. 6. 5 :根據(jù)步驟2. 6. 2、步驟2. 6. 3、步驟2. 6. 4即可建立采集LED閃爍位置 與游戲顯示屏幕LED閃爍實(shí)際位置的映射關(guān)系。所述的采集LED閃爍位置與游戲顯示屏幕 LED閃爍實(shí)際位置的映射關(guān)系用于步驟2. 7實(shí)現(xiàn)判別機(jī)器視覺中物體相對(duì)位姿的方法。
[0038] 步驟2. 7:已知四個(gè)點(diǎn)在屏幕上的坐標(biāo)位置以及在攝像機(jī)上成像的坐標(biāo)位置,可 以求出攝像機(jī)坐標(biāo)轉(zhuǎn)換成相應(yīng)屏幕上坐標(biāo)的變換矩陣,定義攝像機(jī)主點(diǎn)即為其光軸,因此 可以求得其在屏幕上的坐標(biāo)位置。利用高速攝像機(jī)可以達(dá)到實(shí)時(shí)性。
[0039] 由步驟2. 6已求取構(gòu)成四邊形的四個(gè)LED閃爍在攝像機(jī)成像平面上的坐標(biāo)值統(tǒng) 一記為(X1,Y1),(x2,y2),(x3,y3),(x4,y4),且該四個(gè)LED閃爍在實(shí)際屏幕上的坐標(biāo)已知,為 (X1J1), (X2,Y2),(X3,Y3),(X4,Y4)。已知(Xl,yi)和(X^Y1)(i= 1,2,3,4) 一一對(duì)應(yīng),利用 投影變換,求出其變換矩陣H。
[0040] 變換矩陣H與攝像機(jī)主點(diǎn)坐標(biāo)相乘,即得到虛擬