張紅升,陳 濤,鄧宇靜,王國裕
(重慶郵電大學(xué) 光電工程學(xué)院,重慶 400065)
H.265/HEVC(high efficiency video coding)采用基于塊的混合編碼框架,振鈴效應(yīng)是這種編碼方式廣泛存在的失真效應(yīng)之一[1]。為了降低振鈴效應(yīng)對(duì)視頻質(zhì)量的影響,H.265/HEVC引入了樣點(diǎn)自適應(yīng)補(bǔ)償技術(shù),但同時(shí)也增加了編碼復(fù)雜度[2]。文獻(xiàn)[3]提到降低復(fù)雜度最明顯的方法之一就是限制樣點(diǎn)自適應(yīng)補(bǔ)償(sample adaptive offset,SAO)類型候選對(duì)象的數(shù)量,采用的是次抽樣的方案進(jìn)行優(yōu)化。文獻(xiàn)[4]對(duì)時(shí)間基層與高層時(shí)間層的關(guān)系進(jìn)行了分析,優(yōu)化了SAO的編碼流程。文獻(xiàn)[5]利用圖形直方圖,針對(duì)不同大小的樹形編碼塊提出了一種邊帶補(bǔ)償改進(jìn)方法。文獻(xiàn)[6]通過實(shí)驗(yàn)證明了編碼單元深度的劃分與紋理復(fù)雜度的關(guān)系,只對(duì)復(fù)雜的編碼單元執(zhí)行SAO濾波器以優(yōu)化SAO,降低編碼復(fù)雜度。文獻(xiàn)[7]在文獻(xiàn)[6]的基礎(chǔ)上,進(jìn)一步證明了量化參數(shù)(quantization parameter,QP)值與紋理復(fù)雜度之間的關(guān)系,通過跳過自適應(yīng)濾波補(bǔ)償值為0的像素,達(dá)到了降低編碼復(fù)雜度的目的。上述方法僅分析了視頻的空間域特性,而忽略了視頻時(shí)域特性。為此,本文結(jié)合人類視覺系統(tǒng)(human visual system,HVS)特性[8],同時(shí)利用時(shí)域和空域信息,對(duì)樣點(diǎn)自適應(yīng)濾波算法進(jìn)行優(yōu)化,以提高編碼效率。
H.265/HEVC編碼過程中,無論量化參數(shù)QP如何變化,都會(huì)因?yàn)楦哳l量化過程中的失真產(chǎn)生振鈴效應(yīng)[1,9]。視頻重建幀中振鈴現(xiàn)象示意圖如圖1。圖1中,實(shí)線表示像素在不同位置時(shí)的像素大小,圓點(diǎn)表示重構(gòu)圖像的像素值。可以看出,重構(gòu)像素值在原始像素值附近波動(dòng),這種波動(dòng)會(huì)造成圖像質(zhì)量的下降。
圖1 視頻重建幀中振鈴現(xiàn)象示意圖Fig.1 Schematic diagram of ringing in video reconstruction frames
解決振鈴效應(yīng)的基本思想是對(duì)波峰值像素添加負(fù)值進(jìn)行補(bǔ)償,波谷添加正值進(jìn)行補(bǔ)償,從而減少原始圖像和重構(gòu)圖像之間的誤差。主要有3種補(bǔ)償形式:邊界補(bǔ)償(edge offset,EO)、邊帶補(bǔ)償(band offset,BO)和參數(shù)融合技術(shù)(merge)[1]。
通過比較當(dāng)前像素值和相鄰像素值的大小對(duì)當(dāng)前像素進(jìn)行歸類,然后對(duì)同類像素補(bǔ)償相同值。共4種模式:水平模式(EO_0)、垂直模式(EO_1)、135°模式(EO_2)和45°模式(EO_3),如圖2。其中,N1,N2表示相鄰像素。每種模式又分為5個(gè)不同種類,如表1。
圖2 4種邊界補(bǔ)償Fig.2 Four kinds of boundary compensation
表1 邊界補(bǔ)償分類
根據(jù)像素值強(qiáng)度,將像素值的取值范圍等分為32條邊帶,每條邊帶都包含一組連續(xù)的像素值。例如,對(duì)于一個(gè)8 bit像素值,其值為0~255,總共32條邊帶,因此,一個(gè)邊帶包含8個(gè)連續(xù)的像素值。用8q~8q+7(q=0,1,2,…,31)的像素點(diǎn)范圍表示第q條邊帶,然后對(duì)每個(gè)邊帶進(jìn)行像素補(bǔ)償值的計(jì)算[1]。根據(jù)同一編碼單元像素點(diǎn)分布特性,在H.265標(biāo)準(zhǔn)中僅使用了4條連續(xù)邊帶進(jìn)行補(bǔ)償,如圖3。
圖3 邊帶補(bǔ)償Fig.3 Sideband compensation
參數(shù)融合模式(merge)采用上相鄰塊或者左相鄰塊來預(yù)測當(dāng)前編碼模塊的SAO參數(shù),如圖4。其中,A,B是已經(jīng)編碼的模塊;C是當(dāng)前編碼模塊,如果采用參數(shù)融合模式,那C只需要傳送融合標(biāo)志位即可。
圖4 參數(shù)融合模式Fig.4 Parameter fusion mode
人類視覺系統(tǒng)(human visual system,HVS)特性表明,人眼對(duì)圖像的不同部分的感知度是不同的[8]。對(duì)人眼影響較大的區(qū)域稱為感興趣區(qū)域(region of interest,ROI),而相應(yīng)的其他區(qū)域則稱為非感興趣區(qū)域或背景區(qū)域(background,BC)[10]。依據(jù)人類視覺系統(tǒng)的特點(diǎn),在觀看視頻過程中,如果非感興趣區(qū)域出現(xiàn)少量的失真情況,人眼不會(huì)特別敏感。目前已經(jīng)確認(rèn)影響視覺注意力的低層次原因主要包括對(duì)比度、形狀、運(yùn)動(dòng)、尺寸、位置等因素[11]。這些因素在時(shí)間域可由圖像的運(yùn)動(dòng)塊來表征;在空間域,則與圖像的邊緣信息和紋理復(fù)雜區(qū)域密切相關(guān)[12-13]。
由于在H.265技術(shù)中,圖像紋理越復(fù)雜,所使用編碼單元尺寸越小,編碼單元深度值Depth越大;而圖像紋理越簡單,編碼單元的尺寸越大,編碼單元深度值Depth則越小[14],編碼單元?jiǎng)澐质疽鈭D[7]如圖5。因此,可以把運(yùn)動(dòng)區(qū)域和Depth較大的區(qū)域定義為人眼感興趣的區(qū)域。按照這種思路,本文將從時(shí)域和空間域2個(gè)角度對(duì)SAO算法展開分析。
圖5 編碼單元?jiǎng)澐质疽鈭DFig.5 Schematic diagram of coding unit division
2.2.1 基于編碼單元深度的空間域SAO優(yōu)化
圖6顯示了BasketballPass測試序列視頻幀編碼單元?jiǎng)澐帧膱D6中可以得知,人眼感興趣的區(qū)域如人的輪廓、籃球等單元?jiǎng)澐稚疃容^深,而非感興趣區(qū)域如地板等背景區(qū)域單元?jiǎng)澐稚疃容^淺甚至為0。
圖6 BasketballPass測試序列第1幀IDR幀F(xiàn)ig.6 BasketballPass test sequence 1 IDR frame
針對(duì)空間域中單元?jiǎng)澐稚疃群图y理特性分布,文獻(xiàn)[14]詳細(xì)分析了編碼單元紋理特性,文獻(xiàn)[7]證明了量化參數(shù)QP和單元?jiǎng)澐稚疃菵epth成反比例關(guān)系,文獻(xiàn)[15]論證了圖像紋理的復(fù)雜程度和編碼單元深度Depth成正比例關(guān)系。從圖6觀察可知,在空間域中尺寸小于16×16的編碼單元(coding unit,CU)塊紋理較復(fù)雜,分布在人眼感興趣區(qū)域;而尺寸為64×64的CU塊,紋理特征簡單,位于人眼不感興趣的區(qū)域。
(1)
由公式(1)可知,對(duì)Depth≤2的區(qū)域可以不必做標(biāo)準(zhǔn)SAO處理,從而節(jié)約大量運(yùn)算。
2.2.2 基于運(yùn)動(dòng)矢量的時(shí)間域SAO優(yōu)化
圖7顯示了BasketballPass測試序列視頻幀運(yùn)動(dòng)矢量分布圖像。從圖7中可知,人眼感興趣的區(qū)域如人的輪廓、籃球等單元運(yùn)動(dòng)矢量較密集,而非感興趣區(qū)域如地板等背景區(qū)域運(yùn)動(dòng)矢量疏松,其值較小甚至為0。可見,通過運(yùn)動(dòng)矢量參數(shù)MV可以從時(shí)間域的角度判斷人眼感興趣的范圍[12]。
圖7 BasketballPass測試序列第6幀P幀F(xiàn)ig.7 BasketballPass test sequence 6 P frame
H.265/HEVC在進(jìn)行SAO處理過程中,采用最大編碼單元(largest coding unit,LCU)(尺寸為64×64)作為基礎(chǔ)來決定SAO補(bǔ)償范圍。在幀間預(yù)測的過程中,每個(gè)LCU塊會(huì)產(chǎn)生并保存256個(gè)尺寸為4×4的CU塊運(yùn)動(dòng)矢量??紤]到4×4的CU塊運(yùn)動(dòng)矢量的亂序性,一般的方法是采用了256個(gè)CU塊的運(yùn)動(dòng)矢量平均值作為當(dāng)前LCU塊的運(yùn)動(dòng)矢量,如公式(2)。
(2)
(2)式中,N為一個(gè)LCU中4×4大小的CU塊數(shù)量。
文獻(xiàn)[12]為了簡化計(jì)算過程,僅計(jì)算了256個(gè)CU塊的運(yùn)動(dòng)矢量的水平分量和垂直分量。如公式(3)。
(3)
此時(shí)每個(gè)LCU塊仍需要累加512次,復(fù)雜度仍然很高,且由于運(yùn)動(dòng)矢量可能有正值也有負(fù)值,通過簡單的求和并不一定能夠表征當(dāng)前LCU的運(yùn)動(dòng)矢量特性。
考慮到CU塊運(yùn)動(dòng)矢量變化具有區(qū)域相關(guān)性,所以可以對(duì)LCU進(jìn)行抽樣處理,而不必計(jì)算每個(gè)4×4 CU塊的運(yùn)動(dòng)矢量,這樣整體的運(yùn)算量將大為降低。同時(shí),由于運(yùn)動(dòng)矢量的大小和運(yùn)動(dòng)程度成正比關(guān)系,本文定義了一個(gè)閾值β,如果當(dāng)前CU塊運(yùn)動(dòng)矢量小于β,則認(rèn)為該CU塊幾乎沒有運(yùn)動(dòng),不屬于人眼感興趣區(qū)域。β值過大會(huì)導(dǎo)致判斷某幀的運(yùn)動(dòng)塊數(shù)量變少而影響視頻質(zhì)量;β值過小則會(huì)導(dǎo)致判斷某幀的運(yùn)動(dòng)塊數(shù)量變多而影響視頻編碼時(shí)間。為了確定一個(gè)合適的β值,本文測試了β從1到20對(duì)編碼時(shí)間T,碼率B、峰值信噪比PSNR以及結(jié)構(gòu)相似性(structural similarity index,SSIM)(值越接近1,圖像失真越小)的影響,如圖8。圖8中為了方便觀察,將PSNR和SSIM分別擴(kuò)大了10倍和600倍。
圖8 閾值β- T/B/PSNR/SSIM關(guān)系曲線Fig.8 Threshold β-T/B/PSNR/SSIM relationship curve
根據(jù)圖8中的數(shù)據(jù),閾值β在10左右,PSNR以及SSIM相對(duì)平均,且10以后編碼時(shí)間相對(duì)穩(wěn)定,碼率下降較快,因此,本文認(rèn)為β取10較為合適。當(dāng)水平分量和垂直分量上運(yùn)動(dòng)矢量小于閾值β(β=10)時(shí),近似認(rèn)為運(yùn)動(dòng)矢量為0,當(dāng)大于閾值β時(shí),標(biāo)志位累計(jì)數(shù)θ加1。而因?yàn)殚g隔尺寸為1個(gè)4×4的CU塊,所以在一個(gè)LCU中,共進(jìn)行了64次采樣,大大降低了復(fù)雜度。當(dāng)累計(jì)數(shù)θ達(dá)到總采樣數(shù)的1/3,即大于64/3時(shí),認(rèn)為此模塊屬于人眼的感興趣區(qū)域。本文將圖像分為3種區(qū)域:不感興趣區(qū)域(R=0)、弱興趣區(qū)域(R=1)和強(qiáng)興趣區(qū)域(R=2和R=3),計(jì)算方法如公式(4)。
Rp=
(4)
(4)式中,Rp表示P幀的感興趣區(qū)域的判斷;Ri表示I幀的感興趣區(qū)域的判斷。
對(duì)R=0的區(qū)域,即視頻中的不感興趣區(qū)域,SAO效果不明顯,可以跳過不予處理;對(duì)R=1的區(qū)域,需進(jìn)行一定的弱補(bǔ)償,只進(jìn)行簡化SAO處理,即忽略第1節(jié)所述的邊帶補(bǔ)償模式BO以及merge參數(shù)融合模式,只處理EO_0,EO_1,EO_2和EO_3,處理方式與標(biāo)準(zhǔn)算法一樣;對(duì)R=2和R=3的區(qū)域,紋理豐富或運(yùn)動(dòng)較大,是人眼感興趣的區(qū)域,需要采用標(biāo)準(zhǔn)SAO處理的標(biāo)準(zhǔn)補(bǔ)償區(qū)域,此時(shí)除了需要處理EO_0,EO_1,EO_2和EO_3外,還需要處理BO和Merge模式。
經(jīng)過上述分析,在本文中結(jié)合人眼感興趣區(qū)域,從時(shí)域和空域2個(gè)角度對(duì)SAO進(jìn)行了優(yōu)化。具體優(yōu)化SAO算法的過程如圖9。
步驟1獲取當(dāng)前編碼單元LCU視頻幀的幀類型。
步驟2如果判斷為I幀,獲取當(dāng)前LCU的劃分深度Depth的值,然后判斷是否在感興趣區(qū)域。
①如果Depth=0說明不在感興趣區(qū)域,直接進(jìn)入下一個(gè)LCU;
②如果Depth≥2說明在感興趣區(qū)域,LCU采用標(biāo)準(zhǔn)SAO處理,分別對(duì)EO_0,EO_1,EO_2,EO_3,BO和Merge模式進(jìn)行計(jì)算,選擇相對(duì)率失真代價(jià)最小模式的補(bǔ)償值作為最優(yōu)補(bǔ)償值;否則,LCU進(jìn)行簡化SAO處理,只處理EO_0,EO_1,EO_2和EO_3,選擇這4個(gè)模式中相對(duì)率失真代價(jià)最小模式的補(bǔ)償值作為相對(duì)最優(yōu)補(bǔ)償值。
步驟3如果判斷為P幀,獲取當(dāng)前LCU的運(yùn)動(dòng)矢量θ參數(shù)和深度Depth的值,然后判斷是否在感興趣區(qū)域。
①如果Depth=0說明不在感興趣區(qū)域,接進(jìn)入下一個(gè)LCU;
②如果Depth=3 ,說明在感興趣區(qū)域,LCU采用標(biāo)準(zhǔn)SAO處理,獲得補(bǔ)償值;
③如果2≥Depth≥1且θ>64/3時(shí),說明也在感興趣區(qū)域,同樣進(jìn)行標(biāo)準(zhǔn)SAO處理;
④如果2≥Depth≥1且θ<64/3時(shí),處于弱補(bǔ)償區(qū)域,只需進(jìn)行簡化SAO處理,獲得相對(duì)最優(yōu)補(bǔ)償值;
步驟4重復(fù)以上步驟,直到完成最后一個(gè)LCU為止。
圖9 基于感興趣區(qū)域的SAO算法流程Fig.9 SAO algorithm flow based on region of interest
為了體現(xiàn)本文算法的普適性,選用了5個(gè)不同級(jí)別分辨率的測試序列數(shù)據(jù)在x265平臺(tái)上進(jìn)行測試,實(shí)驗(yàn)平臺(tái)的內(nèi)存為8.00 GB,CPU為Intel(R)Core (TM)i7—6700 CPU@3.40 GHz。實(shí)驗(yàn)數(shù)據(jù)為HEVC視頻標(biāo)準(zhǔn)測試序列集。測試過程中x265的圖像組(group of picture,GOP)大小設(shè)置為10,采用無B幀模式,即GOP結(jié)構(gòu)為“IPPPPPPPPP”,同時(shí)還與量化參數(shù) QP設(shè)置為 32的HM-16.0算法的數(shù)據(jù)進(jìn)行了對(duì)比。本文以SAO編碼時(shí)間減少的百分比、峰值信噪比的減少量和比特率減少的百分比這3個(gè)參數(shù)作為SAO算法客觀質(zhì)量評(píng)估標(biāo)準(zhǔn)。實(shí)驗(yàn)結(jié)果如表2。
表2 本文算法與標(biāo)準(zhǔn)算法客觀編碼性能的對(duì)比(HM)
從表2中可以看出,本文算法相比x265/HM16.0提供的標(biāo)準(zhǔn)算法,PSNR平均減少了0.033 dB/0.025 dB,比特率平均減少了0.019%/0.079%,而編碼時(shí)間平均縮短了61.47%/57.01%。
除了和標(biāo)準(zhǔn)算法對(duì)比外,所提算法還和參考文獻(xiàn)[3-4,6]以HM標(biāo)準(zhǔn)SAO算法為參照進(jìn)行了對(duì)比,結(jié)果如表3??梢钥闯?,本文算法在節(jié)省時(shí)間方面明顯優(yōu)于文獻(xiàn)[3,6],碼率方面優(yōu)于文獻(xiàn)[4,6]。
表3 本文算法與文獻(xiàn)算法客觀編碼性能對(duì)比(HM)
此外,本文還與文獻(xiàn)[7] 以x265標(biāo)準(zhǔn)SAO算法為參照進(jìn)行了對(duì)比,結(jié)果如表4??梢钥闯?,本文算法比文獻(xiàn)[7]運(yùn)算時(shí)間略長(由于考慮了視頻幀的時(shí)間相關(guān)性),但在視頻質(zhì)量(對(duì)應(yīng)PSNR指標(biāo))和最終碼率方面具有優(yōu)勢。
由于PSNR是以圖像像素值之間的誤差進(jìn)行質(zhì)量評(píng)價(jià),其值不能完全反映人眼主觀感受,因此,本文還做了可以較好地反映人眼主觀感受的SSIM的數(shù)據(jù)分析。SSIM是以原始視頻數(shù)據(jù)和失真視頻之間的結(jié)構(gòu)相似性進(jìn)行質(zhì)量評(píng)價(jià),其值越接近于1代表視頻質(zhì)量越好。圖10是選取的3組較為典型的視頻序列,采用本文的SAO優(yōu)化算法的前100幀的SSIM值的曲線圖,可以看出,視頻的平均SSIM值能達(dá)到0.9以上,且場景較為簡單的視頻,例如Vidyo1序列,SSIM值更是能夠穩(wěn)定在0.97左右。
表4 本文算法與文獻(xiàn)算法客觀編碼性能對(duì)比(x265)
圖10 SSIM曲線圖Fig.10 SSIM graph
圖11a、圖11b和圖12a、圖12b是x265標(biāo)準(zhǔn)算法和本文算法對(duì)于RaceHorses(832×480)序列和Vidyo1(1 280×720)序列的某幀整體對(duì)比圖,圖12c和圖12d是Vidyo1(1 280×720)序列的細(xì)節(jié)部分對(duì)比圖。對(duì)比可以看出,本文算法在較大程度地縮短了編碼時(shí)間的同時(shí),保證了視頻質(zhì)量只有極小的損失。
圖11 x265標(biāo)準(zhǔn)算法和本文算法對(duì)于RaceHorses(832×480)序列某幀對(duì)比圖Fig.11 x265 standard algorithm and the algorithm of this paper for a frame comparison of RaceHorses(832×480) sequence
圖12 x265標(biāo)準(zhǔn)算法和本文算法對(duì)于Vidyo1(1 280×720)序列某幀對(duì)比圖Fig.12 x265 standard algorithm and the algorithm of this paper for a frame comparison of Vidyo1(1 280×720) sequence
根據(jù)大量資料和測試結(jié)果顯示,標(biāo)準(zhǔn)SAO平均可以節(jié)約2%~6%的碼率,而編解碼的復(fù)雜度增加2%左右[16]。圖13統(tǒng)計(jì)了HEVC標(biāo)準(zhǔn)測試序列中各視頻幀的3種補(bǔ)償處理方式的分布??梢钥闯觯帽疚乃惴?,無需處理的圖像幀平均占比為47.20%,需弱處理的圖像幀占比27.30%,需強(qiáng)處理的圖像幀占比25.50%。假設(shè)弱處理計(jì)算量為強(qiáng)處理計(jì)算量的α倍(α為0~1),當(dāng)α=0時(shí),整體編碼復(fù)雜度增加量為2%×25.50%=0.51%;當(dāng)α=1時(shí),整體編碼復(fù)雜度增加量為2%×(25.50%+47.20%)=1.06%。因此,本文的整體編碼復(fù)雜度平均增加了0.51%~1.06%。結(jié)合圖13和表2還可以看出,當(dāng)場景較復(fù)雜(如序列RaceHorses),即不需要SAO補(bǔ)償和需要弱處理的視頻幀占比較多,可能會(huì)造成碼率小幅度增加、編碼時(shí)間降低量減少的現(xiàn)象。這也是本文算法急需優(yōu)化的地方。
綜上所述,本文提出的優(yōu)化算法,更適用于時(shí)域或空間域中那些場景較簡單,人感興趣區(qū)域較小的視頻序列??梢砸暂^小的視頻質(zhì)量損耗為代價(jià),較大幅度地降低SAO編碼時(shí)間。
圖13 3種補(bǔ)償處理分布圖Fig.13 Three compensation processing distribution map
本文通過分析人眼感興趣區(qū)域,從時(shí)域和空間域角度對(duì)SAO算法進(jìn)行優(yōu)化,提出了一種基于人眼感興趣區(qū)域的樣點(diǎn)自適應(yīng)補(bǔ)償算法。通過跳過人眼非感興趣區(qū)域的SAO計(jì)算,達(dá)到降低編碼時(shí)間提高編碼效率的目的。實(shí)驗(yàn)結(jié)果表明,在不改變主觀視頻質(zhì)量的情況下,本文SAO編碼時(shí)間比標(biāo)準(zhǔn)SAO算法平均減少了61.47%。目前當(dāng)視頻場景較復(fù)雜時(shí),本文SAO算法復(fù)雜度仍較高,下一步將針對(duì)這個(gè)方向進(jìn)一步進(jìn)行研究優(yōu)化。