本發(fā)明涉及軍事領(lǐng)域訓(xùn)練中的手榴彈投擲技術(shù),尤其涉及一種基于網(wǎng)絡(luò)一體化和雙目視覺(jué)技術(shù)的投擲物彈道軌跡測(cè)算系統(tǒng)。
背景技術(shù):
傳統(tǒng)的手榴彈投擲訓(xùn)練,戰(zhàn)士和相關(guān)測(cè)試人員在寬闊地帶進(jìn)行實(shí)地手榴彈投擲,即小腳步高頻率助跑,準(zhǔn)備出手前投彈一側(cè)手臂大力向后方彎曲蓄力,最后一步用力蹬下,上肢順著這股力全力扭轉(zhuǎn),手臂全力甩出。由于現(xiàn)有技術(shù)中投擲訓(xùn)練需要較大訓(xùn)練場(chǎng)地進(jìn)行測(cè)試,造成空間的浪費(fèi),需要通過(guò)計(jì)算機(jī)相關(guān)技術(shù)模擬投擲,以達(dá)到縮小場(chǎng)地占用目的。然而測(cè)試時(shí)需要大量輔助人員來(lái)完成,重復(fù)且易出錯(cuò),需要開發(fā)自動(dòng)檢測(cè)和記錄功能提高自動(dòng)化程度。可獲得的訓(xùn)練數(shù)據(jù)少且各個(gè)地域數(shù)據(jù)相對(duì)孤立,根據(jù)數(shù)據(jù)進(jìn)行指導(dǎo)的意義不大,需要精確的視頻圖像分析得到不同方面的測(cè)試數(shù)據(jù),采用互聯(lián)網(wǎng)技術(shù),實(shí)現(xiàn)數(shù)據(jù)的跨地域比較和分析。
使用傳統(tǒng)的人工測(cè)量和訓(xùn)練方法,既容易造成空間和人員的浪費(fèi),又會(huì)增加爆炸傷人事故的發(fā)生概率,同時(shí)在軍事現(xiàn)代化發(fā)展的當(dāng)下,傳統(tǒng)的人工測(cè)試已經(jīng)不能滿足軍事訓(xùn)練數(shù)據(jù)的大規(guī)模需求,而且訓(xùn)練效率低下。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明公開了一種基于網(wǎng)絡(luò)一體化和雙目視覺(jué)技術(shù)的投擲物彈道軌跡測(cè)算系統(tǒng)具體包括:
采用雙目攝像頭從其上面和側(cè)面兩個(gè)角度采集受訓(xùn)人員投擲過(guò)程中的圖像信息的數(shù)據(jù)采集模塊;
接收所述數(shù)據(jù)采集模塊傳送的不同角度圖像數(shù)據(jù)信息對(duì)其進(jìn)行圖像分幀處理、獲取投擲過(guò)程中目標(biāo)物體在兩個(gè)空間角度的速度信息和位置信息,從而獲取其在三維空間的整體速度及位置信息的pc端模塊,所述pc端模塊結(jié)合設(shè)置的氣象環(huán)境信息計(jì)算出投擲數(shù)據(jù)、構(gòu)建pc端虛擬的投擲場(chǎng)景和顯示計(jì)算結(jié)果并將數(shù)據(jù)輸出;
根據(jù)pc端模塊實(shí)時(shí)傳送的數(shù)據(jù)信息,構(gòu)建模擬vr效果的雙目視覺(jué)下投擲軌跡場(chǎng)景信息進(jìn)行動(dòng)態(tài)場(chǎng)景顯示的移動(dòng)端模塊;
該系統(tǒng)還包括接收所述pc端模塊傳送的數(shù)據(jù)信息進(jìn)行信息保存和實(shí)時(shí)更新、支持跨地域數(shù)據(jù)訪問(wèn)的服務(wù)器模塊,所述服務(wù)器模塊實(shí)時(shí)接收用戶的請(qǐng)求指令并進(jìn)行應(yīng)答。
在所述pc端模塊中首先交互式地在上面和側(cè)面兩個(gè)角度的視頻幀圖像中點(diǎn)取投擲物區(qū)域內(nèi)像素的像素值,并將該像素值與當(dāng)前幀圖像的所有像素值進(jìn)行比較,相似度高的部分即目標(biāo)投擲物的位置區(qū)域,然后根據(jù)數(shù)據(jù)采集單元傳送的投擲過(guò)程的視頻幀信息,利用opencv將上面和側(cè)面兩個(gè)角度視頻中每一幀圖像中的目標(biāo)投擲物提取出來(lái),顯示在特定窗口中,完成整個(gè)幀圖像序列中投擲物區(qū)域的過(guò)濾與識(shí)別過(guò)程;
在所述pc端模塊中首先交互式地點(diǎn)取投擲物區(qū)域內(nèi)像素的像素值,并將該像素值與當(dāng)前幀圖像的所有像素值進(jìn)行比較,相似度高的部分即目標(biāo)投擲物的位置區(qū)域,然后根據(jù)數(shù)據(jù)采集單元傳送的投擲過(guò)程的視頻幀信息,利用opencv將每一幀圖像中的目標(biāo)投擲物提取出來(lái),顯示在特定窗口中,完成整個(gè)幀圖像序列中投擲物區(qū)域的過(guò)濾與識(shí)別過(guò)程;
所述pc端模塊在特定窗口中顯示出處理之后的手榴彈的位置,并獲得該位置的坐標(biāo)數(shù)據(jù),將數(shù)據(jù)保存在一個(gè)定長(zhǎng)的數(shù)據(jù)鏈表中,從鏈表中獲取節(jié)點(diǎn)進(jìn)行手榴彈速度和加速度的計(jì)算,同時(shí)計(jì)算出投擲的高度、角度和距離信息;根據(jù)計(jì)算出的信息,利用opengl建模方法,在pc端構(gòu)建虛擬投擲場(chǎng)景,使得pc端操作員更加直觀地看到投擲過(guò)程;通過(guò)socket和httppost方法將計(jì)算出的數(shù)據(jù)分別傳送至移動(dòng)端模塊和服務(wù)器模塊。
所述移動(dòng)端模塊在處理數(shù)據(jù)信息時(shí),計(jì)算出投擲物的三維位置坐標(biāo),根據(jù)該三維坐標(biāo)利用opengl技術(shù)進(jìn)行投擲過(guò)程左右視覺(jué)vr場(chǎng)景的構(gòu)建與繪制。
所述服務(wù)器模塊利用mysql數(shù)據(jù)庫(kù)建立數(shù)據(jù)存儲(chǔ)表,將各個(gè)地域的各個(gè)pc端模塊的數(shù)據(jù)匯總收集和數(shù)據(jù)分析、支持pc端對(duì)數(shù)據(jù)的跨地域訪問(wèn)。
由于采用了上述技術(shù)方案,本發(fā)明提供的一種基于網(wǎng)絡(luò)一體化和雙目視覺(jué)技術(shù)的投擲物彈道軌跡測(cè)算系統(tǒng),該系統(tǒng)模擬真實(shí)投擲的訓(xùn)練和測(cè)試全過(guò)程,既實(shí)現(xiàn)了對(duì)戰(zhàn)士手榴彈投擲訓(xùn)練的數(shù)據(jù)采集,也考慮了對(duì)場(chǎng)地和人力資源的消耗,同時(shí)還引入了無(wú)線vr裝置以及“互聯(lián)網(wǎng)+”的思維。具有節(jié)約訓(xùn)練場(chǎng)地資源和人力物力資源的特點(diǎn),同時(shí)將虛擬現(xiàn)實(shí)相結(jié)合到軍事訓(xùn)練中,利用“互聯(lián)網(wǎng)+”思維,搭建中央數(shù)據(jù)庫(kù)服務(wù)器,實(shí)現(xiàn)了對(duì)受訓(xùn)人員的訓(xùn)練數(shù)據(jù)的綜合對(duì)比。
附圖說(shuō)明
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明系統(tǒng)的結(jié)構(gòu)示意圖;
圖2為本發(fā)明系統(tǒng)的工作流程圖;
圖3為本發(fā)明系統(tǒng)的流程圖;
圖4本發(fā)明系統(tǒng)的實(shí)施例的示意圖。
具體實(shí)施方式
為使本發(fā)明的技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚完整的描述:
如圖1-圖3所示的基于網(wǎng)絡(luò)一體化和雙目視覺(jué)技術(shù)的投擲物彈道軌跡測(cè)算系統(tǒng),具體包括:
數(shù)據(jù)采集模塊采用雙目攝像頭從其上面和側(cè)面兩個(gè)角度采集受訓(xùn)人員投擲過(guò)程中的圖像信息。采用數(shù)據(jù)采集模塊來(lái)采集受訓(xùn)人員在投擲過(guò)程的圖像信息可以采用兩個(gè)工業(yè)攝像頭、兩個(gè)攝像頭的支架、以及對(duì)應(yīng)的數(shù)據(jù)傳輸線和手榴彈攔截網(wǎng)對(duì)投擲人員的投擲過(guò)程進(jìn)行圖像采集。
pc端模塊接收所述數(shù)據(jù)采集模塊傳送的不同角度圖像數(shù)據(jù)信息對(duì)其進(jìn)行圖像分幀處理、獲取投擲過(guò)程中目標(biāo)物體在兩個(gè)空間角度的速度信息和位置信息,從而獲取其在三維空間的整體速度及位置信息。所述pc端模塊結(jié)合設(shè)置的氣象環(huán)境信息計(jì)算出投擲數(shù)據(jù)、構(gòu)建pc端虛擬的投擲場(chǎng)景和顯示計(jì)算結(jié)果并將數(shù)據(jù)輸出。
移動(dòng)端模塊根據(jù)pc端模塊實(shí)時(shí)傳送的數(shù)據(jù)信息,構(gòu)建模擬vr效果的雙目視覺(jué)下投擲軌跡場(chǎng)景信息進(jìn)行動(dòng)態(tài)場(chǎng)景顯示。
該系統(tǒng)還包括接收所述pc端模塊傳送的數(shù)據(jù)信息進(jìn)行信息保存和實(shí)時(shí)更新、支持跨地域數(shù)據(jù)訪問(wèn)的服務(wù)器模塊,所述服務(wù)器模塊實(shí)時(shí)接收用戶的請(qǐng)求指令并進(jìn)行應(yīng)答。
在所述pc端模塊中首先交互式地點(diǎn)取投擲物區(qū)域內(nèi)像素的像素值,并將該像素值與當(dāng)前幀圖像的所有像素值進(jìn)行比較,相似度高的部分即目標(biāo)投擲物的位置區(qū)域,然后根據(jù)數(shù)據(jù)采集單元傳送的投擲過(guò)程的視頻幀信息,利用opencv將每一幀圖像中的目標(biāo)投擲物提取出來(lái),顯示在特定窗口中,完成整個(gè)幀圖像序列中投擲物區(qū)域的過(guò)濾與識(shí)別過(guò)程;
所述pc端模塊在特定窗口中顯示出處理之后的手榴彈的位置,并獲得該位置的坐標(biāo)數(shù)據(jù),將數(shù)據(jù)保存在一個(gè)定長(zhǎng)的數(shù)據(jù)鏈表中,從鏈表中獲取節(jié)點(diǎn)進(jìn)行手榴彈速度和加速度的計(jì)算,同時(shí)計(jì)算出投擲的高度、角度和距離信息;根據(jù)計(jì)算出的信息,利用opengl建模方法,在pc端構(gòu)建虛擬投擲場(chǎng)景,使得pc端操作員更加直觀地看到投擲過(guò)程;通過(guò)socket和httppost方法將計(jì)算出的數(shù)據(jù)分別傳送至移動(dòng)端模塊和服務(wù)器模塊。
所述移動(dòng)端模塊在處理數(shù)據(jù)信息時(shí),計(jì)算出投擲物的三維位置坐標(biāo),根據(jù)該三維坐標(biāo)利用opengl技術(shù)進(jìn)行投擲過(guò)程左右視覺(jué)vr場(chǎng)景的構(gòu)建與繪制。使得受試者佩戴移動(dòng)端顯示設(shè)備之后,可以體驗(yàn)到真實(shí)的投擲過(guò)程,增強(qiáng)受試者的投擲體驗(yàn)。
所述服務(wù)器模塊利用mysql數(shù)據(jù)庫(kù)建立數(shù)據(jù)存儲(chǔ)表,將各個(gè)地域的各個(gè)pc端模塊的數(shù)據(jù)匯總收集和數(shù)據(jù)分析、支持pc端對(duì)數(shù)據(jù)的跨地域訪問(wèn)。
實(shí)施例:
進(jìn)一步的,如圖所示:所述pc端模塊的工作流程如下:
一、利用usb接口將攝像頭安插在計(jì)算機(jī)上,pc端模塊從兩個(gè)攝像頭中獲取實(shí)時(shí)的原始視頻幀數(shù)據(jù),保存在capture和capture_up兩個(gè)變量中,獲取相應(yīng)窗口的句柄,將原始圖像先顯示在對(duì)應(yīng)的兩個(gè)窗口中。
二、進(jìn)行視頻幀的處理工作,點(diǎn)擊selectcolor按鈕,在原始視頻幀的畫面上,利用鼠標(biāo)點(diǎn)擊目標(biāo)的顏色區(qū)域,程序會(huì)獲取該點(diǎn)的光標(biāo)位置getcursorpos(&point),保存在point中,并進(jìn)行坐標(biāo)轉(zhuǎn)換計(jì)算出該點(diǎn)在對(duì)話框上的相對(duì)位置,同時(shí)獲取該位置中圖像像素的rgb值,并將rgb顏色值轉(zhuǎn)化為hsv顏色空間的顏色值,目的是獲得更多的顏色信息(相對(duì)于rgb空間,hsv空間能夠非常直觀的表達(dá)色彩的明暗,色調(diào),以及鮮艷程度,方便進(jìn)行顏色之間的對(duì)比),使得下一步的顏色篩選更加準(zhǔn)確。建立一個(gè)和窗口像素尺寸等大的數(shù)組px[],遍歷該數(shù)組和窗口中的圖像像素,與之前獲取到的hsv值進(jìn)行比較,在誤差允許范圍內(nèi)進(jìn)行圖像的二值化處理,標(biāo)識(shí)出目標(biāo)位置,目標(biāo)位置的數(shù)組值設(shè)定為0(黑色),其余位置值為255(白色),這樣該數(shù)組的值就是處理后的圖像像素值。
三、進(jìn)行位置坐標(biāo)的保存。遍歷數(shù)組px[],當(dāng)某點(diǎn)的數(shù)組值為0時(shí),將該點(diǎn)的坐標(biāo)位置x和y累加至sumx和sumy中,并記錄個(gè)數(shù)為number,最終將這些點(diǎn)的位置平均值作為手榴彈的當(dāng)前坐標(biāo),即realnowx=sumx/number和realnowy=sumy/number,最后將當(dāng)前坐標(biāo)的值保存在已經(jīng)初始化的定長(zhǎng)鏈表training中,以便下一步的速度計(jì)算。
四、運(yùn)用鏈表中的數(shù)據(jù)進(jìn)行速度計(jì)算。此過(guò)程有兩種情況,情況一:當(dāng)手榴彈拋出的那一時(shí)刻,我們剛剛好記錄了那一瞬間的位置,則該位置為鏈表的最后節(jié)點(diǎn)存儲(chǔ)的位置信息,向前遍歷鏈表,逆向找出鄰近的幾個(gè)瞬間的位置數(shù)據(jù),用最后的這幾個(gè)節(jié)點(diǎn)數(shù)據(jù),加上同時(shí)記錄的瞬時(shí)時(shí)間,就可以通過(guò)數(shù)學(xué)模型計(jì)算出初速度和加速度信息,進(jìn)而計(jì)算出最終的高度、角度和距離。情況二:當(dāng)手榴彈拋出的那一時(shí)刻,沒(méi)有記錄下來(lái)瞬間的位置,則尋找時(shí)間上最鄰近的節(jié)點(diǎn),分別向前和向后遍歷鏈表,多找出幾個(gè)瞬間的位置數(shù)據(jù),用數(shù)量彌補(bǔ)精確度,加上同時(shí)記錄的瞬時(shí)時(shí)間,就可以通過(guò)數(shù)學(xué)模型計(jì)算出初速度和加速度信息,進(jìn)而計(jì)算出最終的高度、角度和距離。
五、根據(jù)計(jì)算得出的位置信息繪制pc端的虛擬場(chǎng)景。每次計(jì)算出初速度和加速度信息后,就可以計(jì)算出在相應(yīng)時(shí)刻的距離、高度數(shù)據(jù),根據(jù)這些數(shù)據(jù),虛擬場(chǎng)景中的手榴彈物體就可以隨著時(shí)間做出拋體運(yùn)動(dòng)。
六、將計(jì)算結(jié)果發(fā)送給服務(wù)器端。每次pc端計(jì)算出投擲數(shù)據(jù)后,就和服務(wù)器端通過(guò)post方法進(jìn)行數(shù)據(jù)的交互,數(shù)據(jù)內(nèi)容為:用戶名,請(qǐng)求id,投擲的距離,投擲的高度,投擲的角度和投擲日期。數(shù)據(jù)形式為json數(shù)據(jù)格式。
七、將投擲數(shù)據(jù)發(fā)送給移動(dòng)端。每次pc端計(jì)算出投擲數(shù)據(jù)后,就和移動(dòng)端建立socket連接,將x,y,z三個(gè)空間方向的初速度,加速度和初始位置信息發(fā)送給移動(dòng)端,以便移動(dòng)端進(jìn)行vr效果的實(shí)現(xiàn)。
移動(dòng)端模塊具體工作流程如下:
一、移動(dòng)端首先利用layout配置文件將手機(jī)屏幕分割為左右兩個(gè)區(qū)域,實(shí)現(xiàn)屏幕分割。在兩個(gè)區(qū)域中模擬左右眼睛的視圖,以此達(dá)到vr的真實(shí)效果。
二、移動(dòng)端啟動(dòng)新線程與pc端建立socket后,開始等待pc端發(fā)來(lái)的數(shù)據(jù),當(dāng)pc端完成一次拋擲后,移動(dòng)端會(huì)收到pc端依次發(fā)來(lái)的加速度的數(shù)組,初速度的數(shù)組,初位置的數(shù)組,每個(gè)數(shù)組包括三個(gè)變量,分別存儲(chǔ)x,y,z三個(gè)維度上的加速度,初速度,初位置。之后,移動(dòng)端將通過(guò)ball對(duì)象把這三個(gè)數(shù)組的值存儲(chǔ),并提供給leftrender與rightrender,這兩個(gè)為myrender類的對(duì)象,該類實(shí)現(xiàn)了opengl的glsurfaceview中繪制圖形所需要的方法,可以用來(lái)繪制屏幕,即leftrender與rightrender實(shí)現(xiàn)了左右屏幕的控制。leftrender與rightrender收到ball后,根據(jù)ball對(duì)象中初始位置重繪屏幕,并根據(jù)公式x+=vx*t+0.5*ax*t*t。實(shí)時(shí)計(jì)算ball對(duì)象的位置,不斷重繪屏幕,直至z維度上的值為0,此時(shí)球已落地,繪制結(jié)束。等待下一次投擲數(shù)據(jù)的傳送。
服務(wù)器模塊具體工作如下:
一、服務(wù)器模塊利用python的django框架搭建,采用mysql數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的存儲(chǔ)。啟動(dòng)服務(wù)器,等待pc端請(qǐng)求,收到pc端請(qǐng)求后對(duì)pc端請(qǐng)求合法性進(jìn)行確認(rèn),進(jìn)而采取下一步動(dòng)作。pc端有四種請(qǐng)求方式,對(duì)應(yīng)四個(gè)請(qǐng)求id,分別為:用戶登錄,用戶注冊(cè),獲取成績(jī)和插入用戶成績(jī)。服務(wù)器根據(jù)不同的請(qǐng)求做出不同的響應(yīng)。
二、當(dāng)請(qǐng)求為用戶登錄時(shí)。服務(wù)器獲取請(qǐng)求數(shù)據(jù)中的用戶名和密碼,從數(shù)據(jù)庫(kù)中獲取相關(guān)數(shù)據(jù)進(jìn)行對(duì)比,檢測(cè)該用戶是否存在,如果存在則返回用戶的基本信息,如:性別,身高,軍區(qū)等。如果不存在,則返回請(qǐng)求失敗,并附上失敗原因,如:密碼錯(cuò)誤,用戶名不存在等。
三、當(dāng)請(qǐng)求為用戶注冊(cè)時(shí)。服務(wù)器獲取請(qǐng)求數(shù)據(jù)中的用戶名,查詢相關(guān)數(shù)據(jù)庫(kù),檢測(cè)是否有重名,如果重名返回錯(cuò)誤信息,如果不重名,則把數(shù)據(jù)中的用戶基本信息保存在數(shù)據(jù)庫(kù)中,并返回注冊(cè)成功。
四、當(dāng)請(qǐng)求為獲取成績(jī)時(shí)。服務(wù)器獲取請(qǐng)求數(shù)據(jù)中的用戶名,查詢相關(guān)數(shù)據(jù)庫(kù),并按照時(shí)間順序返回該用戶的投擲數(shù)據(jù)(此處無(wú)需判斷該用戶是否存在,因?yàn)橹挥姓5顷懞?,才能進(jìn)行成績(jī)的獲取)。
五、當(dāng)請(qǐng)求為插入用戶成績(jī)時(shí)。服務(wù)器獲取請(qǐng)求數(shù)據(jù)中的用戶名,找到相關(guān)數(shù)據(jù)庫(kù),按照投擲距離,投擲角度,投擲高度和投擲日期插入至數(shù)據(jù)庫(kù)中,返回插入成功。
六、等待用戶請(qǐng)求
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),根據(jù)本發(fā)明的技術(shù)方案及其發(fā)明構(gòu)思加以等同替換或改變,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。