專利名稱:基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬現(xiàn)實(shí)、增強(qiáng)現(xiàn)實(shí)和計(jì)算機(jī)圖形學(xué)領(lǐng)域,具體地說是一種基于真實(shí) 球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法。
背景技術(shù):
增強(qiáng)現(xiàn)實(shí)(Augmented Reality,簡(jiǎn)稱AR)是虛擬現(xiàn)實(shí)的進(jìn)一步拓展,它借助必 要的設(shè)備使計(jì)算機(jī)生成的虛擬對(duì)象(Virtual Object,簡(jiǎn)稱V0)與客觀存在的真實(shí)環(huán)境 (RealEnvironment,簡(jiǎn)稱RE)共存于同一個(gè)增強(qiáng)現(xiàn)實(shí)系統(tǒng)中,從感官和體驗(yàn)效果上給用戶 呈現(xiàn)出虛擬對(duì)象與真實(shí)環(huán)境融為一體的增強(qiáng)現(xiàn)實(shí)環(huán)境,增強(qiáng)現(xiàn)實(shí)具有虛實(shí)結(jié)合、實(shí)時(shí)交互、 三維注冊(cè)的基本特點(diǎn)。協(xié)同式增強(qiáng)現(xiàn)實(shí)(Collaborative Augmented Reality,簡(jiǎn)稱CAR)技術(shù)是增強(qiáng)現(xiàn)實(shí) 技術(shù)和網(wǎng)絡(luò)技術(shù)的結(jié)合,是增強(qiáng)現(xiàn)實(shí)技術(shù)的重要組成部分,它可以使多個(gè)用戶同時(shí)感受到 虛擬對(duì)象與真實(shí)環(huán)境融為一體的增強(qiáng)現(xiàn)實(shí)場(chǎng)景,并能夠在網(wǎng)絡(luò)通信平臺(tái)上進(jìn)行各種交互操 作和協(xié)同工作,共同完成預(yù)定任務(wù)。隨著增強(qiáng)現(xiàn)實(shí)技術(shù)和網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,構(gòu)建協(xié)同式 增強(qiáng)現(xiàn)實(shí)應(yīng)用系統(tǒng)成為可能,為產(chǎn)品設(shè)計(jì)與制造、醫(yī)療模擬與分析、軍事訓(xùn)練與演習(xí)、異地 協(xié)同教育和體育比賽等領(lǐng)域提供了新思路,在工業(yè)、醫(yī)療、教育、軍事、體育和娛樂等領(lǐng)域具 有廣泛的應(yīng)用前景。所以,目前有很多基于增強(qiáng)現(xiàn)實(shí)技術(shù)和網(wǎng)絡(luò)技術(shù)的應(yīng)用,構(gòu)建該類應(yīng)用 不僅要解決標(biāo)志物檢測(cè)、一致三維注冊(cè)等問題,還要解決數(shù)據(jù)傳輸和狀態(tài)轉(zhuǎn)換等問題,保證 協(xié)同工作的多用戶具有一致的感官體驗(yàn)并能夠協(xié)同完成預(yù)定任務(wù)。目前,有一些增強(qiáng)現(xiàn)實(shí)應(yīng)用是需要多用戶在同一真實(shí)環(huán)境進(jìn)行交互并完成預(yù) 定任務(wù)的。2005年,韓國(guó)GIST U-VR實(shí)驗(yàn)室的研究者設(shè)計(jì)了一個(gè)協(xié)同式增強(qiáng)現(xiàn)實(shí)臺(tái)球 (Collaborative biIliARds)應(yīng)用系統(tǒng),兩個(gè)用戶使用頭盔顯示器,圍繞真實(shí)球桌使用真實(shí) 球桿擊打虛擬臺(tái)球,并可以自行設(shè)置虛擬障礙物體,實(shí)現(xiàn)了虛擬球同真實(shí)球桿、真實(shí)球桌和 虛擬物體的多次碰撞,并采用了力反饋裝置使得交互更加真實(shí)。2007年,瑞士ETH大學(xué)計(jì)算 機(jī)視覺實(shí)驗(yàn)室設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)具有觸覺反饋的增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng),該系統(tǒng)利用在真實(shí) 乒乓球桌貼的標(biāo)志物用于跟蹤注冊(cè),并利用跟蹤裝置定位真實(shí)球拍和真實(shí)球桌的相對(duì)位置 和方向,在該系統(tǒng)中,球拍和球都是計(jì)算機(jī)繪制的虛擬物體,球桌是真實(shí)的,雙方用戶站在 球桌對(duì)面協(xié)同打球。2007年,哥倫比亞大學(xué)的Ohan Oda等人設(shè)計(jì)了一個(gè)增強(qiáng)現(xiàn)實(shí)賽車游戲 系統(tǒng),該系統(tǒng)利用XNA游戲開發(fā)平臺(tái)對(duì)現(xiàn)有的賽車游戲系統(tǒng)進(jìn)行修改,通過跟蹤球桌上的 標(biāo)志物注冊(cè)虛擬物體,使得用戶能夠控制虛擬物體進(jìn)行賽車。但是,一方面這些應(yīng)用需要比 較復(fù)雜的跟蹤裝置和力反饋裝置,不便于系統(tǒng)的搭建和推廣,另一方面,這些應(yīng)用系統(tǒng)都將 雙方用戶限制在同一個(gè)真實(shí)環(huán)境中,限制了系統(tǒng)的使用范圍。因此,隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,出現(xiàn)了一些基于網(wǎng)絡(luò)的協(xié)同式增強(qiáng)現(xiàn)實(shí)應(yīng) 用。2004年,芬蘭VTT技術(shù)研究中心研究者利用協(xié)同式增強(qiáng)現(xiàn)實(shí)技術(shù)模擬了乒乓球運(yùn) 動(dòng),該系統(tǒng)能夠使得使用真實(shí)乒乓球拍的用戶面對(duì)攝像頭同通過網(wǎng)絡(luò)連接的異地用戶協(xié) 同打球,但是,該系統(tǒng)仍然需要在乒乓球拍上貼上人工標(biāo)志物。2007年,日本筑波大學(xué)的ShinyaMinatani等人構(gòu)建了一個(gè)遠(yuǎn)程面對(duì)面的桌面混合現(xiàn)實(shí)系統(tǒng)。該系統(tǒng)通過在一個(gè)可變 形三角網(wǎng)格平面上貼紋理來實(shí)時(shí)繪制對(duì)手的上半身和手臂,其中每一幀人的紋理和棋子位 置通過背景相減的方法獲得。該系統(tǒng)實(shí)現(xiàn)了基于網(wǎng)絡(luò)的混合現(xiàn)實(shí)黑白棋游戲,通過用戶數(shù) 據(jù)報(bào)協(xié)議傳輸紋理數(shù)據(jù)以及其它數(shù)據(jù),通過傳輸控制協(xié)議傳輸同步信號(hào),用于幀同步和處 理數(shù)據(jù)傳輸延時(shí)。但是,這些系統(tǒng)都需要在真實(shí)環(huán)境中放置人工標(biāo)志物以進(jìn)行注冊(cè)和定位, 破壞了場(chǎng)景的真實(shí)性和用戶的體驗(yàn)感。另外,2007年澳大利亞墨爾本大學(xué)的Floyd等人搭建了一個(gè)基于網(wǎng)絡(luò)的三方交互 式乒乓球游戲系統(tǒng)。在該系統(tǒng)中,每個(gè)用戶需要半個(gè)乒乓球桌,利用真實(shí)的乒乓球拍擊打真 實(shí)的乒乓球,乒乓球同對(duì)面的大屏幕進(jìn)行碰撞,而大屏幕上顯示的是其他兩個(gè)用戶的畫面, 通過藍(lán)牙耳機(jī)設(shè)備捕獲乒乓球的撞擊位置并進(jìn)行計(jì)分,最先將對(duì)方擊垮的用戶將獲得勝 利。在該系統(tǒng)中并沒有虛擬物體,不需要跟蹤注冊(cè)乒乓球拍,但是該系統(tǒng)并沒有真正達(dá)到多 用戶交互打球的功能,用戶只是自己在跟屏幕打球,而不是多個(gè)用戶協(xié)同控制同一個(gè)乒乓 球,這樣降低了游戲性和體驗(yàn)感。2008年中國(guó)深圳泰山在線科技有限公司發(fā)布了旋風(fēng)乒乓 球系統(tǒng),該系統(tǒng)利用三維動(dòng)作識(shí)別器識(shí)別人體各種運(yùn)動(dòng)信息,將人體的動(dòng)作特征反映在虛 擬場(chǎng)景中;利用該系統(tǒng),用戶可以通過互聯(lián)網(wǎng)平臺(tái)與遠(yuǎn)方親朋好友進(jìn)行聯(lián)機(jī)對(duì)戰(zhàn),也可選擇 各種不同等級(jí)的智能電腦進(jìn)行人機(jī)對(duì)抗。但是該系統(tǒng)中顯示給用戶的是一個(gè)完全虛擬的運(yùn) 動(dòng)環(huán)境,用戶看不到遠(yuǎn)方親朋好友的影像,體驗(yàn)不到同真實(shí)好友打球的感覺;該乒乓球系統(tǒng) 跟蹤的主要目標(biāo)為運(yùn)動(dòng)帽和手柄,并沒有跟蹤真實(shí)的乒乓球拍。
發(fā)明內(nèi)容
根據(jù)上述實(shí)際需求和關(guān)鍵問題,本發(fā)明的目的在于提出一種網(wǎng)絡(luò)環(huán)境下基于真 實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,該方法不需要采用特殊的跟蹤裝置跟蹤真 實(shí)的乒乓球球拍,也不需要在乒乓球拍上貼人工標(biāo)志物,而是利用顏色特征進(jìn)行真實(shí)乒乓 球球拍的檢測(cè)和跟蹤,設(shè)計(jì)實(shí)現(xiàn)虛擬場(chǎng)景與真實(shí)場(chǎng)景的虛實(shí)三維注冊(cè),將虛擬場(chǎng)景映射到 真實(shí)球拍、參與用戶、真實(shí)環(huán)境的視頻圖像空間坐標(biāo)系,根據(jù)真實(shí)球拍的運(yùn)動(dòng)信息,設(shè)計(jì)實(shí) 現(xiàn)虛擬乒乓球與真實(shí)球拍、虛擬球桌、虛擬球網(wǎng)等對(duì)象之間的碰撞檢測(cè),并確定和表現(xiàn)虛擬 乒乓球碰撞后的運(yùn)動(dòng)軌跡,然后給出有限狀態(tài)機(jī)和消息處理機(jī)制,控制乒乓球系統(tǒng)運(yùn)行過 程的各種狀態(tài)轉(zhuǎn)換,確保多個(gè)用戶具有相同的乒乓球運(yùn)動(dòng)體驗(yàn),最后將合成后的增強(qiáng)現(xiàn)實(shí) 視頻展現(xiàn)給用戶,用戶不僅能看到對(duì)方好友的真實(shí)影像,同時(shí)可以看到虛擬物體,并利用球 拍同虛擬物體進(jìn)行交互,實(shí)現(xiàn)了兩個(gè)用戶在網(wǎng)絡(luò)平臺(tái)上使用真實(shí)球拍協(xié)同擊打虛擬乒乓球 的任務(wù)。為完成發(fā)明目的,本發(fā)明采用的技術(shù)方案是構(gòu)建一個(gè)基于真實(shí)球拍的協(xié)同式增 強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)所需要的方法,主要包括視頻捕獲,捕獲本地的視頻數(shù)據(jù),用于真實(shí)乒乓 球拍的跟蹤注冊(cè)和發(fā)送給對(duì)方用戶顯示;乒乓球拍跟蹤注冊(cè),乒乓球拍注冊(cè)的主要目的是 將真實(shí)的乒乓球拍和虛擬的乒乓球桌及虛擬乒乓球同處于同一坐標(biāo)系下,在以虛擬乒乓球 桌中心為世界坐標(biāo)系原點(diǎn)的坐標(biāo)系下檢測(cè)虛擬乒乓球和真實(shí)乒乓球拍的交互;檢測(cè)虛擬乒 乓球和真實(shí)乒乓球拍、虛擬乒乓球桌、虛擬球網(wǎng)以及虛擬墻的碰撞,計(jì)算每一幀虛擬球的位 置和運(yùn)動(dòng)參數(shù);狀態(tài)控制機(jī)制,控制雙方用戶打球過程,對(duì)雙方用戶當(dāng)前所處狀態(tài)進(jìn)行抽象 和處理,保證雙方打球過程合理和一致;發(fā)送消息,需要發(fā)送的消息有連接建立消息,視頻
5數(shù)據(jù)消息,球拍位置消息,球的位置消息,球出界或觸網(wǎng)消息,發(fā)送這些消息用來完成雙方 通信并改變雙方所處狀態(tài);接收消息,該模塊負(fù)責(zé)將接收到消息放到消息堆棧中,待消息處 理模塊讀取和處理;消息處理,主要功能為設(shè)置本地虛擬乒乓球的位置,將接收到的視頻數(shù) 據(jù)傳給繪制模塊,并改變當(dāng)前狀態(tài);虛擬物體繪制,根據(jù)真實(shí)乒乓球桌和乒乓球的大小和顏 色繪制虛擬物體,用戶打球的位置離攝像頭的距離正好為球桌的長(zhǎng)度,使得用戶對(duì)著大屏 幕感覺同對(duì)面真實(shí)的朋友打球一樣;網(wǎng)絡(luò)傳輸,通過網(wǎng)絡(luò)連接多個(gè)用戶,并在該網(wǎng)絡(luò)平臺(tái)下 收發(fā)消息,保證用戶之間的通信正常;顯示增強(qiáng)現(xiàn)實(shí)視頻,將對(duì)方傳輸過來的壓縮視頻數(shù)據(jù) 進(jìn)行解壓,將己方的球拍用虛擬球拍的方式顯示在視頻中,同繪制的虛擬物體一起顯示。捕獲的視頻數(shù)據(jù)的作用主要有兩方面,一方面是為了跟蹤真實(shí)的乒乓球拍,另一 方面是為了通過網(wǎng)絡(luò)傳輸平臺(tái)給對(duì)方用戶并同虛擬物體進(jìn)行混合顯示。由于直接捕獲的視 頻數(shù)據(jù)較大,因此在數(shù)據(jù)傳輸時(shí)要首先壓縮視頻數(shù)據(jù),對(duì)方收到視頻數(shù)據(jù)后再進(jìn)行解壓。但 跟蹤真實(shí)的乒乓球拍時(shí)采用的是原始的視頻數(shù)據(jù)。在進(jìn)行視頻數(shù)據(jù)壓縮時(shí)需要考慮網(wǎng)絡(luò)狀 態(tài),根據(jù)不同的網(wǎng)絡(luò)狀態(tài)設(shè)置不同的壓縮比率,使得雙方用戶能夠通過網(wǎng)絡(luò)平臺(tái)流暢的收 發(fā)視頻數(shù)據(jù)并能夠顯示較好的視頻效果。通過顏色特征檢測(cè)每一幀視頻圖像中的真實(shí)乒乓球拍,并利用位置信息跟蹤真實(shí) 的乒乓球拍;利用的主要特征為顏色信息和位置信息,顏色信息是指乒乓球拍的一個(gè)表面 顏色是紅色,位置信息是指在用戶打球時(shí)離攝像頭的位置是基本固定的,因此球拍在視頻 圖像中出現(xiàn)的位置則是在某個(gè)較小區(qū)域內(nèi);設(shè)置顏色閾值提取出真實(shí)乒乓球拍的紅色區(qū) 域,利用位置信息在上一幀乒乓球拍出現(xiàn)的周圍搜索紅色區(qū)域,大大加快了搜索速度,減小 計(jì)算開銷。檢測(cè)到乒乓球拍的紅色區(qū)域后,計(jì)算該區(qū)域的質(zhì)心,利用質(zhì)心和紅色球拍的面積 近似計(jì)算出乒乓球拍的正方形包圍盒;利用該正方形包圍盒計(jì)算攝像機(jī)外參數(shù),根據(jù)外參 數(shù)和攝像機(jī)內(nèi)參數(shù)計(jì)算出投影矩陣,根據(jù)投影矩陣和球拍在圖像中的坐標(biāo)可以計(jì)算出球拍 在世界坐標(biāo)系下的坐標(biāo)。將真實(shí)的乒乓球拍和虛擬的乒乓球桌及虛擬乒乓球同處于同一坐 標(biāo)系下,在以虛擬乒乓球桌中心為世界坐標(biāo)系原點(diǎn)的坐標(biāo)系下檢測(cè)虛擬乒乓球和真實(shí)乒乓 球拍的交互。繪制的虛擬物體有5個(gè)己方虛擬乒乓球拍,虛擬乒乓球桌,虛擬乒乓球網(wǎng),虛擬 乒乓球和虛擬墻壁,所有虛擬物體都按照真實(shí)的物體大小進(jìn)行繪制。虛擬乒乓球桌的長(zhǎng) 2. 74米,寬1. 525米,離地面高0. 76米,臺(tái)面與水平面平行;虛擬乒乓球桌貼著真實(shí)乒乓球 桌的紋理。虛擬球網(wǎng)寬1.83米,網(wǎng)高0.1525米,繪制采用網(wǎng)格狀繪制。虛擬乒乓球直徑為 40毫米,顏色為橘黃色;繪制虛擬球的同時(shí)需要繪制虛擬球在桌面上的投影,使用戶對(duì)深 度的感知更加準(zhǔn)確。虛擬墻壁的作用是在人機(jī)對(duì)打時(shí)回?fù)籼摂M球的,寬度同虛擬乒乓球桌 的寬度,高度1米;繪制虛擬墻壁時(shí)設(shè)置其為透明。檢測(cè)虛擬乒乓球和真實(shí)乒乓球拍、虛擬乒乓球桌、虛擬球網(wǎng)以及虛擬墻的碰撞,當(dāng) 該幀中虛擬球的位置在平面區(qū)域上方,而下一幀中虛擬球的位置在平面區(qū)域下方,說明在 該幀到下一幀的過程中發(fā)生碰撞;碰撞后的運(yùn)動(dòng)軌跡計(jì)算利用鏡面反射原理并考慮重力加 速度的影響;虛擬乒乓球如果同虛擬球網(wǎng)碰撞,虛擬乒乓球直接落網(wǎng);虛擬乒乓球如果出 界則重新發(fā)球。狀態(tài)控制機(jī)制是控制乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換;乒乓球系統(tǒng)運(yùn)行過程 為打球雙方系統(tǒng)建立連接,甲方系統(tǒng)發(fā)送發(fā)球消息,乙方系統(tǒng)接收到甲方發(fā)球消息并設(shè)置虛擬球的位置信息,甲方系統(tǒng)計(jì)算虛擬乒乓球是否同虛擬球桌、虛擬球網(wǎng)發(fā)生碰撞,并計(jì)算 每一幀虛擬球的位置和運(yùn)動(dòng)參數(shù),當(dāng)虛擬乒乓球出界,則重新發(fā)球;系統(tǒng)中涉及的狀態(tài)包括 初始狀態(tài)(即建立連接狀態(tài)),等待狀態(tài),發(fā)球狀態(tài),循環(huán)狀態(tài),設(shè)置狀態(tài);每個(gè)狀態(tài)的轉(zhuǎn)換 根據(jù)本方狀態(tài)變換和對(duì)方發(fā)送的消息進(jìn)行改變;若本方狀態(tài)為初始狀態(tài)則發(fā)送初始化消 息,若收到回復(fù)消息則本方狀態(tài)轉(zhuǎn)換為等待狀態(tài);若本方狀態(tài)為等待狀態(tài),在本方用戶發(fā)出 發(fā)球動(dòng)作后轉(zhuǎn)換狀態(tài)為發(fā)球狀態(tài),若接收到對(duì)方發(fā)出的發(fā)球動(dòng)作消息則轉(zhuǎn)換狀態(tài)為設(shè)置狀 態(tài);若本方狀態(tài)為發(fā)球狀態(tài),發(fā)送發(fā)球消息給對(duì)方,己方狀態(tài)轉(zhuǎn)換為循環(huán)狀態(tài);若本方狀態(tài) 為設(shè)置狀態(tài),設(shè)置球的位置和運(yùn)動(dòng)信息,轉(zhuǎn)換狀態(tài)為循環(huán)狀態(tài)。采用多線程進(jìn)行數(shù)據(jù)收發(fā);創(chuàng)建兩個(gè)線程,一個(gè)線程發(fā)送消息,一個(gè)接收消息;每 接收到發(fā)送消息命令即發(fā)送消息;每接收到對(duì)方發(fā)送過來的消息即將消息放在消息堆棧 中,等待消息處理模塊處理消息。接收和發(fā)送采用單播模式,由于打球雙方是對(duì)等的,因此 采用服務(wù)器_服務(wù)器模式進(jìn)行連接。本發(fā)明與現(xiàn)有的技術(shù)相比,其有益的效果是1、本發(fā)明根據(jù)網(wǎng)絡(luò)通信平臺(tái)和增強(qiáng) 現(xiàn)實(shí)的特點(diǎn),給出了協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球應(yīng)用構(gòu)建的基本步驟和基本框架,利用該步驟 和框架可以將協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球應(yīng)用的各個(gè)部分模塊化,方便開發(fā)同類型的應(yīng)用系 統(tǒng),簡(jiǎn)化了應(yīng)用系統(tǒng)的開發(fā)過程,使得程序可重用性更高。2、本發(fā)明可跟蹤和注冊(cè)真實(shí)的乒 乓球拍,設(shè)置顏色閾值在每幀視頻圖像中搜索紅色乒乓球區(qū)域,利用乒乓球拍在圖像中可 能出現(xiàn)的區(qū)域位置信息縮小了初始乒乓球拍搜索區(qū)域,并利用上一幀乒乓球拍預(yù)測(cè)下一幀 乒乓球拍可能出現(xiàn)的區(qū)域,進(jìn)一步縮小了搜索區(qū)域,進(jìn)而使得計(jì)算開銷減小,節(jié)約了大量的 系統(tǒng)資源。3、本發(fā)明利用有限狀態(tài)自動(dòng)機(jī)控制乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換,將系 統(tǒng)運(yùn)行過程進(jìn)一步形式化,簡(jiǎn)化了系統(tǒng)運(yùn)行過程的管理,在保證系統(tǒng)運(yùn)行合理的同時(shí),方便 系統(tǒng)進(jìn)一步的優(yōu)化,同時(shí)方便了系統(tǒng)的進(jìn)一步擴(kuò)展,并提高了程序的可讀性和重用性。4、本 發(fā)明給出的真實(shí)物體和虛擬物體的混合方式每個(gè)用戶可以看到對(duì)方的真實(shí)場(chǎng)景及虛擬場(chǎng) 景,另外,將自己的球拍繪制在虛擬場(chǎng)景中,用戶以第一人稱視角打球,模擬用戶在真實(shí)世 界中打球的視角,使得用戶具有較好的沉浸感和體驗(yàn)感。5、本發(fā)明的消息接收、發(fā)送和處 理,采用多線程的方式接收和發(fā)送消息,將消息放在堆棧中等待處理,分離了接收和處理過 程,提高了系統(tǒng)的運(yùn)行效率,使得系統(tǒng)運(yùn)行更加流暢。
圖1是本發(fā)明系統(tǒng)總體架構(gòu)圖;圖2是本發(fā)明的系統(tǒng)示意圖;圖3是本發(fā)明的主流程圖;圖4是本發(fā)明球拍搜索窗口示意圖;圖5是本發(fā)明圖像坐標(biāo)系、攝像機(jī)坐標(biāo)系與世界坐標(biāo)系關(guān)系圖;圖6是本發(fā)明判斷碰撞點(diǎn)是否在邊界內(nèi)示意圖;圖7是本發(fā)明有限狀態(tài)機(jī)狀態(tài)圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作詳細(xì)說明。
參閱圖1本發(fā)明的系統(tǒng)總體架構(gòu)圖,本發(fā)明的總體架構(gòu)主要包括9個(gè)部分(1)視 頻捕獲,捕獲本地的視頻數(shù)據(jù),用于真實(shí)乒乓球拍的跟蹤注冊(cè)和發(fā)送給對(duì)方用戶顯示;(2) 球拍跟蹤注冊(cè),球拍是該系統(tǒng)人機(jī)交互的唯一工具,因此球拍的跟蹤注冊(cè)精確性很重要。球 拍注冊(cè)的主要目的是將真實(shí)的球拍和虛擬的球桌及虛擬球同處于同一坐標(biāo)系下,在以虛擬 球桌中心為世界坐標(biāo)系原點(diǎn)的坐標(biāo)系下檢測(cè)虛擬球和球拍交互;(3)虛擬乒乓球碰撞檢測(cè) 和軌跡計(jì)算,檢測(cè)虛擬乒乓球和真實(shí)乒乓球拍、虛擬乒乓球桌、虛擬球網(wǎng)以及虛擬墻的碰 撞,計(jì)算每一幀虛擬球的位置和運(yùn)動(dòng)參數(shù);(4)狀態(tài)控制器,控制雙方用戶打球過程,對(duì)雙 方用戶當(dāng)前所處狀態(tài)進(jìn)行抽象和處理,保證雙方打球過程合理和一致;(5)發(fā)送消息,需要 發(fā)送的消息有連接建立消息,視頻數(shù)據(jù)消息,球拍位置消息,球的位置消息,球出界或觸網(wǎng) 消息,發(fā)送這些消息用來完成雙方通信并改變雙方所處狀態(tài);(6)接收消息,該模塊負(fù)責(zé)將 接收到消息放到消息堆棧中,待消息處理模塊讀取和處理;(7)消息處理模塊,主要功能為 設(shè)置本地虛擬乒乓球的位置,將接收到的視頻數(shù)據(jù)傳給繪制模塊,并改變當(dāng)前狀態(tài);(8)虛 擬物體繪制,根據(jù)真實(shí)乒乓球桌和乒乓球的大小和顏色繪制虛擬物體,用戶打球的位置離 攝像頭的距離正好為球桌的長(zhǎng)度,對(duì)著大屏幕感覺同對(duì)面真實(shí)的朋友打球一樣;(9)顯示 增強(qiáng)現(xiàn)實(shí)視頻,將對(duì)方傳輸過來的壓縮視頻數(shù)據(jù)進(jìn)行解壓,將己方的球拍用虛擬球拍的方 式顯示在視頻中,同繪制的虛擬物體一起顯示。參閱圖2本發(fā)明的系統(tǒng)示意圖,本發(fā)明的硬件配置包括每個(gè)用戶需要一臺(tái)連接 計(jì)算機(jī)的攝像機(jī)、一個(gè)顯示器、一臺(tái)連接網(wǎng)絡(luò)平臺(tái)的計(jì)算機(jī)和一個(gè)真實(shí)的乒乓球拍。其中一 臺(tái)攝像機(jī)用來捕獲用戶視頻圖像以傳輸給對(duì)方顯示和捕獲乒乓球拍的運(yùn)動(dòng);一個(gè)較大的顯 示器用來顯示合成后的增強(qiáng)現(xiàn)實(shí)視頻;一臺(tái)連接網(wǎng)絡(luò)平臺(tái)的計(jì)算機(jī)提供計(jì)算資源和網(wǎng)絡(luò)通 信平臺(tái),連接打球雙方用戶;一個(gè)真實(shí)的乒乓球拍提供人機(jī)交互的工具,由于球拍的跟蹤和 顯示是利用紅色顏色特征進(jìn)行檢測(cè)的,用戶需要將紅色拍面對(duì)著攝像機(jī);虛擬物體包括經(jīng) 過注冊(cè)后的球拍、虛擬乒乓球、虛擬乒乓球桌、虛擬球網(wǎng)。參閱圖3本發(fā)明的主流程圖,本發(fā)明基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng) 首先利用攝像機(jī)捕獲視頻數(shù)據(jù),然后跟蹤注冊(cè)真實(shí)的乒乓球拍,利用狀態(tài)控制器控制乒乓 球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換,在狀態(tài)轉(zhuǎn)換的過程中要利用到消息發(fā)送、接收和處理模 塊,同時(shí)要處理虛擬乒乓球和球拍、球桌、球網(wǎng)等平面之間的碰撞,計(jì)算虛擬乒乓球的運(yùn)動(dòng) 軌跡,然后根據(jù)以上得到的對(duì)方視頻數(shù)據(jù)、球拍位置、虛擬乒乓球位置等信息繪制增強(qiáng)現(xiàn)實(shí) 視頻,這樣用戶就看到了經(jīng)過增強(qiáng)的乒乓球系統(tǒng),雙方用戶協(xié)同完成擊打乒乓球任務(wù)。首先利用一種基于顏色的無標(biāo)志物跟蹤注冊(cè)方法跟蹤和注冊(cè)真實(shí)的乒乓球拍。在 該基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)中,乒乓球、球桌和球網(wǎng)都是虛擬的,人機(jī)交 互的工具就是真實(shí)的乒乓球拍,為了實(shí)現(xiàn)人和乒乓球的交互,就需要跟蹤和注冊(cè)真實(shí)的乒 乓球拍,將虛擬物體和乒乓球拍映射到同一坐標(biāo)系下。跟蹤乒乓球拍利用乒乓球拍的紅色 顏色特征和乒乓球拍在視頻圖像中出現(xiàn)的位置信息。參閱圖4本發(fā)明球拍搜索窗口示意 圖,首先定義初始搜索窗口,如圖4左圖中虛線框包圍區(qū)域,在該區(qū)域中搜索紅色區(qū)域,采 用的方法為檢測(cè)每個(gè)像素點(diǎn)的RGB值,如果紅色通道的值R在三通道(R:紅色通道,G 綠色 通道,B:藍(lán)色通道)中所占比值大于閾值λ則該像素為紅色,S卩如果R/R + G + B > λ
則標(biāo)記該像素點(diǎn)為紅色區(qū)域;然后對(duì)紅色檢測(cè)后的圖像進(jìn)行區(qū)域內(nèi)的中值濾波 (中值濾波是將每一象素點(diǎn)的灰度值設(shè)置為該點(diǎn)鄰域窗口內(nèi)的所有象素點(diǎn)灰度值的中值, 用以消除孤立的噪聲點(diǎn)。),去掉一些不連續(xù)的紅色像素點(diǎn),剩下部分為紅色球拍區(qū)域;然后 統(tǒng)計(jì)紅色區(qū)域的像素點(diǎn)個(gè)數(shù)作為真實(shí)乒乓球拍的面積,計(jì)算乒乓球拍的質(zhì)心,質(zhì)心計(jì)算方 法為 質(zhì)心的縱坐標(biāo)為 其中Sx為所有紅色像素點(diǎn)的橫坐標(biāo)的和,Sy為所有紅色像素點(diǎn)的縱坐標(biāo)的和,IP 為所有紅色像素點(diǎn)的個(gè)數(shù)。根據(jù)質(zhì)心和紅色區(qū)域的面積,將跟蹤到的紅色區(qū)域近似為-
正方形,可以得到正方形的邊長(zhǎng)
,根據(jù)質(zhì)心和邊長(zhǎng)就可以計(jì)算正方形的各個(gè)頂點(diǎn)。這
樣就得到了初始視頻圖像中用于注冊(cè)的正方形。然后在計(jì)算后續(xù)視頻圖像中真實(shí)乒乓球拍的正方形包圍盒的時(shí)候,利用上一幀得 到的乒乓球拍的正方形包圍盒的位置,根據(jù)球拍連續(xù)運(yùn)動(dòng)的原則,在上一幀得到的乒乓球 拍的正方形包圍盒周圍進(jìn)行紅色區(qū)域的搜索,如圖4右圖中虛線框包圍區(qū)域所示,該區(qū)域 為根據(jù)上一幀得到的乒乓球拍的正方形包圍盒生成的搜索區(qū)域;不斷執(zhí)行該方法即可得到 每一幀視頻圖像中用于注冊(cè)的真實(shí)乒乓球拍的正方形包圍盒區(qū)域。參閱圖5本發(fā)明圖像坐標(biāo)系、攝像機(jī)坐標(biāo)系與世界坐標(biāo)系關(guān)系圖,利用乒乓球拍 進(jìn)行注冊(cè)也就是從圖像坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換過程,由圖5及透視原理可知圖像坐標(biāo) 系和世界坐標(biāo)系的關(guān)系可用以下公式表示,首先是從圖像坐標(biāo)系到攝像機(jī)坐標(biāo)系的轉(zhuǎn)換公 式, 其中,xc, y。為圖像坐標(biāo)系下的坐標(biāo),h為圖像坐標(biāo)系數(shù),根據(jù)圖像大小由用戶指
定,Xc, Yc, Zc為攝像機(jī)坐標(biāo)系下的坐標(biāo),=Lay=與,f為攝像機(jī)焦距,
為攝像機(jī)
圖像平面中心位置坐標(biāo)諷完全由ax,ay,U(1,V(1決定,由于ax,a y,uQ,Vtl只與攝像機(jī)內(nèi)部 結(jié)構(gòu)有關(guān),因此M1被稱為攝像機(jī)內(nèi)部參數(shù),簡(jiǎn)稱內(nèi)參數(shù)。其次是從攝像機(jī)坐標(biāo)系到世界坐 標(biāo)系的轉(zhuǎn)換公式 其中,Xc, Yc, Ζ。為攝像機(jī)坐標(biāo)系下的坐標(biāo),Xff, Yff, Zw為世界坐標(biāo)系下的坐標(biāo), , ζ, G為旋轉(zhuǎn)向量R,表示由攝像機(jī)坐標(biāo)系到世界坐標(biāo)系需要如何旋轉(zhuǎn),/為平移向量,表示由攝像機(jī)坐標(biāo)系到世界坐標(biāo)系需要如何平移,由于M2完全由攝像機(jī)相對(duì)于世界坐標(biāo)系 的方位決定,稱為攝像機(jī)的外部參數(shù),簡(jiǎn)稱外參數(shù);通過跟蹤到的球拍正方形包圍盒計(jì)算出 外參數(shù)即可將虛擬物體注冊(cè)到乒乓球拍所在的世界坐標(biāo)系下。獲得了真實(shí)乒乓球拍的正方形包圍盒之后,可以找到正方形的兩對(duì)平行邊,在攝
a,x + b,y + c·, =0
像機(jī)坐標(biāo)系下可以表示這兩條邊
然后利用攝像機(jī)標(biāo)定獲得的內(nèi)參數(shù)M1,
將邊的表示公式代入到上述從圖像坐標(biāo)系到攝像機(jī)坐標(biāo)系的轉(zhuǎn)換公式,可以得到兩個(gè)平面 公式 這兩個(gè)平面的兩個(gè)方向向量 和G應(yīng)該是垂直的,但是由于通過圖像得到的真實(shí) 乒乓球拍包圍盒可能不是正方形,因此需要對(duì)這兩個(gè)方向向量進(jìn)行補(bǔ)償,補(bǔ)償方法就是分 別在 和G的兩側(cè)分別擴(kuò)展一定的角度生成垂直的兩個(gè)向量^和€,然后給出一個(gè)向量G垂
直于g和ζ生成的平面,這樣就獲得了外參數(shù)矩陣中的旋轉(zhuǎn)矩陣[ ,ζ]。在給定旋轉(zhuǎn)矩陣
之后,將正方形的四個(gè)頂點(diǎn)在攝像機(jī)坐標(biāo)系下的坐標(biāo)和在世界坐標(biāo)系下的坐標(biāo),代入到上 述從攝像機(jī)坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換公式中去,求解方程就可以獲得平移矩陣/,這樣外 參數(shù)矩陣禮就得到了 ;通過內(nèi)參數(shù)矩陣和外參數(shù)矩陣就將虛擬物體和真實(shí)世界的物體統(tǒng)一 到同一個(gè)坐標(biāo)系下。在完成上述真實(shí)乒乓球拍的注冊(cè)之后,真實(shí)乒乓球拍、虛擬球桌和虛擬乒乓球都 處于同一坐標(biāo)系下,由于在該系統(tǒng)中唯一不動(dòng)的物體為虛擬球桌,因此我們選取虛擬球桌 中心為世界坐標(biāo)系原點(diǎn)。在該坐標(biāo)系下,系統(tǒng)捕獲球拍的運(yùn)動(dòng),檢測(cè)虛擬球和真實(shí)球拍、虛 擬球桌、虛擬球網(wǎng)的碰撞。在碰撞過程中需要考慮的問題主要有(1)虛擬球是否和各平面 發(fā)生碰撞;(2)發(fā)生碰撞點(diǎn)是否在平面邊界內(nèi);(3)根據(jù)是否碰撞完成打球過程的計(jì)分。首先通過計(jì)算虛擬球和各平面的相對(duì)位置關(guān)系完成碰撞檢測(cè),如果當(dāng)前幀虛擬球 位置在平面上方,而下一幀虛擬球位置在平面下方,則在該幀內(nèi)發(fā)生碰撞;然后根據(jù)碰撞原 理計(jì)算球的運(yùn)行軌跡,球的運(yùn)行軌跡計(jì)算借鑒鏡面反射的原理,同時(shí)加入了重力加速度的 影響,如公式所示 給出了球在碰撞前后的運(yùn)動(dòng)變化,其中,g為重力加速度,Vplam為平面速度,當(dāng)碰撞 平面為虛擬球桌時(shí),該值為0。如公式所示 給出了球在非碰撞時(shí)的運(yùn)動(dòng)變化。另外虛擬球如果和虛擬球網(wǎng)碰撞則直接掉在網(wǎng) 下,重新開球。除了需要檢測(cè)虛擬球是否和平面發(fā)生碰撞,還需要檢測(cè)發(fā)生碰撞的點(diǎn)是否在平面 邊界內(nèi);判斷方法為將矩形平面分解為兩個(gè)三角形,判斷碰撞點(diǎn)位置是否在三角形區(qū)域內(nèi)。 如圖6本發(fā)明判斷碰撞點(diǎn)是否在三角形區(qū)域內(nèi)示意圖和如下公式所示
/碰撞點(diǎn)在三角形內(nèi) cosαλ + cosa2 + coscz3 > -1 《碰撞點(diǎn)在三角形夕卜為了使得交互過程更加真實(shí),本發(fā)明加入了計(jì)分系統(tǒng),通過判斷球的觸網(wǎng)情況和 出界情況自動(dòng)對(duì)打球過程進(jìn)行計(jì)分。然后設(shè)計(jì)了合理的狀態(tài)控制機(jī)制控制乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換,實(shí)現(xiàn) 打球的整個(gè)過程,并且保證雙方具有一致的打球體驗(yàn)。為了準(zhǔn)確清晰地描述狀態(tài)轉(zhuǎn)換過程, 利用有限狀態(tài)機(jī)進(jìn)行描述乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換;在狀態(tài)轉(zhuǎn)換過程中,程序 首先對(duì)事件進(jìn)行響應(yīng),本系統(tǒng)中的事件有接收消息、發(fā)球、球出界等;程序在事件間的狀 態(tài)有初始狀態(tài)、等待狀態(tài)、發(fā)球狀態(tài)、循環(huán)狀態(tài)、設(shè)置狀態(tài)等;然后在事件和狀態(tài)間進(jìn)行轉(zhuǎn) 移;并在轉(zhuǎn)移過程中采取動(dòng)作;參閱圖7本發(fā)明有限狀態(tài)機(jī)狀態(tài)圖,本發(fā)明的狀態(tài)轉(zhuǎn)換在5 個(gè)狀態(tài)之間轉(zhuǎn)換,其轉(zhuǎn)換過程和動(dòng)作描述如下1)初始狀態(tài),在程序剛開始運(yùn)行時(shí),使雙發(fā)建立連接。在此狀態(tài)發(fā)送初始化消息, 等待對(duì)方回復(fù),若收到回復(fù)消息,則連接建立并轉(zhuǎn)移到等待狀態(tài),否則繼續(xù)等待回復(fù)消息;2)等待狀態(tài),該狀態(tài)不處理事件,等待己方用戶發(fā)球或?qū)Ψ接脩舭l(fā)球,若己方用戶 發(fā)球則轉(zhuǎn)移到發(fā)球狀態(tài),若接收到對(duì)方發(fā)球消息,則轉(zhuǎn)移到設(shè)置狀態(tài);3)發(fā)球狀態(tài),此狀態(tài)根據(jù)捕獲的球拍運(yùn)動(dòng)信息使得球拍同虛擬球發(fā)生碰撞,設(shè)置 球的運(yùn)動(dòng)狀態(tài),并發(fā)送發(fā)球消息給對(duì)方,己方狀態(tài)轉(zhuǎn)變?yōu)檠h(huán)狀態(tài);4)循環(huán)狀態(tài),該狀態(tài)在每一幀判斷球和其他平面是否碰撞,發(fā)送球的位置和速度 信息給對(duì)方,己方狀態(tài)轉(zhuǎn)為等待狀態(tài);5)設(shè)置狀態(tài),該狀態(tài)是在收到球的位置和速度信息時(shí)設(shè)置球的位置及其速度,設(shè) 置完成后,己方狀態(tài)轉(zhuǎn)變?yōu)檠h(huán)狀態(tài);本發(fā)明采用多線程進(jìn)行數(shù)據(jù)收發(fā);創(chuàng)建兩個(gè)線程,一個(gè)線程發(fā)送消息,一個(gè)接收消 息;每接收到發(fā)送消息命令即發(fā)送消息;每接收到對(duì)方發(fā)送過來的消息即將消息放在消息 堆棧中,等待消息處理模塊處理消息。接收和發(fā)送采用單播模式,利用套接字進(jìn)行連接,由 于打球雙方是對(duì)等的,因此采用服務(wù)器_服務(wù)器模式進(jìn)行連接。視頻數(shù)據(jù)在傳輸之前需要 進(jìn)行壓縮,采用H. 264視頻壓縮協(xié)議進(jìn)行壓縮;壓縮率可以根據(jù)網(wǎng)絡(luò)情況由用戶自行調(diào)節(jié)。 為了使得雙方用戶通訊正常,本發(fā)明定義了消息的格式;消息的頭部共有24個(gè)字節(jié),分別 包括以下幾個(gè)部分DmsgId,整型,4字節(jié),表示消息的類型。2)SourCeIP,雙字節(jié)類型,4字節(jié),表示發(fā)送消息的地址IP地址。3) desIP,雙字節(jié)類型,4字節(jié),表示接收消息的地址IP地址。4) size,無符號(hào)整型,4字節(jié),若一個(gè)消息數(shù)據(jù)被分為多個(gè)包,表示多個(gè)包的數(shù)據(jù)總 的大小,即消息數(shù)據(jù)的大??;若只有一個(gè)包,表示該消息數(shù)據(jù)的大小,也是該包的數(shù)據(jù)大小。5) length,無符號(hào)整型,4字節(jié),若一小消息數(shù)據(jù)被分為多個(gè)包,表示分成的那個(gè)包 的大小;若只有一個(gè)包,則表示該包的數(shù)據(jù)的大小。6) number,整型,4字節(jié),若某個(gè)消息被分為多個(gè)包,number表示第幾個(gè)包。7)data,字節(jié)指針,指向消息中的數(shù)據(jù)部分,大小為length大小。下表給出每種類型的消息的描述和收到該類型消息時(shí)執(zhí)行的動(dòng)作 然后繪制虛擬物體,繪制的虛擬物體有5個(gè)己方虛擬乒乓球拍,虛擬乒乓球桌, 虛擬乒乓球網(wǎng),虛擬乒乓球和虛擬墻壁,所有虛擬物體都按照真實(shí)的物體大小進(jìn)行繪制。根 據(jù)跟蹤注冊(cè)的己方真實(shí)球拍在世界坐標(biāo)系下的位置和方向,設(shè)置己方虛擬球拍在視頻中的 位置和方向,并根據(jù)真實(shí)球拍的大小和顏色繪制;虛擬乒乓球桌的長(zhǎng)2. 74米,寬1.525米, 離地面高0. 76米,臺(tái)面與水平面平行,繪制虛擬球桌主要考慮紋理信息,繪制的過程為首 先創(chuàng)建紋理并進(jìn)行紋理綁定,然后進(jìn)行紋理過濾,將圖像從紋理圖像空間映射到幀緩沖圖 像空間,在繪制時(shí)設(shè)置光照模型中的環(huán)境光和漫射光,打開紋理效果;虛擬乒乓球桌貼著真 實(shí)乒乓球桌的紋理。虛擬球網(wǎng)寬1.83米,網(wǎng)高0.1525米,繪制采用網(wǎng)格狀繪制。虛擬乒乓 球直徑為40毫米,顏色為橘黃色,繪制虛擬球的同時(shí)需要繪制虛擬球在桌面上的投影,使 用戶對(duì)深度的感知更加準(zhǔn)確。虛擬墻壁的作用是在人機(jī)對(duì)打時(shí)回?fù)籼摂M球的,寬度同虛擬 乒乓球桌的寬度,高度1米;繪制虛擬墻壁時(shí)設(shè)置其為透明。最后進(jìn)行場(chǎng)景的布置,并進(jìn)行打球,每個(gè)用戶需要在顯示器上部架設(shè)一臺(tái)攝像機(jī), 用戶拿著真實(shí)的球拍面對(duì)顯示器,距離顯示器的距離為乒乓球桌的長(zhǎng)度,在虛擬球桌邊緣 設(shè)置一條標(biāo)志線用來提示用戶虛擬球桌的位置和高度。本發(fā)明具有人機(jī)對(duì)打功能,該功能設(shè)計(jì)目的是在兩個(gè)用戶連接成功后,如果對(duì)方 用戶還未準(zhǔn)備好打球或者己方用戶練習(xí)打球時(shí)可采用這種方式。用戶拿著真實(shí)的乒乓球拍 面對(duì)顯示器和攝像機(jī),同視頻中虛擬墻打球。利用該功能,用戶可以適應(yīng)和熟悉該系統(tǒng),為 雙人協(xié)同打球做準(zhǔn)備。本發(fā)明具有雙人聯(lián)網(wǎng)對(duì)打功能,該功能中雙方用戶通過網(wǎng)絡(luò)連接,共享同一個(gè)增 強(qiáng)現(xiàn)實(shí)場(chǎng)景,在該場(chǎng)景中雙方用戶協(xié)同擊打乒乓球。通過該系統(tǒng)的乒乓球拍跟蹤和注冊(cè)方 法,能夠較精確的跟蹤每一幀乒乓球拍的運(yùn)動(dòng),支持用戶較快速的揮拍;在繪制虛擬物體時(shí) 加上陰影效果,使得用戶對(duì)深度的感知更加真實(shí)和準(zhǔn)確;在球和平面碰撞時(shí)添加了聲音效 果,增強(qiáng)了用戶體驗(yàn)感;利用H. 263視頻壓縮協(xié)議進(jìn)行視頻數(shù)據(jù)的壓縮和解壓,并利用多線 程收發(fā)消息,使得系統(tǒng)運(yùn)行流暢,顯示清晰,幀率達(dá)到每秒30幀,分辨率達(dá)到600*800。
權(quán)利要求
基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特征在于包含以下步驟1)捕獲本地的視頻數(shù)據(jù),用于真實(shí)乒乓球拍的跟蹤注冊(cè)和發(fā)送給對(duì)方用戶顯示;2)利用顏色特征檢測(cè)和跟蹤真實(shí)乒乓球球拍,進(jìn)行虛擬場(chǎng)景與真實(shí)場(chǎng)景的虛實(shí)三維注冊(cè),將虛擬場(chǎng)景映射到真實(shí)球拍、參與用戶、真實(shí)環(huán)境的視頻圖像空間坐標(biāo)系;3)根據(jù)真實(shí)球拍的運(yùn)動(dòng)信息,進(jìn)行虛擬乒乓球與真實(shí)球拍、虛擬球桌、虛擬球網(wǎng)各對(duì)象之間的碰撞檢測(cè),并確定和表現(xiàn)虛擬乒乓球碰撞后的運(yùn)動(dòng)軌跡;4)給出有限狀態(tài)機(jī),控制乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換,確保雙方用戶具有相同的乒乓球運(yùn)動(dòng)體驗(yàn);5)本地發(fā)送消息給對(duì)方,以完成雙方通信并改變雙方所處狀態(tài),發(fā)送的消息包括連接建立消息、視頻數(shù)據(jù)消息、球拍位置消息、球的位置消息、球出界或觸網(wǎng)消息;6)本地接收對(duì)方發(fā)送的消息,并將接收到的消息放到消息堆棧中,待消息處理模塊讀取和處理;7)消息處理模塊根據(jù)收到的消息設(shè)置本地虛擬乒乓球的位置,將接收到的視頻數(shù)據(jù)消息傳給繪制模塊,并改變當(dāng)前乒乓球系統(tǒng)運(yùn)行過程的狀態(tài);8)虛擬物體繪制,根據(jù)真實(shí)乒乓球桌和乒乓球的大小和顏色繪制虛擬物體,用戶打球的位置離攝像頭的距離為球桌的長(zhǎng)度;通過網(wǎng)絡(luò)連接雙方用戶,并在該網(wǎng)絡(luò)平臺(tái)下收發(fā)消息,保證雙方用戶之間的通信正常;9)顯示增強(qiáng)現(xiàn)實(shí)視頻,將對(duì)方傳輸過來的壓縮視頻數(shù)據(jù)進(jìn)行解壓,將本地的球拍用虛擬球拍的方式顯示在視頻中,同繪制的虛擬物體一起顯示。
2.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于步驟2)中的檢測(cè)和跟蹤的乒乓球拍均為真實(shí)乒乓球拍。
3.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于步驟2)中的乒乓球拍跟蹤注冊(cè)進(jìn)一步包含以下步驟2. 1)根據(jù)乒乓球拍在視頻圖像中出現(xiàn)的位置區(qū)域定義初始球拍搜索窗口 ;2. 2)設(shè)置顏色閾值提取初始搜索窗口中紅色像素點(diǎn),并進(jìn)行中值濾波去除噪聲點(diǎn);2. 3)統(tǒng)計(jì)紅色區(qū)域的像素點(diǎn)個(gè)數(shù)作為真實(shí)乒乓球拍的面積,計(jì)算乒乓球拍的質(zhì)心,得 到初始視頻圖像中用于注冊(cè)的正方形包圍盒;2. 4)根據(jù)上一幀視頻圖像得到的正方形包圍盒位置生成下一幀視頻圖像中真實(shí)乒乓 球拍的搜索窗口,并利用第2. 3步得到下一幀視頻圖像中用于注冊(cè)的正方形包圍盒;2.5)利用正方形包圍盒計(jì)算外參數(shù),進(jìn)行乒乓球拍的注冊(cè)。
4.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于,步驟3)中的虛擬乒乓球碰撞檢測(cè)和軌跡計(jì)算采用以下方法3.1)如果當(dāng)前幀虛擬球位置在平面上方,而下一幀虛擬球位置在平面下方,則在該幀 內(nèi)發(fā)生碰撞;3. 2)利用碰撞點(diǎn)與三角形頂點(diǎn)三條連線的夾角判斷碰撞點(diǎn)是否在邊界內(nèi);3. 3)借鑒鏡面反射的原理,同時(shí)加入重力加速度的影響,計(jì)算虛擬乒乓球的運(yùn)行軌跡;3. 4)通過判斷球的觸網(wǎng)情況和出界情況自動(dòng)對(duì)打球過程進(jìn)行計(jì)分。
5.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特征在于,步驟4)中的狀態(tài)控制機(jī)制采用以下方法將該乒乓球系統(tǒng)運(yùn)行過程抽象為5個(gè)狀態(tài),利用有限狀態(tài)機(jī)控制狀態(tài)之間的轉(zhuǎn)換;所 述5個(gè)狀態(tài)分別為初始狀態(tài)、等待狀態(tài)、發(fā)球狀態(tài)、循環(huán)狀態(tài)、設(shè)置狀態(tài)。
6.根據(jù)權(quán)利要求5所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于所述乒乓球系統(tǒng)定義的有限狀態(tài)機(jī)轉(zhuǎn)換關(guān)系為初始狀態(tài)收到回復(fù)消息轉(zhuǎn)換為等 待狀態(tài);等待狀態(tài)若捕獲到發(fā)球命令轉(zhuǎn)換到等待狀態(tài),若捕獲到對(duì)方發(fā)球消息轉(zhuǎn)換到設(shè)置 狀態(tài);發(fā)球狀態(tài)中設(shè)置虛擬乒乓球速度和位置信息之后轉(zhuǎn)移到循環(huán)狀態(tài);循環(huán)狀態(tài)中檢測(cè) 碰撞并計(jì)算虛擬乒乓球運(yùn)行軌跡,若球出界則轉(zhuǎn)換到等待狀態(tài);設(shè)置狀態(tài)在設(shè)置完乒乓球 速度和位置信息之后轉(zhuǎn)換到循環(huán)狀態(tài)。
7.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于步驟5)和6)所述的消息接收和發(fā)送采用多線程進(jìn)行數(shù)據(jù)的收發(fā),每接收到發(fā)送消 息命令即發(fā)送消息。
8.根據(jù)權(quán)利要求7所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于根據(jù)雙方通信需要定義多種不同的消息類型,所有消息類型具有相同的結(jié)構(gòu),方便 消息處理。
9.根據(jù)權(quán)利要求1所述的基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于每接收到對(duì)方發(fā)送過來的消息即將消息放在消息堆棧中,等待消息處理模塊處理 消息。
10.根據(jù)權(quán)利要求1所述基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于步驟9)所顯示的增強(qiáng)現(xiàn)實(shí)視頻圖像中包含對(duì)方視頻圖像、虛擬球臺(tái)、虛擬球網(wǎng)、虛 擬乒乓球、己方虛擬球拍。
11.根據(jù)權(quán)利要求10所述基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,其特 征在于步驟9)所顯示的增強(qiáng)現(xiàn)實(shí)視頻的視角是用戶第一人稱視角,用戶可以看到對(duì)方拿 著真實(shí)的乒乓球拍擊打虛擬乒乓球,用戶自己揮動(dòng)球拍過程由繪制的己方虛擬球拍體現(xiàn)。
全文摘要
本發(fā)明涉及基于真實(shí)球拍的協(xié)同式增強(qiáng)現(xiàn)實(shí)乒乓球系統(tǒng)構(gòu)建方法,包括根據(jù)系統(tǒng)獲取的視頻圖像,利用顏色特征進(jìn)行真實(shí)乒乓球球拍的檢測(cè)和跟蹤;設(shè)計(jì)實(shí)現(xiàn)虛擬場(chǎng)景與真實(shí)場(chǎng)景的虛實(shí)三維注冊(cè),將虛擬場(chǎng)景映射到真實(shí)球拍、參與用戶、真實(shí)環(huán)境的視頻圖像空間坐標(biāo)系;根據(jù)真實(shí)球拍的運(yùn)動(dòng)信息設(shè)計(jì)實(shí)現(xiàn)虛擬乒乓球與真實(shí)球拍、虛擬球桌、虛擬球網(wǎng)等對(duì)象之間的碰撞檢測(cè),確定和表現(xiàn)虛擬乒乓球碰撞后的運(yùn)動(dòng)軌跡;給出有限狀態(tài)機(jī)和消息處理機(jī)制,控制乒乓球系統(tǒng)運(yùn)行過程的各種狀態(tài)轉(zhuǎn)換,確保多個(gè)用戶具有相同的乒乓球運(yùn)動(dòng)體驗(yàn)。本發(fā)明可廣泛應(yīng)用推廣到交互式數(shù)字娛樂、體育研究與訓(xùn)練模擬、遠(yuǎn)程教育與培訓(xùn)等領(lǐng)域。
文檔編號(hào)G06F19/00GK101893935SQ20101023135
公開日2010年11月24日 申請(qǐng)日期2010年7月14日 優(yōu)先權(quán)日2010年7月14日
發(fā)明者李鑫, 趙沁平, 陳小武, 顏勇 申請(qǐng)人:北京航空航天大學(xué)