文稿教程說明_第1頁
文稿教程說明_第2頁
文稿教程說明_第3頁
文稿教程說明_第4頁
文稿教程說明_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

本人時間:20145Captureandtransmissionofthree-dimensionalimagebasedonOpenNIAuthor:ZhangTutor:ShengWiththedevelopmentoftechnology,moreandmoreabundantexpressionofinformation,theneedsofinformationalsotendtodiversify.Peoplewanttobeabletoquicklyandeasilyaccessinformationthroughdata,voice,imageand,etc..3Dtechnologyinrecentyearshasdevelopedrapidly,andiswidelyusedinmilitary,medical,education,entertainment,etc..3Dtechnologybreakstheshacklesoftheplaneofthedisplay,bringingasenseofdepth,three-dimensionalvisualandimmersive.Basedonthe2Dconferencesystem,thecolorimagesanddepthimageswhicharecapturedbyOpenNIwillbeencodedandtransferred.Andthecolorimagesandassociatedper-pixeldepthinformationareusedinthegenerationthe“virtual”stereoscopic3Dimages.AfterthatthestereoscopicimageswillbedisplayedinthewaycalledRedandBlue3Ddisplay.Themainresearchcontentsare:OpenNI,XtiondeviceandJavamediaFrameworkarefirstlyWeproposeawaytocalculatetherealdepthofthesceneaccordingtothedepthimage,usingthecharacteristicsofXtiondevice.Inthatway,weusethesimplifiedDIBRtechnologytorealizetheviewpointtransformations.Distinguishingthedifferenceofthereasonoftheholeinthedepthimageandvirtualviewpointimage,weproposeawaytorepairtheholeintheimageaccordingtothereasonoftheholeformation.AndwecomparethewayofholerepairingwithotherTheframestructureof3Dconferencesysteminthecontextofthedescribedindetail,andhowtorealizethe3Dconferencesystem.Finally,wefinishareal-time3Dconferencesystem,andinthelastchapterwewillrepresentthestatisticdataobtainedbythetest.:OpenNI,JavaMediaFramework,DIBR,conference 摘 緒 研究背景和意 3D技 基于OpenNI的體感設(shè) 國內(nèi)外研究現(xiàn) OpenNI與Xtion體感設(shè) 編碼技 多傳輸技 JAVA多框 YUV格式說 3D顯示原理與常見的3D顯示技 開源會議系統(tǒng) 研究內(nèi) 結(jié) RGB-D與編碼傳輸技 OpenNI框架與Xtion體感設(shè) OpenNI圖像流 OpenNI的實 JMF編碼功能的實 JMF傳輸功能的實 資源共享方 本章小 基于DIBR方法的虛擬視點繪 基于深度圖的虛擬視點繪 DIBR原 簡化的DIBR技 空洞修 空洞的形成與常見的修復(fù)方 深度圖像的空洞修 虛擬視點圖像的空洞修 本章小 基于OpenNI的三維會議呈現(xiàn)系 三維會議系統(tǒng)的關(guān)鍵技 基于OpenNI.......................................................................................Java多框 資源共享方 簡化的DIBR技 紅藍3D顯 三維會議系統(tǒng)的實 數(shù)據(jù)流模 模 ................................................................................................................總結(jié)與展 工作總 工作期 致 參考文 緒比如3D,3D技術(shù)為人們帶來了更強的沉浸感和真實感,所以會被應(yīng)用于軍事以本將兩者結(jié)合起來,使用3D技術(shù)增強會議的真實感,利用OpenNI實3D技人們希望能夠方便快捷地通過數(shù)據(jù)、語音、圖像與等方式獲取信息。而視覺信息占近幾年,隨著3D技術(shù)突飛猛進的發(fā)展,3D技術(shù)廣泛應(yīng)用于軍事、醫(yī)學(xué)、教育、等各個方面,融入到了人們的生活當(dāng)中。3D技術(shù)突破了平面顯示屏的沉浸感的基礎(chǔ)上提高了人機之間的交互性。這使得3D技術(shù)在醫(yī)學(xué)應(yīng)用場景取得了矚目的成效[1]??偠灾?,3D技術(shù)為人們帶來的沉浸感與交互性,都是傳統(tǒng)的2D技術(shù)無法比擬的,3D技術(shù)有著更加廣泛的應(yīng)用前景Xtion作為一感設(shè)備,為用戶提供了的語音、影像輸入及處理,其中包括了對圖像的捕捉與對場景深度的分析。另外,Xtion可為用戶提供手勢識別、語音OpenNI跨平臺框架對其技術(shù)上的支撐,使得開發(fā)者可以用熟悉的開發(fā)語言,如C++、JAVA,開發(fā)在Xtion上的應(yīng)用程序。所以,Xtion適合作為3D工具以及3D技術(shù)研發(fā)的工具。OpenNIXtionOpenNIOpenNaturalInteraction(開放式的自然交互),是一個跨平臺的開源體感框架[12]。OpenNIAPI和另外一組由中間設(shè)備組件實APIOpenNIAPI開發(fā)的RGB圖像;第二部分,由一組紅外線和的深度圖像。編碼技術(shù)的主要目的在于保證重新繪制圖像時圖像的質(zhì)量,以此為前提,國際電信(ITU-T)和標(biāo)準(zhǔn)組織(ISO)負(fù)責(zé)制定了編碼標(biāo)準(zhǔn)。國際電信(ITU-T)已經(jīng)發(fā)H.26x系列標(biāo)準(zhǔn),H.26xH.261、H.262H.263與視、會議等。國際標(biāo)準(zhǔn)化組織(ISO)主要研究制定消費類應(yīng)用,制定了MPEG系列標(biāo)準(zhǔn),MPEGMPEG1、MPEG2MPEG4,MPEG系列標(biāo)準(zhǔn)主要應(yīng)用于有線電視網(wǎng)(CATV),以及電纜網(wǎng)絡(luò)。由于ITU-T與ISO這兩個國際組織的基如聯(lián)合小組(JVT),該小組定義了H.264編技術(shù),這種技術(shù)在MPEG系列標(biāo)準(zhǔn)中又被稱為MPEG4-Part10或MPEG4高級編(AVC)三維數(shù)據(jù)量龐大,需要進行高效的壓縮編碼。目前主要基于已有圖像編碼標(biāo)準(zhǔn),例如MPEG-X與H.26X系列標(biāo)準(zhǔn)對三維進行壓縮。編碼標(biāo)準(zhǔn)化工作的基于需求分析以及前期的探索研究,多視點被廣泛認(rèn)為是3DV系統(tǒng)中有效的三維場景表示方法,因此MPEG3DAV小組于2004年開始準(zhǔn)備多視點編碼(Multi-viewCoding,MVC)的標(biāo)準(zhǔn)化工作。2005年,3DAV小組開始接受MVC相關(guān)技MVC的標(biāo)準(zhǔn)化工作正式開始。2006年,MPEGMVC作為擴展H.264/AVC標(biāo)準(zhǔn)之中,并將標(biāo)準(zhǔn)化工作移交JVT。自此,在每三個月一次的JVT會議中,國內(nèi)外研究機構(gòu)紛紛提交技術(shù)提案,不斷改進MVC參考軟件模型JMVM(JointMultiviewModel)。MVC標(biāo)準(zhǔn)化工作已于2008年初步完成,并起草得到聯(lián)合草案。出于標(biāo)準(zhǔn)化工作計劃以及市場接受度方面的考慮,目前H.264/AVC的MVCslice級及以上部分的改動,而不包括宏塊及以下部分相關(guān)技術(shù)。目前主要集中在深度估計與虛擬視圖合成兩個方面,同時也對多視點+深度格式數(shù)三維編碼結(jié)束后需要傳輸?shù)?DV系統(tǒng)終端。三維傳輸技術(shù)發(fā)展經(jīng)歷了模擬廣播、數(shù)字廣播、與基于IP網(wǎng)絡(luò)的流傳輸三個階段。隨著IP網(wǎng)絡(luò)傳輸技術(shù)的蓬勃發(fā) 務(wù)。與此同時,也已出現(xiàn)2.5G與3G移動通信網(wǎng)絡(luò)中基于IP的服務(wù)。這里不再贅比,傳輸多信息所需要的帶寬也是原來的數(shù)百倍,數(shù)千倍。多應(yīng)用的另一大特塞,致使多信息的連續(xù)性受到破壞,所以對多的實時傳輸并不適用,流迫的需求下應(yīng)運而生。實時傳輸協(xié)議(RTPReal-TimeTransportProtocol,RTP)是針對Internet上多數(shù)據(jù)流的一個處于應(yīng)用層的傳輸協(xié)議。實時傳輸協(xié)議(RTP)是由互聯(lián)網(wǎng)專家任務(wù)組(IETF)RFC1889發(fā)布。RTP的工作目的是在多點傳輸(多播)或單點(單播)中,提供時間信息流同步,但RTP本身并不提供可靠地傳輸機制,流量控制和擁塞機制,這些功能都靠RTCP來提供服務(wù)[4]。SIP(SessionInitiationProtocol)是一個應(yīng)用層的信令控制協(xié)議。用于創(chuàng)建、修改和釋放一個或多個參與者的會話。這些會話可以是Internet多會議、IP或多分SIP的一個重要特點是它不定義要建立的會話的類型,而只定義應(yīng)該如何管理會話。有點播以及語音、和Web會議JAVA多框Java多框架為基于時間的信息提供統(tǒng)一的框架結(jié)構(gòu)和相應(yīng)的協(xié)議[5]。這些分多格式比如AIFF,AU,AVI,GSM,MIDI,MPEG,QuickTime,RMF,通過Java平臺的優(yōu)勢,開發(fā)者可以利用Java多框架提供的API編程接口,處般的開發(fā)者而言,可以利用Java多框架編寫程序,進而、處理、顯示或是多文件處理內(nèi)容,甚至是在JMF中添加新的處理機制[18]。為了理解JMF的原理,可以將JMF與日常生活中用到的多設(shè)備進行對比。比基于時間的。當(dāng)使用VCR時,通過插入帶為VCR提供了一個多流。如圖1.1,JMF利用了相同的基礎(chǔ)模型。數(shù)據(jù)源像帶一樣壓縮了流,器像VCR一樣提供處理和控制流的機制[19]。JMF和顯示多文件也同樣需要恰當(dāng)?shù)妮斎肱c輸出設(shè)備,比如,麥克風(fēng)、機、音響等。CCD攝影機進行取像,YUV色彩空間表示。YUV格式的好處在于可以向后兼容黑白電視[13],因為如果電視只接收到Y(jié)YUV色彩空間的重要性是它的亮YUV格式通常有兩大類:打包(packed)格式和平面(planar)YUV分量[Y1,U1,Y2,V1][Y3,U3,Y4,V3]每個中括號內(nèi)都表示對原圖像兩個像素的采樣情況,YiiY分量。Ui和Vi表示對第i個像素的U和V分量??梢钥闯雒績蓚€像素進行一次信號U和信號V的采樣。65mm左右,所以在實際中觀察物體時,人的左右眼觀察到的景象具有細(xì)微的差別。景的深度信息,從而獲得現(xiàn)實場景的縱深感[16]。下面將介紹常見的3D顯示技術(shù)。3D顯示技術(shù),主要是把原始圖像光信息分離成不同的光譜,然后分以透過紅片,右眼的藍色鏡片可以透過藍片。紅片與藍片雖然是觀察3D3D3D3D3D技術(shù)[14]3D顯示3D技術(shù)屬于主動收到幀畫面;同理當(dāng)顯示設(shè)備右眼圖像的時候,快門式3D眼鏡只允許右眼接收到由于快門3D技術(shù)需要顯示頻率120Hz的顯示屏以及與之配套的眼鏡,不適合適用。與之相比色差式3D技術(shù),只需要價格低廉的眼鏡,就可以體驗3D效果,適合是用戶可以選擇使用不同種類的協(xié)議,比如標(biāo)準(zhǔn)的XMPP(ExtensibleMessagingandPresenceProtocol)SIP(SessionInitiationProtocol),甚至是一些私人專有的,比如雅Windows系統(tǒng),蘋果系統(tǒng),Linux系統(tǒng)。大部分的系統(tǒng)代碼都是用Java語言編寫的,但是代碼中還是包括了一些用C++寫的native方法。JitsiJava語言編寫的,所以在某種程度上符合了會議系統(tǒng)的第二個目標(biāo)。因為JavaRuntimeEnvironment本身提供了跨平臺的運JavaRuntimeEnvironment無法支持的,比如從網(wǎng)絡(luò)攝像頭數(shù)據(jù)的部分。Java并不支持對頭的操作,所以在不同的平臺上要使用不同的工具來操作頭。比如,在Windows系統(tǒng)上使用DirectShow,在蘋果系統(tǒng)上使用QTKit,在Linux系統(tǒng)上使用“forLinux2”??偨Y(jié)起來,會議系統(tǒng)Jitsi擁有如下幾個特點,各部分功能的代碼相對獨立;常運行;會議系統(tǒng)的某些功能容易關(guān)閉或者開啟,方便開發(fā)者進行調(diào)試。本文首先總結(jié)了國內(nèi)外3D技術(shù)和編碼與傳輸技術(shù)的研究現(xiàn)狀,之后調(diào)研了OpenNI場景三維數(shù)據(jù)的優(yōu)勢。并提出要利用OpenNI場景數(shù)據(jù)為會議系統(tǒng)提供實時的深度圖像與RGB圖像,最終實現(xiàn)3D會議系統(tǒng)的目標(biāo)。利用深度圖像對RGBDIBR算法中加入了本文中深度值與實際深度的轉(zhuǎn)換函數(shù)。并且解決在此過出現(xiàn)的兩種空洞現(xiàn)象,在利用色差3D顯示原理,并將虛擬視點圖像與原始的RGB圖像合成紅藍3D圖在緒論中,總結(jié)了國內(nèi)外3D技術(shù)和編碼與傳輸技術(shù)的研究現(xiàn)狀,在此基礎(chǔ)上,對畢設(shè)用到的Java多框架與開源會議系統(tǒng)Jitsi進行了介紹。OpenNIXtion體感設(shè)OpenNI的使用流程進行了簡單說明,在此基礎(chǔ)上詳細(xì)講解了在3D會議系統(tǒng)中如何使用OpenNI獲取場景三維數(shù)據(jù)之后說明了在3D會議3D會議系統(tǒng)需求的資源共享方法。DIBR技術(shù)原理,本文Xtion體感設(shè)備的使用對RGB圖像進行視點轉(zhuǎn)換。在Xtion深度圖像的過與虛擬視點圖像轉(zhuǎn)化的在第四章中,首先對在3D會議系統(tǒng)中使用的技術(shù)與本文方法進行了總的類進行了劃分與說明。最后給出了對系統(tǒng)的,證明了3D會議系統(tǒng)的實1.7RGB- 與編碼傳輸技然用戶界面來更加自然的和計算機交互。Kinect和WaviXtion就是這種設(shè)備。OpenNIAPIAPI接口的目的在于形成一個標(biāo)準(zhǔn),持:1.語音和語音命令識別,2.手勢識別,3.身體運動追蹤OpenNI提供了一組基于體感設(shè)備實現(xiàn)的API和另外一組由中間設(shè)備組件實現(xiàn)的APIOpenNIAPI開發(fā)應(yīng)用OpenNI兼容的應(yīng)用程序。OpenNI的這套標(biāo)準(zhǔn)化API使得開發(fā)者可以編寫程序利用體感設(shè)備并處理場景的圖像數(shù)據(jù),很方便的處理場景。本文使用Xtion在PC端通過OpenNI實現(xiàn)場景的彩2.1OpenNI2.1OpenNI以為用戶提供API。使用普通的機只能得到一般的彩像,而Xtion深度機無論在任何的光照條件下,都可以在獲得彩像的同時,獲得被測物體到頭的深度信息。測量深光,通過測量時間差計算出設(shè)備與目標(biāo)物體之間的距離。Xtion體感設(shè)備是通過PrimeSense公司開發(fā)的光編碼技術(shù)(LightCoding)來獲得深度信息的。本質(zhì)上講,LightCoding技術(shù)理論,是利用連續(xù)光(近紅外線)對測量空間進行編碼,經(jīng)感應(yīng)器編碼的光線,交由運算進行后,生成一幅具有深度信息的圖像。Xtion就是以紅外線發(fā)出人眼看不見的第一級鐳射光,透過鏡頭前的光柵,將鐳射可以通過OpenNI獲取場景的深度圖像。圖2.3展示了Xtion的原理。2.3XtionOpenNI圖像流現(xiàn)如今,OpenNIXtionPCAPI,本文使用的Xtion系統(tǒng)即是在PC端通過OpenNI框架來實現(xiàn)場景中深度圖像和彩像的,從而為后續(xù)工作的開展打下基礎(chǔ)。在場景的三維數(shù)據(jù)的過的重要步驟如下:JavaXtioninitialize()方法對其進行初始化。在此過將會載入所有與OpenNI設(shè)備相關(guān)的驅(qū)動,并且檢測可用的OpenNI設(shè)備。擇使用的OpenNI設(shè)備。具體的做法是使用enumerateDevices(),列出所有可用的OpenNI設(shè)備,再通過其對應(yīng)的URI地址與設(shè)備進行連接。JavaOpenNI的設(shè)備對象不僅可以URI連接或是關(guān)閉設(shè)備。它還為用戶提供了查詢和修改設(shè)備參數(shù)信息的方法。如果用戶需要通過OpenNI設(shè)備流,就需要在對應(yīng)的設(shè)備上流(深度流或是彩流)。設(shè)備對象,另一個就是用戶希望創(chuàng)建的流類型。流類型有三類,RGB流、圖像的頻率和圖像的格式。對于RGB流來說,圖像格式包括JPEG流與流到流數(shù)據(jù),需要添加Frame。Frame可以返回每一幀,將流以字節(jié)流會議系統(tǒng)中的main()方法中初始化OpenNI,加載需要的動態(tài)庫與相關(guān)設(shè)備動,之后列出系統(tǒng)可以檢測到的設(shè)備,如果沒有檢測到OpenNI設(shè)備就會結(jié)束程序,否則,根據(jù)設(shè)備的URI地址,進行設(shè)備連接。因為在3D會議系統(tǒng)中,需要同時獲取場景的RGB圖像與深度圖像,所以我們要使用一個OpenNI設(shè)備對象構(gòu)造彩像視相同的,第二個流類型是不同的,分別是Color類型和Depth類型。創(chuàng)建兩種流后,要對兩種流分別進行參數(shù)設(shè)置,因為考慮到流的同步問題,所以要采用相同頻率與相同的圖像分辨率,除此之外,對于Color類型的流,我們使用RGB格式。為了可以獲取每一幀,并對其進行處理,需要對實例化的流類進,每一個實例化的流對象只能添加一次,在3D會議系統(tǒng)中,我們要分別對彩像流與深度圖像流添加。并且重寫方法,分別處理每一幀彩像與深度圖像。流是以字節(jié)流的方式、小尾端的格式提供給開發(fā)者的。我們在實現(xiàn)3D會議系統(tǒng)的過,也是按照字節(jié)流的順序保存圖像的。如果需要停止對流,就要先移除對流的,再關(guān)閉流。最終結(jié)束整個程序。流OpenNI的實講解在會議系統(tǒng)中OpenNI的具體實現(xiàn)。在3D會議系統(tǒng)的實現(xiàn)過,OpenNI場景三維信息主要涉及兩個類,如圖2.5,是兩個類的類圖。在類圖中列出了主要用到的變量與方法。第一個類是OpenniApplication類,它的主要變量是設(shè)備對象、流的分辨率、流頻率流程,首先實例化OpenniApplication類對象,之后調(diào)用初始化方法,由于每一個3D視頻會議系統(tǒng)只涉及使用一個OpenNI設(shè)備,所以默認(rèn)使用檢測到的第一個OpenNI設(shè)備。也就是說,在初始化的方法中加入了對OpenNI設(shè)備的檢測這一步驟,如果沒有檢測到任何OpenNI設(shè)備,則會返回false,意味著初始化失敗。相反,如果在初始化方法中檢測到了可用的OpenNI設(shè)備,則會將這個設(shè)備對象賦值給OpenniApplication類的設(shè)備參數(shù)。在創(chuàng)建流之前,我們可以先與將流有關(guān)參數(shù)賦值給OpenniApplication類中的變量。之后在調(diào)用OpenniViewer 類創(chuàng)建流時,如果流的參數(shù)值不是NULL,則會直接調(diào)用OpenniViewer的方法,設(shè)置流的參數(shù)。量有流和幀,主要的方法有創(chuàng)建流、設(shè)置流參數(shù)、開始流的采集、結(jié)束流和添加流的。在OpenniViewer類的構(gòu)造方法中,有OpenniApplication對象的參數(shù),也就是說在創(chuàng)建流時,需要用到設(shè)備對象。并且如果在創(chuàng)建流之前,OpenniApplication對象中與流參數(shù)有關(guān)的變量已被賦動的調(diào)用。在開始流之前,需要調(diào)用添加的方法,對流進行,如圖2.6所示,JMF中的編碼功能與功能是以插件的形式提供給用戶的。編碼許用戶控制處理的過程,編提供給用戶EncodingControl和DecodingControl兩個對利用getSupportedInputFormats()getSupportedOutputFormats()方法獲取編碼插件支持的編碼或是的輸入和輸出的格式。在用戶獲取編碼插件支持的格式以后,從中選取需要的格式,并且使用2.6JMFJMFjavax.media.rtp,javax.media.rtp.eventjavax.media.rtp.rtcp,這三個包中定義了與RTP相關(guān)的API,開發(fā)者可以使用相應(yīng)的方法對RTP流進行傳輸或者。開發(fā)者還可以通過JMF的插件對RTP支持的格式進行擴展。2.7如圖2.7,對于接收到的數(shù)據(jù),開發(fā)者有3種處理方法。第一種是對數(shù)據(jù)進行處理,將處理后的數(shù)據(jù)進行保存;第二種是接收到的數(shù)據(jù);最后一種是對數(shù)據(jù)不做任何處理,直接保存在本地。比如,將RTP的API應(yīng)用于會議中,用戶可以聽見并回答RTPAPI作為數(shù)據(jù)的發(fā)送方,可以發(fā)送到的數(shù)據(jù)或是本地的數(shù)據(jù)。如圖2.8。2.82.9JMFRTP的框架結(jié)構(gòu)圖。JMFRTPAPI設(shè)計比較完善,可以滿處理RTP數(shù)據(jù)。下面是RTP操作的具體流程。使用SessionManager創(chuàng)建,初始化并開始一次會話使用DataSource(到的數(shù)據(jù)或是本地多數(shù)據(jù))構(gòu)造Processor對象調(diào)用通過SendStream的start()和stop()方法控制傳輸?shù)拈_始和結(jié)束之后,SessionManager會作為發(fā)送方,對會話進行發(fā)送。當(dāng)傳輸結(jié)束之后,SendStream被釋放,SessionManager又會變?yōu)榻邮辗剑却硪欢说捻憫?yīng)。2.9RTPJavastatic變量是在編譯時就分配好內(nèi)存空間。在運行時無論生成多少實例,static變量的值都是唯一的,開發(fā)者可以用類名直接調(diào)用static變量??梢詫⒉氏衽c深度圖像存入static變量中,使用的時候直接調(diào)用覆蓋的圖像資源。可以在程序中創(chuàng)建一個專門保存圖像的類,此類為部分提供set()方法,為編碼需要或者寫入時,只需要調(diào)用相應(yīng)方法,即可使用資源。傳統(tǒng)的Java的IO操作是基于字節(jié)的,所以速度緩慢。本文要介紹的方法,是在JDK1.4NIO操作。NIO(buffer)(Channel)和選擇時操作直接轉(zhuǎn)操作系統(tǒng),使Java的IO速度得以提高。在實現(xiàn)的過,可以為彩色圖像設(shè)計大小為320*240*3的字節(jié)數(shù)組作為彩像的通道。為深度圖像設(shè)計大小為320*240的字節(jié)數(shù)組作為深度圖像的通道。在編碼與傳輸部分需要使用這部分資源時,可以直接通道中的內(nèi)容,改善了原有的IO操作的性能,并且經(jīng)過測試,此方案的三的效率穩(wěn)定,并且NIO中提供對通道加鎖的操作,可以滿足每一幀的處OpenNIXtion體感設(shè)備獲取深度圖像的原理。對OpenNI的使用流程進行了簡單說明,在此基礎(chǔ)上詳細(xì)講解了在3D視頻會議系統(tǒng)中如何使用OpenNI獲取場景三維數(shù)據(jù)。之后說明了在3D會議系統(tǒng)中的資源進行數(shù)據(jù)交流,所以在2.6小節(jié)提出了三種資源共享的方法,并選擇了符合3D會議系統(tǒng)需求的資源共享方法。DIBR方法的虛擬視點繪的公式對RGB圖像進行視點轉(zhuǎn)換,本文提出了深度值與實際深度的轉(zhuǎn)化公式。DIBR要用戶提供場景的某一視點的彩像和與圖像對應(yīng)的深度信息。簡單的來說,DIBR視點合成技術(shù)可以理解成如下兩個步驟:首先,原始的點被投影到3D世界,在這3D空間的點再被投影到另一個圖像平面,這個圖像平面可以代表一個虛擬機圖像平面[15]。這種圖像平面的變換稱作3D圖像變換。下面是具體的公式推導(dǎo)。不妨假設(shè)m是三點M在第一個照相機的平面中的投影,??′是點M在第二個照相機的平面中的投影。假設(shè)世界坐標(biāo)系等于第一個相機的坐標(biāo)系,兩個相機的投??? ??′? 第二個等式中,4*4的矩D包含了旋轉(zhuǎn)矩陣R和位移矩陣t,矩D表示了第二個圖像平面與世界坐標(biāo)系的轉(zhuǎn)換關(guān)系。3*3A代表了相機內(nèi)參數(shù)矩陣,P3*4的單??= ??′??′=????′?????1??+ 3D圖像變換公式,可以用來產(chǎn)生與已知圖像相關(guān)的任的內(nèi)參數(shù)3D空間的點的位置與深度已知,便可以根據(jù)公3.4合成3.1如圖3.1,位移感知方法中,兩臺相機的CCD傳感器位移距離h,匯聚距離????。由于兩臺相機是對稱放置的,他們的CCD感應(yīng)器與鏡頭的位置的相對位移相等。 ???=??+ 示左右兩個虛擬機的內(nèi)參數(shù)矩陣。 ????????1=

