基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)-學(xué)位論文_第1頁
基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)-學(xué)位論文_第2頁
基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)-學(xué)位論文_第3頁
基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)-學(xué)位論文_第4頁
基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)-學(xué)位論文_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

摘要PAGEIVPAGE15基于體感技術(shù)的碰撞球游戲設(shè)計與開發(fā)摘要體感技術(shù)是一項利用人體肢體動作識別外界感應(yīng)的一門技術(shù),它可以讓人們可以很直接地用自身的肢體動作,與周邊的設(shè)備或某種環(huán)境互動,而且不需要使用任何復(fù)雜的其他外在設(shè)備,便可讓人們身臨其境地與內(nèi)容進行互相“交流”。此次畢業(yè)課程設(shè)計是利用微軟公司的Kinect體感設(shè)備作為捕捉人體動作識別的工具來獲取到人體骨骼模型,然后通過VisualStudio開發(fā)工具,來實現(xiàn)設(shè)計出一個能夠滿足人們簡單娛樂的小球碰撞游戲。該系統(tǒng)利用Kinect傳感器紅外攝像頭偵測、捕捉用戶肢體及骨骼動作,將采集到的紅外線圖像和Kinect的原始參數(shù)進行一系列復(fù)雜的計算,從而獲得人體三維深度流數(shù)據(jù)信息,以此來創(chuàng)建成相關(guān)的骨骼模型,再將整合形成的原始模型轉(zhuǎn)換成虛擬角色,當(dāng)用戶發(fā)出揮手、抬腳、說話等動作時,該虛擬角色通過識別該人體骨骼模型的關(guān)鍵部位進行動作觸發(fā),使小球做出相應(yīng)的動作。畢業(yè)課程應(yīng)用Kinect設(shè)備,其具備當(dāng)今最先進的人機交互技術(shù)、人體運動分析技術(shù)和骨骼提取技術(shù),是對相關(guān)技術(shù)的一次大膽嘗試。其中,人機交互技術(shù)在許多領(lǐng)域得到了廣泛應(yīng)用。人體運動分析技術(shù)也有了可觀的發(fā)展,實質(zhì)上能夠捕捉人體的動作是實現(xiàn)人體運動分析的前提。骨骼提取作為捕捉人體動作的重要一環(huán),也日益得到學(xué)術(shù)界的關(guān)注,骨架是表現(xiàn)圖像拓撲的一個重要特征,是表示物體形狀的一種有效形式,其信息量少,但又能較完整描述物體的幾何性質(zhì),因此在圖像檢索、模式識別和虛擬運動等領(lǐng)域得到了廣泛的應(yīng)用。市場上涉及到的行業(yè)有虛擬試衣,體感游戲,購物商城,虛擬會議等等。但體感技術(shù)提取人體信息不夠靈敏,技術(shù)還有待提高。關(guān)鍵詞:體感,Kinect,小球碰撞,虛擬角色,骨骼模型

