本發(fā)明屬于虛擬現(xiàn)實(shí)技術(shù)領(lǐng)域,特別涉及一種基于位置的虛擬現(xiàn)實(shí)壓縮方法。
背景技術(shù):
虛擬現(xiàn)實(shí)(virtualreality,以下簡稱vr),在為用戶提供了顛覆性的沉浸式交互體驗(yàn)的同時(shí)也給vr系統(tǒng)本身帶來了極大的計(jì)算和渲染開銷。為了實(shí)現(xiàn)高質(zhì)量的vr應(yīng)用體驗(yàn),滿足vr應(yīng)用:1)低響應(yīng)延遲,2)高幀刷新率和3)高質(zhì)量畫面的三個性能需求,vr系統(tǒng)通常將繁重的渲染工作交給一臺強(qiáng)大的主機(jī)完成。主機(jī)實(shí)時(shí)地將渲染好的畫面幀傳輸給用戶所佩戴的頭戴式顯示器。由于vr應(yīng)用的高幀刷新率和高質(zhì)量畫面的需求,傳輸這些畫面幀通常需要消耗好幾個gbps的帶寬資源。
目前主流的無線網(wǎng)絡(luò)技術(shù)(例如802.11ac的理論峰值帶寬只有450mbps)都難以滿足如此高的傳輸帶寬需求,因此現(xiàn)在的vr系統(tǒng)通常都使用hdmi數(shù)據(jù)線來實(shí)現(xiàn)主機(jī)到頭戴式顯示器的傳輸。hdmi數(shù)據(jù)線雖然使得vr高質(zhì)量畫面幀的傳輸成為可能,但是也極大地限制了vr系統(tǒng)的移動性。并且由于用戶在使用頭戴式顯示器體驗(yàn)vr應(yīng)用時(shí)無法看到周圍的真實(shí)環(huán)境,數(shù)據(jù)線的使用也使得用戶在體驗(yàn)時(shí)存在被絆倒的風(fēng)險(xiǎn)。
為了解決使用數(shù)據(jù)線引入的問題,有的研究提出了利用高頻段無線網(wǎng)絡(luò)(60ghz毫米波)來提供足夠的傳輸帶寬資源。但是毫米波的信號容易被干擾,vr體驗(yàn)中用戶的移動也會導(dǎo)致天線的重新校準(zhǔn)。因此利用毫米波實(shí)現(xiàn)vr畫面幀傳輸時(shí)需要巧妙地假設(shè)反射板來解決上述問題。但這也無疑增加了vr系統(tǒng)部署的復(fù)雜度和成本。
除了增加無線網(wǎng)絡(luò)的帶寬資源,還可以考慮利用額外的計(jì)算開銷(壓縮、解碼)來減小傳輸帶寬的消耗。視頻壓縮已經(jīng)在流媒體領(lǐng)域長期應(yīng)用和發(fā)展,像h.264、h.265這樣的主流視頻壓縮技術(shù)已經(jīng)使得高碼率視頻流在互聯(lián)網(wǎng)中的傳輸成為可能。但由于視頻壓縮技術(shù)是針對視頻這一時(shí)間維度主導(dǎo)的資源優(yōu)化設(shè)計(jì)的,并不能直接應(yīng)用在vr場景下。因此,如何設(shè)計(jì)出面向vr應(yīng)用場景的壓縮方法就成為了解決vr系統(tǒng)高帶寬需求中至關(guān)重要的問題。
技術(shù)實(shí)現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于位置的虛擬現(xiàn)實(shí)壓縮方法,利用視頻壓縮技術(shù)針對vr應(yīng)用場景壓縮,有效降低vr系統(tǒng)的傳輸帶寬需求。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
一種基于位置的虛擬現(xiàn)實(shí)壓縮方法,利用空間中相鄰位置全景圖具有高度冗余的特性,借助視頻編碼技術(shù),在虛擬現(xiàn)實(shí)場景下按照以下步驟實(shí)現(xiàn):
步驟(1),編碼端將vr應(yīng)用的虛擬空間按照固定間隔(通常小于0.05米)進(jìn)行離散化采樣取點(diǎn),對于每個位置采樣點(diǎn),取其全景圖作為待編碼的視頻幀,同時(shí)編碼端維護(hù)每個位置采樣點(diǎn)的三維坐標(biāo)信息作為其全景圖的索引;
步驟(2),將在一定位置范圍內(nèi)相似的采樣點(diǎn)組合為一個單元,vr應(yīng)用的虛擬空間由一系列互不重合的單元組成,當(dāng)編碼端采用視頻壓縮技術(shù)時(shí),每個單元就被視為一個gop(groupofpictures,畫面組);編碼端確定單元的大小,即gop的大小,將步驟(1)得到的一系列全景視頻幀重新組合、劃分為一系列互不重合的視頻幀單元;
步驟(3),對于每一個單元,編碼端將處于正中央的位置采樣點(diǎn)的全景視頻幀編碼為該gop的關(guān)鍵幀,即i幀,該單元內(nèi)其他位置采樣點(diǎn)的全景視頻幀將被編碼為p幀,并且只將該單元內(nèi)的關(guān)鍵幀作為其唯一的參考幀;
步驟(4),編碼端按步驟(3)的編碼規(guī)則將vr應(yīng)用的虛擬空間編碼為一個或多個全景視頻流,每個位置采樣點(diǎn)的全景圖對應(yīng)這些全景視頻流中不同時(shí)刻的視頻幀,編碼端維護(hù)一個三維坐標(biāo)信息到該時(shí)間戳信息的映射,并將其和gop大小作為視頻流的元信息一并傳給解碼端;
步驟(5),解碼端根據(jù)用戶當(dāng)前位置,利用視頻流的元信息定位到覆蓋用戶當(dāng)前位置的單元,解碼端首先將該單元的關(guān)鍵幀解碼并存在內(nèi)存中,然后再根據(jù)用戶的實(shí)際位置快速解碼出對應(yīng)位置采樣點(diǎn)的p幀;
步驟(6),當(dāng)用戶離開當(dāng)前單元覆蓋范圍并移動至另一個單元時(shí),解碼端釋放內(nèi)存中當(dāng)前單元的關(guān)鍵幀并解碼下一單元的關(guān)鍵幀至內(nèi)存。
與現(xiàn)有技術(shù)相比,本本發(fā)明借助視頻壓縮技術(shù),利用近鄰位置全景圖具有大量冗余的特性,實(shí)現(xiàn)了高效的壓縮方法從而有效減少了vr系統(tǒng)畫面幀傳輸時(shí)的高帶寬需求,從而為實(shí)現(xiàn)高質(zhì)量vr畫面幀的無線傳輸提供基礎(chǔ)。相比于連線型vr系統(tǒng),本方法無需使用hdmi數(shù)據(jù)線傳輸,保證了vr系統(tǒng)的移動性也消除了用戶被絆倒的風(fēng)險(xiǎn);相比于利用60ghz毫米波傳輸,本方法無需其復(fù)雜的部署和高昂的成本。
附圖說明
圖1為本發(fā)明的離散化編碼單元示意圖(該單元采樣間隔為0.02米,覆蓋一個1米*1米的立體空間),圖中的立方體代表該位置采樣點(diǎn)的全景圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例詳細(xì)說明本發(fā)明的實(shí)施方式。
本發(fā)明一種基于位置的虛擬現(xiàn)實(shí)壓縮方法,由編碼端和解碼端合作實(shí)現(xiàn)。在vr應(yīng)用場景下,編碼端通常是負(fù)責(zé)渲染工作的主機(jī),解碼端則通常是負(fù)責(zé)顯示的頭戴式顯示器。
首先,將vr應(yīng)用對應(yīng)的虛擬空間按照固定的間隔(小于0.05米,之前的研究表明人眼無法識別這一間隔帶來的細(xì)微變化)進(jìn)行離散化取點(diǎn)。經(jīng)過離散化操作,無限的連續(xù)空間就轉(zhuǎn)換為有限的位置采樣點(diǎn)。對于每一個位置采樣點(diǎn),編碼端都將其對應(yīng)的全景圖作為待壓縮的視頻幀。用戶在虛擬空間內(nèi)的活動就簡化為了不同位置采樣點(diǎn)上全景視頻幀的切換(由于每個位置上各個方向的信息都包含在了全景圖中,用戶的頭部轉(zhuǎn)動就不會再帶來額外的計(jì)算或渲染開銷)。
由于采樣間隔十分微小,因此在一定位置范圍內(nèi)的一系列全景視頻幀將非常相似?;谝陨鲜聦?shí),本方法將這些在一定位置范圍內(nèi)相似的采樣點(diǎn)組合為一個單元(如圖1所示),vr應(yīng)用的虛擬空間就由一系列這樣互不重合的單元組成。當(dāng)編碼端采用視頻壓縮技術(shù)(例如h.264)時(shí),每個單元就被視為一個gop(groupofpictures,畫面組)。每個單元內(nèi)處于正中央的位置采樣點(diǎn)的全景視頻幀被編碼為該gop的關(guān)鍵幀(也就是i幀)。該單元內(nèi)其他位置采樣點(diǎn)的全景視頻幀則全部編碼為p幀,并且這些p幀都只依賴于其所在單元內(nèi)唯一的i幀。整個vr應(yīng)用就可以編碼壓縮為一個或多個全景視頻流,視頻流中的每一幀都對應(yīng)vr虛擬空間中唯一的一個位置。
經(jīng)過上述基于位置的vr壓縮編碼,用戶的vr應(yīng)用體驗(yàn)實(shí)際上就變成了全景視頻流的解碼播放。當(dāng)用戶在虛擬空間內(nèi)活動時(shí),解碼端只需要解碼顯示當(dāng)前位置對應(yīng)的全景視頻幀即可。由于在視頻編碼技術(shù)中只有i幀是自給的,p幀等的解碼都需要依賴其參考幀(本方法下所有的p幀都只有一個參考幀)的解碼結(jié)果。因此,解碼端在用戶進(jìn)入到一個單元所覆蓋的位置范圍時(shí)將首先解碼該單元對應(yīng)gop的關(guān)鍵幀并將其存在內(nèi)存中,然后再根據(jù)用戶實(shí)際所在位置快速解碼出其對應(yīng)的p幀。該方法實(shí)現(xiàn)了一個單元內(nèi)任意p幀的快速隨機(jī)解碼。
本發(fā)明的主要步驟具體如下:
步驟(1)編碼端對vr應(yīng)用的虛擬空間進(jìn)行離散化處理。即按照固定間隔(通常需要小于0.05米)進(jìn)行采樣取點(diǎn),得到一組位置采樣點(diǎn)集合position_set={p1,p2,p3,p4,...,pn}。每個位置采樣點(diǎn)pk都是一個唯一的三維空間坐標(biāo)[xk,yk,zk]。
步驟(2)編碼端確定單元覆蓋的空間大小(即gop的大小),將步驟(1)得到的一系列全景視頻幀重新組合、劃分為一系列互不重合的視頻幀單元(如圖1所示)。
步驟(2)對于position_set中所有元素(位置采樣點(diǎn)),編碼端都渲染出該位置唯一的全景圖,得到一組全景圖集合pano_frame_set={f1,f2,f3,f4,...,fn}。position_set和pano_frame_set構(gòu)成一個一一對應(yīng)的映射關(guān)系:pk→fk。
步驟(3)編碼端確定編碼單元的大小,此處假設(shè)大小為m。跟據(jù)編碼單元大小,將position_set和pano_frame_set分別劃分為
position_set={p11,p12,p13,...,p1m}∪{p21,p22,p23,...,p2m}∪...;
pano_frame_set={f11,f12,f13,...,f1m}∪{f21,f22,f23,...,f2m}∪...;
步驟(4)對于pano_frame_set的每一個子集,編碼端將其編碼為h.264視頻流中的一個gop。以{p11,p12,p13,...,p1m}子集和它對應(yīng)的{f11,f12,f13,...,f1m}子集為例,編碼端將處于中間位置的全景圖f1(m+1/2)編碼為該gop的關(guān)鍵幀,該子集內(nèi)剩下的全景圖f1k被編碼為p幀,并且只將該單元內(nèi)的關(guān)鍵幀作為其唯一的參考幀。
步驟(5)編碼端按照步驟(4)的規(guī)則將整個pano_frame_set編碼為一個或多個全景視頻流(每個視頻流需覆蓋虛擬空間中的連續(xù)區(qū)域)。每個位置采樣點(diǎn)的全景圖fk就對應(yīng)這些全景視頻流中不同時(shí)刻的視頻幀。編碼端維護(hù)一個position_set到該時(shí)間戳信息的映射:pk→tik。其中tik表示第i個視頻流的k時(shí)刻。
步驟(6)解碼端從服務(wù)器獲取編碼好的視頻流,該視頻流的元信息除了包含gop大小等常規(guī)信息外還包含以下映射信息:pk→fk和pk→tik。
步驟(7)為了提供、展現(xiàn)虛擬現(xiàn)實(shí)的虛擬環(huán)境,解碼端需要從視頻流中獲取用戶當(dāng)前位置的全景圖并解碼顯示。當(dāng)用戶在虛擬環(huán)境內(nèi)移動時(shí),解碼端將快速地在視頻流中跳轉(zhuǎn)、解碼顯示對應(yīng)位置的全景圖。
步驟(8)解碼端根據(jù)用戶當(dāng)前位置及映射信息快速定位并跳轉(zhuǎn)到到視頻流對應(yīng)的gop。解碼端首先將該gop的關(guān)鍵幀解碼并存在內(nèi)存中。然后再根據(jù)用戶的實(shí)際位置快速解碼出對應(yīng)的p幀。
步驟(9)當(dāng)用戶不離開當(dāng)前gop覆蓋范圍時(shí),解碼端只需要依賴內(nèi)存中的關(guān)鍵幀快速解碼出對應(yīng)p幀即可。當(dāng)用戶離開當(dāng)前gop覆蓋范圍并移動至另一個編碼單元時(shí),解碼端會釋放內(nèi)存中當(dāng)前gop的關(guān)鍵幀并解碼下一gop的關(guān)鍵幀至內(nèi)存。
綜上,本發(fā)明可降低vr系統(tǒng)的高傳輸帶寬需求,為虛擬現(xiàn)實(shí)系統(tǒng)利用當(dāng)前無線網(wǎng)絡(luò)技術(shù)實(shí)現(xiàn)高質(zhì)量畫面幀的無線傳輸提供基礎(chǔ)。本發(fā)明旨在基于虛擬現(xiàn)實(shí)中相鄰位置全景圖存在大量冗余的事實(shí),利用視頻壓縮技術(shù)實(shí)現(xiàn)面向虛擬現(xiàn)實(shí)應(yīng)用的高效壓縮方法。
綜上所述,本發(fā)明提出了一種基于位置的虛擬現(xiàn)實(shí)壓縮方法。該方法將無限的vr虛擬空間離散化為有限的全景圖集合,并利于相鄰全景圖之間存在高度冗余的特性,利用視頻壓縮技術(shù)設(shè)計(jì)了基于位置的高效壓縮方法。該方法能夠極大地降低vr系統(tǒng)的傳輸帶寬需求,同時(shí)也無需復(fù)雜、高成本的部署,對于無線vr系統(tǒng)的推廣、部署具有重大意義。