周簡心,高廷金,張森林
(1.福州大學(xué) 先進制造學(xué)院,福建 福州 350000;2.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350000)
全景視頻以其帶來的沉浸式、交互式體驗,受到人們的廣泛關(guān)注,并成為虛擬現(xiàn)實(Virtual Reality,VR)技術(shù)和增強現(xiàn)實(Augmented Reality,AR)技術(shù)中最熱門的業(yè)務(wù)[1]。在全景視頻的傳輸過程中,根據(jù)用戶不停的視角轉(zhuǎn)變,向用戶端實時傳輸視頻數(shù)據(jù)。在此過程中,全景視頻傳遞的比特數(shù)是傳統(tǒng)視頻的4~6倍,同時其所產(chǎn)生的頭動相應(yīng)時延(Motion To Photon,MTP)需要控制在20 ms以內(nèi),才不會使用戶出現(xiàn)眩暈感,這體現(xiàn)出全景視頻數(shù)據(jù)量大、對時延敏感的特點[2-3]。在帶寬受限網(wǎng)絡(luò)情況下,如何在保障用戶體驗質(zhì)量(Quality of Experience,QoE)的過程中進行低時延的全景視頻傳輸,已經(jīng)成為當(dāng)前全景視頻研究的重點。
為解決全景視頻傳輸數(shù)據(jù)量大的問題,一般采用基于Tile的視口自適應(yīng)傳輸方案。OZCINAR引入一種自適應(yīng)全景視頻流框架,通過視覺注意力度來決定不同圖塊的比特率分配[4]。雖然該方案能夠減小全景視頻傳輸?shù)臄?shù)據(jù)量,但是大部分寬帶用于傳輸非視口區(qū)域,導(dǎo)致優(yōu)化視口質(zhì)量不足。LYU針對時延敏感的特點,提出一種根據(jù)圖塊的幀間和層間解碼依賴性的前向糾錯(Forward Error Correction,F(xiàn)EC)編碼率優(yōu)化方法,通過提供不等錯保護(Unequal Error Protection,UEP)進行可靠的低時延視頻傳輸,但是并沒有考慮傳輸過程中的編碼率不同對FEC的影響[5]。
為了解決這些關(guān)鍵問題,文章提出一種360°全景視頻自適應(yīng)FEC編碼策略。采用線性回歸來估計視口區(qū)域,并構(gòu)建一個概率模型得出視口圖塊的權(quán)重。通過該權(quán)重建立一種針對360°全景視頻的視頻失真度模型,以此提高視頻質(zhì)量的評估準(zhǔn)確度。通過時延約束評估不同幀的編碼比特率和FEC編碼率上限,再根據(jù)視口優(yōu)先級進行優(yōu)化匹配,最大限度提升全景視頻的傳輸質(zhì)量。實驗結(jié)果表明,該策略能夠在時延的約束下實現(xiàn)高質(zhì)量的全景視頻傳輸。
在傳統(tǒng)視頻失真模型中,端到端失真Dt通常為源失真Ds和通道失真Dc的疊加,即
式中:Ds為視頻在編碼過程中的失真,主要由視頻源碼率R和視頻序列參數(shù)R0決定,Dc為網(wǎng)絡(luò)傳輸中的通道失真,取決于有效丟失率Π,而有效丟失率由視頻數(shù)據(jù)包的傳輸丟失和過期到達引起,D0、α、ω為特定視頻編解碼器和視頻序列的常數(shù)。
經(jīng)過FEC編碼后能夠容忍的丟包率為
式中:F為FEC冗余包數(shù)量,K為源包數(shù)。
如果丟包數(shù)少于式(2)計算出的數(shù)值,證明可以完全恢復(fù)丟包,即Π=0,否則Π=η。但是,以上分析都沒有考慮全景視頻中不同區(qū)域的重要性不同。因此,針對全景視頻的特點提出一種全景視頻失真度模型,以便更準(zhǔn)確地測量全景視頻的質(zhì)量。
使用等距形投影,將360°視頻從觀看周圍的球形域展平到2D矩形表面,并將投影后的每一幀分為w×h塊,每一塊分配編號i,并將視點坐標(biāo)定義為(X,Y)。令μx∈[0,ω)和μy∈[0,h),表示分別矩形域中視口中心的X、Y坐標(biāo)期望值,這些值是根據(jù)先前的視口位置估計的。對于圖塊i,其重要性權(quán)重γi,j計算為其與視口的預(yù)期重疊面積。定義(pi,qi)為圖塊i的中心坐標(biāo),i∈{1,2,…,wh}。Si(X)為以(X,μY)為中心的視口與以(pi,qi)為中心的圖塊之間的重疊區(qū)域,計算公式為
如果(u,v)在以(x,μY)為中心的視區(qū)中,F(xiàn)(u,v,X)=1,否則F(u,v,X)=0。其中,(u,v)代表視角實際的坐標(biāo)值。
通過該概率模型,可以估計全景視頻流的不同圖塊權(quán)重,有效減少以往視口估計的不確定性,由此可以得出全景視頻失真模型為
式中:γi,j為圖塊的權(quán)重,為視頻失真度,ri,j為FEC冗余度,j為幀序列數(shù),最大值為m,i為圖塊序列數(shù),最大值為n,Q為圖塊對應(yīng)的量化參數(shù)(Quantizer Parameter,QP)值。
介紹上述模型并推導(dǎo)出全景視頻失真度后,可以制定如下優(yōu)化措施:在給定網(wǎng)絡(luò)條件下,找到全景視頻每個瓦片的最佳QP值和每幀的最佳FEC編碼參數(shù),使視頻失真最小化。優(yōu)化問題可以表述為
式中:Γtar為視頻幀的目標(biāo)時延,T為各塊的時延,Nr為客戶端能夠接收到當(dāng)前視頻幀總數(shù)據(jù)包的個數(shù),K為源包的個數(shù),ω為包的長度,Snmin為關(guān)鍵幀的比特資源下限。約束C1是為了保證視頻幀的總時延上限,約束C2表示理論條件下滿足客戶端可以恢復(fù)原始數(shù)據(jù)幀,約束C3表示關(guān)鍵幀比特數(shù)的最小閾值。
在全景視頻傳輸過程中,端到端時延是一個影響交互能力和視頻質(zhì)量的重要因素,一旦視頻幀傳輸超過時延約束,該視頻幀將會被丟棄[7-8]。因此,本算法通過視頻傳輸?shù)臅r延約束決定鏈路的比特數(shù)上限。數(shù)值主要受傳播時延、傳輸時延和排隊時延影響,結(jié)合約束C1可以推導(dǎo)出總視頻幀的比特數(shù)Lall為
式中:S為源包比特數(shù),R為FEC包比特數(shù),u為帶寬,η為丟包率,tRTT為視頻幀的往返時間,L~為隊列鏈路的比特數(shù)。
理論上,只要接收端可以收到不少于K個FEC數(shù)據(jù)包,就可以恢復(fù)損失的數(shù)據(jù)包,也就是FEC包數(shù)R需要大于傳輸中損失的包數(shù),即
因此,結(jié)合約束C2可以推出總視頻幀的碼率和FEC分配碼率的上限。
在視頻編碼中,I幀作為關(guān)鍵幀,一旦出現(xiàn)損失,則會影響后面非關(guān)鍵幀P幀的編解碼工作,因此I幀的優(yōu)先級高于P幀。在分配資源過程中,應(yīng)對此采取不同的視頻幀和冗余率的分配策略。對于P幀,視頻幀總比特數(shù)Lall應(yīng)采取時延約束的上限,而FEC的比特數(shù)R取數(shù)據(jù)恢復(fù)的下限值,即
根據(jù)實際往返時延(Round Trip Time,RTT)判斷網(wǎng)絡(luò)狀態(tài),調(diào)整每幀的總視頻幀比特數(shù),再結(jié)合式(8)得出該幀和圖塊對應(yīng)的碼率和冗余率。
對于關(guān)鍵幀I幀,關(guān)鍵幀的比特數(shù)應(yīng)低于關(guān)鍵幀的比特資源下限。當(dāng)S≤Snmin時,與非關(guān)鍵幀策略相同就可以保證數(shù)據(jù)的丟失在FEC恢復(fù)能力之內(nèi)。當(dāng)S>Snmin時,應(yīng)提前為FEC預(yù)留比特資源,此時關(guān)鍵幀的比特數(shù)取S=[Lall×(1-η)+Snmin]/2,然后重新計算FEC的冗余率和QP值。詳細算法步驟如下。
得到總幀的碼率比特率后,對每塊進行相應(yīng)的碼率資源分配。優(yōu)化問題被規(guī)劃成多項式復(fù)雜程度的非確定性(Non-deterministic Polynomial,NP)完全的背包問題,用快速搜索算法進行求解。進行多次迭代,每次迭代會將一個QP值分配給當(dāng)前局部最優(yōu)的圖塊。具體地,先計算將當(dāng)前QP值分配到每一個Tile能夠帶來的視頻質(zhì)量提升值,然后選擇本輪迭代中質(zhì)量提升最多的Tile進行最優(yōu)QP值分配。不斷重復(fù)迭代過程,直到將所有碼率比特資源分配完成。
本次實驗采用C++語言進行系統(tǒng)設(shè)計。從公開的360°全景視頻數(shù)據(jù)集中選定Stage、Ocean、Boating和Forest共4個視頻,每個視頻配置為YUV 420、長度5 000幀、分辨率3 840×2 048像素。在預(yù)視頻處理階段,采用高效率視頻編碼(High Efficiency Video Coding,HEVC)作為視頻編碼器,并結(jié)合Kvazaar對視頻進行切8×3圖塊操作。其中,量化參數(shù)合集QP={32,34,38,40,43},編碼碼流幀率為每秒25幀。設(shè)置GOPSize=1,IntraPeriod=25,表示“IPPP”的GOP結(jié)構(gòu),即一個I幀和24個P幀為一個GOP。實驗采用Raptor-FEC系統(tǒng)實現(xiàn)FEC編碼,通過Holowan網(wǎng)絡(luò)仿真儀模擬出真實的網(wǎng)絡(luò)條件。視頻傳輸時延約束為150 ms,網(wǎng)絡(luò)丟包率為10%。
將AR-FEC算法與傳統(tǒng)的視頻傳輸方案PENA和DASH進行比較。PENA是一種碼率由時延約束執(zhí)行在GOP級別的JSCC變速率控制算法,而DASH是傳輸360°全景視頻的普遍方法,主要基于在傳輸層的傳輸控制協(xié)議(Transmission Control Protocol,TCP)協(xié)議,并且具有感知視場角(Field of View,F(xiàn)OV)的能力。
所提算法與對比算法在不同視頻序列上所取得的有效丟失率如圖1所示。有效丟失率用于評估數(shù)據(jù)經(jīng)過網(wǎng)絡(luò)傳輸后的完整性。可以看出本算法的有效丟失率低于6%,是3個算法中丟失視頻數(shù)據(jù)最少的。PENA算法由于失真模型在GOP級別執(zhí)行,導(dǎo)致其對網(wǎng)絡(luò)狀態(tài)變化不敏感,平均丟失率為8%。而DASH算法雖然可以進行FOV感知,但是由于采用TCP重傳機制,導(dǎo)致大量視頻數(shù)據(jù)因為超過傳輸時間而被丟棄,最終丟失率最高,為34%。
圖1 總體視頻有效丟失率對比圖
各算法的峰值信噪比(Peak Signal to Noise Ratio,PSNR)性能對比,如圖2所示。PSNR值越大,證明視頻質(zhì)量越好。從圖2可以看出,AR-FEC算法的PSNR數(shù)值優(yōu)于其他算法。這是因為本算法將碼率資源分配給影響全景視頻最重要的FOV視區(qū),同時利用FEC對丟失的視頻數(shù)據(jù)進行恢復(fù),使得視頻質(zhì)量得到最大限度的保障。
圖2 總體視頻PSNR對比圖
為了滿足360°全景視頻低時延、高質(zhì)量傳輸?shù)囊?,首先利用全景視頻的特點建立360°全景視頻失真度模型。然后,設(shè)計一種360°全景視頻自適應(yīng)FEC編碼算法。該算法是在時延約束下分配比特資源,實現(xiàn)對圖塊碼率的優(yōu)化分配,并且對關(guān)鍵幀和非關(guān)鍵幀提供FEC保護。實驗證明,該算法不僅能夠提高系統(tǒng)傳輸效率,而且在視頻質(zhì)量方面優(yōu)于傳統(tǒng)視頻傳輸算法。