湯 進 彭 勇
(江南大學物聯(lián)網(wǎng)工程學院 無錫 214122)
隨著高清、超高清視頻應用的急劇增加。目前應用最廣泛的視頻編碼標準H.264/AVC[1]逐漸不能滿足實際應用的需求,在這種情況下新一代視頻編碼標準 H.265/HEVC[2]應運而生。
HEVC 能夠在H.264 基礎上使壓縮效率提高1倍,主要得益于其引入了一些編碼新技術。其中采用具有四叉樹遞歸劃分結構的CU技術對視頻質量和編碼效率的提高具有重要意義。但其復雜的結構同時也顯著增加了計算復雜度[3]。
相關研究者針對HEVC 中CU 劃分復雜度過高的問題,提出了很多解決方法。周承濤等[4]利用時空相鄰CU深度的相關性,提出深度單一性,縮小當前CU深度搜索范圍。該算法能夠保持較好地率失真性能,但減少的編碼時間相對有限,有進一步改進空間;金智鵬等[5]利用前一幀相同位置CU 的劃分結構,預測當前CU 的深度范圍,并結合當前CU內(nèi)亮度直方圖的密集度特征進行精確調(diào)整;王超超等[6]利用空間相關性,將當前 CU 周圍已編碼 CU 的深度加權預測當前CU的深度范圍;Nishikori等[7]用圖像像素點方差來表示圖像的紋理復雜程度,提前判斷 CU 分割;Belghith 等[8]利用 Sobel 梯度算子對視頻圖像進行邊緣檢測,進而分析CU 的紋理復雜程度,根據(jù)紋理復雜度決定CU的編碼深度。
文獻[4~6]主要利用時間或空間相關性,從已編碼完成的CU 入手預測當前CU 的深度范圍,但CU 內(nèi)具體劃分結構并不能完全確定。而文獻[7~8]主要利用當前CU紋理復雜度特性判斷其是否劃分,但隨著視頻分辨率的增加,方差或Sobel梯度計算等紋理特性提取函數(shù)的計算量也在增加。所以本文將CU 時空相關性與CU 內(nèi)部像素點之間的紋理特性相結合共同決定CU的劃分。根據(jù)時空相關性預測當前CU 的深度范圍,在深度范圍中將滿足紋理特性的CU提前終止劃分。這既減少了深度范圍中CU劃分的不確定性,也不用全深度下計算CU的紋理特性。
在HEVC 幀內(nèi)編碼過程中,一幀視頻圖像被分割成許多尺寸為64×64 互不重疊的最大編碼單元(LCU),然后以光柵掃描的順序對每個LCU 進行編碼。LCU 采用四叉樹遞歸方式劃分成許多CU。深度(Depth)為0,1,2,3 分別對應CU 的尺寸為64×64,32×32,16×16,8×8。在確定每一個LCU 最佳劃分模式的過程中,需要進行40+41+42+43=85 次遞歸劃分。遞歸劃分過程如圖1 所示,LCU 先自上而下分割成子CU,每個子CU 可以繼續(xù)分割成子CU,直到深度為3 為止。然后自下而上進行CU 裁剪。對每個子CU 分別進行35 種幀內(nèi)預測模式搜索,找到率失真代價最小的最佳預測模式,并將4個子CU 的率失真代價和與其父CU 的率失真代價進行比較,如果父CU 的率失真代價小于4 個子CU的率失真代價和,則這個父CU 不分割成4 個子CU,反之則分割。
圖1 HEVC四叉樹遞歸劃分示意圖
由此可見,整個LCU四叉樹遞歸劃分過程中計算量巨大。所以,研究CU 快速劃分算法具有實際應用價值。
當前CU 與前一幀中相同位置處的CU 以及與周圍已編碼完成的CU 具有很強的相關性。如圖2所示,Cur-CU 表示當前CU,L-CU、LU-CU、U-CU和RU-CU 分別表示當前CU 的左CU、左上CU、上CU 和右上 CU,Col-CU 表示前一幀中與當前 CU 在相同位置處的CU。為了分析時空相鄰CU 深度信息之間的相關性。以LCU為單元,從HEVC的標準測試視頻序列ClassA~ClassE 中選取10 個視頻,具體視頻序列如表1 所示,量化參數(shù)(QP)為22,27,32,37,進行全I 幀編碼。用L-CU、LU-CU、U-CU、RU-CU 和 Col-CU 深度為 d 時,Cur-CU 同時為深度d 的概率描述其相關性,時空相鄰CU 的深度的相關性如表2所示。
圖2 相鄰CU示意圖
表1 標準測試視頻序列的詳細情況
表2 時空相鄰CU深度的相關性
從表 2 中可知,Cur-CU 深度與 Col-CU、L-CU和 U-CU 的相關性較強,LU-CU 和 RU-CU 相關性較弱。所以本文選用Col-CU、L-CU 和U-CU 預測Cur-CU的深度范圍。Cur-CU的預測深度定義為
約束條件:
其中N(本文中N=3)表示當前CU 時空相鄰的CU個數(shù),di為相鄰CU 的深度,在圖像邊緣相鄰CU 不存在時深度為0代替,ωi為相鄰CU的權值。
目前關于用相鄰已編碼CU通過深度加權預測當前CU 深度的研究中存在一定的局限性,如文獻[9~11]只考慮幀內(nèi)的相鄰CU 的關系,且采用固定的權值,難以針對不同的視頻序列進行權值的調(diào)整。晏珂等[12]借鑒利用相鄰CU內(nèi)部像素的絕對差值和(SAD)表征其相關性,提出一個更能準確衡量其相關性的平方差值和均值(ASSD)計算相關性權值。但額外的ASSD計算也增加了計算復雜度。文獻[13]提出時域或空域相鄰CU 之間具有相似的RD 代價分布。所以本文利用RD 代價值表現(xiàn)時空相鄰CU 之間的相關性關系。提出自適應權值ωi計算公式如下:
其中:ωCol-CU、ωL-CU和 ωU-CU分別為 Col-CU、L-CU 和 U-CU 深度的權重值。 RDCol-CU、RDL-CU和 RDU-CU分別為 Col-CU、L-CU 和 U-CU 的 RD 代價值。
根據(jù)式(1)計算的預測深度值Dpre,可以將CU深度預測范圍分成3類。
1)當 0 ≤Dpre<1 時,當前 CU 深度范圍為[0,1],跳過深度2和3。
2)當 1 ≤Dpre<2 時,當前 CU 深度范圍為[1,2],跳過深度0和3。
3)當 2 ≤Dpre<3 時,當前 CU 深度范圍為[2,3],跳過深度0。
與HEVC 中遞歸劃分相比,平均跳過了2 個深度級,節(jié)省了較多的編碼時間。但當CU 在劃分的過程中,其深度是4 個子CU 的深度最大值。比如一個LCU 預測深度范圍是[1,2],雖然跳過了深度是0 和3 的計算,但是并不知道哪些子CU 深度是1哪些子CU深度是2,只能按照HEVC標準算法進行處理。特別是當深度范圍為[2,3]時,計算量仍然巨大。所以本文通過紋理特性判斷提前終止一些CU劃分。
HEVC 在進行幀內(nèi)編碼時,視頻圖像的紋理復雜度與CU的最終劃分深度有很強的相關性。圖像復雜區(qū)域適合用小尺寸的CU 進行編碼,圖像簡單區(qū)域適合用大尺寸的CU進行編碼。其中紋理簡單區(qū)域主要表現(xiàn)為CU內(nèi)像素值相差不大,或具有一定的方向性如每一行或每一列像素相差不大,則該CU就沒有必要進行分割。為了減少在深度預測范圍內(nèi)CU的分割方式不確定而進行的多次率失真代價計算,加入紋理特性提取函數(shù)提取CU 的紋理特性用作部分CU分割的判斷。本文從DC、水平和垂直3種紋理特性進行判斷[14],計算公式如式(6)~(8)。
在式(6)~(8)中,MSD、MADH和MADV分別表示DC、水平和垂直方向的紋理特性,P(i,j)為CU在第 i 行第 j 列的像素值,M 為 CU 內(nèi)像素均值,MH(i)為CU 第i 行像素的均值,MV(j)為CU 第j 列像素的均值,N表示當前CU的尺寸。
在每個CU 深度層均設定3 個紋理特性判斷閾值。若當前CU 的MSD、MADH和MADV中某一值小于對應閾值,說明當前CU具有某種紋理特性,表明當前CU 的紋理簡單,不用分割。不滿足紋理特性的CU按照HEVC標準算法進行分割。
步驟1:正常編碼首幀,獲取各位置處CU 的深度值,統(tǒng)計首幀中各深度下CU的紋理特性值,根據(jù)統(tǒng)計值選擇合適的紋理特性閾值。
步驟2:根據(jù)式(1)得到當前CU 的深度預測范圍,由3.1節(jié)設置起始劃分和終止劃分深度。
步驟3:根據(jù)起始劃分深度開始劃分,CU 若滿足3.2 節(jié)紋理特性,則終止劃分。否則由原算法進行劃分。直至滿足紋理特性或達到終止劃分深度,結束CU劃分。
為了評估本文算法的編碼性能,本文以HEVC的參考實現(xiàn)軟件HM10.0為參照進行試驗。實驗硬件 平 臺 是 Intel(R)Core(TM)i5-3317U CPU@1.70GHz,內(nèi)存為4GB,軟件開發(fā)環(huán)境是Windows7,Visual Studio 2010。采用的編碼配置模式為全I 幀(AI)模式,QP 選取 22,27,32,37,測試時使用JCT-VC 提供的標準視頻測試序列ClassA~ClassE,統(tǒng)一編碼100 幀。為了分析算法的性能,使用節(jié)省的編碼時間百分比ΔET、比特率增量ΔBR、峰值信噪比增量ΔPSNR 作為衡量標準。計算公式為式(9)~(11)。
其中,Tproposed、BRproposed和 PSNRproposed分別表示本文快速算法的編碼時間、比特率和峰值信噪比;THM10.0、BRHM10.0和PSNRHM10.0分別表示HM10.0 的編碼時間、平均比特率和峰值信噪比。
表3 是本文算法與HM10.0 算法編碼后的性能對比結果。根據(jù)表3,本文快速算法與HM10.0 相比,在碼率升高0.94%,峰值信噪比降低0.08 的情況下,編碼時間平均減少52.41%。圖3 和圖4 為HM10.0 和本文算法對序列“BasketballPass”的最終CU劃分結果圖。如圖所示,僅有少數(shù)CU的劃分方式不同,且深度偏差很小??梢姳疚乃惴▌澐直容^準確。
由表3 中不同分辨率相同內(nèi)容的視頻序列“Flowervase”可知,本文算法對高分辨率的視頻具有更好的編碼性能。因為高分辨率視頻,原本一個LCU 編碼的內(nèi)容就需要多個LCU 進行編碼。單個LCU所包含的有用信息減少,但相鄰LCU之間的相關性反而增加。根據(jù)表3 中視頻序列“Johnny”和“Vidyo1”,本文算法對紋理簡單的視頻序列編碼時間更快,因為視頻序列紋理簡單,相鄰CU之間的相關性也較強,而且滿足紋理特性跳過劃分的CU更多。
表4 是本文算法與其它幾種算法的編碼性能對比。根據(jù)表4 中的數(shù)據(jù),本文算法在編碼質量略微降低和碼率略微上升的情況下,減少更多的編碼時間。
圖3 HM10.0標準算法CU劃分圖
圖4 本文算法CU劃分圖
表4 本文算法與各快速算法的性能比較
為了評價本文算法的編碼性能,圖5 是本文算法與HM10.0 算法編碼標準視頻序列Basketball-Pass_416×240_50.yuv 后的 RD 曲線圖。本文算法與HM10.0 算法的RD 曲線基本重合。所以本文算法的編碼性能與HEVC 標準算法相比,沒有明顯的下降。
圖5 本文算法與HM10.0的RD曲線圖
本文算法將視頻中存在的時空相關性和紋理特性應用于幀內(nèi)編碼單元的劃分,減少了原算法中編碼單元四叉樹遞歸劃分過程的復雜度。實驗結果顯示,在保證視頻質量和碼率的情況下,有效地降低了編碼時間。本文算法對高分辨率和紋理簡單的視頻具有更好的編碼性能。