王培武
(四川大學(xué)計算機學(xué)院,成都 610065)
2016被看作虛擬現(xiàn)實技術(shù)發(fā)展元年,傳統(tǒng)媒體與新媒體都熱切關(guān)注,伴隨VR技術(shù)迅速發(fā)展,全景視頻為用戶提供了一種全新的,能夠在沉浸式場景中獲取更加直觀,臨場感很強的視覺體驗。全景視頻支持多角度播放,與傳統(tǒng)視頻內(nèi)容的被動接收方式不同,觀看者可以主動探索視頻內(nèi)容,增強臨場參與感,成為虛擬參與者。
為了更好的用戶體驗,保證4K分辨率基本上是全景視頻領(lǐng)域的最低要求,用戶通常使用VR頭戴設(shè)備進行觀看,VR頭盔一般支持3D播放模式。在傳輸由H.264/H.265編碼的4K3D全景視頻時,需要至少100Mbps的傳輸帶寬,而根據(jù)Akamai于2017年5月發(fā)布的全球《2017年第一季度互聯(lián)網(wǎng)/連接狀態(tài)報告》,中國大陸平均網(wǎng)速為7.6Mbps,顯然這對于當(dāng)前的在線全景視頻播放存在很大的困難。因此,本文提出一種基于頭盔的,有效降低數(shù)據(jù)傳輸量的全景視頻播放系統(tǒng)方法。
本文系統(tǒng)是全景視頻播放系統(tǒng),其中涉及視頻解碼,幀處理,幀播放等功能,具有較強的實時性要求。整個系統(tǒng)基于C/S架構(gòu)模式,Server端完成視頻解碼,幀處理及視頻流傳輸任務(wù),Client端負(fù)責(zé)視頻幀渲染與播放、頭盔傳感器數(shù)據(jù)上報功能。系統(tǒng)架構(gòu)如圖1所示:
圖1 全景視頻播放系統(tǒng)架構(gòu)
采用全視角傳輸方案進行全景視頻傳輸并播放時,用戶通過VR頭盔只會選取全景視頻幀中感興趣部分進行觀看,而未被觀看的部分不會被顯示,這樣會造成帶寬資源的浪費。利用頭戴設(shè)備所載傳感器的返回參數(shù),計算并預(yù)測用戶所觀看的視窗部分進而切割出,丟棄未被看到的部分,只傳輸用戶觀看部分視窗。
實驗中頭戴設(shè)備使用了Oculus Rift2。Oculus Rift 2硬件包含如陀螺儀、加速度計、磁力計等微電子機械傳感器,從DK2開始,新增頭戴設(shè)備位置跟蹤器,合并傳感器融合過程,用于確定用戶頭部在真實世界中的運動方向,并能實時同步用戶視窗。通過DK2所提供的ovr_GetTrackingState可以獲取由StatusFlags描述的預(yù)期頭部姿勢和當(dāng)前HMD跟蹤狀態(tài),Rift坐標(biāo)系統(tǒng)如圖2。頭部跟蹤數(shù)據(jù)可用于預(yù)測的特定絕對時間點,通常對應(yīng)于一幀圖像將要展示在頭盔上的未來時間。
圖2 Rift坐標(biāo)系統(tǒng)
注視點渲染技術(shù)在VR領(lǐng)域中被越來越多地提及,利用人類視覺系統(tǒng)特點,在眼睛容易聚焦的區(qū)域顯示高分辨率,在外圍區(qū)域顯示低分辨率,這樣,相對于全屏高分辨顯示就可以有效降低GPU的計算,并降低視頻流傳輸?shù)臄?shù)據(jù)量。
由于Oculus Rift2未提供用于確認(rèn)注視焦點的硬件及軟件(眼球追蹤技術(shù)),因此,本文實驗假定注視焦點位于視窗中心的圓形方框。使用OpenCV獲取用戶視窗的中心圓形區(qū)域,再將用戶視窗部分的圖像質(zhì)量整體降低,最后將截取的中心圓形貼回原位置。注釋點渲染后,如圖3:
圖3 用戶視窗的注視點渲染
基于頭盔顯示的紋理渲染方式通常屬于分屏立體渲染,相互獨立地為左右視野進行渲染。使用OpenGL中緩沖區(qū)對象(Buffer Object)技術(shù),渲染全景視頻幀。OpenGL基于C/S模式,處理數(shù)據(jù)時,需要將數(shù)據(jù)從Cli?ent端(通常為內(nèi)存)讀取至Server端(通常為顯卡顯存)中,引入緩沖區(qū)對象(VBO),可以只傳輸有修改的數(shù)據(jù)至Server端,引入頂點數(shù)組對象(VAO),使得設(shè)置頂點狀態(tài)更為方便,數(shù)據(jù)處理效率進一步提升。
等距正圓柱投影是目前使用較為廣泛的水平方向全景圖投影方法,球面與圓柱面相切于球面赤道位置,保持經(jīng)線長度不變,將經(jīng)線與緯線投影到圓柱面上,再沿圓柱面的任一母線展平。等距正圓柱投影公式為:
其中,Sm為從赤道到所求點緯度的經(jīng)線弧長;r為所求點緯線圈半徑,r0為基準(zhǔn)緯線圈半徑;m、n為經(jīng)線與緯線的長度比值;P為面積變形;ω為角度的最大形變。
用戶視窗部分的渲染過程與上述全景圖的生成過程剛好相反,全景圖的渲染是將其作為紋理,渲染到柱面模型的相應(yīng)位置。用戶視窗部分渲染后,如圖4。
圖4 用戶視窗渲染
本文實驗在CPU為Inter Core i7-3770@3.4Ghz,內(nèi)存容量8GB,顯卡NVIDIA GeForce GTX 650環(huán)境下進行,測試視頻為3D 4096×4096pixels。相關(guān)算法使用Ubuntu Linux下QT Creator、OpenCV、OpenGL3.0、SDL2、Oculus Rift DK2及其SDK編程實現(xiàn)。輸入的視頻幀如圖5,Oculus Rift2觀看的用戶視窗如圖6。
圖5 輸入的全景視頻幀
如上圖所示,輸入4K 3D全景視頻,解碼后得到全景視頻幀,利用頭戴設(shè)備的返回參數(shù),計算并預(yù)測用戶觀看的視窗部分,切割出觀看部分,保留眼睛聚焦區(qū)域的高分辨率,降低外圍區(qū)域分辨率,最后傳輸數(shù)據(jù)并渲染播放。經(jīng)實驗測試,使用頭盔設(shè)備播放4K 3D全景視頻時,數(shù)據(jù)傳輸帶寬平均為2.4Mbps,幀傳輸速率平均為44fps,有效減少數(shù)據(jù)傳輸量的同時達到預(yù)期的身臨現(xiàn)場的觀看體驗。
圖6 輸出的用戶視窗
基于頭盔顯示設(shè)備,本文實現(xiàn)了一種有效降低數(shù)據(jù)傳輸量的全景視頻播放系統(tǒng),在取得的實驗結(jié)果中,降低傳輸帶寬與視頻播放均有較好效果。隨著虛擬現(xiàn)實技術(shù)的不斷進步,尤其是眼球追蹤技術(shù)的成熟,基于頭盔顯示設(shè)備的應(yīng)用,會讓用戶有更加真實,全面的觀看體驗。
[1]楊帆,宋輝,姜忠鼎.面向頭盔顯示的加密全景視頻播放系統(tǒng)[J].微型電腦應(yīng)用,2016,32(9):1-4.
[2]呂偉龍,曾憲暉,孫亞旺.360全景視頻渲染與壓縮方法探究[J].網(wǎng)絡(luò)新媒體技術(shù),2017,6(1):38-44.
[3]張萍,陳云海,劉曉玲.全景視頻處理技術(shù)分析[J].廣東通信技術(shù),2017,2(3):11-13.
[4]江軍,李玥慶.虛擬現(xiàn)實的交互方式分析[J].集成電路應(yīng)用,2016,33(12):84-86.
[5]肖源源,王子牛.基于VC++的OpenGL紋理映射技術(shù)的研究與實現(xiàn)[J].貴州大學(xué)學(xué)報,2008(02):158-160.