摘 要:可伸縮視頻編碼(SVC)可實現視頻流空間、時間和信噪比的完全伸縮,但在差錯信道上傳輸容易引起誤差擴散,為此提出一種基于SVC的率失真優化編碼算法。該算法在分析了差錯信道下傳輸可伸縮視頻流誤差擴散失真的基礎上,在率失真優化模型中引入時間和信噪比分級的誤差分級參數,并根據信道狀態自適應地確定宏塊編碼模式。該算法能夠有效地抑制誤碼在各分層的擴散,提高了可伸縮視頻流的魯棒性。仿真結果表明,算法與以往的算法相比具有更好的抗誤碼性能,適合視頻數據在差錯信道上的傳輸。
關鍵詞:可伸縮視頻編碼; 率失真模型; 模式選擇; 誤碼擴散
中圖分類號:TN919.81文獻標志碼:A
文章編號:1001-3695(2009)09-3584-03
doi:10.3969/j.issn.1001-3695.2009.09.112
Adaptive RD-optimal coding algorithm for scalable video coding
TANG Hao-yang, SHI Hao-shan, ZHAO Hong-gang
(College of Electronic Information, Northwest Polytechnical University, Xi’an 710072, China)
Abstract:The SVC provided a full scalability including spatial, temporal and signal-to-noise ratio (SNR) scalability with fine granularity, but each of which might result in error propagation over error channels. This paper addressed a novel rate-distortion optimized (RDO) coding algorithm for SVC. After estimated and stored error propagated distortion values for each frame, added a parameter used for indicating error propagation of temporal and SNR layers into the RDO model. Based on these encoding parameters, carried out an optimal macroblock mode decision scheme. The proposed algorithm can effectively prevent error propagation and enhance error-resilient performance. Simulation results show that the proposed scheme is robust to pack loss and suitable for video transmission over error channels.
Key words:scalable video coding(SVC); rate-distortion model; mode selection algorithm; error propagation
0 引言
隨著視頻應用的普及,視頻編碼的目標由單純的追求高壓縮性能轉向使視頻碼流能夠更好地適應各種不同的網絡環境和用戶終端。可伸縮視頻編碼(SVC)方法是針對這些新的視頻編碼要求而產生的一種新的編碼標準[1], 它作為H.264/AVC 的可分級擴展,通過時域、空域和質量的分層機制,在比特流級上實現可分級性,具有很高的壓縮效率。但是由于SVC的分層機制,較低層上的圖像數據一般都被用來預測編碼與之相對的較高層圖像數據,這使得壓縮視頻流容易受到誤碼擴散的影響,并最終導致誤差漂移現象。因此有必要在SVC中采用有效的抗誤碼方法來保證可伸縮視頻流的魯棒性。
率失真框架內的模式選擇算法是誤碼環境中實現視頻信息高質量傳輸的有效工具之一。文獻[2]中提出了一種基于H.264/AVC 的丟包信道下率失真估計模型,文獻[3]又把這個方法直接擴展到H.264/SVC 中。但是這些方法沒有考慮到不同分級的編碼幀對誤差擴散影響的差別,而是把所有的編碼圖像對誤差擴散的影響等同看待,其抑制誤差擴散效果不是最優的。為此,本文詳細地討論了SVC中時域和信噪比(SNR)分級的誤差擴散機理,并在此基礎上提出一種基于SVC的率失真優化模式選擇算法。實驗證明這種編碼方法簡單可行,具有較好的靈活性和魯棒性。
1 H.264 的可伸縮編碼結構
基于H.264的SVC編碼結合分層編碼和精細度伸縮編碼實現了空域、時域和信噪比的完全伸縮。SVC的空域可分級是通過上下采樣濾波器實現空間分辨率的變化。SVC的時域可分級特性可通過等級B圖像編碼的方法來高效實現,如圖1所示。圖1左部的序號代表編碼順序,符號Ti代表相應的第i個時域分層。基本層T0采用全I幀或者IPPP的結構,而除T0層以外的其他增強層通常編為B幀。兩個連續T0層之間的所有增強層圖像幀加上后一個T0圖像幀組成了一個圖像組(GOP)。圖1中,首先以I幀或P幀的模式編碼第1幀和第9幀并作為關鍵幀,其余以B幀模式進行編碼,先編碼第5幀,然后編碼第3、7 幀,最后編碼第2、4、6、8 幀。通過這樣的金字塔式的編碼順序實現了時域分級。
SVC中的SNR可分級特性通過反復遞減量化步長并且使用改進的前后自適應二進制算術編碼(CABAC)方法實現[4]。首先通過編碼連續的SNR層來達到粗粒度信噪比可伸縮性(CGS),再利用漸進增加變換系數精確度的方法來實現細粒度信噪比可伸縮性。如圖1所示,每個時域分層包含包括1個SNR基本層和多個SNR增強層。
2 H.264/SVC的率失真優化編碼算法
2.1 丟包信道下率失真優化的模式選擇模型
在現有的混合視頻編碼框架中,由于廣泛地采用了各種預測,如運動估計補償,使得丟包引起的差錯發生時域和空域擴散,導致重建視頻質量嚴重下降。為了有效地抑制誤差擴散,H.264/AVC編碼標準在高復雜模式中對運動矢量、參考幀選擇和宏塊編碼模式的判決中都使用了率失真判決策略。編碼器通過計算率失真判決函數式,將最小的代價函數對應的宏塊編碼模式確定為率失真最優宏塊編碼模式:
J(n,m,o)=D(n,m,o)+λR(n,m,o)(1)
其中:o表示當前宏塊的編碼模式;J(n,m,o)表示在模式o下的編碼第n幀第m個宏塊的率失真代價;D(n,m,o)和R(n,m,o)分別表示在模式o下的第n幀第m個宏塊的總失真和視頻流速率;λ為拉格朗日算子。拉格朗日率失真優化的模式選擇策略通過搜索所有可能的模式,選擇具有最小率失真代價的預測模式作為當前宏塊的最優模式。
根據JVT-R057[3]關于失真的計算,設丟包率為p1,則相對于編碼模式o的第n幀中的第m個宏塊的總失真為
D(n,m,o)=(1-pl)(Ds(n,m,o)+Dep_ref(n,m,o))+p1Dec(n,m)(2)
其中:Ds(n,m,o)表示信源編碼失真度;Dep_ref表示差錯傳播導致的誤差擴散失真;Dec(n,m)表示當該宏塊丟失時采用差錯掩蓋時帶來的失真。Ds(n,m,o)可用無差錯時的重建圖像相對于原始信號的SAD或SSE計算,Dec(n,m)可用差錯恢復后的圖像相對于原始信號的SAD或SSE計算,顯然Dec(n,m)獨立于該宏塊的編碼模式,即與o無關。Dep_ref(n,m,o)的計算取決于編碼時基于塊(如4×4)的失真映射參數Dep。對于給定的映射,可按下式計算:
Dep_ref(n,m,o)=∑Kk=1Dep_ref(n,m,k,o)=∑Kk=1∑4l=1wlDep(nl,ml,kl,o)(3)
其中:k表示一個宏塊中塊的個數;Dep_ref(n,m,k,o)表示在當前宏塊中第k個塊的誤差擴散失真;Dep_ref(n,m,k,o)為當前塊的所有參考塊集{kl}導致的誤差擴散失真集{Dep(nl,ml,kl,o)}。每個參考塊的加權值為w1,正比于其被參考面積的大小。
結合式(1)(2)(3),在丟包率p1下的率失真代價函數可以表示為
J(n,m,o)=(1-pl)(Ds(n,m,o)+Dep_ref(n,m,o))+p1Dec(n,m)+λR(n,m,o)(4)
2.2 SVC編碼結構的率失真優化編碼方法
雖然等級B圖像結合SNR分級結構可以靈活地實現時間和質量可分級特性,但因為沿時間順序的各幀不屬于同一時域分層,且較低級別的圖像幀直接和間接地被所有較高級別的圖像幀參考,如果該幀編碼質量不理想, 會影響當前GOP 內后續的所有待編碼幀。這種類似金字塔式的結構很容易造成編碼質量較大幅度的波動。為了克服以上缺點,本文分別引入了時域和SNR分級的誤差分級參數,通過估計不同時域分層和SNR分層對誤差擴散的影響,在RDO判決模型中簡單有效地進行SVC模式選擇。
首先用時域分級參數來估計不同時域分層的誤差擴散影響區域。圖2描述了GOP為8的等級B圖像誤差擴散影響區域,位于時域級0的關鍵幀圖像不僅會作為本圖像組的預測參考信號,還會作為后面圖像組的預測參考信號,它們對誤差擴散的影響范圍最大,為(2(4-0)-1),其中4為總共的時間級數且0為當前的時域分層。每個時間分層的時域分級參數與所在的時間分層乘以2為底的指數關系,越高時間級所擁有的圖像數越多,但其對誤差擴散的影響卻越小。這樣第g時域分層對誤差擴散影響的時域分級參數可表示為
a(g)=(∏gi=0(1-pt(i)))(2(T-C1.g)-1)(5)
其中:T表示總共的時間級數;C1為尺度因子;pt(i)∈{pt(0),pt(1),pt(2),…,pt(g)}為各時域分層圖像的丟包率。
由于SNR分層方向的依賴關系,低SNR分層比高SNR分層具有更大的誤差擴散影響區域。各SNR分層的誤差擴散影響數與各SNR分層的級數具有反比例關系。本文引入SNR分級參數b(u)來估計不同SNR分級的誤差擴散影響區域:
b(u)=(∏uj=0(1-pq(j)))(1/(1+u)C2)(6)
其中:u表示當前幀所在的SNR分層;C2為與視頻幀復雜度相關的尺度因子,C2大于1時表示對低SNR分層分配更多的加權;pq(j)∈{pq(0),pq(1),pq(2),…,pq(u)}為各SNR分層圖像的丟包率。結合a(g)和b(u),可得到時域和SNR分級的組合分級參數:
a(g)×b(u)=(∏gi=0((1-pt(i))∏uj=0(1-pq(j))))((2(T-C1#8226;g)-1)/(1+u)C2)=(∏gi=0((1-pt(i))∏uj=0(1-pq(j))))δ(g,u)(7)
基于δ(g,u),將式(4)的率失真優化判決方法擴展到時域和SNR分級的SVC中,得到SVC中的率失真代價函數式:
J(n,m,o)=(∏gi=0((1-pt(i))∏uj=0(1-pq(j))))(Ds(n,m,o)+
(1-(∏gi=0((1-pt(i))∏uj=0(1-pq(j)))))Dec(n,m)+
δ(g,u)Dep_ref(n,m,o))+λR(n,m,o)(8)
其中:Ds(n,m,o),Dec(n,m)和Dep_ref(n,m,o)的計算如2.1節所述。式(8)表明在碼率分配上,通過使用時域和SNR分級的誤差分級參數,把更多的碼率分配給低級別的圖像,這樣既提高了碼流抗誤碼能力,同時又能有效地控制碼率的增長。
2.3 拉格朗日系數的選擇
拉格朗日參數的選擇是基于率失真優化的視頻編碼中一個關鍵問題。 在無損環境中, 失真D(n,m,o)僅包含信源編碼失真Ds(n,m,o),拉格朗日系數是量化參數(QP) 的函數。 在H.264/AVC 和SVC 擴展中,這個值等于( 0.85 ×2Q/3-4)。然而,當在丟包環境下, 不僅要考慮信源失真,還要把信道丟包失真考慮在內。為此,總速率和失真都將同時發生變化,因此λ值也應該相應地變化。
從文獻[5]可知,在無損環境下的拉格朗日系數為
λef=-dDs/dR(9)
為了求得信道丟包環境下代價函數的最小值,函數式(8)的等號兩邊對R求導,并讓J對R的導數等于0,于是有
λ=-(∏gi=0((1-pt(i))∏uj=0(1-pq(j))))dDs(n,m,o)/dR=
(∏gi=0((1-pt(i))∏uj=0(1-pq(j))))λef(10)
3 實驗結果
實驗仿真基于H.264/SVC 的參考軟件JSVM 7.0[6]。 作為對比參考, 同時給出了JSVM中不使用任何差錯彈性控制的編碼性能和文獻[3]中沒有經過時域和SNR分級控制的RDO編碼性能。使用QCIF格式的視頻序列foreman 和news 進行測試,差錯模式采用 JVT-Q069中提供的SVC丟包模擬文件,它包含四個平均包丟失率分別為3%、5%、10%及20%的錯誤圖樣[7]。在仿真實驗中,采用以下參數進行測試:幀率為30 fps,圖像組大小為8, 僅第1幀編碼為I 幀,不使用FMO, 差錯隱藏使用前幀拷貝,量化參數QP為24、28、32、36。
表1和2為pt(i)=3%、pq(j)=3%時,不同量化參數條件下,本文算法和其他兩種算法的平均PSNR值對比。從表中可以看出,對foreman和news序列,本文提出的方法相對于無差錯彈性方法分別有3.018 dB和2.605 dB的平均碼率增益,相對于無分級控制方法分別有2.078和1.695 dB的平均碼率增益。這主要是由于本文算法對時域和SNR各層的誤碼擴散進行了有效估計,并在RDO模型中按重要性對各數據分層實施不等誤碼保護,使得本文編碼算法的抗誤碼性能要好于其他兩種策略。
圖3和4分別給出了在不同的信道丟包條件下,采用上述三種算法的編碼性能比較。圖3為pt(i)=3%、pq(j)=3%時的亮度信噪比—速率曲線;圖4為pt(i)=3%、pq(j)變化下的亮度信噪比-pq(j)曲線。從圖3和4可以看出,本文提出的算法要好于沒有經過分級控制的差錯信道下模式判決方法。實驗結果反映了在H.264/SVC 的等級B 圖像編碼和SNR分級結構中,低層圖像的重要性高于高層圖像這一基本特性,并通過對各分層誤碼擴散準確定位有效地防止了誤碼擴散。
4 結束語
本文在H.264/AVC標準率失真優化編碼算法的基礎上,詳細討論了可伸縮視頻編碼的時域和SNR分級誤碼擴散機理,通過在率失真優化模型中引入時間和信噪比分級的誤差分級指標,提出一種基于可伸縮視頻編碼的率失真優化編碼算法。仿真實驗表明,該方法能夠快速有效地抑制誤碼在各分層的擴散,增強了可伸縮視頻流的誤碼魯棒性和網絡適應能力。
參考文獻:
[1]SCHWARZ H, MARPE D, WIEGAND T. Overview of the scalable video coding extension of the H.264/AVC standard [J]. IEEE Trans on Circuits System Video Technology, 2007,17(9): 1103-1120.
[2]ZHANG Yuan, GAO Wen, SUN Hui-fang, et al. Error resilience vi-deo coding in H.264 encoder with potential distortion tracking [C]// Proc of IEEE International Conference on Image Processing. Beijing: IEEE Computer Society, 2004: 163-166.
[3]GUO Yi, WANG Y K, LI Hou-qiang. JVT-R057, Error resilient mode decision in scalable video coding[S]. 2006.
[4]AMONOU I, CAMMAS N, KERVADEC S, et al. Optimized rate-distortion extraction with quality layers in the scalable extension of H.264/AVC [J]. IEEE Trans on Circuits System Video Technology, 2007,17(9):1186-1193.
[5]WIEGAND T, GIROD B. Lagrange multiplier selection in hybrid vi-deo coder control [C]// Proc of IEEE International Conference on Image Processing. Thessaloniki: IEEE Computer Society, 2001:542-545.
[6]REICHEL J, SCHWARD H, WIENT M. JVT-T202, Joint scalable video model JSVM-7[S]. 2006.
[7]GUO Yi, LI Hou-qiang, WANG Y K. JVT-Q069, SVC/AVC loss simulator donation[S]. 2005.