=??+ ???????=??(??+[0])+ 0如果假設(shè)兩臺相機的相對位置只存在水平位移 ???=?? + 其中??=[0 ???=??+????????+?,???= 水平方向的相機位移????等于相機距離????的一半,如果將距離帶有方向,則公式如下?????= +2h依賴于選擇的匯聚距離??????′=??′′h?=??? ??在基于深度圖像的虛擬視點的繪制(DIBR)過,會產(chǎn)生一些問題,例如于第三個問題,將在3.2.2節(jié)與3.2.3節(jié)加以討論。為了保證3D會議中每一幀圖像的處理速度,實際應(yīng)用中將使用簡化的技術(shù)[7]。下面將對此方法進行介紹3.2如圖3.2,為觀察者在顯示器前觀察的俯視圖,坐標(biāo)為(-e,0)和(e,0)的兩個點代表觀察者的雙眼。直線Y=D代表了顯示器所在的平面,顯示器所在的平面定義為零像的坐標(biāo)都為(x,D)。凸出顯示器之前,那么令雙眼的視差小于0,相反如果希望表示一個物體凹入顯示器之內(nèi),那么令雙眼的視差大于0。如果已知??(????,Y)點,只需要計算虛擬視點??′(????+??,通過相似三角形,如圖3.4。我們可以列出表達式:?????????= 深度。將公式3.12進行一步推導(dǎo),得到視差W的表達式:??=?????× 3.3為了將公3.13應(yīng)用到程序中,以RGB圖像的視點轉(zhuǎn)換,仍然需要解決兩個素為單位的像素差。在3D會議系統(tǒng)中,解決這個問題的方法是用視差W除以一

W=

但是我們從深度圖像中獲取的深度值為0到255的數(shù)值,而不是實際的深度文根據(jù)Xtion體感設(shè)備深度圖像的有效范圍在0.5米到5米,這一使用特性,將2550.55??=5?5?0.5× depth為深度圖像中的深度值,d為場景的實際深度??梢姰?dāng)depth數(shù)值為0時,d空洞問題一直伴隨著DIBR技術(shù),在本文中不僅在對RGB圖像進行視點轉(zhuǎn)換時會Xtion體感設(shè)備獲取場景深度圖像時也會出現(xiàn)空洞現(xiàn)象。本節(jié)將根據(jù)DIBR技術(shù)所生成的虛擬視點圖像中,會存在一些或大或小的無填充空白區(qū)域,通體在生成的虛擬視點中出來了,投影時虛擬視點中新位置的像素點無法在原視3.5,場景中AB,AB離觀察者更近,觀察者左眼能觀察到兩條BA遮擋無法被看到。而在右眼中應(yīng)當(dāng)能觀察到兩條綠線范圍內(nèi)的物體,可見物體B在左眼中無法看到的部分在右眼中出3.5 ea基于快速行進的修復(fù)算法[10],此修復(fù)算法基于的思想是,先處理待OpenCV計算一張圖像的時間為20毫秒,符合深度圖像的實時性。另外,本文中的深度圖3.7第一組圖的第二張,桌子左側(cè)邊緣出現(xiàn)空洞。所以3.6的方法可以更快的完成空洞的填補,使用本文方法平均耗時為20毫秒而使用OpenCV的算法需要31毫秒。(a)RGB圖 (c)OpenCV算法修 (d)本文算法修D(zhuǎn)IBR技術(shù)引起的。主要原因是因為雙眼視差的存在,有一些點會被右眼觀察到,但不會被左眼看見,所以利用DIBR技術(shù)將左眼的RGB圖像轉(zhuǎn)換為了符合會議系統(tǒng)的幀速需求,我們選用在3.2.1節(jié)中提到的第一種空洞修補的紅藍3D圖像。(a)RGB圖 (d)紅藍3D圖3.8本章首先解釋了傳統(tǒng)的DIBR技術(shù)原3.2.2小節(jié)根據(jù)Xtion體感設(shè)備的使用特性,提出了根據(jù)深度圖像求解實際深度的方法,在此基礎(chǔ)上應(yīng)用了簡化的DIBR技術(shù)對RGB圖像進行視點轉(zhuǎn)換。在3.2.2小節(jié)與3.2.3小節(jié)Xtion深度圖像的過與虛擬基于OpenNI的三維會議呈現(xiàn)系三維會議系統(tǒng)的關(guān)鍵技需要的庫文件,并且重新改寫數(shù)據(jù)的方式。需要說明的是會議系統(tǒng)Jitsi使用的是JAVA語言,而OpenNI需要用C語言來APIJni(JAVA本地調(diào)用)Java1.1開始,JavaNativeInterface(JNI)JavaJava代碼和其他語言寫的代碼進行交互。OpenNISDK在2.2版本之后提供相應(yīng)的JNI代碼,所以使用的時候,只要將OpenNI的相關(guān)庫文件以jar包的形式添加到庫中就可以了。之后列出系統(tǒng)可以檢測到的設(shè)備,如果沒有檢測到OpenNI設(shè)備就會結(jié)束程序,否則,根據(jù)設(shè)備的URI地址,進行設(shè)備連接。因為在3D會議系統(tǒng)中,需要同時獲取場景的RGB圖像與深度圖像,所以我們要使用一個OpenNI設(shè)備對象構(gòu)造彩像流要對兩種流分別進行參數(shù)設(shè)置,因為考慮到流的同步問題,所以要采用相同的式。為了可以獲取每一幀,并對其進行處理,需要對實例化的流類進行,每一個實例化的流對象只能添加一次,在3D會議系統(tǒng)中,我們要分別對 現(xiàn)3D會議系統(tǒng)的過,也是按照字節(jié)流的順序保存圖像的。如果需要停止對視頻流,就要先移除對流的,再關(guān)閉流。最終結(jié)束整個程序。在本文中,我們使用到的是RGB格式的流,大小為320*240,每秒鐘30幀。每一幀所占空間為320*240*3。深度流的大小為320*240,與彩像中的每一點的深度相對應(yīng),取值范圍是0~255,速度也是每秒30幀。由于OpenNI中提供深度圖像與彩像的同步機制,所以每次到的深度圖像與彩像也是同一時刻的畫面在進行編碼時我們采用YUV格式的圖像要利用上文提到的公式對RGB格式Java多框有針對3D的特點對Java多框架進行修改,所以在此直接使用Java多框架提供的API。JMF中的編允許用戶控制處理的過程,編提供給用戶EncodingControlDecodingControl兩個對象。這兩者提供給用戶調(diào)整編碼參數(shù)的方法,用戶可以自行修getSupportedInputFormats()方法和getSupportedOutputFormats()方法獲取編在用戶獲取編碼插件支持的格式以后,從中選取需要的格式,并且使用使用SessionManager創(chuàng)建,初始化并開始一次會話使用DataSource(到的數(shù)據(jù)或是本地多數(shù)據(jù))構(gòu)造Processor對象調(diào)用通過SendStream的start()和stop()方法控制傳輸?shù)拈_始和結(jié)束之后,SessionManager會作為發(fā)送方,對會話進行發(fā)送。當(dāng)傳輸結(jié)束之后,SendStream被釋放,SessionManager又會變?yōu)榻邮辗?,等待另一端的響?yīng)。Javastatic變量是在編譯時就分配好內(nèi)存空間。在運行時無論生成多少實例,深度圖像存入static變量中,使用的時候直接調(diào)用覆蓋的圖像資源??梢栽诔绦蛑袆?chuàng)建一個專門保存圖像的類,此類為部分提供set()方法,為編碼需要或者寫入時,只需要調(diào)用相應(yīng)方法,即可使用資源。傳統(tǒng)的Java的IO操作是基于字節(jié)的,所以速度緩慢。本文要介紹的方法,是在JDK1.4NIO操作。NIO(buffer)(Channel)和選擇時操作直接轉(zhuǎn)操作系統(tǒng),使Java的IO速度得以提高。在實現(xiàn)的過,可以為彩色圖像設(shè)計大小為320*240*3的字節(jié)數(shù)組作為彩像的通道。為深度圖像設(shè)計大小為320*240的字節(jié)數(shù)組作為深度圖像的通道。在編碼與傳輸部分需要使用這部分資源時,可以直接通道中的內(nèi)容,改善了原有的IO操作的性能,并且經(jīng)過測試,此方案的三的效率穩(wěn)定,并且NIO中提供對通道加鎖的操作,可以滿足每一幀的處W=

