李維,任鵬,趙凡,陳亞軍
(1.西安理工大學印刷包裝與數(shù)字媒體學院,710048,西安;2.西安電子科技大學通信工程學院,710071,西安)
多媒體技術和各種智能終端產(chǎn)品促使高清/超高清視頻應用向高分辨率、高幀率、高像素位深快速發(fā)展。新一代視頻編碼標準(HEVC)[1]由于采用了各種先進的編碼工具,如基于大塊的四叉樹分割結構[2]、先進的運動矢量預測技術、35種幀內(nèi)預測技術、內(nèi)部位深擴展技術、像素自適應補償技術等,其編碼性能有了大幅度提高。憑借高的壓縮率和好的視頻質(zhì)量,HEVC逐步走入人們的視野[3]。實際中由于視頻內(nèi)容不斷發(fā)生變化,經(jīng)編碼器后得到的碼率會有較大波動,極易造成上溢或下溢現(xiàn)象,因此HEVC的碼率控制[4]尤為重要,直接影響著視頻編碼標準的實用性。編碼器需要碼率控制模塊調(diào)整輸出的碼流大小,以滿足給定的存儲或傳輸帶寬。
碼率控制問題實質(zhì)是一種有約束條件的率失真優(yōu)化問題,通過調(diào)整量化參數(shù)來保證編碼碼率與給定的目標碼率相匹配。為了在碼率和失真之間找到一個最優(yōu)的折中點,率失真模型的建立是至關重要的。司俊俊等從理論上分析了編碼幀預測殘差信號的分布特性、量化參數(shù)以及拉格朗日因子之間的關系,提出根據(jù)拉普拉斯分布特性動態(tài)調(diào)整量化參數(shù)獲得有效的碼率控制[5]。Choi等假設信源服從拉普拉斯分布,利用泰勒展開式建立了R-Q模型[6],但基于該模型的碼率控制算法在HEVC中的控制精度不高,特別是運動場景下,模型的性能下降很快??紤]到預測殘差經(jīng)過變換和量化后的系數(shù)中零系數(shù)比例ρ對編碼碼率有著重要的影響,特別是在碼率比較低的情況下,這種影響更加顯著。Liang等提出用R與ρ之間的關系代替R與Q之間的關系,從而建立一種基于R-ρ模型的碼率控制算法[7],該算法利用絕對差均值來估計編碼單元的復雜度,經(jīng)碼率控制后輸出的編碼碼率上下波動較大。隨后,Li等提出碼率和失真之間存在雙曲線函數(shù)關系,推導出一種基于碼率-拉格朗日因子(R-λ)模型的碼率控制算法[8],并且該算法被國際標準組織所采納并且加入到HEVC校驗模型。
上述方法均是在假設各個視頻區(qū)域相互獨立的情況下,利用率失真優(yōu)化方法指導碼率控制,但對于超高清視頻以及HEVC編碼器,這種假設條件下的碼率控制在一定程度上影響了編碼性能。由于幀內(nèi)幀間預測技術的使用,致使區(qū)域之間的碼率和失真具有一定的關聯(lián)性[9]。Li等研究了時域編碼塊之間的失真特性,建立了失真模型并提出了相應的幀間碼率控制算法[10],Liu等在碼率控制算法中考慮了幀間編碼中的失真漂移特性,以進一步提高編碼效率[11],但是都只考慮了幀間編碼的率失真特性,忽略了幀內(nèi)編碼碼率控制中率失真關聯(lián)特性。Zhou等分析了視頻內(nèi)容的復雜度,提出了一種新的幀內(nèi)碼率控制算法[12],但該算法也未考慮幀內(nèi)預測技術對碼率與失真的影響?;趲瑑?nèi)預測理論,本文分析了鄰近編碼區(qū)域之間的關聯(lián)性,并結合失真漂移現(xiàn)象,提出一種高效視頻編碼(HEVC)幀內(nèi)碼率控制改進算法。實驗結果表明,本文提出的算法可以有效地提高碼率控制的性能,與原始算法相比,在同等碼率的條件下,重構視頻質(zhì)量可平均提高0.1 dB。
碼率控制模塊由碼率分配和量化參數(shù)確定兩部分組成[13]。首先,根據(jù)目標碼率為圖像(GOP)、幀、編碼樹單元(CTU)分別確定最優(yōu)的目標碼率;然后,根據(jù)R-λ模型計算相應的量化參數(shù)[14]。幀內(nèi)碼率控制算法如下。
(1)GOP層碼率分配。根據(jù)目標碼率R、幀率F、GOP的大小SG、已編碼的幀數(shù)Nc和編碼輸出的碼率Rc,計算GOP的目標碼率為
RG=SG(R(Nc-w)-RcF)/(wF)
(1)
式中:參數(shù)w為滑動窗口的大小,用于保證視頻質(zhì)量的平滑性。
(2)幀層碼率分配。根據(jù)每一幀在GOP中所占的權重值進行幀層碼率分配,由于幀內(nèi)編碼時每一個GOP只包含一幀,因此該幀的目標碼率RF可估計為
RF=RG
(2)
(3)CTU層碼率分配。第i個CTU的目標碼率Bi取決于幀層的目標碼率和當前CTU的空域復雜度,其計算公式為
(3)
(4)
式中:參數(shù)Rr表示當前幀剩余的目標比特數(shù);A表示已編碼的CTU實際輸出的編碼比特數(shù)。
(4)量化參數(shù)的確定。為了準確地獲取量化參數(shù),提出一種R-λ模型,通過拉格朗日因子λ值來計算量化參數(shù),R-λ模型表示為
(5)
式中:NP表示CTU中所含的像素數(shù);τ、β和χ為模型參數(shù)。量化參數(shù)Qi可表示為
Qi=4.200 5ln(λi)+13.712 2
(6)
在碼率控制模塊的指導下,視頻編碼器得以有效地運行,在保證一定視頻質(zhì)量的同時,輸出的編碼碼率也滿足給定的目標碼率。
幀內(nèi)預測將在空域上相鄰的已重構的邊界像素作為參考信息進行預測,能夠有效地減少空域冗余,提高視頻編碼的效率。HEVC視頻編碼標準定義了35種幀內(nèi)預測模式,包括33種角度模式、DC模式和Planar模式[15],如圖1所示。
圖1 幀內(nèi)預測模式
由于當前像素與周圍像素之間具有強的相關性,幀內(nèi)預測編碼利用最近的像素作為參考,估計當前像素值,但這種方式會引起潛在的編碼失真漂移現(xiàn)象[16]。參考像素是原始像素經(jīng)編碼后的重構像素,其存在一定的失真,并且會隨著幀內(nèi)預測擴散到后續(xù)的像素,從而形成失真帶。圖2給出了參考像素失真?zhèn)鞑サ氖疽鈭D,原始圖像進行編碼時,利用重構圖像中的參考像素進行幀內(nèi)預測,造成失真沿著預測方向傳播,形成失真塊。
圖2 幀內(nèi)失真漂移示意圖
d=p(i,j)-p′(i,j)
(7)
式(7)可以重寫為
d=[p(i,j)-pp(i,j)]+[pp(i,j)-p′(i,j)]
(8)
d=do+dp
(9)
通常,這種幀內(nèi)預測關系可以被描述為一維高斯馬爾科夫模型[17]
(10)
式中:θ和η為模型參數(shù)。后半部分失真dp可以表示為
dp=pp(i,j)-p′(i,j)=
(11)
則當前待編碼CTU的總失真
D=Do+θDr
(12)
式中:Do和Dr分別表示當前待編碼CTU的前半部分總失真和后半部分總失真。
基于2.1節(jié)的分析,可以看出CTU的編碼失真與其參考失真之間存在一種線性關系。這種關系是在失真測度為絕對誤差和(SAD)條件下得到的。
碼率控制屬于率失真優(yōu)化問題,通過拉格朗日優(yōu)化方法可描述為[18]
(13)
式中:
J和λSAD分別表示率失真代價和失真測度為
SAD下的拉格朗日因子;符號D(i)和R(i)分別表示第i個CTU經(jīng)編碼后產(chǎn)生的總失真和總碼率。對于第i個CTU,它的編碼失真會傳播到右邊第i+1個CTU和相鄰下邊第j個CTU中,因此根據(jù)式(12),可得
?J/?R(i)=?D(i)/?R(i)+?D(i+1)/?R(i)+
?D(j)/?R(i)+λSAD=?D(i)/?R(i)+
?(Do(i+1)+θ(i+1)D(i))/?R(i)+
?(Do(j)+θ(j)D(i))/?R(i)+λSAD=
[1+θ(i+1)+θ(j)]?D(i)/?R(i)+λSAD=
αi?D(i)/?R(i)+λSAD
(14)
所以,式(13)被更新為
(15)
(16)
結合式(5),可得到改進的R-λ模型
(17)
式中:參數(shù)αi可利用前一個已編碼塊按照式(14)估算得到。圖3給出了改進R-λ模型的獲取流程。將改進R-λ模型加入到幀內(nèi)碼率控制算法中,可以更準確地計算量化參數(shù),保證編碼碼率與目標碼率的一致性。
圖3 改進R-λ模型的獲取流程圖
為了驗證幀內(nèi)碼率控制改進算法的有效性,利用HEVC編碼器的參考軟件HM16.0,對各種標準序列進行相關指標測試。
標準序列使用JCTVC組
織提供的Class B、Class C、Class D、Class E這4類序列,其涵蓋了不同分辨率、不同紋理的視頻。本實驗分別在幀內(nèi)編碼配置Intra_only Main(IM)、Intra_only Main10(IM10)和幀內(nèi)幀間編碼配置RA Main(RM)和RA Main10(RM10)環(huán)境[20]下進行測試。編碼幀數(shù)設置為300,硬件采用Window7平臺,處理器為Intel Core i5-4590。本文從編碼效率和編碼復雜度兩方面評價改進模型的總體性能。
首先本文從編碼效率上來驗證所提算法的性能,評價的指標是ΔRbit和ΔPSNR[21]。ΔRbit反映編碼輸出碼率的變化情況,值為負,表示編碼比特率Rbit減小;ΔPSNR反映視頻質(zhì)量的變化情況,值為正,表示峰值信噪比PSNR增大。
在幀內(nèi)編碼IM和IM10配置下采用本文改進算法和原有算法的性能進行對比,結果如表1所示。由表1可以看出:在IM配置下本文算法的比特率平均降低了1.4%,峰值信噪比平均提高了0.11 dB;在IM10配置下本文算法的比特率平均降低了1.7%,峰值信噪比平均提高了0.13 dB。由于本文算法是在幀內(nèi)預測編碼原理的基礎上結合率失真優(yōu)化推導出的改進算法,因此編碼效率得到了提升。為了證明本文算法對幀內(nèi)幀間聯(lián)合編碼配置也有貢獻,分別在RM和RM10配置下對本文改進算法和原有算法的性能進行對比,結果見表1。從表1可以看出:在RM配置下本文算法的比特率平均降低了0.5%,峰值信噪比平均提高了0.05 dB;在RM10配置下本文算法的比特率平均降低了0.6%,峰值信噪比平均提高了0.08 dB,說明在幀內(nèi)幀間聯(lián)合編碼的情況下,本文算法的編碼效率也有一定提升;因為幀內(nèi)幀間聯(lián)合編碼下的幀內(nèi)塊數(shù)量較少,所以編碼效率提升的幅度沒有幀內(nèi)編碼下編碼效率提升的高。
表1 本文算法與原有算法性能對比
注:ΔRbit為本文算法編碼率與原有算法編碼率之間的差值;ΔPSNR為本文算法峰值信噪比與原有算法峰值信噪比之間的差值;ΔT為本文算法編碼時間與原有算法編碼時間的差值。
圖4給出了Kimono序列和BQSquare序列的率失真性能曲線,其中Kimono序列的分辨率為1 920×1 080像素,BQSquare序列的分辨率為416×240像素。由圖4可以看出,本文所提算法的率失真性能位于原有算法的率失真性能之上,反映了在給定碼率下,本文改進算法具有更高的峰值信噪比值。表2給出了IM10配置下本文改進算法與文獻[12]算法的性能對比結果。由表2可以看出,由于本文所提算法考慮了幀內(nèi)失真漂移現(xiàn)象,因而在幀內(nèi)碼率控制方面優(yōu)于文獻[12]算法。
(a)IM配置下Kimono序列
(b)IM10配置下Kimono序列
(c)IM配置下BQSquare序列
(d)IM10配置下BQSquare序列圖4 不同配置不同視頻序列的率失真曲線
序列ΔRbit/%ΔPSNR/dBBqsquare_416×240-1.10.08RaceHorses_832×480-1.00.10Vidyo1_1280×720-1.10.09BasketballDrive_1920×1080-1.40.12均值-1.150.10
本文使用編碼時間差ΔT作為編碼復雜度的評價指標,ΔT定義為
ΔT=(Tm-To)/To
(18)
式中:Tm表示本文改進算法被應用到碼率控制中后所耗的編碼時間;To表示原有算法被應用到碼率控制中后所耗的編碼時間。從表1可以看出,無論是全幀內(nèi)編碼還是幀內(nèi)幀間編碼,與原有算法相比,本文所提算法的編碼時間增幅非常小,編碼復雜度幾乎沒有大的影響。綜上,本文改進算法在提高編碼效率的同時,并未帶來高的編碼負擔。
碼率控制模塊在視頻編碼中起著重要的作用,其率失真模型的好壞直接影響著最終的編碼性能。本文針對HEVC的率失真模型,提出一種改進的幀內(nèi)碼率控制算法。通過分析幀內(nèi)預測編碼技術,找出度量失真漂移的方法,結合率失真優(yōu)化原理,建立了考慮幀內(nèi)塊關聯(lián)特性的改進R-λ模型。實驗結果表明,本文所提的改進算法具有較高的幀內(nèi)編碼性能,在相同碼率下重構視頻質(zhì)量可平均提高0.1 dB。