王一帆, 王昊, 孫浩楠, 塵原, 霍俊彥, 王豪, 張偉,3
(1. 西安電子科技大學(xué)通信工程學(xué)院, 710071, 西安; 2. 阿里巴巴集團(tuán), 310000, 杭州;3. 鵬城實(shí)驗(yàn)室人工智能研究中心, 518055, 廣東深圳)
作為一種新興的以云計(jì)算為基礎(chǔ)的游戲方式,云游戲[1]引起了人們的極大關(guān)注[2]。該場(chǎng)景下,云端服務(wù)器完成游戲的復(fù)雜運(yùn)算與渲染,并將3D游戲場(chǎng)景壓縮為2D視頻流,然后通過(guò)高速寬帶網(wǎng)絡(luò)傳輸?shù)酵婕矣螒蚪K端。終端只需要基本的視頻解壓能力和可靠的網(wǎng)絡(luò)即可享受到良好的游戲體驗(yàn)。與傳統(tǒng)游戲模式相比,云游戲擺脫了終端對(duì)硬件的依賴,在很大程度上減少了玩游戲的設(shè)備成本。一些工作[3]提高了云游戲視頻傳輸?shù)目煽啃院头€(wěn)定性,但是高幀率以及高分辨率的游戲視頻也對(duì)傳輸帶寬提出了更高的要求[4],例如分辨率為720P、幀率為60 幀/s 的游戲視頻需要15 Mb/s的傳輸帶寬,而對(duì)于4K視頻則需要40 Mb/s的傳輸帶寬才可滿足用戶的質(zhì)量需求[5]。傳輸數(shù)據(jù)量大、占用帶寬高等問(wèn)題是限制云游戲進(jìn)步和發(fā)展的重要因素。因此,如何提高云游戲視頻的編碼碼率、減小帶寬,是目前云游戲亟待解決的一大問(wèn)題。
一種直觀的方式是采用傳統(tǒng)的視頻壓縮技術(shù),如高效視頻編碼(H.265/HEVC)[6]等,通過(guò)重復(fù)利用視頻間的相同像素信息來(lái)去除冗余。自20世紀(jì)80年代以來(lái),傳統(tǒng)視頻編碼技術(shù)蓬勃發(fā)展并持續(xù)不斷優(yōu)化:文獻(xiàn) [7-9]通過(guò)優(yōu)化編碼過(guò)程中的濾波、預(yù)測(cè)等模塊來(lái)提高編碼效率;文獻(xiàn) [10-11]提出了快速模式判決算法來(lái)降低編碼復(fù)雜度;文獻(xiàn) [12-13]建立了更加準(zhǔn)確的率失真模型以對(duì)碼率控制進(jìn)行改進(jìn)。此外,隨著新興視頻的發(fā)展,文獻(xiàn) [14-15]還總結(jié)了面向屏幕視頻內(nèi)容的專門編碼工具。然而,傳統(tǒng)的視頻壓縮技術(shù)及其改進(jìn)雖然對(duì)運(yùn)動(dòng)緩慢單一的平移運(yùn)動(dòng)具有良好的作用,卻無(wú)法對(duì)相機(jī)旋轉(zhuǎn)發(fā)揮很好的估計(jì)和補(bǔ)償作用[16]。在云游戲,尤其是第一人稱云游戲中,玩家的視角變化非常頻繁,游戲視頻往往包含更復(fù)雜的旋轉(zhuǎn)動(dòng)作。此外,游戲視頻相鄰幀之間存在劇烈變化的大范圍運(yùn)動(dòng),傳統(tǒng)的亞像素精度運(yùn)動(dòng)估計(jì)也無(wú)法精準(zhǔn)地捕捉到相鄰幀之間的變化。因此,直接采用傳統(tǒng)的視頻編解碼技術(shù)壓縮游戲視頻編碼,殘差較大,碼率較高,僅通過(guò)調(diào)整幀率、分辨率和編碼碼率等參數(shù)[17-19],難以實(shí)現(xiàn)有效的編碼優(yōu)化。
近年來(lái),一些工作基于感興趣區(qū)域(region of interest, ROI)對(duì)云游戲視頻的編碼開(kāi)展了碼率控制。文獻(xiàn) [20]采用顯著性圖和優(yōu)先級(jí)圖合成游戲注意力地圖,并利用其設(shè)置編碼參數(shù),實(shí)現(xiàn)高質(zhì)量的關(guān)注區(qū)域和較低質(zhì)量的非關(guān)注區(qū)域以適應(yīng)碼率限制;文獻(xiàn) [21]針對(duì)游戲視頻提出了基于多目標(biāo)優(yōu)化的編碼樹(shù)單元級(jí)別的感知比特分配方法,優(yōu)化了感興趣區(qū)域的質(zhì)量同時(shí)兼顧了質(zhì)量波動(dòng)。結(jié)合云游戲視頻的內(nèi)容特性,根據(jù)特定的準(zhǔn)則將編碼比特向重要性高的感興趣區(qū)域傾斜,可以大幅度提高云游戲視頻的感知質(zhì)量。
與由真實(shí)攝像機(jī)捕獲的傳統(tǒng)視頻序列不同,云游戲視頻是計(jì)算機(jī)生成視頻,可以直接從游戲引擎中獲得對(duì)象信息等圖形渲染上下文輔助編碼。文獻(xiàn) [22]將來(lái)自游戲引擎的部分信息饋送到視頻編碼器中以繞過(guò)運(yùn)動(dòng)估計(jì)過(guò)程,降低計(jì)算復(fù)雜度,從而提高視頻編碼速度;文獻(xiàn) [23]利用游戲開(kāi)發(fā)者為游戲?qū)ο蠓峙涞暮?jiǎn)單標(biāo)簽提取ROI信息,在視頻幀中的不同區(qū)域分配不同數(shù)量的比特來(lái)優(yōu)化視頻編碼,提高視頻的感知質(zhì)量。此類方法由于需要游戲引擎信息,往往只適用于少量開(kāi)源游戲平臺(tái)。此外,由于云游戲序列是計(jì)算機(jī)根據(jù)客戶端對(duì)虛擬相機(jī)的控制指令在服務(wù)器端渲染而成的,可以額外獲得游戲序列中逐幀的相機(jī)運(yùn)動(dòng)信息。一些工作[16,24-26]嘗試?yán)眠@一特點(diǎn),通過(guò)基于深度圖的圖像繪制技術(shù)(depth image based rendering , DIBR)[27],將已知圖像映射到其他待編碼幀處,對(duì)映射后圖像與原始圖像的差值圖像進(jìn)行編碼傳輸。相比于傳統(tǒng)的運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,DIBR作為一種基于圖像的渲染技術(shù),可以利用逐像素深度以及變換矩陣更為準(zhǔn)確地抓取復(fù)雜運(yùn)動(dòng)間的變換信息,降低碼率。然而,此類方法需要額外的比特去傳輸深度信息,這在有限帶寬的高傳輸壓力下往往是不可接受的。同時(shí),該方法需要虛擬相機(jī)的內(nèi)參進(jìn)行二維成像平面的投影,由于商業(yè)化電子游戲的版權(quán)保護(hù),內(nèi)參無(wú)法被直接獲得,這使得利用三維投影變換對(duì)云游戲編碼優(yōu)化受到了開(kāi)源云游戲平臺(tái)的限制。這些都會(huì)增加優(yōu)化方案的實(shí)施難度。并且,上述工作僅對(duì)傳統(tǒng)編碼的輸入進(jìn)行預(yù)處理,并未對(duì)編碼過(guò)程進(jìn)行實(shí)質(zhì)性地優(yōu)化。文獻(xiàn) [28]利用相機(jī)旋轉(zhuǎn)信息,采用深度學(xué)習(xí)的方法生成增強(qiáng)參考幀,并將其添加到參考幀列表以對(duì)現(xiàn)有視頻編解碼器進(jìn)行優(yōu)化。深度學(xué)習(xí)的使用在提升性能的同時(shí)也在一定程度上增加了編碼復(fù)度,且該工作僅針對(duì)相機(jī)旋轉(zhuǎn)下的游戲視頻進(jìn)行了評(píng)估,具有一定的局限性。
基于此,利用云游戲視頻易于獲得全局相機(jī)運(yùn)動(dòng)信息這一特點(diǎn),本文提出了一種三維投影變換輔助的云游戲編碼優(yōu)化算法。該算法首先對(duì)游戲場(chǎng)景中世界坐標(biāo)系下一點(diǎn)投影到二維平面的過(guò)程進(jìn)行詳細(xì)分析,并據(jù)此三維投影變換過(guò)程建立約束,對(duì)相機(jī)內(nèi)參進(jìn)行估計(jì)。接著,利用估計(jì)的內(nèi)參以及已知的攝像機(jī)運(yùn)動(dòng)信息,利用圖像單應(yīng)性生成與當(dāng)前待編碼幀平行的輔助參考幀,將其添加到編碼器的參考幀列表中參與編碼。由于生成的輔助參考幀與待編碼幀之間只有平移運(yùn)動(dòng),所以更有利于傳統(tǒng)的運(yùn)動(dòng)估計(jì)和補(bǔ)償。本文算法不需要已知的相機(jī)內(nèi)參與深度信息,使利用三維投影變換對(duì)云游戲編碼優(yōu)化變得一般化,同時(shí)引入了額外的輔助參考幀參與編碼,以編碼塊為單位降低編碼殘差,大幅度提高了壓縮效率??紤]到H.265/HEVC為目前云游戲應(yīng)用中的主流視頻編碼方式,本文將所提優(yōu)化算法應(yīng)用到HEVC中并與原始HEVC進(jìn)行比較。實(shí)驗(yàn)結(jié)果表明,本文算法在云游戲視頻上平均可以實(shí)現(xiàn)8.14%的BD-rate增益,在僅有相機(jī)旋轉(zhuǎn)的情況下,BD-rate 可達(dá)-24.68%。同時(shí),還在一定程度上降低了編碼復(fù)雜度,編碼時(shí)間平均縮短5.34%。此外,本文算法相比于HEVC 屏幕內(nèi)容編碼擴(kuò)展(HEVC screen content coding, HEVC-SCC)也有超過(guò)20%的BD-rate性能增益。
游戲場(chǎng)景中的一點(diǎn)要經(jīng)過(guò)多個(gè)坐標(biāo)空間變換才能實(shí)現(xiàn)從三維空間坐標(biāo)到二維像素坐標(biāo)的映射。以Unity游戲引擎為例,假設(shè)三維場(chǎng)景中一點(diǎn)的世界坐標(biāo)為Pworld=(xw,yw,zw,1),其具體的三維投影變換的過(guò)程如圖1 所示。
圖1 游戲中的三維投影變換
由于玩家觀察場(chǎng)景時(shí)總是從攝像機(jī)的視角出發(fā),攝像機(jī)決定了引擎渲染游戲的畫面,因此首先需要將世界空間下的點(diǎn)Pworld通過(guò)觀察矩陣Mview變換到觀察空間中
(1)
式中:R和T分別表示從世界坐標(biāo)系到相機(jī)坐標(biāo)系的旋轉(zhuǎn)和平移變換。
將該點(diǎn)從觀察空間變換到裁剪空間,以對(duì)相機(jī)的可見(jiàn)范圍進(jìn)行設(shè)置。裁剪空間由6個(gè)裁剪平面包圍的視錐體決定,其中近裁剪平面和遠(yuǎn)裁剪平面決定了攝像機(jī)可以看到的深度范圍。為投影到二維平面進(jìn)行準(zhǔn)備,通過(guò)投影矩陣Mproject得到頂點(diǎn)在裁剪空間中的坐標(biāo)Pclip=(xc,yc,zc,wc)
Pclip=MprojectPview=
(2)
式中:V′、r、N、F分別表示相機(jī)的視場(chǎng)角、近裁剪平面的寬高比、視錐體近裁剪平面和遠(yuǎn)裁剪平面距離相機(jī)的距離;cot是余切函數(shù)。由式(2)可知,裁剪坐標(biāo)wc與zv密切相關(guān),且隨著像素的變化而變化。
完成所有裁剪工作后,需要把視錐體投影到屏幕空間來(lái)生成對(duì)應(yīng)的2D坐標(biāo)。首先,通過(guò)
(3)
利用透視除法將視錐體變換到一個(gè)立方體內(nèi),得到歸一化的設(shè)備坐標(biāo)PNDC=(xNDC,yNDC,zNDC,1),其中xNDC,yNDC,zNDC∈ [-1,1]。接著,利用
(4)
通過(guò)簡(jiǎn)單的視口變換Mviewport,根據(jù)圖像的寬度W和高度H得到對(duì)應(yīng)的像素坐標(biāo)Ppixel=(u,v,1)。
通過(guò)上述步驟實(shí)現(xiàn)了從攝像機(jī)視角出發(fā),將場(chǎng)景從三維空間映射到二維畫面的過(guò)程。那么,從屏幕上一點(diǎn)投影到世界空間的過(guò)程則為上述三維投影變換的逆過(guò)程。因此,在已知深度信息以及相機(jī)內(nèi)外參(內(nèi)參即投影矩陣,外參即觀察矩陣)的情況下,世界坐標(biāo)系下一點(diǎn)從一幅視圖映射到另一幅視圖的變換過(guò)程為式(5)
(5)
式中:上標(biāo)1和2分別表示兩幅視圖對(duì)應(yīng)的參數(shù)信息。實(shí)際上,由于大部分商業(yè)化電子游戲平臺(tái)都不開(kāi)源,相比于游戲開(kāi)發(fā)者可以很容易地從游戲引擎中拿到圖像渲染上下文,用戶往往很難獲得相機(jī)的內(nèi)參進(jìn)行上述視圖間的變換。因此,如何利用已知視圖對(duì)相機(jī)內(nèi)參進(jìn)行一定程度的估計(jì),對(duì)有效利用游戲中的三維投影變換是至關(guān)重要的。
本文在相機(jī)旋轉(zhuǎn)下,基于三維投影變換對(duì)相機(jī)內(nèi)參進(jìn)行了一定的估計(jì)。依據(jù)式(2),假設(shè)待估計(jì)的相機(jī)投影矩陣Mproject為
(6)
式中:f1、f2、c1、c2分別對(duì)應(yīng)于投影矩陣中的4個(gè)參數(shù)。相機(jī)旋轉(zhuǎn)下的Mview可表示為
(7)
式中:θx、θy、θz分別表示繞x、y、z軸的旋轉(zhuǎn)角。
(8)
(9)
結(jié)合式(5),可對(duì)f1、f2建立3個(gè)約束
(10)
通過(guò)min((A-B)2+(C-B)2+(A-C)2),采用經(jīng)典的非線性最小二乘法便可求解得到f1以及f2??紤]到游戲視頻,尤其是第一人稱游戲視頻,往往包含大量的相機(jī)旋轉(zhuǎn)運(yùn)動(dòng),采用本文算法可以很容易估計(jì)出f1以及f2。為提升匹配的準(zhǔn)確性,本文采用紋理相對(duì)豐富的已知視圖進(jìn)行匹配。此外需要注意的是,當(dāng)相機(jī)僅繞x軸或y軸旋轉(zhuǎn)時(shí),目標(biāo)函數(shù)僅為f2或f1的相關(guān)函數(shù),因此采用多軸復(fù)合旋轉(zhuǎn)運(yùn)動(dòng)可以更加方便快捷地計(jì)算出f1、f2。
基于此,通過(guò)抓取游戲視頻中相機(jī)旋轉(zhuǎn)的兩幀,采用本文提出的基于三維投影變換的相機(jī)內(nèi)參估計(jì)算法,便可通過(guò)上述過(guò)程求得相機(jī)投影矩陣的f1、f2參數(shù)。利用圖像單應(yīng)性[30],可在已知相機(jī)運(yùn)動(dòng)信息的前提下,僅利用f1、f2實(shí)現(xiàn)對(duì)已知視圖的旋轉(zhuǎn)變換。不同坐標(biāo)表示的其他游戲引擎內(nèi)參也可通過(guò)類似方法得到。
在游戲序列中,視角通常會(huì)保持移動(dòng),尤其是在第一人稱游戲中,相機(jī)的運(yùn)動(dòng)往往是旋轉(zhuǎn)角度更大、移動(dòng)頻率更高的旋轉(zhuǎn)和平移的復(fù)合運(yùn)動(dòng),然而傳統(tǒng)運(yùn)動(dòng)估計(jì)對(duì)相機(jī)旋轉(zhuǎn)較為敏感。本節(jié)利用第2節(jié)中基于三維投影變換的相機(jī)內(nèi)參估計(jì)算法,結(jié)合圖像單應(yīng)性特點(diǎn),利用視圖間的旋轉(zhuǎn)信息生成與當(dāng)前待編碼幀平行的輔助參考幀,然后將其添加到編碼器的參考幀列表中參與編碼。由于輔助參考幀利用相機(jī)的旋轉(zhuǎn)信息進(jìn)行了視角校正,與待編碼幀之間只有平移,因此更有利于進(jìn)行運(yùn)動(dòng)估,從而減少編碼殘差,優(yōu)化編碼性能。
相機(jī)在發(fā)生旋轉(zhuǎn)前后呈現(xiàn)的兩幅視圖具有圖像單應(yīng)性[30],因此相機(jī)旋轉(zhuǎn)運(yùn)動(dòng)下從圖像1到圖像2的映射可由式(5)簡(jiǎn)化為
(11)
式中:H表示3×3的單應(yīng)性矩陣;K、V分別表示3×3的相機(jī)內(nèi)參矩陣(投影矩陣)和視口變換矩陣。
由第1節(jié)中Mviewport和Mproject的表示形式,不難得到相機(jī)旋轉(zhuǎn)下的V
(12)
相機(jī)旋轉(zhuǎn)下的K可表示為
(13)
且其參數(shù)可通過(guò)第2節(jié)的內(nèi)參估計(jì)算法得到。
因此,給定參考視圖與相機(jī)旋轉(zhuǎn)矩陣,即可依據(jù)式(11)在不使用深度圖的情況下實(shí)現(xiàn)從參考視圖到任意目標(biāo)視圖的空間映射?;诖?本文選擇每個(gè)編碼視頻序列(CVS)中質(zhì)量較高的幀內(nèi)隨機(jī)接入點(diǎn)(IRAP)幀作為映射過(guò)程的參考幀,利用上述公式通過(guò)圖像單應(yīng)性校正相機(jī)旋轉(zhuǎn),并應(yīng)用三角形重心插值算法[31]模擬游戲引擎的渲染過(guò)程,生成與當(dāng)前CVS中其他待編碼幀平行的輔助參考幀。由于旋轉(zhuǎn)之后視圖之間只有平移,本文算法更有利于進(jìn)行運(yùn)動(dòng)估計(jì),從而減少壓縮殘差所需的比特。此外,當(dāng)游戲序列包含單一的相機(jī)旋轉(zhuǎn)運(yùn)動(dòng)時(shí),生成的輔助參考幀與待編碼幀同視點(diǎn)同方向,可以最大程度地減小編碼殘差。相比于傳統(tǒng)編碼器,本文算法額外增加的比特開(kāi)銷只有相機(jī)的旋轉(zhuǎn)信息與兩個(gè)內(nèi)參,且內(nèi)參通常對(duì)整個(gè)序列保持相同并且只需要傳輸一次。
利用生成的輔助參考幀更新編碼器的參考幀列表,以提供更好的運(yùn)動(dòng)估計(jì)和補(bǔ)償。以標(biāo)準(zhǔn)Low-Delay-P (LDP)配置下HEVC參考軟件HM為例,參考幀列表最多包含4個(gè)以圖像序列號(hào)(POC,用符號(hào)IPOC表示)從大到小順序排列的參考幀。本文將生成的輔助參考幀添加到原始參考幀列表的第二個(gè)位置,第一個(gè)位置的原始參考幀保持不變以保持較強(qiáng)的相關(guān)性,除最后一幀外的其余原始參考幀按順序依次排列在輔助參照幀之后。更新過(guò)程見(jiàn)圖2。輔助參考幀的 POC 設(shè)為-1,與原始參考幀進(jìn)行區(qū)分。如果原始參考幀列表包含POC為3、2、1、0的參考幀,則更新后參考幀的POC依次為3、-1、2、1。
圖2 參考幀列表更新示意
為驗(yàn)證所提云游戲編碼優(yōu)化算法的有效性,將本文算法加入到HEVC參考軟件HM16.16中,從編碼性能和編碼復(fù)雜度兩方面與原有的HEVC編碼算法進(jìn)行對(duì)比。
由于云游戲低時(shí)延的要求,本文以標(biāo)準(zhǔn)LDP為配置,在Intel (R) Core (TM) i7-9700KF CPU @ 3.60 GHz處理器上,以4個(gè)量化參數(shù)22、27、32、37進(jìn)行編碼。參數(shù)IntraPeriod、intrqpoffset以及GOPSize分別設(shè)置為8、0和4,編碼幀數(shù)設(shè)置為96。本文選擇編碼序列中每個(gè)CVS中的IRAP幀作為映射參考幀,用以生成優(yōu)化算法中相同CVS中其他幀的輔助參考幀。
由于標(biāo)準(zhǔn)測(cè)試序列大部分為不含相機(jī)運(yùn)動(dòng)信息的自然序列,本文使用Air Light VR(ALVR)軟件將SteamVR游戲流式傳輸?shù)娇蛻舳霜?dú)立的VR頭戴式顯示器中,通過(guò)捕獲視頻幀及其對(duì)應(yīng)的相機(jī)運(yùn)動(dòng)信息,建立包含渲染圖像和相機(jī)運(yùn)動(dòng)的云游戲視頻測(cè)試序列。本文將VR游戲的里程碑之作The Lab作為游戲數(shù)據(jù)庫(kù),選取其中具有不同內(nèi)容特征的5個(gè)場(chǎng)景下的20個(gè)YUV 8 bit序列作為測(cè)試序列。每個(gè)場(chǎng)景下的序列分別包含4種不同的大幅度相機(jī)運(yùn)動(dòng)方式,每個(gè)序列的分辨率為1 024×1 024。圖3 為5個(gè)場(chǎng)景的示意。
(a)場(chǎng)景1
本小節(jié)首先通過(guò)Bj?ntegaard-Delta rate(BD-rate,用符號(hào)ΔR表示)和Bj?ntegaard-Delta PSNR(BD-PSNR,用符號(hào)ΔP表示)[32]評(píng)估所提優(yōu)化算法在YUV上的編碼性能。BD-rate表示在相同編碼質(zhì)量下節(jié)省了多少碼率,負(fù)值表示所提算法具有更高的編碼效率;BD-PSNR表示在相同碼率下可以獲得的質(zhì)量增益,正值表示所提算法具有更優(yōu)異性能。
將本文算法與原始HEVC進(jìn)行比較,結(jié)果如表1 所示。相比HEVC,本文算法額外的比特增加只有相機(jī)的旋轉(zhuǎn)信息與兩個(gè)內(nèi)參,因此本文在表1的計(jì)算中忽略這部分開(kāi)銷。
從表1 可知,從均值來(lái)看,相比于原始HEVC,本文算法在相同視頻客觀質(zhì)量下可以節(jié)省8.14%的比特率,在相同的碼率下可以實(shí)現(xiàn)0.313 8 dB的性能增益。針對(duì)不同的相機(jī)運(yùn)動(dòng)方式,本文算法都有良好的編碼性能增益。其中,在相機(jī)單獨(dú)旋轉(zhuǎn)運(yùn)動(dòng)下,BD-rate和BD-PSNR性能可達(dá)-24.68%和0.989 2 dB。這是因?yàn)樵趩我坏南鄼C(jī)旋轉(zhuǎn)運(yùn)動(dòng)下,本文算法生成的輔助參考幀與待編碼幀同視點(diǎn)同方向,最大程度地減小了編碼殘差,提升了編碼性能。此外,相機(jī)運(yùn)動(dòng)的幅度與快慢也會(huì)影響算法的性能。例如,在單獨(dú)旋轉(zhuǎn)下,相比于其他4個(gè)場(chǎng)景,場(chǎng)景4的相機(jī)旋轉(zhuǎn)幅度更大,變化更劇烈,原始HEVC無(wú)法對(duì)如此大范圍的運(yùn)動(dòng)進(jìn)行很好的運(yùn)動(dòng)估計(jì)和補(bǔ)償,而本文算法克服了運(yùn)動(dòng)范圍與幅度的限制,利用三維投影變換較為準(zhǔn)確地捕獲了大運(yùn)動(dòng)下視圖間像素的運(yùn)動(dòng),因此可以獲得-29.96%的BD-rate性能。綜上可知,本文算法在不同游戲場(chǎng)景不同運(yùn)動(dòng)下都可以實(shí)現(xiàn)良好的壓縮性能。
為了對(duì)編碼后的視頻進(jìn)行進(jìn)一步的視覺(jué)客觀評(píng)價(jià),表2給出了量化參數(shù)(QP)為22、27、32、37編碼后的視頻結(jié)構(gòu)相似度(structural similarity, SSIM)和多尺度結(jié)構(gòu)相似度值(multi-scale structural similarity,MS-SSIM)??梢钥闯?本文算法編碼后的視頻相比于HEVC仍然沒(méi)有視頻質(zhì)量的降低。在達(dá)到相同客觀質(zhì)量的情況下,本文算法所需的碼率更低,本文算法的優(yōu)越性得到了進(jìn)一步驗(yàn)證。
表2 4個(gè)QP編碼后視頻的結(jié)構(gòu)相似度和多尺度結(jié)構(gòu)相似度
同時(shí),考慮到云游戲是提供計(jì)算機(jī)生成文本、圖形和動(dòng)畫等屏幕內(nèi)容的典型應(yīng)用之一,本文算法與HEVC 屏幕內(nèi)容編碼擴(kuò)展(HEVC screen content coding, HEVC-SCC)[15]進(jìn)行了對(duì)比,結(jié)果如表3所示。可以看出,盡管HEVC-SCC可以利用云游戲視頻具有重復(fù)圖案、高度飽和度或者有限數(shù)量顏色等不同于自然視頻的特性對(duì)其實(shí)現(xiàn)良好的壓縮,卻無(wú)法應(yīng)對(duì)頻繁視角變化的情況。相比之下,本文算法充分考慮了云游戲的應(yīng)用特性,實(shí)現(xiàn)了任意視角與運(yùn)動(dòng)下良好的壓縮性能,相比于HEVC-SCC有超過(guò)20%的BD-rate性能增益,從而進(jìn)一步證明了本文算法相比于目前云游戲應(yīng)用中主流視頻編碼方式的優(yōu)越性。
表3 本文算法與HEVC-SCC平均壓縮性能的比較
由于本文算法與文獻(xiàn) [28]算法都利用了相機(jī)運(yùn)動(dòng)信息來(lái)優(yōu)化編碼器的參考幀列表,以此提高云游戲視頻的編碼效率,所以本文算法與文獻(xiàn) [28]算法進(jìn)行了比較,亮度分量上的壓縮性能結(jié)果如表4所示。由于文獻(xiàn) [28]算法僅針對(duì)相機(jī)旋轉(zhuǎn)下的視頻序列進(jìn)行了訓(xùn)練,所以僅對(duì)單獨(dú)旋轉(zhuǎn)下的序列采用文獻(xiàn) [28]中訓(xùn)練好的模型進(jìn)行測(cè)試??梢钥闯?本文算法在5個(gè)場(chǎng)景下的壓縮性能都遠(yuǎn)遠(yuǎn)高于文獻(xiàn) [28]算法,平均可以實(shí)現(xiàn)-24.12%的BD-rate和1.005 0 dB的BD-PSNR性能增益。這是因?yàn)楸疚牡臏y(cè)試序列運(yùn)動(dòng)幅度更大,視角變換更加劇烈,采用文獻(xiàn) [28]中增強(qiáng)參考幀的方法已經(jīng)無(wú)法從根本上對(duì)如此劇烈變化的運(yùn)動(dòng)實(shí)現(xiàn)更好的運(yùn)動(dòng)估計(jì)與補(bǔ)償效果,而本文算法利用三維投影變換生成與當(dāng)前待編碼幀更相似的輔助參考幀,進(jìn)一步降低了劇烈運(yùn)動(dòng)下運(yùn)動(dòng)估計(jì)的難度,且大幅度減少了編碼殘差,從而實(shí)現(xiàn)了良好的壓縮效果。
表4 本文算法與文獻(xiàn) [28]算法壓縮性能的比較
生成的輔助參考幀、原始參考幀以及待編碼幀如圖4所示。這里原始參考幀指相關(guān)性最強(qiáng)的前一幀的重構(gòu)幀??梢悦黠@看出,生成的輔助參考幀實(shí)現(xiàn)了視角的校正,相比于原始參考幀,與待編碼幀之間只有簡(jiǎn)單的平移運(yùn)動(dòng),更容易進(jìn)行運(yùn)動(dòng)估計(jì)。利用該輔助參考幀可以使編碼器更好地估計(jì)云游戲視頻中復(fù)雜的全局相機(jī)旋轉(zhuǎn)以及劇烈變化的大范圍運(yùn)動(dòng),提高云游戲的編碼效率。
(a)原始參考幀
各場(chǎng)景下,預(yù)測(cè)塊采用輔助參考幀進(jìn)行預(yù)測(cè)的輔助參考幀命中率如圖5所示。可以看出:生成的輔助參考幀深度參與了編碼,其命中率隨運(yùn)動(dòng)狀態(tài)的不同而變化,最高可超過(guò)50%;輔助參考幀的命中率呈規(guī)律性分布,每個(gè)CVS中距離映射參考幀(即IRAP幀)越近的幀,采用輔助參考幀進(jìn)行預(yù)測(cè)的命中率越高。這是由于距離較遠(yuǎn)的幀與映射參考幀之間的場(chǎng)景重復(fù)度降低,大量未在映射參考幀中出現(xiàn)的新場(chǎng)景逐漸暴露出來(lái),導(dǎo)致生成的輔助參考幀與待編碼幀相似度降低,從而降低了命中率。
圖5 使用輔助參考幀進(jìn)行預(yù)測(cè)的比例
設(shè)THEVC為原始HEVC的編碼時(shí)間,Tproposed為本文算法的編碼時(shí)間(包括額外生成輔助參考幀的時(shí)間以及將輔助參考幀添加到參考幀列表進(jìn)行編碼的時(shí)間),則編碼復(fù)雜度衡量指標(biāo)ΔT可表示為
ΔT=(Tproposed-Toriginal)/Toriginal
(14)
ΔT為負(fù)表明本文算法編碼復(fù)雜度較低。表5 給出了4種運(yùn)動(dòng)方式下編碼時(shí)間的對(duì)比??梢钥闯?相比原始HEVC,本文算法在帶來(lái)大幅度性能增益的同時(shí)還在一定程度上降低了編碼復(fù)雜度,編碼時(shí)間平均縮短5.34%。
表5 本文算法與HEVC編碼時(shí)間的比較
隨著高性能云計(jì)算等技術(shù)的快速發(fā)展,云游戲生態(tài)逐步擴(kuò)大,高幀率以及高分辨率的云游戲視頻對(duì)傳輸帶寬提出了更高的要求,然而云游戲視頻中復(fù)雜的全局相機(jī)旋轉(zhuǎn)以及劇烈變化的大范圍運(yùn)動(dòng)給傳統(tǒng)視頻壓縮帶來(lái)了極大的挑戰(zhàn)。本文針對(duì)這一問(wèn)題,利用云游戲視頻易于獲得全局相機(jī)運(yùn)動(dòng)信息這一特點(diǎn),提出了一種三維投影變換輔助的云游戲編碼優(yōu)化算法。
本文通過(guò)對(duì)游戲場(chǎng)景中三維投影變換的過(guò)程進(jìn)行理論分析,利用來(lái)自世界坐標(biāo)下同一點(diǎn)的匹配點(diǎn)對(duì)建立約束,構(gòu)建了虛擬相機(jī)的內(nèi)參估計(jì)算法。結(jié)合全局相機(jī)運(yùn)動(dòng)信息,利用估計(jì)的內(nèi)參生成與待編碼幀平行的輔助參考幀更新原始參考幀列表,參與編碼。由于生成的輔助參考幀相對(duì)于待編碼幀只有平移,更有利于進(jìn)行運(yùn)動(dòng)估計(jì)和補(bǔ)償。本文算法克服了開(kāi)源云游戲平臺(tái)的限制,使利用三維投影變換對(duì)云游戲編碼優(yōu)化變得一般化。實(shí)驗(yàn)結(jié)果表明,本文算法在云游戲視頻上平均可以實(shí)現(xiàn)8.14%的BD-rate增益,在僅有相機(jī)旋轉(zhuǎn)的情況下,BD-rate 可達(dá)-24.68%。同時(shí),還在一定程度上降低了編碼復(fù)雜度,編碼時(shí)間平均縮短5.34%。此外,本文算法相比HEVC-SCC也有超過(guò)20%的BD-rate性能增益。
云游戲的大規(guī)模應(yīng)用對(duì)通信系統(tǒng)提出了多項(xiàng)挑戰(zhàn),除高帶寬外,云游戲?qū)W(wǎng)絡(luò)時(shí)延要求很高,尤其在實(shí)時(shí)競(jìng)技類游戲中,卡頓現(xiàn)象會(huì)嚴(yán)重影響用戶體驗(yàn)。因此,除了提高云游戲視頻的編碼效率以降低帶寬外,如何滿足云游戲?qū)W(wǎng)絡(luò)的低時(shí)延要求也在進(jìn)一步研究中。