D為零視差平面的深度,d為物體深度,e為雙眼之間的距離,??????????為一個像素對應(yīng)實際的物理尺寸,需要根據(jù)屏幕的大小與分辨率來確定。因為從深度圖像0255Xtion??=5?5?0.5× 的3D會議系統(tǒng)中。過配戴紅藍3D眼鏡,就可以觀察到場景的立體效果。有如下關(guān)系,RGBout=(Rl,Gr,Br)。就是說將左眼彩的紅色通道提取出來,右眼彩像的綠色與藍色通道提取出來,賦值給合成的紅藍圖像,最后便可得到紅藍3D三維會議系統(tǒng)的實圖4.2會議系統(tǒng)框如圖4.2,可以按照開源會議系統(tǒng)為用戶提供的服務(wù),簡單的將其劃分為三部分,多種協(xié)議服務(wù)、多服務(wù)和UI界面服務(wù)。在畢設(shè)中,針對多服務(wù)部分進圖4.3多服務(wù)結(jié)塊、模塊與數(shù)據(jù)流模塊。畢設(shè)主要針對其中模塊與數(shù)據(jù)流模塊進行了修改,下面將根據(jù)模塊闡述3D會議系統(tǒng)的實現(xiàn)方法。資源交流通暢,比如,在會議系統(tǒng)剛剛啟動時,數(shù)據(jù)流模塊會對的設(shè)備進行嘗 Format類中。Stream類,Datasource類。OpenNIURI地址。主要的方法有設(shè)置可用設(shè)備列表、設(shè)置或者獲取URI地址和設(shè)置或者獲取設(shè)備對象。Manager類的主要功能是,保存可以使用的OpenNI設(shè)備列表和正在使用的OpenNI設(shè)備。Manager類的存在主要是為了保留原會議系統(tǒng)的設(shè)備檢測功能。在會議系統(tǒng)啟動的時候就會進行一次設(shè)備的檢統(tǒng)代碼時,將Manager類改進成可以保留已連接的OpenNI設(shè)備地址。在會議進行4.5CaptureDevice類的主要變量是幀的地址、設(shè)備支持的格式和設(shè)備狀態(tài),CaptureDevice類中出現(xiàn)了幀的地址,如果將這個long型的數(shù)值轉(zhuǎn)化為指向字用了Jni實現(xiàn)的native方法(native表示用其他語言編寫的方法之后通過Jni進行調(diào)用)。除此之外,獲取幀地址的方法也是用Jni實現(xiàn)的native方法。 CaptureDevice類還會將設(shè)備支持的格式保留下來,可以方便用戶進行格式切換。另外,CaptureDevice類還會將設(shè)備的狀態(tài)作為變量保存下來,比如設(shè)備是否連接。量都是以數(shù)組的形式保存在Format類中的,因為在使用會議功能的時候,要OpenNI支持的格式,一方面要獲取編碼與傳輸支持的格式,并且將兩者進行比較。Format類的主要方法是將格式從String類型轉(zhuǎn)換到需要的參數(shù)值的方法Format類在連接編碼傳輸部分與部分起到重要作用Stream類的主要變量有時間戳和幀的緩沖區(qū),主要的方法有幀與為緩沖區(qū)中的幀加時間戳。Stream處理即將編碼與傳輸?shù)膸?,為其加成正在處理的幀與即將處理的幀這樣做可以提高并行效率,進而實現(xiàn)3DDatasource類也會在編碼模塊與傳輸模塊中被使用,在緒論中介紹Java多框架時,數(shù)據(jù)源主要就是指Datasource類。Datasource類主要的變量有CaptureDevice對象、Manager對象、Stream對象和幀速率。前三者在本小節(jié)詳細(xì)介紹過,它們的存在可以為Datasource類提供獲取設(shè)備與幀的方法,并且可以將幀到緩沖區(qū)中。Datasource類中的創(chuàng)建編碼傳輸?shù)牧鞯姆椒ň褪腔谶@三個對象。除此之外,幀速率的調(diào)節(jié)也是依靠Datasource類實現(xiàn)的。4.2.2?,F(xiàn)了利用OpenNI對場景的三維數(shù)據(jù),并且通過重寫方法,實現(xiàn)了對每一幀OpenniApplication類,它的主要變量是設(shè)備對象、流的分辨率、流化OpenniApplication類對象,之后調(diào)用初始化方法,由于每一個3D會議系統(tǒng)只涉及OpenNIOpenNI設(shè)備。也就是說,在初OpenNIOpenNI設(shè)備,則會返回false,意味著初始化失敗。相反,如果在初始化方法中檢測到了可用的OpenNIOpenniApplication類的設(shè)備參數(shù)。在創(chuàng)建視OpenniViewer類創(chuàng)建流時,如果流的參數(shù)值不是NULL,則會直接調(diào)用OpenniViewer的方法,設(shè)置流的參數(shù)。開始流、結(jié)束流和添加流的。在Open

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論