陳杰,林琪,張璐,盧榮輝,阮文斗
(1.武夷學(xué)院 信息技術(shù)與實驗室管理中心,福建武夷山,354300;2.華僑大學(xué) 信息科學(xué)與工程學(xué)院,福建廈門,361021)
隨著社會的發(fā)展,視頻通信的應(yīng)用也越來越普及,如遠(yuǎn)程視頻教育、遠(yuǎn)程視頻會議、無線投屏等技術(shù)在教育領(lǐng)域流行起來,受新冠病毒的影響,在2019-2020學(xué)年第二學(xué)期,全國各地高校、中小學(xué)大部分都停課,各地高校、中學(xué)乃至小學(xué)遵循教育部停課不停學(xué)的指導(dǎo)思想,基本上都采用線上教學(xué)的方式進(jìn)行授課,課堂上教師大多數(shù)采用教學(xué)材料PPT與個人視頻相結(jié)合的形式,將知識傳授給學(xué)生們。這種教學(xué)方式對視頻編碼工具的實時能力有著較高的要求,編碼性能越高、編碼速度越快則線上課程的效果越好,線上教學(xué)已成為一種趨勢,未來線上教學(xué)在教學(xué)中的比重一定會越來越大,這使視頻編碼技術(shù)優(yōu)化成為了一大熱點。
現(xiàn)在所使用的主流編碼標(biāo)準(zhǔn)HEVC[1-3](High Emciency video Coding)于2013年由國際標(biāo)準(zhǔn)化組織(ISO)和國際電工委員會(IEC)以及國際電信聯(lián)盟(ITU-T)聯(lián)合頒布,這是第一版HEVC,也稱為H.265。在隨后的兩年內(nèi),HEVC的第二版和第三版也相繼發(fā)布,2014年10發(fā)布第二版,包括了范圍擴(kuò)展、可分級擴(kuò)展以及多視點擴(kuò)展,2015年4月發(fā)布了第三版[4],這一版本包含了3D擴(kuò)展附件的應(yīng)用,進(jìn)一步擴(kuò)大了HEVC的應(yīng)用范圍。
但HEVC本身是基于攝像機(jī)拍攝的自然圖像和視頻特性所設(shè)計的,現(xiàn)在的視頻常包含著如計算機(jī)圖形、動畫、文本等由計算機(jī)產(chǎn)生的屏幕內(nèi)容圖像,自然視頻圖像與屏幕內(nèi)容圖像特性不同,屏幕內(nèi)容視頻一般畫面有很多邊緣銳利的圖像塊、顏色種類少、存在大量重復(fù)的圖像塊等,所以ITU-T和ISO/IEC在HEVC標(biāo)準(zhǔn)上提出了屏幕內(nèi)容編碼[5](Screen Content Coding,SCC)擴(kuò)展標(biāo)準(zhǔn),其主要用于提高對屏幕內(nèi)容視頻的壓縮性能。SCC極大地減少了對屏幕內(nèi)容視頻的碼率且提高了視頻質(zhì)量,但新增的編碼工具卻增加了編碼復(fù)雜度,從而增多了編碼時間,這不利于視頻編碼工具的實時應(yīng)用能力,所以對HEVC-SCC的快速算法研究有極其深遠(yuǎn)的意義。本文通過對HEVC-SCC新增的幾種編碼工具及當(dāng)前的研究現(xiàn)狀進(jìn)行分析,針對HEVC-SCC的快速算法提出相應(yīng)的建議及對策。
2014年1月,JCT-VC開始制定屏幕內(nèi)容標(biāo)準(zhǔn)(SCC),并于2016年基本完成,HEVC-SCC編碼框架如圖1所示,其仍采用HEVC的基于遞歸四叉樹編碼框架,并提出了新的編碼工具:幀內(nèi)塊數(shù)據(jù)復(fù)制技術(shù)[6-7](Intra Block Copy,IBC)、調(diào)色板模式(Palette Mode,PLT)[8-9]、自適應(yīng)顏色空間變換技術(shù)(Adaptive Color Transform,ACT)[10-11]、自適應(yīng)運(yùn)動矢量決策技術(shù)(Adaptive Motion Vector Resolution,AMVR)[12-14]。
圖1 HEVC—SCC編碼框架
1.1.1 CTU到CU的四叉樹劃分
HEVC-SCC采用的編碼方式依舊基于塊,圖像首先被分為大小相等、緊密相鄰不重復(fù)的編碼樹單元CTU,CTU的尺寸為64×64,CTU并不是最終的編碼單元,其可以通過自適應(yīng)進(jìn)一步劃分為32×32、16×16、8×8的編碼單元CU[15]。當(dāng)CTU不進(jìn)行劃分時,一個CTU僅包含一個CU,CU的大小為64×64。當(dāng)CTU進(jìn)行劃分時,一定遵循同一尺寸的4方塊等分,以CTU為樹根,劃分后的CU為樹葉,根據(jù)CTU劃分的規(guī)則,稱其為四叉樹劃分,如圖2所示。將劃分層次分為4層,層數(shù)0到3分別對應(yīng)不劃分、劃分一次、劃分兩次、劃分三次,編碼時按照深度優(yōu)先的光柵掃描順序處理各個CU。
圖2 CU劃分圖及對應(yīng)四叉數(shù)結(jié)構(gòu)圖[2]
1.1.2 CU中的PU劃分
當(dāng)CU不再進(jìn)行劃分確定為最終尺寸時,需要進(jìn)行預(yù)測運(yùn)算,HEVC-SCC的預(yù)測運(yùn)算是在PU級上進(jìn)行的,最底層的CU需要劃分成預(yù)測單元PU,且只允許一層劃分。CU決定了預(yù)測模式,PU攜帶了CU的預(yù)測信息,包含了幀內(nèi)的預(yù)測方向、幀間的運(yùn)動參數(shù)等。圖3是CU到PU所有的劃分情況,幀內(nèi)預(yù)測PU劃分只能為2N×2N、N×N,幀間預(yù)測PU劃分則可以為圖3中的所有方式,值得注意的是,N×N的劃分方式只能為最小尺寸8×8的CU所用。
圖3 PU的劃分方式
1.1.3 變換單元TU劃分
對殘差信號進(jìn)行編碼時,需要將CU劃分為變換單元TU,TU是編碼器進(jìn)行變換和量換的基本單元,從CU到TU的劃分也是四叉樹劃分。與CTU到CU的四叉樹劃分不同的是,此時的樹根是CU樹葉是TU,TU的尺寸最大為32×32,最小為4×4。在HEVC-SCC中對尺寸為32×32、16×16、8×8、4×4的TU用的是離散余弦變換(DCT),對于4×4大小的TU亮度幀內(nèi)預(yù)測的殘差,也可以使用離散正弦變換(DST)。
1.1.4 幀內(nèi)預(yù)測
HEVC為幀內(nèi)編碼定義了33種角度預(yù)測模式,加上平面(Planar)模式和直流(DC)模式共計35種幀內(nèi)預(yù)測模式[16],其預(yù)測模式和方向見圖4,模式編號由像素的個數(shù)表示。在進(jìn)行幀內(nèi)編碼時,首先準(zhǔn)備亮度預(yù)測塊周圍的參考像素,如出現(xiàn)參考像素不可用的情況,根據(jù)參考像素填充規(guī)則進(jìn)行填充,其次判斷參考像素是否需要平滑濾波,對需要濾波的參考塊進(jìn)行相應(yīng)的濾波處理,最后再遍歷不同深度下的CU的預(yù)測模式,利用Hadamard變化計算預(yù)測殘差絕對值和(SATD),選取STAD值較小的幾種PU模式加入候選集中,對候選集中的殘差信號進(jìn)行熵編碼,計算率失真代價(RDO)[17],選取RDO最小的為最優(yōu)模式。當(dāng)亮度塊的最優(yōu)模式確定后,再將此模式與DC、Planar、模式10、模式26作為色度塊的候選集進(jìn)行計算RDO,從而確定色度塊的最優(yōu)模式。
圖4 幀內(nèi)預(yù)測模式和角度[2]
1.1.5 幀間預(yù)測
視頻的相鄰幀相關(guān)性很強(qiáng),在完整的視頻序列中,相鄰幀之間存在很多相同圖像,只是相對位移發(fā)生了變化,如果對這些圖像進(jìn)行重復(fù)的編碼顯然浪費(fèi)碼字。幀間預(yù)測時在相鄰的圖像幀內(nèi)通過運(yùn)動估計為當(dāng)前編碼塊找到最匹配的已編碼塊,得到運(yùn)動矢量MV,通過MV與匹配塊得到當(dāng)前編碼塊的預(yù)測值,預(yù)測值與原始值的差為殘差,編碼時只需對MV、參考幀索引等運(yùn)動參數(shù)與殘差進(jìn)行編碼即可。
1.2.1 幀內(nèi)塊數(shù)據(jù)復(fù)制技術(shù)
屏幕內(nèi)容視頻有一特點,其每一幀圖像中有大量重復(fù)的文字和圖案,如圖5所示,兩個方框內(nèi)的內(nèi)容是完全一樣的。當(dāng)?shù)谝粋€方框編碼完成后,編碼器處理到第二個方框時,顯然不需要再次進(jìn)行編碼,只需要借助第一個方框進(jìn)行預(yù)測即可,這就是IBC模式的設(shè)計思路,這一過程與幀間預(yù)測類似,差別在于幀間預(yù)測的參考塊在不同幀,而IBC的參考塊為同一幀內(nèi)的已編碼塊。IBC模式為屏幕內(nèi)容序列帶來了2%~44%的比特流節(jié)省,在IBC模式下最關(guān)鍵的是匹配快的尋找,匹配快與編碼塊一定是同一條或片內(nèi),塊匹配這一過程是IBC模式中計算量最復(fù)雜的,增加了HEVC-SCC的編碼時間。
圖5 屏幕內(nèi)容圖像中的IBC模式
1.2.2 調(diào)色板模式
PLT模式是HEVC-SCC中新增的編碼工具,其對提升屏幕內(nèi)容視頻的編碼效率的作用是很大的。1個編碼單元CU含有1個亮度塊與2個色度塊,對屏幕內(nèi)容圖像而言,其局部常包含著大量顏色相同的背景,這些背景被其它顏色分開形成銳利的邊緣,這樣的特性導(dǎo)致HEVC標(biāo)準(zhǔn)編碼效率不高,也是PLT模式設(shè)計的來源。區(qū)別于幀內(nèi)編碼先預(yù)測再變化的過程,PLT首先統(tǒng)計編碼塊上出現(xiàn)頻率較高的顏色,將較為接近的顏色合并只留下幾種代表性的顏色,對這幾種代表性的顏色進(jìn)行編碼形成調(diào)色板。調(diào)色板生成之后編碼器遍歷CU中的像素點,為每個像素點找到調(diào)色板中最接近的代表色并分配指向代表色的索引值,當(dāng)出現(xiàn)某一像素點無法在調(diào)色板中找到接近值時,對其標(biāo)記為escape(逃脫像素),編碼時對其直接進(jìn)行量化編碼。當(dāng)編碼器遍歷完所有像素點時生成索引圖,最后對索引圖進(jìn)行游程編碼。
1.2.3 自適應(yīng)顏色空間變換技術(shù)
屏幕內(nèi)容圖像能夠獲得超高清視覺感知的基礎(chǔ)是支持4:4:4顏色格式,HEVC標(biāo)準(zhǔn)采用的RGB顏色空間對屏幕內(nèi)容進(jìn)行采樣,但RGB不同顏色分量冗余度高。所以HEVCSCC標(biāo)準(zhǔn)中提出了ACT變化,將4:4:4格式的RGB顏色空間自適應(yīng)地轉(zhuǎn)換為顏色分量相關(guān)性小的YCoCg顏色空間,其轉(zhuǎn)換公式如式(1)所示:
由上式可以看出其顏色空間的轉(zhuǎn)換是線性的,并不會增加解碼時間。HEVC-SCC為了降低復(fù)雜度,ACT轉(zhuǎn)換應(yīng)用在殘差信號,且對于幀內(nèi)預(yù)測模式,只有亮度塊與色度塊預(yù)測模式相同的編碼單元才應(yīng)用ACT變換。
1.2.4 自適應(yīng)運(yùn)動矢量決策技術(shù)
自然內(nèi)容視頻是相機(jī)所捕捉的連續(xù)的畫面,屏幕內(nèi)容視頻中包含著大量計算機(jī)直接產(chǎn)生的圖像,這些圖像由計算機(jī)直接生成在各個整像素點上,其運(yùn)動是離散的,所以并不需要像自然內(nèi)容一樣進(jìn)行分像素的運(yùn)動補(bǔ)償。AMVR技術(shù)能夠在條級別上自適應(yīng)地進(jìn)行分像素和整像素的切換,將分像素的小數(shù)部分舍去成為整像素,有效地降低了編碼的復(fù)雜度。
HEVC-SCC新增的編碼工具提升了編碼能力,全幀內(nèi)模式時(AI模式),在無損情況下,HEVC-SCC相比HEVC壓縮效率提升36%,而在有損情況下,HEVC-SCC相比HEVC壓縮效率提升更是高達(dá)56%。但也使編碼器的計算復(fù)雜度急劇地增加,其還是采用遍歷四叉樹結(jié)構(gòu)使用率失真優(yōu)化(RDO)的方法選取最佳預(yù)測模式,新增的編碼工具能夠使屏幕內(nèi)容圖像得到最精準(zhǔn)的預(yù)測且產(chǎn)生的碼字最少,但是在遍歷不同深度CU最佳模式時,也帶來了十分巨大的運(yùn)算量。換句話說,HEVC-SCC為了降低碼率而增加了編碼復(fù)雜度,如何在不影響圖像視頻質(zhì)量的情況下,不增加碼率且縮短編碼時間就成了當(dāng)下研究的熱點。從JCT-VC啟動基于HEVC標(biāo)準(zhǔn)的屏幕內(nèi)容標(biāo)準(zhǔn)(SCC)的擴(kuò)展工作至今,越來越多的算法被提出來用于降低編碼復(fù)雜度,而且許多快速算法被JCT-VC采納并成為標(biāo)準(zhǔn)的一部分,不斷有國內(nèi)外專家學(xué)者提出基于屏幕內(nèi)容的快速編碼算法,以下對HEVC-SCC的快速算法做一系列的綜述。
國內(nèi)外學(xué)者提出的幀內(nèi)快速算法主要以HEVC-SCC幀內(nèi)編碼過程復(fù)雜度高為出發(fā)點,根據(jù)自然內(nèi)容與屏幕內(nèi)容的特性,針對性地跳過CU深度、PU模式的遍歷過程,從而減少率失真代價計算以降低編碼復(fù)雜度。
歐健珊[18]根據(jù)SCC中的IBC及PLT于傳統(tǒng)自然圖像以及屏幕內(nèi)容圖像有著不同編碼效率提出的,IBC與PLT對于較復(fù)雜的屏幕內(nèi)容有著較強(qiáng)的編碼能力,但對于自然圖像的效率并不高。通過自然內(nèi)容圖像與屏幕內(nèi)容圖像經(jīng)DCT變換后能量分布不同的特性,以DCT系數(shù)值引出了整幀圖像預(yù)測值PS與CTU預(yù)測值S。通過PS將每一幀圖像分為自然內(nèi)容圖像、屏幕內(nèi)容圖像、混合圖像。針對自然圖像當(dāng)中的CTU,跳過IBC與PLT模式,直接采用傳統(tǒng)幀內(nèi)預(yù)測模式。針對屏幕內(nèi)容圖像,以預(yù)測值S將CTU區(qū)分為簡單屏幕內(nèi)容CTU和復(fù)雜屏幕內(nèi)容CTU,簡單屏幕內(nèi)容CTU跳過IBC與PLT模式直接采用DC、PLANAR、水平、垂直模式的模式預(yù)測,復(fù)雜屏幕內(nèi)容CTU采用IBC、PLT模式進(jìn)行預(yù)測。針對混合圖像,遍歷每個CTU計算預(yù)測值S,將CTU分為自然內(nèi)容CTU、簡單屏幕內(nèi)容CTU、復(fù)雜屏幕內(nèi)容CTU,對每個CTU的編碼處理方法與之前的CTU一致。該文所提算法與SCM8.3標(biāo)準(zhǔn)編碼器相比,可以節(jié)省38.55%的編碼時間,只增加了1.82%的平均比特率差(BDBR)。
司朋濤[19]從快速CU劃分、快速PU選擇方面提出了優(yōu)化算法。文中先提出利用CU像素值的方差(CUD)、平均非零梯度(AveGDN)、CU信息熵(ent)及像素種類值(CNum)來進(jìn)行CU快速劃分的快速算法。在CU劃分計算率失真代價之前,根據(jù)每個特征對不同深度CU劃分的影響:如深度為0時劃分和紋理信息有較大關(guān)系,則用CUD判斷是否劃分或快速終止的決策;深度為1時顏色數(shù)等相關(guān)信息對劃分結(jié)果影響較大,則加上CNum來進(jìn)行決策;深度為2時用CNUM與CUD進(jìn)行決策。其次又根據(jù)不同深度下預(yù)測模式的分布,新增了CU像素信息熵(Pixen)、梯度信息熵(GDen)進(jìn)行不同深度下的PU模式跳過決策。在不同深度下進(jìn)行對應(yīng)特征值的計算,將編碼塊分為自然圖像塊或屏幕內(nèi)容塊,自然圖像塊跳過IBC與PLT模式,屏幕內(nèi)容塊則根據(jù)特征值判斷是否直接使用IBC或PLT模式。文中所提的兩種算法進(jìn)行聯(lián)合仿真,較標(biāo)準(zhǔn)編碼器SCM7.0,節(jié)省了34.33的編碼時間,BDBR增加1.36%。
幀間快速算法主要通過圖像特性進(jìn)行參考幀的選取、模式快速跳過、搜索范圍的自適應(yīng)調(diào)整,利用幀間編碼過程中圖像特性的關(guān)聯(lián)度,以達(dá)到縮短編碼時間的目的。
肖傲[20]首先根據(jù)當(dāng)前CU緊密相鄰的前兩幀相同位置CU的深度之和以及平均率失真代價RD和基于QP的函數(shù)f(QP)作為判斷依據(jù),提出一種幀間的CU快速決策算法。當(dāng)滿足條件相鄰幀的最大深度與最小深度之和小于2,且RD小于門閥值1000×f(QP)時,則跳過深度2、3的遍歷過程,在深度0、1之間選擇。當(dāng)緊密相鄰的前兩幀相同位置CU的深度之和大于4,且RD大于2500×f(QP)時,跳過深度0、1的遍歷過程,在深度2、3之間選擇。其次,論文中還提出了基于Merge模式的PU快速選擇算法。在相同深度下,選擇20個編碼為最優(yōu)預(yù)測模式Merge的CU,計算它們的平均率失真代價代價RDMerged,對當(dāng)前CU,當(dāng)RD小于0.5×RDMerged時,選擇預(yù)測模式Merg跳過其它PU預(yù)測模式以減少RD計算,否則進(jìn)行下一步,當(dāng)進(jìn)行到AMP模式選擇時,如果RD小于1.5×RDMerged,再判斷其父是否為AMP模式,如果滿足公式且其父為非AMP模式,則跳過AMP模式從大小對稱的PU模式中選擇。文中的聯(lián)合算法與標(biāo)準(zhǔn)編碼器SCM6.0相比,節(jié)省了35.4%的編碼時間,BDBR僅增加1.59%。
霍肖梅[21]則根據(jù)不同深度下最佳運(yùn)動估計方法與最佳預(yù)測模式模式的關(guān)系提出了優(yōu)化算法。首先根據(jù)各類視頻序列里預(yù)測模式的最佳運(yùn)動估計方法概率分析得出結(jié)論:當(dāng)幀間2N×2N的PU采用Merge時,非對稱劃分的PU采用傳統(tǒng)運(yùn)動估計的概率非常小,可跳過傳統(tǒng)運(yùn)動估計,直接使用父PU采用的運(yùn)動估計技術(shù)。其次再對各個深度下的最佳預(yù)測模式比例進(jìn)行分析得出結(jié)論:當(dāng)父CU的最佳預(yù)測模式為SKIP時,父CU所處的深度越深,則子CU采用SKIP為最佳預(yù)測模式的概率越大,所以當(dāng)父CU確定使用SKIP模式時,如父CU深度為1則深度為2時只從SKIP、2N×2N、N×2N、2N×N中選擇最優(yōu)預(yù)測模式,如果父CU深度為2則深度為3時只選擇SKIP模式。將兩者結(jié)論結(jié)合后的聯(lián)合算法與SCM16.0相比,在隨機(jī)接入配置下可減少39.95%的編碼時間,BD-PSNR減少0.0318dB。
HEVC-SCC能夠?qū)ζ聊粌?nèi)容視頻進(jìn)行高效率壓縮,但其復(fù)雜度高的特性為實時應(yīng)用能力帶來了困難,研究在不增加失真度的情況下降低編碼復(fù)雜度,能夠提高實時應(yīng)用能力,讓HEVC-SCC更好地為教育行業(yè)提供更高效的服務(wù),能更好地保障各學(xué)校應(yīng)對突發(fā)情況時做到不停學(xué)的能力,優(yōu)化算法還具有可提升空間,本文對未來的研究工作提出幾點展望:
(1)屏幕內(nèi)容幀內(nèi)編碼部分。大部分幀內(nèi)快速算法通過提取圖像的特征如CUD、AveGDN、Cnum等以區(qū)分自然內(nèi)容和屏幕內(nèi)容,縮短了編碼時間,但有些特征值本身的計算也提高了復(fù)雜度,人為取值也降低了準(zhǔn)確度,未來可以選取計算量小且關(guān)聯(lián)度大的特征值并且結(jié)合機(jī)器學(xué)習(xí)、模式識別等技術(shù)手段選取門閥值,以便帶來更高的編碼收益。
(2)屏幕內(nèi)容幀間編碼部分。幀間算法的復(fù)雜度主要體現(xiàn)在參考幀選取、運(yùn)動塊搜索上,由與運(yùn)動物體與周圍背景的變化相關(guān)性較強(qiáng),可以更大程度上借助背景來快速確定運(yùn)動物體的搜索范圍,如背景的某兩處突變而其余背景不變時優(yōu)先進(jìn)行突變區(qū)域的搜索,以達(dá)到運(yùn)動塊的快速確定。
(3)HEVC-SCC的應(yīng)用。目前提出的大部分算法在特定序列內(nèi)都有效縮短了編碼時間,但都有一定偏向性,這是由圖像的特性所決定的。如果在編碼之前就對視頻序列有一定程度上的分類,由不同的優(yōu)化算法來針對不同的視頻序列,能夠使編碼優(yōu)化達(dá)到最大化。