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

圖1 總體視頻有效丟失率對比圖
各算法的峰值信噪比(Peak Signal to Noise Ratio,PSNR)性能對比,如圖2所示。PSNR值越大,證明視頻質量越好。從圖2可以看出,AR-FEC算法的PSNR數值優于其他算法。這是因為本算法將碼率資源分配給影響全景視頻最重要的FOV視區,同時利用FEC對丟失的視頻數據進行恢復,使得視頻質量得到最大限度的保障。

圖2 總體視頻PSNR對比圖
為了滿足360°全景視頻低時延、高質量傳輸的要求,首先利用全景視頻的特點建立360°全景視頻失真度模型。然后,設計一種360°全景視頻自適應FEC編碼算法。該算法是在時延約束下分配比特資源,實現對圖塊碼率的優化分配,并且對關鍵幀和非關鍵幀提供FEC保護。實驗證明,該算法不僅能夠提高系統傳輸效率,而且在視頻質量方面優于傳統視頻傳輸算法。