TheTechnologyOfSomatosensoryBasedOnCollisionBallGameDesignAndDevelopmentABSTRACTMotion-sensingtechnologyisauseofhumanbodymovementrecognitionoutsidetheinductionofaforeigntechnology,asthenameimplies,itcanletpeoplecandirectlyusetheirbodymovements,interactionswiththesurroundingequipmentorsomekindofenvironment,andthere'snoneedtouseanyotherouterequipmentcomplex,canmakepeoplemorevividlyandcontentto"communicate"witheachother.ToimproveefficiencyThisdesignistouseMicrosoft'sdevicebodyfeelingequipmentascapturehumanmotionrecognitiontooltogettothehumanbodyskeletonmodel,thenthroughVisualStudiodevelopmenttoolstodesignacansatisfypeoplesimpleballcollisionofentertainmentgames.ThesystemUSESsensorsinfraredcameradevicedetection,capturinguserbodyandbonemoves,thecollectedinfraredimageandtoaccesstheoriginalparameterscalculationofacomplexsetof3ddepthstreamdatainformationforthehumanbody,inordertocreatearelevantbonemodel,andthenintegratedformoftheoriginalmodelistransformedintoavirtualcharacter,whentheusersenttowave,liftthefoot,theactionsuchasspeaking,thevirtualcharacterbyidentifyingthekeypartsofthehumanbodyskeletonmodelforactiontriggers,maketheballmakesthecorrespondingaction.Asthefieldofpatternrecognitionandartificialintelligencetechnologylevelunceasingenhancement,makestheman-machineinteractiontechniquehasbeenwidelyappliedinmanyfields.Atthesametime,inrecentyears,humanmotionanalysistechnologyhasconsiderabledevelopment,inessence,tocapturetheactionofthehumanbodyisthepremisetorealizehumanmovementanalysis.Skeletonextraction,asanimportantpartofthehumanbodymovements,isbecomingmoreandmoreattentionbytheacademiccircle,andalsoanimportantfeatureskeletontopologyistokeeptheimage,isaneffectiveformofsaidobjectshape,thelesstheamountofinformation,butalsocancompletedescriptiongeometricpropertiesoftheobject,soinimageretrieval,patternrecognitionandthevirtualmovement,andotherfieldshasbeenwidelyused.Butmotion-sensingtechnologytoextracthumanbodyinformationsensitiveenoughtotechnologyneedstobeimproved.KEYWORDS:Motion-sensing,Kinect,Smallballcollision,Virtualcharacter,Skeletonmodel前言目錄15123前言 130593第1章緒論 3170641.1引言 3309261.1.1國內(nèi)外研究現(xiàn)狀 412101.1.2本文的主要內(nèi)容 5139021.1.3章節(jié)安排 616441第2章Kinect傳感器的結(jié)構(gòu)及工作原理 7108662.1Kinect硬件部分 7266412.1.1Kinect基礎(chǔ)介紹 7158132.1.2系統(tǒng)級芯片 8180842.1.3紅外投影機 9115252.1.4彩色攝像頭和紅外攝像頭 9230602.1.5麥克風(fēng)陣列 9186232.2Kinect傳感器的軟件系統(tǒng) 1061202.2.1Kinect的核心NUIAPI 1189282.2.2KinectAudioDMO 12314402.2.3WindowsSpeechSDK 1286802.3深度圖像的獲取技術(shù) 1350132.4Kinect獲取深度圖的原理 1428321第3章基于深度圖像的骨架提取 16241823.1檢測方法 1662703.1.1傳統(tǒng)的檢測方法 16267533.1.2深度攝像頭實現(xiàn)目標(biāo)檢測與分割 17281813.1.3基于最優(yōu)閾值的方法 18278223.2骨骼提取 20128853.2.1人體骨架空間 2037733.2.2關(guān)節(jié)定位 2123644第四章小球碰撞游戲開發(fā) 23189894.1建立游戲模塊 23161594.2基于C#編程 2476234.2.1定義小球模塊 2480074.2.2定義游戲模式 25125224.2.3碰撞類型 26212494.2.4界面顯示 2810294.2.5語音識別模塊 29226054.3游戲體驗 3524042第5章總結(jié)與展望 37236505.1論文主要工作 37120315.2展望 376474結(jié)論 393961謝辭 4015212參考文獻 4117152附錄 43前言隨著當(dāng)今社會的高速發(fā)展,人們的工作效率也越來越高,生活節(jié)奏也逐步加快,這些都與計算機的迅猛發(fā)展密不可分。現(xiàn)今社會,基本有人類的地方就有計算機,也沒有哪個行業(yè)可以真正與計算機脫離開來。提高人類計算機的使用效率,改變?nèi)祟愂褂糜嬎銠C的時間是現(xiàn)實亟待解決的問題既是節(jié)約時間,又可以提高工作效率,還可以提高人們娛樂和交流方式。人機交互是研究人與計算機及其相互作用的技術(shù),其研究目的在于利用所有可能的信息通道進行人-機交流,提高交互的自然性和高效性。目前人與計算機交互的方式往往局限于鼠標(biāo)與鍵盤,正是由于這種傳輸方式的單一性阻礙了人機交互的進一步發(fā)展,人機交互中輸入輸出效率之間的差距變的越來越大。隨著科學(xué)技術(shù)的高速發(fā)展,更高層次的人機交互理念對交互方式提出了巨大的需求,眾多科研人員開始對新的交互技術(shù)的多通道界面展開研究,目前的研究內(nèi)容主要是集中在手勢輸入、語音識別及感覺反饋等方面。而Kinect體感技術(shù)的出現(xiàn)促進人機交互的發(fā)展,具有重要意義,Kinect作為新一代的體感設(shè)備,可以依靠實時捕捉使用者的動作、面部識別及語音識別就可以達到輸入功能。這一特性很好地填補了現(xiàn)有人機交互技術(shù)的缺陷,并且促使Kinect體感技術(shù)成為人機交互領(lǐng)域中的一個研究熱點。在于人們可以很直接地使用肢體動作,與周邊的裝置或環(huán)境互動,而無需使用任何復(fù)雜的控制設(shè)備,便可讓人們身歷其境地與內(nèi)容做互動。可以說這項技術(shù)是目前人機交互技術(shù)中最前沿、最熱的領(lǐng)域之一,它將開啟人機交互的新時代。自微軟Kinect紅外深度感應(yīng)器發(fā)布以來,國內(nèi)外對其技術(shù)和應(yīng)用上的研究都取得了比較多且富有創(chuàng)造性的成果。Kinect感應(yīng)器最初是作為微軟XBOX游戲機的體感外設(shè)發(fā)布的,后經(jīng)熱心開發(fā)者建立起OpenNI的軟件框架,Kinect在計算機方面的研究和應(yīng)用才逐步獲得了較大的影響力?,F(xiàn)階段微軟已經(jīng)為此款深度感應(yīng)器發(fā)布了官方的驅(qū)動程序及SDK,更進一步推動了體感技術(shù)的開發(fā)應(yīng)用。Kinect在國內(nèi)外的研究動態(tài),在人體骨架識別和建模方面,利用SDK,華中科技大學(xué)的WeiShen和微軟公司的KeDeng等人提出了基于模型的人體骨架修正和標(biāo)記方法,較好地解決了獲取人體動作視頻中的遮擋問題。此外,微軟劍橋研究院的ShahramIzadi等人則利用深度攝像頭開發(fā)了一套實時三維重建和交互系統(tǒng),系統(tǒng)通過攝像頭對所見物體進行三維重建,并實現(xiàn)了操作者在虛擬空間中的實時交互。可以說傳感器方面的革新使人體骨架建模有了更優(yōu)的解決方案,為基于人體骨架識別和運動跟蹤方面的應(yīng)用開拓了廣闊的前景。另一方面我們也認識到Kinect技術(shù)目前應(yīng)用不是很廣泛,其深度探測技術(shù)還不夠成熟,其每秒只能拍攝30幀,這樣的動作捕捉不但不能準確分辨,也會造成很大的延時。只能適合緩慢的動作,這使得其應(yīng)用范圍受到一定局限,難以實現(xiàn)一些需要快速做出相關(guān)肢體動作來控制設(shè)備內(nèi)容的實時運作。所以未來需要對其精確度提升有很大的要求,最近也獲知Kinect2已經(jīng)在國外發(fā)售,有望能實現(xiàn)自然語音識別、更準確的面部識別和更詳細的人體運動捕捉能力。本次畢業(yè)課題是以Kinect體感技術(shù)來實現(xiàn)一個碰撞球的游戲系統(tǒng),硬件平臺就是微軟的XBOX360。軟件開發(fā)工具MicrosoftVisualStudio進行系統(tǒng)開發(fā)。開發(fā)所用語言為C#。通過Kinect紅外攝像頭設(shè)采集用戶動作,將采集到的三維深度流數(shù)據(jù)信息通過編程算法和圖像處理,在Kinect平臺上創(chuàng)建成相關(guān)的骨骼模型,再將整合成的原始模型轉(zhuǎn)換成虛擬角色,當(dāng)用戶發(fā)出動作時,該虛擬角色也將相應(yīng)的做出與之同步的動作觸發(fā),從而控制場景中的小球運動和碰撞。這樣可以根據(jù)游戲體驗增強家人之間的互動關(guān)系,促進孩子與家長之間的溝通協(xié)作性。在整個設(shè)計過程中要針對小球碰撞游戲的情況解決以下一些問題。如何能夠?qū)inect采集到的深度數(shù)據(jù)轉(zhuǎn)化為相應(yīng)的骨骼模型來操縱小球運動。并通過相關(guān)算法提高獲取到的骨骼模型的識別精度,并實時跟蹤用戶的肢體動作,減少動作的延時。提高玩家體驗游戲效果的真實性。第1章緒論1.1引言人機交互從只有一個維度的綠色字符控制臺界面(CLI),到有鼠標(biāo)操作兩個維度的圖形用戶界面(GUI),再到現(xiàn)在的多點觸摸(Multi-Touch)在手機、平板電腦等移動終端上得到了廣泛的應(yīng)用,無疑又引爆了消費者對自然交互的渴望,但交互體驗還停留在二維平面的階段,同時隨著攝像頭、GPS、重力感應(yīng)等各類傳感器的普及,虛擬現(xiàn)實和增強現(xiàn)實大放異彩,在虛擬與現(xiàn)實世界重疊的同時,又有了眼球跟蹤、語音識別、人臉識別等讓技術(shù)更好理解人類的手段。Kinect正是在這樣的背景中誕生的,使人機交互技術(shù)從二維的世界擴展到三維的空間,而且是進入到了非接觸的交互體驗之中。Kinect是微軟于2010年發(fā)布的一種三維體感攝像機,它具有骨骼跟蹤、人臉識別、麥克風(fēng)輸入、語音識別等功能。因此,可以很好的利用Kinect進行人機交互,而人體運動分析更是人機交互中目前研究的重點和熱點方向。人體運動分析有著廣闊的應(yīng)用前景,主要包括以下幾個方面的應(yīng)用[1]:(1)智能監(jiān)控系統(tǒng),例如在一些智能監(jiān)控場合,通過對人臉識別、步態(tài)分析決定是否容許其進入該區(qū)域。比如說在銀行、機場等安全要求比較高的地區(qū),可以通過監(jiān)控,發(fā)現(xiàn)可疑人員并發(fā)出報警。(2)虛擬現(xiàn)實,例如可以對用戶在真實物理空間中的姿態(tài)進行有效的分析理解。(3)智能用戶接口,計算機可以通過計算機視覺信息,實現(xiàn)人機交互。比如機器人通過攝像頭捕捉人體運動信息并加以理解并作出合適的反應(yīng)。(4)運動分析,例如在舞蹈,體操運動的訓(xùn)練中,通過分析關(guān)鍵節(jié)點的運動來指導(dǎo)糾正練習(xí)者的動作等。(5)基于模型的視頻編碼,例如通過建立人臉、人體的參數(shù)化模型,達到較高的壓縮效果,對人體運動分析的研究具有重要意義。1.1.1國內(nèi)外研究現(xiàn)狀日常生活中的智能監(jiān)控系統(tǒng)、體育運動競技研究、動畫制作等許多領(lǐng)域都需要對人體運動狀態(tài)進行分析。要實現(xiàn)人體運動的分析,就必須對人體運動的狀態(tài)進行捕獲,通過采集得到的數(shù)據(jù)對人體關(guān)節(jié)點進行定位獲得準確的運動參數(shù)。目前捕獲人體運動的方法有很多,但是最直接的方法,還是通過攝像頭進行捕獲。因為通過攝像頭獲取的圖像和視頻不僅包含了許多運動信息,而且攝像頭不會對人的運動產(chǎn)生任何約束,因此,人體運動方面的研究,幾乎都是使用攝像頭作為輸入信息進行研究的。人體運動捕捉的研究開始于1980年,由于它的廣泛應(yīng)用,國內(nèi)外的學(xué)者對此進行了大量研究,提出了許多運動捕捉和姿態(tài)估計的方法?;谝曨l的人體運動分析主要是從攝像機拍攝的圖像序列中分析每一幀的人體運動狀態(tài),對人的行為進行識別。通過不同的運動分析方法可以從圖像中提取出不同的信息。北京理工大學(xué)徐楓等人使用無標(biāo)記運動捕捉的方法獲得任意時刻人體對應(yīng)的骨骼和三維模型[2]。T.Drummond等人通過檢測運動物體的邊緣信息,可以快速恢復(fù)圖像的三維模型,具有較高的實時性[3]。美國科學(xué)家Moon等人提出了采用形狀編碼的方法對外輪廓進行描述,利用外輪廓信息來進行運動捕捉[4]。武漢理工大學(xué)教授李豪杰等人研究出了自頂向下和自底向上的運動捕捉方法[5],自頂向下的捕捉方法又稱為基于模型的方法,該方法根據(jù)已知的條件,將人體模型與圖像進行匹配,建立一些約束,以獲得人體姿態(tài)參數(shù)。該方法主要包括:(1)微分法建立一個目標(biāo)函數(shù),通過雅克比矩陣建立模型微分和圖像坐標(biāo)的聯(lián)系[6],本方法收斂速度較快,但不適合跟蹤大幅度的運動。(2)動力學(xué)法在預(yù)測時與圖像某些相關(guān)數(shù)據(jù)間生成一種類似于彈簧彈力的力,根據(jù)這種類似于彈簧彈力的力修正模型參數(shù),直到匹配成功[7]。本方法可以跟蹤較大幅度的運動,但卻不能保證其收斂性。(3)Kalman濾波利用目標(biāo)的動態(tài)信息首先對前一時刻的狀態(tài)進行預(yù)測,然后利用前一時刻的估計值和現(xiàn)在時刻的觀測值來更新對狀態(tài)變量的估計,求出現(xiàn)在時刻的估計值[9],本方法可以描述跟蹤過程中的某些不確定信息,魯棒性較高,但本方法要求系統(tǒng)狀態(tài)和噪聲是單峰分布,很難滿足現(xiàn)實要求。自底向上的捕捉方法又稱為非模型的方法,該方法通過對底層特征的跟蹤,對圖像進行處理分析,從中提取感興趣的特征,將它們與待識別目標(biāo)的特征相比較,選取最相似的部分,以此確定待識別目標(biāo)在圖像中的位置,獲取人體姿態(tài)信息。該方法主要包括:(1)特征跟蹤法,首先在首幀中標(biāo)注出人體的關(guān)鍵點位置,然后通過后續(xù)幀中通過跟蹤建立起幀與幀之間的關(guān)系,最后獲取不同的時刻人體的姿態(tài)參數(shù)[10]。(2)標(biāo)記法是作為指導(dǎo)對人體的輪廓進行標(biāo)記,從而獲得姿態(tài)信息[11]。(3)模板匹配法是以邊緣為特征,通過形狀關(guān)聯(lián)匹配從模板庫中找到最相近的樣例,通過這個樣例獲得輸入圖像的二維關(guān)節(jié)點位置,然后使用Taylor[12]級數(shù)法恢復(fù)出三維的人體姿態(tài)。姿態(tài)估計主要可以分為兩種:一種是標(biāo)記出圖像的每個像素點所在的人體部位,通過圖像的全局特征進行匹配分析,然后經(jīng)過聚合可以得到人體各關(guān)節(jié)點的位置,進而實現(xiàn)運動捕捉。東北師大副教授林鵬等人通過構(gòu)建深度圖樣本庫,提取訓(xùn)練樣本中的局域梯度特征,利用隨機森林學(xué)習(xí)得到分類器,并對圖像進行單點分類,計算人體各關(guān)節(jié)點[13],他們利用AdaBoost多示例學(xué)習(xí)算法訓(xùn)練部位檢測器,然后利用各部位檢測器對樣本測試,從而將樣本轉(zhuǎn)化為特征向量,再用SVM方法對這些向量進行學(xué)習(xí),得到最終的部位組合分類器[14]。1.1.2本文的主要內(nèi)容本文主要分析了骨骼定位研究的背景和意義,介紹了國內(nèi)外相關(guān)的研究工作,包括運動捕捉和人體姿態(tài)估計的定位方法,分析了它們的優(yōu)缺點,然后選擇了下面的研究方法:使用微軟的深度攝像頭Kinect提取深度圖像作為輸入信息,然后,利用最優(yōu)閾值法實現(xiàn)人體與背景的分割,通過算法進行骨架提取,在骨架上確定初始的關(guān)節(jié)點,通過人體的固有特性來最終確定實際關(guān)節(jié)點的位置。1.1.3章節(jié)安排本文從理論和實驗兩個方面,對基于Kinect的骨骼定位中的深度圖像背景分割、骨架提取、骨骼定位進行了研究。具體章節(jié)安排如下:第一章提出了本課題研究的背景和意義,對國內(nèi)外有關(guān)人體骨骼定位的方法進行了總結(jié)和歸納。第二章介紹了Kinect的軟硬件結(jié)構(gòu)、獲取深度圖像的基本原理、深度圖像的校正以及Kinect的機器學(xué)習(xí)技術(shù)。第三章闡述了基于深度圖像的骨架提取,提出了一種基于最優(yōu)閾值的圖像分割方法,利用該方法實現(xiàn)了人體與背景的分割;使用數(shù)學(xué)形態(tài)學(xué)的方法對人體的剪影圖進行了去噪,實現(xiàn)了人體骨架的提取。第四章主要進行研究小球碰撞游戲的開發(fā),以及相應(yīng)流程圖,基于微軟的C#進行編程,并達到了預(yù)期目標(biāo)。第五章對全文進行了總結(jié)和展望,本次課題成果存在的問題,并探討了未來的研究方向。第1章標(biāo)題第2章Kinect傳感器的結(jié)構(gòu)及工作原理2.1Kinect硬件部分2.1.1Kinect基礎(chǔ)介紹Kinect是微軟在2009年6月2日的E3大展上。正式公布的XBOX360體感周邊外設(shè)。Kinect實物圖如圖2-1所示:Kinect徹底顛覆了游戲的單一操作。使人機互動的理念更加徹底的展現(xiàn)出來。不需要使用任何控制器,它依靠相機捕捉三維空間中玩家的運動。微軟指出它會讓系統(tǒng)更加簡易操作來吸引大眾??梢哉f人們利用它能夠直接地使用肢體動作,與周邊的裝置或環(huán)境互動,而無需使用任何復(fù)雜的控制設(shè)備,便可讓其身歷其境地與內(nèi)容做互動。Kinect是一種3D體感攝影機(開發(fā)代號“ProjectNatal”),同時導(dǎo)入了即時動態(tài)捕捉、影像辨識、麥克風(fēng)輸入、語音辨識、社群互動等功能玩家可以通過這項技術(shù)在游戲中開車、與其他玩家互動、通過互聯(lián)網(wǎng)與其他Xbox玩家分享圖片和信息等。圖2-1Kinect設(shè)備外觀Kinect傳感器主要由以下部件組成:不同的芯片;三塊主板;外殼、底座;用于仰角控制的傳動馬達電動機;USB線;散熱風(fēng)扇;紅外投影機;彩色攝像頭;紅外攝像頭;四個麥克風(fēng)陣列等,拆解后的Kinect如圖2-2所示:圖2-2拆解后的Kinect外殼、底座及4個不同類型的螺釘。MovingTouch傳動馬達電動機(用于仰角控制)散熱風(fēng)扇彩色攝像頭紅外攝像頭紅外投影機麥克風(fēng)陣列3部分主板14種關(guān)鍵芯片2.1.2系統(tǒng)級芯片Kinect使用的是PrimeSense公司生產(chǎn)的PS1080系統(tǒng)級芯片。PS1080芯片擁有很強的并行計算能力,可控制近紅外光源,然后進行圖像編碼并主動投射近紅外光譜。同時,通過一個標(biāo)準的CMOS圖像傳感器接收投影的紅外光譜并且將編碼后的反射斑點圖像傳輸給PS1080芯片,PS1080芯片對此進行處理并生成深度圖像。PS1080芯片是一個多感應(yīng)系統(tǒng),能提供同步深度圖像、彩色圖像和音頻流,它通USB2.0物理層協(xié)議將所有數(shù)據(jù)傳送到主機。另外,PS1080芯片適用于所有深度獲取算法均在PS1080芯片上運行的各種主機CPU,主機只需要運行最低限度的USB通信層。通過這種設(shè)計,即便是計算能力有限的主機設(shè)備也具備獲取深度圖像的能力。2.1.3紅外投影機紅外投影機是位于Kinect最左邊的鏡頭,它與最右側(cè)的紅外攝像頭配合使用。PS1080芯片對紅外光源進行控制,以便通過紅外光編碼影像放映場景。紅外投影機主動投射近紅外光譜,照射到粗糙物體、或者是通過一個類似于毛玻璃的透明散射體而導(dǎo)致光譜發(fā)生扭曲,然后形成無規(guī)則分布的反射斑點,進而能被紅外攝像頭讀取。它的光源是一類普通激光光源,該光波波長為830nm,可以持續(xù)輸出,符合IEC60825-1標(biāo)準中的一級安全要求,對人體沒有害。2.1.4彩色攝像頭和紅外攝像頭Kinect是通過彩色攝像頭和紅外攝像頭來獲取圖像的,彩色攝像頭用來獲取RGB圖像,紅外攝像頭用來獲取深度圖像,兩者的分辨率都為640×480。紅外攝像頭是一個標(biāo)準的CMOS圖像傳感器,負責(zé)接收發(fā)出的紅外光,并將紅外光編碼圖像傳給PS1080芯片,PS1080芯片負責(zé)處理紅外圖像,然后逐幀生成準確的場景深度圖像。為了生成更準確的傳感器信息,PS1080芯片會執(zhí)行“PrimeSense”注冊過程。注冊就是將RGB圖像和深度圖像進行對應(yīng),產(chǎn)生像素相互對應(yīng)的圖像,即RGB圖像中的每個像素分別與深度圖像中的一個像素對應(yīng)。這能讓應(yīng)用程序準確了解收到的RGB圖像中每個像素的深度信息。所有傳感器信息(深度圖像、RGB圖像和音頻)通過一個USB2.0接口傳送給主機,且時間準確。2.1.5麥克風(fēng)陣列由于Kinect的三個鏡頭的分布不對稱,因此Kinect麥克風(fēng)陣列的分布也是不對稱的,這樣才能保持質(zhì)量分布的均衡,麥克風(fēng)陣列布局如圖2-3所示:圖2-3Kinect麥克風(fēng)陣列布局Kinect的音頻系統(tǒng)采用了四元線性麥克風(fēng)陣列技術(shù)。麥克風(fēng)陣列中含有四個相互獨立的小型麥克風(fēng),這四個小型麥克風(fēng)呈線性排列,每個麥克風(fēng)之間相隔數(shù)厘米,這些麥克風(fēng)可以捕捉多聲道立體聲,然后通過數(shù)字信號處理等組件,根據(jù)麥克風(fēng)陣列接聽聲音的時間差來判斷聲源方向。從元件上看,除了Kinect的四個麥克風(fēng)陣列以外,還配置了WolfsonMicroelectronicsWM8737G芯片用于進行本地的音頻信號處理。與一般的單麥克風(fēng)數(shù)據(jù)相比,Kinect采用的陣列技術(shù)包含有效的噪聲消除和回波抑制(AcousticEchoCancellation,AEC)算法,同時采用波束成形(Beamforming)技術(shù),通過每個獨立設(shè)備的響應(yīng)時間確定音源位置,并盡可能避免環(huán)境噪聲的影響。2.2Kinect傳感器的軟件系統(tǒng)Kinect傳感器提供原始數(shù)據(jù)流給SDK,這些數(shù)據(jù)流包括深度數(shù)據(jù)流、彩色圖像數(shù)據(jù)流和音頻數(shù)據(jù)流。通過KinectSDK可以直接獲取這些原始傳感器數(shù)據(jù)流,并在此基礎(chǔ)上進行較為底層的應(yīng)用開發(fā)。此外,KinectSDK封裝了骨骼跟蹤等高層NUIAPI供應(yīng)用程序調(diào)用,從而進一步開發(fā)動作識別、體感操作和智能監(jiān)控等應(yīng)用。應(yīng)用層API包括三大組件,分別是:(1)NUIAPI:SDK的核心,用來處理彩色圖像流、深度圖像數(shù)據(jù)、骨骼跟蹤和控制/管理Kinect設(shè)備等。(2)KinectAudioDMO:提供波束成形和音源定位功能。(3)WindowsSpeechSDK:提供音頻、語音、多媒體API集以及微軟語音識別功能。2.2.1Kinect的核心NUIAPI[15]NUI(網(wǎng)絡(luò)用戶標(biāo)識)API是Kinect的核心API。它支持“流處理”和“設(shè)備管理”的功能,主要包括:(1)Kinect傳感器與計算機的連接、訪問和關(guān)閉。(2)訪問從Kinect傳感器上傳輸?shù)膱D像和深度數(shù)據(jù)流。(3)通過對圖像和深度數(shù)據(jù)的處理來進行骨骼跟蹤。KinectforWindowsSDK的驅(qū)動程序最多支持4個Kinect設(shè)備連接在同一臺計算機上。NUIAPI具有設(shè)備枚舉的方法,可以判斷已連接設(shè)備的數(shù)量。應(yīng)用程序可以通過枚舉來獲得各個Kinect設(shè)備的名稱,單獨使用或設(shè)置其屬性。初始化NUIAPI和使用Kinect傳感器的步驟如下:(1)獲得Kinect實例,代碼如下:KinectSensorsensor=(fromsensorToCheckinKinectSensor.KinectSensorswheresensorToCheck.Status==KinectStatus.ConnectedselectsensorToCheck).FirstOrDefault();以上為LINQ查詢表達式,可以使用LINQ的foreach語法進行當(dāng)前活動,連接Kinect傳感器進行遍歷。代碼如下:foreach(KinectSensorkinectinKinectSensor.KinectSensors){if(kinect.Status==KinectStatus.Connected){kinectSenosr=kinect;break;}}(2)調(diào)用KinectSensor.Start方法初始化并啟動Kinect傳感器。(3)注冊相關(guān)事件,如視頻流或深度數(shù)據(jù)到來的事件、骨骼跟蹤事件,并基于這些事件調(diào)用SDK提供的相關(guān)API進行處理,代碼如下:KinectSensor.ColorFrameReadyKinectSensor.DepthFrameReadyKinectSensor.SkeletonFrameReadyKinectSensor.AllFrameReady如果同時使用多臺Kinect,開發(fā)者可以指定其中一個作為當(dāng)前骨骼跟蹤的設(shè)備。(4)調(diào)用KinectSensor.Stop方法關(guān)閉Kinect傳感器。如果應(yīng)用程序初始化并啟動Kinect傳感器,在未正常關(guān)閉前,如果Kinect傳感器被意外拔出,則該事件可以被捕捉。2.2.2KinectAudioDMOKinect麥克風(fēng)陣列基于語音識別的類庫之上,主要API包括DMO(DirectXMediaObject,DirectX多媒體對象)和MSAPI語音識別(MicrosoftSpeechRecognitionAPI)。KinectSDK中的AudioAPI對DMO進行了封裝,并針對Kinect傳感器的麥克風(fēng)陣列進行了優(yōu)化。KinectSDK中包含一個托管的音頻接口KinectAudioDMOAPI,通過該接口可初始化音頻、采集音頻和結(jié)束音頻流,還包含了聲源定位的相關(guān)API,并且支持聲源波束方向變化的事件。KinectAudioAPI主要是通過KinectAudioSource類來完成,包括從麥克風(fēng)陣列中獲取原始音頻流或加工過的音頻流。應(yīng)用程序使用AudioAPI的作用:(1)高質(zhì)量的音頻采集和音頻控制。KinectAudioAPI內(nèi)嵌一系列的算法來確保接收音頻品質(zhì),包括降噪、自動增益控制和回聲消除等處理。(2)波束成形和程序初始化,波束定位。KinectAudioDMO用內(nèi)置的算法來控制束和提供應(yīng)用程序的原始方向。BeamAngleMode類對底層的DMO系統(tǒng)模式和麥克風(fēng)陣列屬性進行了抽象封裝。通常該屬性設(shè)置為Adaptive,由KinectSDK來控制波束成形。2.2.3WindowsSpeechSDKKinectSDK的安裝同時也包括語音識別的組件部分,包括MicrosoftSpeechAPI、SpeechPlatformSDK和KinectforWindowsRuntimeLanguagePack(運行語言包)。KinectforWindows運行語言包是一系列的語言模型,用于KinectSDK和語音識別API組件之間的互操作和語音指令識別的優(yōu)化。語音識別是自然人機交互很重要的一個方面。MicrosoftSpeechSDK作為KinectSDK的組件被安裝,包含一個自定義的聲學(xué)模型。簡單來說,語音識別分為兩個層次:對特定語音命令識別和自然語音識別。KinectSDK目前不包含自然語音識別的部分,屬于特定語音命令識別的范疇。KinectSDK利用Microsoft.SpeechAPI的最新聲學(xué)算法,應(yīng)用程序可以進行語音識別和語音控制。KinectSDK是基于Microsoft.Speech類庫實現(xiàn)語音命令的識別,也可以基于Kinect的麥克風(fēng)通過System.Speech類庫來實現(xiàn)語音命令識別,但由于距離的原因識別效果不好。Microsoft.Speech類庫的關(guān)鍵對象是SpeechRecognitionEngine,負責(zé)從Kinect傳感器獲取降噪預(yù)處理后的音頻數(shù)據(jù)流,然后分析和解釋,從而進一步匹配出最適合的語音命令。2.3深度圖像的獲取技術(shù)[15]目前,用來獲取深度圖像信息的傳感器技術(shù)主要包括三種。第一種,激光雷達測距技術(shù)。激光雷達測距技術(shù)融合了傳統(tǒng)的雷達技術(shù)和現(xiàn)代的激光技術(shù)。由于激光雷達具有亮度高、抗干擾性強、單色性好、體積小等優(yōu)點,因此已經(jīng)廣泛應(yīng)用于各個領(lǐng)域。激光雷達測距技術(shù)的主要原理是通過激光發(fā)射器發(fā)出激光,當(dāng)激光檢測到被測物體時會進行反射,然后在發(fā)射處接收被測物體的反射光,并計算激光返回所需要的間隔時間,結(jié)合光速就可以求出被測物體的距離。其獲取深度數(shù)據(jù)的公式為:其中c為光速,t為間隔時間,R為深度數(shù)據(jù)。光線飛行時間測距技術(shù)發(fā)展較早、現(xiàn)在主要有DepthSense,ZCam等產(chǎn)品,其主要優(yōu)點是速度較快、幀率較大,缺點是容易受背景光的影響。第二種,立體視覺技術(shù)[16]。立體視覺技術(shù)是基于視差的原理,通過多目攝像頭獲取多幅RGB圖像,經(jīng)過攝像機標(biāo)定、圖像預(yù)處理、立體匹配、深度確定及內(nèi)插等過程獲得物體的深度信息。美國麻省理工學(xué)院Marr教授首次提出了比較完善的視覺系統(tǒng)框架。常用的幾種立體視覺技術(shù)有雙像合成法、莫爾條紋法、傅里葉變換輪廓法、位相測量法、主動三角形法、幾何光學(xué)聚焦法以及飛行時間法。立體視覺技術(shù)的優(yōu)點是系統(tǒng)結(jié)構(gòu)簡單、精度較高,缺點主要是算法的復(fù)雜度高,實時性較低。第三種,結(jié)構(gòu)光成像技術(shù)。結(jié)構(gòu)光成像技術(shù)是一種主動式三角測量技術(shù),投射已知的紅外模式到場景中,在場景中產(chǎn)生具有可識別編碼的條紋,由攝像頭讀取條紋并由圖像傳感器獲得圖像,通過系統(tǒng)化的幾何關(guān)系,利用三角原理計算從而最終來確定深度信息。根據(jù)結(jié)構(gòu)光投射模式的不同,結(jié)構(gòu)光三維視覺測量方法可分為點結(jié)構(gòu)光模式、線結(jié)構(gòu)光模式和面結(jié)構(gòu)光模式。結(jié)構(gòu)光測量技術(shù)作為一種快速、高精度、實時性強的三維測量技術(shù),在汽車、航空、模具、醫(yī)療等領(lǐng)域均得到了廣泛的應(yīng)用。2.4Kinect獲取深度圖的原理[17]本文采用的是基于光編碼技術(shù)(lightcoding)的Kinect傳感器。Kinect有發(fā)射、捕捉等功能,它的深度攝像頭是由一個紅外投影機和紅外攝像頭組合而成的,紅外投影機發(fā)出的光線覆蓋的范圍和紅外攝像頭接收的光線覆蓋的范圍有重疊的區(qū)域,如圖2-4所示:圖2-4Kinect紅外攝像頭視角Kinect獲取深度信息是利用基于光編碼的技術(shù),紅外投影機發(fā)射一束紅外光線,經(jīng)過散射片后會分成許多束光線,這些光束聚合在一起會形成散射光斑。而紅外攝像頭可以捕獲散射光斑并且與內(nèi)部存儲的參考模式進行比較。參考模式是通過捕獲已知距離的散射光斑獲得的,并且存儲在Kinect內(nèi)部。當(dāng)紅外攝像頭捕獲的光斑的真實距離比參考模式小或者大的時候,光斑在紅外圖像中的位置將會沿著基準線有一定的移動,通過圖像的相關(guān)性過程可以測量所有光斑的移動范圍,因而形成一幅視差圖像,然后可以通過視差圖像中相應(yīng)的位移計算出每個像素點的深度距離。第3章REF_Ref168484495\h錯誤!未找到引用源。洛陽理工學(xué)院畢業(yè)設(shè)計(論文)PAGE33第3章基于深度圖像的骨架提取本章內(nèi)容主要分為兩個部分:對深度圖進行預(yù)處理,實現(xiàn)人體與背景的分割;對人體關(guān)節(jié)點進行定位,實現(xiàn)骨架提取。3.1檢測方法3.1.1傳統(tǒng)的檢測方法[18]在通過深度圖像對骨架進行提取之前,很重要的一步是探測人體在圖像中的區(qū)域,并實現(xiàn)去除背景等必要的操作。從圖像中去探測人體,是一個比較困難的問題,原因在于人體身高、體型、穿著都不一樣,就算是外形大致一樣,四肢也可以運動,相互遮擋,再加上背景的復(fù)雜性,所以難以用常規(guī)的圖像匹配的方法找出人體。目前使用的方法主要有傳統(tǒng)的檢測方法和利用深度圖實現(xiàn)背景分割法,下面對這兩種方法進行簡單的介紹。傳統(tǒng)的方法中有一種方法是人穿著特殊顏色的衣物,利用光照條件,使得人體區(qū)域和背景顏色或灰度上產(chǎn)生較明顯的差異。例如孫怡采用了基于模型和非模型的方法進行了腿部動作跟蹤,獲得圖像后,利用閾值法分割法分離出其中的人體區(qū)域。這種方法實現(xiàn)起來過程簡單,效率高,效果較好,但是對實驗環(huán)境和實驗者的穿著有一定的要求,應(yīng)用起來有一定的局限性。利用背景靜止的特性,是目前進行人體區(qū)域分割的主要方法。只要攝像機的位置不變,同時背景環(huán)境不發(fā)生變化,獲取的圖像序列中運動的區(qū)域就是人體區(qū)域,根據(jù)這個特性形成的方法主要有幀間差分法、光流法和背景差分法。幀間差分法主要是是通過對視頻序列中相鄰的兩幀或幾幀圖像對應(yīng)的像素點作差分運算,運算得到的數(shù)值的絕對值如果小于等于某個閾值,則該點為背景點,否則為運動目標(biāo)的像素點。光流法實際上是通過檢測圖像像素點的強度隨時間的變化進而推測出物體的移動速度及方向,即研究圖像灰度在時間上的變化與景象中物體結(jié)構(gòu)及其運動的關(guān)系,進而提取出運動區(qū)域;背景差分法是采用圖像序列中的當(dāng)前幀和背景參考模型比較來檢測運動物體的一種方法。這些方法在提取視頻中運動區(qū)域均有不錯的效果,但同時也存在一些問題。上述方法都是要求背景是靜止的,只要背景中有運動物體移動則會出現(xiàn)檢測失誤。同時,它們是依靠運動特征進行檢測的,不能檢測某個特定的目標(biāo)。另外,上述方法都是基于視頻序列的檢測,對于本文采用的單張深度圖像,采用上述傳統(tǒng)的檢測方法是無法解決的。3.1.2深度攝像頭實現(xiàn)目標(biāo)檢測與分割[19]深度攝像機可以測出物體與深度攝像相機之間的距離并體現(xiàn)在灰度圖像上,然后根據(jù)灰度值的差異得出距離的差異。目前用于測量深度信息的深度攝像頭主要分為兩類,一類是基于飛行時間(Time-of-flight)原理的攝像頭,它通過測量光脈沖之間的傳輸延遲時間來計算深度信息。例如MesaImagingSwissRanger4000和PMDTechnologiesCamCube2.0,根據(jù)它們的測量原理可知需要精度非常高的計時裝置,因此價格都很高,同時由于受測量環(huán)境的限制導(dǎo)致獲取的深度圖像在效果上令人不夠滿意,因此它的相關(guān)應(yīng)用和研究比較少。另一類是基于“光編碼”(lightcoding)的技術(shù),“光編碼”利用了和人眼識別物遠近相似的方法,人眼主要是依靠兩個眼睛識別物體的角度不同來判斷距離。微軟2010年發(fā)布的Kinect就是基于“光編碼”的原理,Kinect是使用一個散色片,紅外光束通過散射片后,整個散射片都向外發(fā)射角度隨機的紅外光,通過紅外光束產(chǎn)生的光斑圖案不同,來區(qū)別距離的遠近。Kinect的出現(xiàn)使得深度圖像的獲取更方便、準確,另外Kinect的價格合理,提供SDK豐富,這使得它在人機交互方面有了很多應(yīng)用。例如Xbox360體感游戲的流行,虛擬試衣鏡的應(yīng)用,對老年人實行監(jiān)護等。由于深度圖像記錄了物體到深度攝像機的距離信息,在實際使用時,只要人體前面沒有其他障礙物,就能利用深度信息將人體區(qū)域從背景中分割出來。例如K.Lothrop等利用獲取的深度信息進行人體與背景的分割,可進行手語的翻譯。M.Skubic等人利用Kinect對老人進行監(jiān)護,通過骨骼跟蹤和深度圖像的分割獲取監(jiān)護老人的步伐數(shù)據(jù),包括步長、步速、走路時間。D.Prattichizzo等人在實驗時設(shè)定手掌區(qū)域與Kinect的距離一定,根據(jù)獲取的手掌深度信息,利用標(biāo)準模板匹配算法進行手勢識別。但以上方法均存在深度值不連續(xù)、噪聲點較多等問題。3.1.3基于最優(yōu)閾值的方法[20]本項目需要在全圖中分割人體,由于人體的區(qū)域范圍較大并且手部有遮擋,這些都可能導(dǎo)致深度值并不連續(xù),噪聲點較多,而最優(yōu)閾值法可以解決這兩個問題,所以可以采用基于最優(yōu)閾值的方法將背景去除。閾值法是一種關(guān)于圖像分割的常用方法,其基本原理是根據(jù)圖像的灰度特性來確定一個灰度閾值,并將圖像中每個像素的灰度值與所確定的灰度閾值相比較,如果屬于同一個部分的像素,則表明該像素的集合就是同一個物體,但是有時候目標(biāo)區(qū)域和背景區(qū)域有相互重疊的部分,用一個灰度閾值不能完全將它們分開。因此我們需要找到一個最優(yōu)閾值Toptimal使目標(biāo)對象被錯誤劃分的概率最小,而最優(yōu)閾值法是一種常見的方法。假設(shè)有一幅含有高斯噪聲的圖像,該圖像僅包含目標(biāo)灰度值區(qū)域和背景灰度值區(qū)域,它的混合概率密度是目標(biāo)密度函數(shù)和背景密度函數(shù)之和。則混合概率密度為:(3.1)其中P1表示的是背景區(qū)域的先驗概率,P2表示的是目標(biāo)區(qū)域灰度值的先驗概率,m1表示的是背景區(qū)域的平均灰度值,s1表示的是關(guān)于平均灰度值m1的方差,m2表示的是目標(biāo)區(qū)域的平均灰度值,s2表示的是關(guān)于平均灰度值m2的方差。假設(shè)m1<m2,定義一個閾值T使得灰度值小于T的像素分割為背景而使得灰度值大于T的像素分割為目標(biāo),則錯誤的將一個目標(biāo)像素劃分為背景的概率為E1(T):(3.2)錯誤的將一個背景像素劃分為目標(biāo)像素的概率為E2(T):(3.3)因此,總的概率誤差為:(3.4)為了得到使該誤差最小的閾值,可以對式(3.4)兩邊分別對T求導(dǎo)數(shù),同時令導(dǎo)數(shù)等于零,則可以得到:(3.5)將(3.5)式代入(3.1)式,可以求得混合概率密度方程的判別式系數(shù)為:(3.6)一元二次方程在一般的情況下有兩個解,但是如果背景區(qū)域和目標(biāo)區(qū)域的方差相等,則只有一個解,即最優(yōu)閾值Toptimal(3.7)使用最優(yōu)閾值的方法對圖像進行分割后的效果圖如圖3-1所示:(a)(b)圖3-1圖像分割效果圖其中,圖3-1(a)為基于Kinect獲取的深度圖,圖3-1(b)為使用最優(yōu)閾值方法進行人體與背景分割的圖,通過圖3-1(b)可以看出使用了最優(yōu)閾值法后,可以較好的去除背景,能較完整的提取人體區(qū)域。3.2骨骼提取3.2.1人體骨架空間骨骼追蹤技術(shù)是Kinect的核心技術(shù),人體是由包括多部分骨骼架空間組成的,kinect能夠準確標(biāo)記人體的20個關(guān)節(jié)點,并對這20個點的位置進行實時追蹤。目前kinectforWindowsSDK中的骨骼API可以提供位于kinect前方至多兩個人的位置信息,包括詳細的姿勢和骨骼點的三維坐標(biāo)信息。數(shù)據(jù)對象以骨骼幀的形式提供,每一幀最多可以保存20個點。當(dāng)游戲者走進Kinect的視野范圍的時候,Kinect就可以把人體的20個關(guān)節(jié)點的位置找到,下圖3-2為kinect能夠獲取的20個骨骼點的示意圖。圖3-220個骨骼點的示意圖3.2.2關(guān)節(jié)定位[21]通過上面幾節(jié)的各種方法,基本上可以將深度圖中人體的骨架提取出來,但是之前的方法是將手部和身體部分的骨架分別進行提取的,將它們組合在一起后不是連續(xù)的骨架,為了要完整的表達出骨架大致的形狀,必需將這些骨架點用線段連接起來,同時要想準確的得到人體的骨架圖,上一節(jié)的骨架效果圖還不夠準確,我們還需要定位出人體部位的關(guān)節(jié)點。由于人體手部的大致骨架已知,因此,手部骨架的兩個端點有一個是手,另一個是與肩部較近的上臂。肩部的位置已知,但是由于二者并不相連,因此計算機不能直接確定哪個是上臂,哪個是前臂,由于要確定的點是肘關(guān)節(jié),可以根據(jù)肘部的特點來進行定位。因為肘是上臂和前臂之間的唯一關(guān)節(jié)點,可以轉(zhuǎn)動,要確定肘部的位置,就要利用這個信息。當(dāng)然手部伸直的情況肘部是不彎曲的,如果手臂是大致伸直的,就可以直接取手臂骨架曲線的中點作為肘部,如果不是,則可以利用肘部能轉(zhuǎn)動的特性找出它的位置。在確定手和肘關(guān)節(jié)位置時,可以從肩關(guān)節(jié)處開始搜索,尋找一個最近的骨架端點,那么這個點就是上臂上的一個點,該骨架線的另一端就是手的位置。然后,可以利用肘部是手部唯一的一個關(guān)節(jié)點這個信息,確定出肘關(guān)節(jié)的位置。具體步驟如下:(1)先將兩個端點中離肩關(guān)節(jié)較近的點判定為上臂上的點,較遠的點為手。(2)將骨架線上所有點對應(yīng)在實際空間中的坐標(biāo)計算出來。(3)然后在骨架線上尋找一個點,使得該點和手、肩在實際的三維空間中確定的三角形面積最大,那么可以認為這個點是手的骨架線上的轉(zhuǎn)折點,就是肘關(guān)節(jié)點。如果面積都很小,那么手部基本是伸直狀態(tài),取骨架線的中點作為肘關(guān)節(jié)。根據(jù)上面的步驟,就可以確定手和肘關(guān)節(jié)的位置。這樣手部關(guān)節(jié)點的位置也都確定了。同樣,身體其他部位的關(guān)節(jié)點也可以用這個方法來確定,當(dāng)身體腿部、膝部等大體部位的關(guān)節(jié)點確定后用直線連接起來,就可以形成比較符合人體骨架的結(jié)構(gòu)。如圖3-3最終骨架圖。(a)(b)(c)圖3-3最終骨架圖其中,圖3-3(a)為通過手臂的骨架確定了肩部、手肘、手的位置;圖3-3(b)為利用同樣的方法定位腳、膝關(guān)節(jié)等位置,再和頭部等關(guān)節(jié)點進行組合后的結(jié)果;圖3-3(c)為對圖3-3(b)進行平滑優(yōu)化,然后把相關(guān)聯(lián)的點用直線連接后形成的人體深度骨架圖。小球碰撞游戲開發(fā)4.1建立游戲模塊如圖4-1所示,為本次課題實現(xiàn)的步驟及方法。(1)首先通過體驗者站在Kinect主攝像頭前面1.5米到3米之間的位置,通過主攝像頭識別體驗者的肢體動作,進行骨骼提取分析人體動作。(2)接著通過景深攝像頭測得人距Kinect的位置,獲得景深圖像,通過數(shù)字化處理,完成碰撞小球的過程,并將碰撞過程完整的表現(xiàn)在游戲界面上。(3)體驗者可以喊出自己喜歡的顏色,或者可以根據(jù)自己喜歡的速度,小球的大小來調(diào)整小球的各種狀態(tài)。使用者使用者紅外投影機彩色攝像頭麥克風(fēng)數(shù)字化界面紅外攝像頭獲取彩色圖像聲音數(shù)據(jù)流骨骼提取人體基本特征庫骨架運動分析人體運動應(yīng)用程序圖4-1系統(tǒng)工作流程動作、語言接受感知具體控制4.2基于C#編程4.2.1定義小球模塊定義一個游戲主體,即定義一個形狀為小球的的游戲界面,其中“Circle”語句表示對小球的定義。編程如下:namespaceShapeGame.Utils{usingSystem;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Media;usingMicrosoft.Kinect;[Flags]publicenumPolyTypeCircle=0x40,//定義下落物體的類型,即為小球All=0x7f}如圖4-2所示,即為定義小球的游戲界面。圖4-2小球游戲界面效果圖4.2.2定義游戲模式此段程序?qū)ε鲎差愋瓦M行了定義,以及游戲者各個肢體的碰撞進行定義,碰撞時判斷是人體哪個部位進行碰撞。最后又定義了游戲模式,游戲模式分為三種,即無人模式、單人模式和雙人模式。[Flags]publicenumHitType{None=0x00,Hand=0x01,Arm=0x02,Squeezed=0x04,Popped=0x08}publicenumGameMode{Off=0,//定義游戲無人模式Solo=1,//定義游戲單人模式TwoPlayer=2//定義游戲雙人模式}如圖4-3所示,為碰撞球游戲的單人、雙人兩種游戲模式。圖4-3游戲模式效果圖4.2.3碰撞類型為了讓一個碰撞球進行檢測,定義了一個骨骼的列表,其中每一個骨骼由兩個關(guān)節(jié)構(gòu)成,定義分段數(shù)據(jù)結(jié)構(gòu)、關(guān)節(jié)信息,完成對骨骼的定義。當(dāng)骨骼碰撞到小球之后,對端點進行速度估計,并對碰撞小球之后做出反應(yīng),其中“0”表示下降,“1”表示跳躍,“2”表示消失,“3”表示計數(shù),即獲得相應(yīng)的分數(shù)。publicstructBone{publicJointTypeJoint1;publicJointTypeJoint2;publicBone(JointTypej1,JointTypej2){this.Joint1=j1;this.Joint2=j2;}}publicstructSegment{publicdoubleX1;publicdoubleY1;publicdoubleX2;publicdoubleY2;publicdoubleRadius;publicSegment(doublex,doubley){this.Radius=1;this.X1=this.X2=x;this.Y1=this.Y2=y;}publicSegment(doublex1,doubley1,doublex2,doubley2){this.Radius=1;this.X1=x1;this.Y1=y1;this.X2=x2;this.Y2=y2;}publicboolIsCircle(){return(this.X1==this.X2)&&(this.Y1==this.Y2);}}publicenumThingState{Falling=0,Bouncing=1,Dissolving=2,Remove=3}如圖4-4所示,為小球碰撞到人體以后做出碰撞、跳躍等反應(yīng),獲得積分等功能。圖4-4小球運動狀態(tài)效果圖4.2.4界面顯示此段是對游戲者的信息獲取的編程。包括保持跟蹤所有感興趣的骨骼信息,其中包括頭部,手部和腳部,然后是關(guān)節(jié)畫刷和骨架畫刷,以及對游戲者的顯示比例。構(gòu)造函數(shù)傳入骨骼信息,畫面上產(chǎn)生七種顏色中的一種或幾種的控制。publicclassPlayer{privateconstdoubleBoneSize=0.01;privateconstdoubleHeadSize=0.075;privateconstdoubleHandSize=0.03;privatereadonlyDictionary<Bone,BoneData>segments=newDictionary<Bone,BoneData>();privatereadonlySystem.Windows.Media.BrushjointsBrush;privatereadonlySystem.Windows.Media.BrushbonesBrush;privatereadonlyintid;privatestaticintcolorId;privateRectplayerBounds;privateSystem.Windows.PointplayerCenter;privatedoubleplayerScale;publicPlayer(intskeletonSlot){this.id=skeletonSlot;int[]mixR={1,1,1,0,1,0,0};int[]mixG={1,1,0,1,0,1,0};int[]mixB={1,0,1,1,0,0,1};byte[]jointCols={245,200};byte[]boneCols={235,160};}4.2.5語音識別模塊此段程序代碼講述了碰撞球游戲的一大亮點功能,即游戲可以識別聲音并作出相應(yīng)的反饋。例如體驗者可以大聲喊出諸如顏色、大小、快慢等單詞,小球就會變成體驗者喜歡的顏色,還可以控制小球大小,下落速度快慢等功能。//下面講述的為小球的狀態(tài)模塊模塊,諸如讓小球變得更快、更慢,或者更大、更小和最大等等。{"Faster",newWhatSaid{Verb=Verbs.Faster}},{"Slower",newWhatSaid{Verb=Verbs.Slower}},{"Bigger",newWhatSaid{Verb=Verbs.Bigger}},{"Huge",newWhatSaid{Verb=Verbs.Biggest}},{"Giant",newWhatSaid{Verb=Verbs.Biggest}},{"Smaller",newWhatSaid{Verb=Verbs.Smaller}},{"Smallest",newWhatSaid{Verb=Verbs.Smallest}},privatereadonlyDictionary<string,WhatSaid>shapePhrases=newDictionary<string,WhatSaid>{//此段代碼定義了小球下落的顏色,體驗者可以喊出自己喜歡的顏色,小球隨之變色。{"Red",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(240,60,60)}},{"Green",NewWhatSaidVerb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(60,240,60)}},{"Blue",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(60,60,240)}},{"Yellow",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(240,240,60)}},{"Purple",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(70,30,255)}},{"Pink",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(255,128,225)}},{"Dark",NewWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(40,40,40)}},{"Black",newWhatSaid{Verb=Verbs.Colorize,Color=System.Windows.Media.Color.FromRgb(5,5,5)}},{"White",newWhatSaid{Verb=Verbs.Colorize,ColorSystem.Windows.Media.Color.FromRgb(255,255,255)}},};//通過語音識別定義了小球下落的速度,或快或慢,甚至可以停止、繼續(xù)等等。privatereadonlyDictionary<string,WhatSaid>singlePhrases=newDictionary<string,WhatSaid>{{"SpeedUp",newWhatSaid{Verb=Verbs.Faster}},{"SlowDown",newWhatSaid{Verb=Verbs.Slower}},{"Stop",newWhatSaid{Verb=Verbs.Pause}},{"Continue",newWhatSaid{Verb=Verbs.Resume}},{"Play",newWhatSaid{Verb=Verbs.Resume}},{"Start",newWhatSaid{Verb=Verbs.Resume}},{"Go",newWhatSaid{Verb=Verbs.Resume}},};如下圖4-5所示,為小球根據(jù)游戲體驗者發(fā)出的stop,bigger,yellow等單詞作出反應(yīng)的游戲界面。圖4-5語音模塊效果圖4.3游戲體驗體感游戲是一個方便快捷,簡單易玩的一款新型休閑游戲。下面去感受一下,體感游戲的魅力所在。如圖4-6為碰撞球游戲整體運行界面,體驗者站在Kinect面前做出揮手,抬腿和蹦跳的動作擊打小球,根據(jù)擊打小球的顏色不同,大小不同,獲得相應(yīng)的分數(shù)。圖4-6整體效果圖如圖4-7所示,左圖為剛開始游戲界面,界面清晰,背景是草地與藍天,給人以明快清晰之感,體驗者站在Kinect設(shè)備面前1.5-3米之間準備游戲。設(shè)備識別靈敏度較高,界面當(dāng)中為體驗者的鏡像動作,即像鏡子一樣面對面的進行游戲,操作簡單,老少皆宜,都可以輕松地進行游戲。圖4-7游戲界面REF_Ref168484640\r\h錯誤!未找到引用源。REF_Ref168484646\h錯誤!未找到引用源。PAGE36第5章總結(jié)與展望5.1論文主要工作本文主要完成了以下工作:(1)總結(jié)了人體骨骼定位問題的研究現(xiàn)狀,分析了各方法的優(yōu)點和缺點,闡述了本論文的選題背景。(2)介紹了Kinect傳感器的軟硬件結(jié)構(gòu)、獲取深度圖像的基本原理和深度圖像的校正。(3)根據(jù)深度圖像的特性提出了一種基于最優(yōu)閾值的圖像分割方法,利用該方法實現(xiàn)了人體與背景的分割;使用數(shù)學(xué)形態(tài)學(xué)的方法對人體的剪影圖進行了去噪,通過Hilditch細化算法提取出了人體的骨架。(4)利用深度圖的特性識別了手臂的位置,解決了手臂的遮擋問題;利用最大三角形面積法確定了關(guān)節(jié)點,獲取了完整的人體動作狀態(tài)。對各關(guān)節(jié)定位誤差和定位時間進行了分析。5.2展望本文研究的基于Kinect的骨骼定位方法,能夠自動地、比較準確地從深度圖像中定位出人體的關(guān)節(jié)點,能解決簡單的遮擋問題,實現(xiàn)骨骼跟蹤。但是其實時性、準確性方面還有待提高。(1)定位方法方面,實驗環(huán)境下規(guī)定的是正面對著Kinect傳感器,背景相對簡單、遮擋較少、手部不交叉等情況。進一步的工作可以研究遮擋較多、有交叉、背景較復(fù)雜等情況。到目前為止沒有一種高效方法來解決此類問題。如何解決這些問題,是一個研究的新方向。(2)骨架提取方面,當(dāng)人體區(qū)域的形狀的長寬比較接近時,提取的骨架會變得較小,這也是導(dǎo)致本文中手臂關(guān)節(jié)點定位實驗發(fā)生失誤的主要原因。如何減少有用信息的丟失和消除干擾信息的條件下獲取身體部位的骨架是將來很值得研究的一個方向。(3)骨骼定位算法方面,本文的方法在提取骨架的過程中運算量比較大,精度和效率不夠高,離實時的關(guān)節(jié)點定位還有較大差距,主要是處理一張圖片的時間太長。進一步的工作可以考慮利用更多的信息去定位關(guān)節(jié)點,尋找一種合適高效的定位方法。結(jié)論結(jié)論體感技術(shù),作為一項前沿科技,勢必會在未來的社會當(dāng)中擔(dān)當(dāng)最主要的角色。隨著體感技術(shù)的日益成熟,體感外設(shè)的感應(yīng)越來越全方位,人類感官多模式互動在游戲中得以有效實現(xiàn),用戶不僅在想法上和身體動作上得以全方位參與,而且支持多用戶在線暢玩。本次課題基于體感技術(shù)的碰撞球游戲,基本上完成了任務(wù)書上的每一項任務(wù),達到了指導(dǎo)老師預(yù)期想要的成果,實現(xiàn)了單人、雙人模式下的體感小球游戲。但是,對于體感技術(shù)的應(yīng)用還有待提高,技術(shù)還稍顯不足?;隗w感技術(shù)開發(fā)的碰撞球游戲,擺脫了傳統(tǒng)意義上鼠標(biāo)和鍵盤的單一化交互方式,以玩家動作、語言等變化作為操控游戲的命令,這種游戲化的具體交互方式直接參與互動,使體驗者玩家能夠獲得更大程度的刺激和快感。體感技術(shù)碰撞小球游戲?qū)崿F(xiàn)了更加前衛(wèi)的肌體運動與精神娛樂的完美交織,既可以進行單人游戲模式,又可以進行雙人游戲模式。培養(yǎng)了協(xié)作精神和人際交往能力雙人通過游戲方式,實現(xiàn)肌體運動與精神娛樂的交織,在愉悅的氛圍中達到情緒渲染,營造一個輕松游戲氛圍。社會信息化進程的發(fā)展對人機接口、人機交互、人機和諧環(huán)境提出了更高的要求。對于我國來說,構(gòu)建人機和諧環(huán)境任務(wù)是光榮而艱巨的。參考文獻PAGE54謝辭時光荏苒,歲月如梭,轉(zhuǎn)眼大學(xué)四年美好時光即將逝去,來到了大學(xué)畢業(yè)設(shè)計的關(guān)鍵時段。本次課題終于順利完成了,實現(xiàn)了預(yù)期的效果,完成了預(yù)期的功能。在這里我要鄭重向我的畢業(yè)指導(dǎo)老師李教授表示感謝。他曾這樣說,找到工作不容易,但是順利畢業(yè)的事情更主要,我雖然不在學(xué)校,但畢業(yè)設(shè)計還是要做,并定期向李老師匯報工作(基本上是一周向老師報兩次畢業(yè)設(shè)計進度)。必要的時候需要回學(xué)校向系領(lǐng)導(dǎo)匯報進度情況。這也是我首次見到我的導(dǎo)師李教授,初次叩門,我稍顯拘謹,畢竟一直以來與李老師都是電話聯(lián)絡(luò),心里面有些忐忑,不過,相處下來,意識到李老師是一個對科研工作嚴謹,對生活態(tài)度上比較風(fēng)趣的人,他有種先入為主的感覺,對我諄諄教導(dǎo),誨人不倦。攻克了一些課題里面技術(shù)性的難題。為我修改了一些編程里面我所走的彎路,找到了最佳捷徑。讓我豁然開朗。聯(lián)想到我系對李老師委以重任,將系里科技協(xié)會交給他來指導(dǎo)是多么的明智之舉。李老師帶領(lǐng)科協(xié)曾在國內(nèi)多項比賽上拿到大獎,為計算機系甚至為院里增光添彩。在這里我要說一句,李老師您辛苦了,再次感謝李老師的指導(dǎo)!提到謝辭我不得不提到張肖馳和徐繼曉同學(xué),因為這兩個人也是給與了我極大的幫助。張肖馳同學(xué)是我的專業(yè)同學(xué),我不在學(xué)校的日子里,需要上交表格和一些材料的事,全都落在了他的肩上,有的時候甚至連他自己的都沒有完成,他總是先幫我上交材料。包括后期的功能調(diào)試,我倆可謂是廢寢忘食,享受其中。在這里我要對張肖馳說聲謝謝你了,同學(xué)。再者就是徐繼曉同學(xué),他是科技協(xié)會大三的一名同學(xué),因為主修C#編程,幫了我很多.在這里,我對徐繼曉同學(xué)表示誠摯的感謝!感謝培養(yǎng)我長大含辛茹苦的父母,使我生活無憂,安心學(xué)習(xí)!感謝我專業(yè)的老師對我的教育,使我對學(xué)科知識有了一定的了解!最后,再次感謝我的母?!尻柪砉W(xué)院四年來對我的栽培、教育!參考文獻[1]董士海.人機交互的進展及面臨的挑戰(zhàn)[J].計算機輔助設(shè)計與圖形學(xué),2004,16(1):1-13[2]徐楓,劉燁斌,戴瓊海.基于視頻的現(xiàn)實人物運動創(chuàng)作[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2012,24(1):11-13[3]李豪杰,林守勛,張勇東.基于視頻的人體運動捕捉[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2006,18(11):1645-1651[4]劉國翌,陳睿.基于視頻的三維人體運動跟蹤[J].計算機輔助設(shè)計與圖形學(xué)學(xué)報,2006,18(1):82-88[5]羅忠祥,莊越挺,潘云鶴等.基于視頻的運動捕獲[J].中國圖像圖形學(xué)報:A版,2002,7(8):752-758[6]倪晨,邱鵬,王鋒等.Kinect體感技術(shù)在人機交互中的應(yīng)用研究[J].信息技術(shù)與信息化,2013,2(15):13-15[7]馬建榮,章蘇靜,李鳳.基于體感技術(shù)的親子互動游戲設(shè)計與實現(xiàn)[J].中國電化教育,2012,9(4):17-21[8]柳克俊.關(guān)于人機交互、人機和諧環(huán)境的思考[J].計算機應(yīng)用,2005,3(10):51-57[9]譚劍波,張光劉,李琳.體感設(shè)備與被動立體相結(jié)合的人機交互方法研究[J].合肥工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2011,10(2):11-14[10]王一夫.基于計算機視覺的三維人機交互技術(shù)研究及應(yīng)用[D].西安電子科技大學(xué),2010[11]金華,華進.C#網(wǎng)絡(luò)編程技術(shù)教程[M].北京:人民郵電出版社,2009[12]BenSilverman.《Will體育》稱霸游戲史[D].2009,(4):15-18[13]李佳勛.互動式媒體-以感官多模式探討數(shù)位設(shè)計環(huán)境中人機互動界面設(shè)計與應(yīng)用實例[D].臺灣:“國立”成功大學(xué),2010[14]張凱,余新國.基于Kinect開發(fā)用于幼兒教育的手勢識別[J].現(xiàn)代教育技術(shù),2010,(8):16-19[15]任以君.運動人體的檢測,識別與跟蹤技術(shù)的研究[D].上海:上海大學(xué),2008[16]李波.健身單車體感游戲設(shè)計與實現(xiàn)[D].湖南:湖南大學(xué),2010[17]李清水,方志剛,沈模衛(wèi)等.手勢識別技術(shù)及其在人機交互中的應(yīng)用[J].人類工效學(xué),2002,8(1):27-33[18]顧立忠.基于表觀的手勢識別及人機交互研究[D].上海交通大學(xué),2008[19]任海兵,祝遠新,徐光祐等.基于視覺手勢識別的研究-綜述[J].電子學(xué)報,2000,28(2):118-121[20]周澤南.軟計算在人-機-環(huán)境系統(tǒng)中的應(yīng)用[C].人-機-環(huán)境系統(tǒng)工程研究進展,2005,13(17):403-405[21]關(guān)然,徐向民,羅雅愉等.基于計算機視覺的手勢檢測識別技術(shù)[J].計算機應(yīng)用與軟件,2013,30(1):155-159,164附錄PAGE16附錄碰撞球游戲基于C#編程主函數(shù)首先看到游戲界面當(dāng)中小球下落,體驗者做好準備,體統(tǒng)尋找并識別碰撞,根據(jù)小球的大小和顏色不同,獲取相應(yīng)的得分,顯示在游戲主界面左上角,對游戲者整個身體進行識別,對整個游戲界面所有圖形進行識別,接著根據(jù)物體下落的狀態(tài)進行判斷,如果下落物體的狀態(tài)是“bouncing”和“falling”,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論