劉妍君,趙志強,劉 艷,崔 盈,汪大勇,冉 鵬,郭毅軍
(1.重慶郵電大學(xué) 生物信息學(xué)院,重慶 400065; 2.日照職業(yè)技術(shù)學(xué)院 電子信息工程學(xué)院,山東 日照 276800;3.重慶郵電大學(xué) 自動化學(xué)院,重慶 400065)(*通信作者電子郵箱3927545@qq.com)
可伸縮高性能視頻編碼(Scalable High efficiency Video Coding, SHVC)是在高效視頻編碼(High Efficiency Video Coding, HEVC)基礎(chǔ)上開發(fā)的新一代視頻壓縮編碼標(biāo)準(zhǔn)。與之前的標(biāo)準(zhǔn)相比,可伸縮編碼可以解決異構(gòu)型網(wǎng)絡(luò)和終端多樣性的問題[1-2]。可伸縮視頻編碼可以通過簡單的丟包或截斷碼流等操作扔掉部分比特流形成一個新的子比特流,該子比特流能夠適應(yīng)用戶的愛好、終端能力和網(wǎng)絡(luò)的狀態(tài)[3]。雖然SHVC具有很高的編碼效率,但是其編碼復(fù)雜度也非常高,這就嚴重阻礙了SHVC的廣泛應(yīng)用。因而,研究SHVC的快速算法具有重要意義??缮炜s視頻編碼主要包含時間、空間和質(zhì)量可伸縮三種類型,質(zhì)量可伸縮型視頻編碼能夠根據(jù)網(wǎng)絡(luò)狀態(tài)提供不同的顯示質(zhì)量,具有很強的適應(yīng)性[4]。
為了提高幀內(nèi)視頻的編碼速度,很多學(xué)者對HEVC和基于H.264先進視頻編碼(H.264/Advanced Video Coding, H.264AVC)的可伸縮視頻編碼(Scalable Video Coding, SVC)進行了研究。在HEVC的幀內(nèi)快速算法中,主要通過自身特征和相關(guān)性進行研究。由于編碼信息跟自身特征有著密切聯(lián)系,因而根據(jù)自身特征進行研究必然能夠顯著提高編碼速度。對此,文獻[5]通過研究邊緣信息預(yù)測可能的方向模式以提高編碼速度。方向模式跟紋理有著密切聯(lián)系,根據(jù)紋理特征預(yù)測可能的方向模式必然能夠提高編碼速度。對此,文獻[6]首先對每個編碼單元(Coding Unit, CU)計算梯度方向并得到梯度模式柱狀圖,然后根據(jù)柱狀圖的分布特征預(yù)測可能性較大的模式,排除可能性較小的模式以提高編碼速度。由于視頻序列存在著較強的時間和空間相關(guān)性,所以根據(jù)相關(guān)性預(yù)測必然能夠提高編碼速度。對此,文獻[7]利用前一幀編碼單元的方向模式及當(dāng)前幀相鄰單元的方向模式預(yù)測當(dāng)前單元可能的方向模式,排除可能性較小的方向模式;文獻[8]利用空間相關(guān)性進行預(yù)測,根據(jù)相鄰編碼深度預(yù)測當(dāng)前的編碼單元深度,排除可能性較小的編碼深度以提高編碼速度;文獻[9]利用深度相關(guān)性進行預(yù)測,通過前一幀深度編碼單元和當(dāng)前深度編碼單元的幀內(nèi)模式預(yù)測當(dāng)前編碼單元是否需要編碼下一深度,如果當(dāng)前編碼單元及前一幀編碼單元的幀內(nèi)模式相同,則當(dāng)前編碼單元不需要編碼下一深度。利用率失真值也是一種有效的提前終止方法,文獻[10]通過實驗研究了下一深度的編碼來估計率失真值,通過與當(dāng)前深度的率失真值進行比較決定是否需要編碼下一深度;文獻[11]研究了編碼單元率失真值的分布規(guī)律,然后利用貝葉斯理論研究當(dāng)前單元率失真值與提前終止及劃分率失真值的關(guān)系,并在此基礎(chǔ)上研究了深度提前終止及劃分判斷條件。
在基于H.264/AVC的質(zhì)量可伸縮視頻編碼中,增強層(Enhancement Layer, EL)通過采用較小的量化參數(shù)來實現(xiàn)質(zhì)量可伸縮。由于增強層采用較小的量化參數(shù),因而采用幀內(nèi)(Intra16)模式的比例很少,對此文獻[12-13]通過排除Intra16模式以提高編碼速度;但是當(dāng)視頻序列比較簡單時仍然會有一定比例的宏塊采用Intra16模式,簡單地排除Intra16模式可能會嚴重影響編碼效率。對此,文獻[14]首先提出僅當(dāng)基本層(Base Layer, BL)采用幀內(nèi)(Intra4)且增強層量化參數(shù)小于30時不采用Intra16模式,然后根據(jù)基本層塊的方向模式預(yù)測當(dāng)前塊可能的方向模式,排除可能性較小的方向模式以提高編碼速度。該算法利用層間相關(guān)性對塊模式和方向模式進行預(yù)測,進一步提高了編碼速度;但是僅利用層間相關(guān)性進行預(yù)測,對相關(guān)性利用不充分,而且沒有采用提前終止以進一步提高編碼速度。
雖然以上算法能夠顯著地提高HEVC或者SVC的視頻編碼速度,但是HEVC沒有基本層無法利用層間相關(guān)性進行預(yù)測,SVC和SHVC也存在著較大的差異,因而需要根據(jù)SHVC的具體特征研究相應(yīng)的快速算法。
由于SHVC是一個新的視頻編碼標(biāo)準(zhǔn),目前關(guān)于質(zhì)量SHVC的研究成果很少。文獻[15]利用基本層的運動向量預(yù)測增強層編碼單元的運動搜索范圍,從而減小搜索范圍;然后再利用相鄰編碼單元及其基本層對應(yīng)編碼單元的率失真值研究當(dāng)前編碼單元的率失真門限值,當(dāng)滿足條件時提前終止編碼單元的選擇以提高編碼速度。文獻[16]首先研究當(dāng)前編碼單元與基本層對應(yīng)單元的關(guān)系,在此基礎(chǔ)上預(yù)測可能性較大的編碼單元、排除可能性較小的編碼單元以提高編碼速度。文獻[17]首先研究當(dāng)前編碼單元與相鄰單元的關(guān)系,在此基礎(chǔ)上預(yù)測可能性較大的編碼單元、排除可能性較小的編碼單元以提高編碼速度。文獻[18]首先利用基本層編碼單元塊深度值預(yù)測增強層編碼塊的深度范圍,跳過一部分的深度值搜索,再利用當(dāng)前預(yù)測單元與時間、空間以及父輩相鄰預(yù)測單元(Prediction Unit, PU)之間的相關(guān)性判斷當(dāng)前編碼區(qū)域的復(fù)雜度,從而選擇預(yù)測模式。這些算法雖然能夠提高質(zhì)量可伸縮高性能視頻編碼(Quality Scalable High efficiency Video Coding, Quality SHVC)的編碼速度,但是都只對編碼深度進行研究,在劃分模式上的研究還不夠深入,從而影響了編碼速度的進一步提高。
對此,本文首先利用層間相關(guān)性預(yù)測可能的編碼深度;然后在可能的深度中,采用層間預(yù)測(Inter-Layer Reference, ILR)模式進行編碼,如果編碼得到的殘差滿足提前終止條件時則直接跳過幀內(nèi)模式,否則需要繼續(xù)采用幀內(nèi)模式進行編碼;最后對深度編碼得到的殘差進行判斷是否滿足提前終止條件,如果滿足則終止編碼,否則還要采用下一深度進行編碼。本文工作包括:1)結(jié)合層間相關(guān)性程度預(yù)測可能的深度;2)根據(jù)增強層模式的分布特征跳轉(zhuǎn)幀內(nèi)(Intra)模式;3)根據(jù)殘差系數(shù)的分布特征研究深度提前終止的判斷條件。
通過實驗研究質(zhì)量可伸縮的編碼規(guī)律,而為了滿足不同的分辨率,本文分別采用B、C、D和E格式的測試序列,B中采用Sunflower和Tractor序列,C中采用Flowervase和PartyScene序列,D中采用BlowingBubbles和RaceHorses序列,E中采用Park和Town序列。這些序列包含了運動和紋理從簡單到復(fù)雜,具有代表性。量化參數(shù)采用了通用測試條件CSTC(Common SHM Test Conditions)[19]基本層BL的量化參數(shù)(Quantization Parameter, QP),設(shè)置為(26,30,34,38);而對應(yīng)的增強層EL的QP設(shè)置為(22,26,30,34)和(20,24,28,32),實驗結(jié)果表明這兩組參數(shù)的性能相似,所以本文以QP(22,26,30,34)為例進行測試。
質(zhì)量SHVC中的基本層和增強層具有相同的空間分辨率和幀率,因此它們之間存在著很強的層間相關(guān)性。所以,當(dāng)基本層與增強層之間深度越相似時,當(dāng)前編碼單元采用基本層編碼單元深度的可能性越大,反之越小。如果基本層編碼單元深度為0,則當(dāng)前單元深度采用0的權(quán)值為4,采用1的權(quán)值為3,采用2的權(quán)值為2,采用3的權(quán)值為1。由于層間相關(guān)性程度對深度分布有著重要的影響,則層間相關(guān)性程度的計算如下:
γ=(|BL-L|+|BUL-UL|+
如利用教材九年級化學(xué)上冊第53頁表3-1,教師設(shè)置問題:(1)原子有什么共同點、不同點?(2)有什么獨特的地方?(3)存在什么規(guī)律?
|BU-U|+|BUR-UR|)/4
(1)
其中:BL表示基本層中左邊編碼單元的深度;L表示增強層中左邊編碼單元的深度;BUL表示基本層中左上編碼單元的深度;UL表示增強層中左上編碼單元的深度;BU表示基本層中上方編碼單元的深度;U表示增強層中上方編碼單元的深度;BUR表示基本層中右上編碼單元的深度;UR表示增強層中右上編碼單元的深度;γ為相關(guān)性程度。為了研究層間相關(guān)性程度與層間深度差值分布的關(guān)系,本文采用上述實驗條件對8個視頻序列進行測試并取平均值,得到層間相關(guān)性程度與層間深度差值分布的關(guān)系如圖1所示。
從圖1中可以看到,層間深度的差值為0的比例變化很大,其他差值的比例不是很大。為了簡單起見,對于差值不為0的深度(即與對應(yīng)基本層深度不同的深度)的權(quán)值,采用初始權(quán)值;對于差值為0的深度(即基本層對應(yīng)單元深度)的權(quán)值為初始權(quán)值乘以權(quán)重(4-r),權(quán)值的計算如式(2)所示:
(2)
即當(dāng)基本層的編碼單元深度不等于增強層的編碼單元深度時,W1=W0;當(dāng)基本層的編碼單元深度等于增強層的編碼單元深度時,W1=(4-r)W0。通過以上方式得到各個深度的權(quán)值按照大小排序為W0、W1、W2、W3,并且計算每一深度值在整個權(quán)值中的比例,取比例較大的權(quán)值,而忽略比例小的權(quán)值。具體如下:
(3)
其中:rk為前k+1個深度權(quán)值之和與整個權(quán)值之和的比例。為了保證編碼效率,需要對不同rk值對應(yīng)的準(zhǔn)確率進行研究。r0取不同值時的準(zhǔn)確率如表1所示。
圖1 層間相關(guān)性程度與層間深度差值分布Fig. 1 Correlation between layers and distribution of depth difference between layers
從表1中可以看到,當(dāng)r0=0.8時,準(zhǔn)確性最高;當(dāng)r0>0.8時,滿足條件的深度很少,導(dǎo)致統(tǒng)計意義不大。類似地,可得到整個深度預(yù)測如下:
1)當(dāng)r0≥0.8時,采用第一個深度作為最大編碼深度進行編碼;
2)同理可得,當(dāng)r1≥0.9時,采用前兩個深度中的最大深度進行編碼。
為了測試本文算法的效果,采用前述的實驗條件進行測試,得到的實驗結(jié)果如表2所示。其中編碼效率由BDBR(Bj?ntegaard Delta Bit Rate)[21]參考軟件SHM-11.0[20]來評估算法的整體率失真特性。從表2中可以看到本文算法能夠保持較好的編碼效率。
表2 深度預(yù)測的編碼損失率Tab. 2 Coding efficiency losses for depth prediction
在質(zhì)量可伸縮編碼中,由于基本層(BL)和增強層(EL)之間的幀分辨率是相同的,所以具有很強的層間相關(guān)性。因此,必然有較多的編碼單元(CU)采用層間預(yù)測模式(ILR)。為了研究增強層EL中ILR模式的分布,通過實驗測試了EL中ILR模式和幀內(nèi)(Intra)模式,它們所占百分比如表3所示。
表3 EL中ILR和Intra模式所占比例對比Tab. 3 Proportion comparison of ILR and Intra mode in EL
從表3中可以看出,ILR模式的平均占比為96%,這表明,在EL層中幾乎所有的編碼單元都選擇了ILR模式。因此,可只采用該模式進行編碼。當(dāng)然,其中包含某些模式的Intra模式也占有一定的比例,但是比例并不大。為了測試本文算法的效果,采用前述的實驗條件進行測試,得到的實驗結(jié)果如表4所示。由表4可知,視頻序列的平均BDBR為-0.13%,負值代表了編碼效率的提高,即表明本文算法能夠保持較高的編碼效率。
表4 ILR模式編碼損失率Tab. 4 Coding efficiency losses for ILR mode
一般來說,最優(yōu)劃分的殘差系數(shù)會服從一定的分布規(guī)律[20],目前,主要有拉普拉斯分布[21]、高斯分布。其中,采用拉普拉斯分布預(yù)測編碼效率比采用高斯分布要高,因而本文采用拉普拉斯分布進行測試。
為了判斷殘差系數(shù)是否服從拉普拉斯分布,本文采用分布擬合檢驗方法進行測試。假設(shè)a1、a2、…、an是殘差值,將殘差系數(shù)按照從小到大的順序分成等距離大小的16個區(qū)間,fi表示殘差樣本落在第i個區(qū)域的實際個數(shù),pi表示殘差樣本落在第i個區(qū)間的理論概率。假設(shè)第i個區(qū)間的最小值為x0,最大值為x1,則pi的值計算如下:
(4)
根據(jù)分布擬合檢驗得到:
(5)
(6)
圖2 不同參數(shù)對應(yīng)的編碼效率Fig. 2 Coding efficiency with different parameter
為了評估本文算法的性能,在前述實驗條件進行測試并與文獻[18]算法進行對比。由于本文主要是研究幀內(nèi)編碼,所以編碼環(huán)境采用 AI-Main (All Intra-Main)。
計算復(fù)雜度通過EL中運行的編碼時間來度量,TS代表了在EL中編碼時間節(jié)省的百分比。測試序列采用國際通用測試條件推薦的A和B兩種格式的序列[22]如表5所示。
表5 測試序列信息Tab. 5 Test sequences’ information
本文算法和文獻[18]算法在相同的計算機平臺和AI編碼環(huán)境下的實驗結(jié)果如表6所示。
從表6可看出:本文算法的平均編碼時間提高了79%,比文獻[18]的算法減少了10.49個百分點;同時在率失真方面,本文算法的BDBR也優(yōu)于文獻[18]的算法。因此,從上述實驗中可得出結(jié)論:本文算法在編碼效率損失很小的情況下可以顯著提高編碼速度。從表6還可以看到,跟文獻[18]算法相比,本文算法不但速度提高,而且BDBR和BDPSNR(Bj?ntegaard Delta Peak Signal-to-Noise Rate)也有所改善。值得注意的是,文獻[18]算法中的平均速度與本文速度意義不同,其原因文獻[18]中采用的編譯環(huán)境是LD-Main(Low Delay-Main)和RA-Main(Random access-Main),而本文采用的編譯環(huán)境是AI-Main (All Intra-Main)。
表6 本文算法與文獻[18]算法的結(jié)果對比Tab. 6 Results comparison between the algorithm of the proposed algorithm and reference[18]
為了提高質(zhì)量SHVC的編碼速度,本文提出一種基于SHVC的幀內(nèi)快速預(yù)測算法。該算法主要利用相關(guān)性排除可能較小的深度,再利用“分布擬合”檢驗方法判斷殘差系數(shù)是否符合拉普拉斯分布:若符合拉普拉斯分布則采用層間ILR預(yù)測模式,跳過幀內(nèi)(Intra)預(yù)測模式實現(xiàn)提前終止;若不符合拉普拉斯分布則遍歷層間ILR預(yù)測模式和幀內(nèi)(Intra)預(yù)測模式,計算率失真值,通過比較選擇合適的深度值。
實驗結(jié)果表明,本文算法在編碼效率損失很小的情況下,平均編碼時間節(jié)省了79.00%,比文獻[18]算法減少了10.49個百分點。
本文對質(zhì)量SHVC幀內(nèi)快速算法進行了研究,為了進一步提高編碼速度,下一步將對質(zhì)量SHVC幀間快速算法進行研究。