摘 要:針對目前AVS2幀內(nèi)預(yù)測編碼模式的選擇和計算過程相對復(fù)雜的問題,提出了一種基于零系數(shù)塊和底層角度判決的AVS2幀內(nèi)預(yù)測算法。該算法先判斷當(dāng)前子塊是否為零系數(shù)塊,避免對零系數(shù)塊進行變換等幀內(nèi)編碼的復(fù)雜操作。對于非零系數(shù)塊,通過底層角度判決,從理論上排除了至少40%不可能的預(yù)測模式。實驗表明,該算法對壓縮效率的影響很小,將PSNR下降控制在0.2dB內(nèi),平均比特數(shù)增加少于2%,編碼時間至少減少26%,有效地降低幀內(nèi)編碼的復(fù)雜度。
關(guān)鍵詞:AVS2;幀內(nèi)預(yù)測;零系數(shù)塊;編碼單元;底層角度判決
1 概述
AVS是我國第一個擁有自主知識產(chǎn)權(quán)的音視頻編碼標準[1]。在高清、超高清等應(yīng)用需求的推動下,更高壓縮效率的視頻編碼技術(shù)迅速發(fā)展。在此基礎(chǔ)的背景上,2012年,工作組開始準備新一代音視頻編碼標準的制定工作,截至2014年6月,制定工作基本完成,即(Audio Video coding StandardⅡ,AVS2)。經(jīng)過測試發(fā)現(xiàn),AVS2的編碼效率比第一代標準提高一倍以上,與最新國際標準HEVC(High Efficiency Video Coding)相當(dāng)[2]。
AVS2采用的關(guān)鍵技術(shù)主要有預(yù)測編碼、變換編碼和熵編碼等。統(tǒng)計并比較AVS2各部分的編碼時間可以發(fā)現(xiàn),幀內(nèi)預(yù)測部分消耗的時間(約35%)在各主要部分中占首位,新技術(shù)在提高壓縮效率的同時,也顯著增加了編碼復(fù)雜度。
目前針對如何降低視頻編碼幀內(nèi)預(yù)測的計算復(fù)雜度的研究有, 雷海軍,危雄,楊張等提出一種基于邊緣方向強度檢測的快速幀內(nèi)預(yù)測模式?jīng)Q策算法[3],但該算法主要針對HEVC;陳云善,蘇宛新,王春霞等提出一種基于(Sum of Absolute Transformed Difference,SATD)準則和空間相關(guān)性的快速幀內(nèi)預(yù)測算法[4]來優(yōu)化幀內(nèi)預(yù)測模式的選擇過程;PALOMINO D, CAVICHIOLI E, SUSIN A提出一種基于在編碼樹塊的新檢測順序的快速幀內(nèi)模式?jīng)Q策算法[5]。文章在結(jié)合零系數(shù)塊的基礎(chǔ)上,針對如何降低幀內(nèi)預(yù)測模式,提出一種基于零系數(shù)塊和底層角度判決的AVS2幀內(nèi)預(yù)測算法。
2 AVS2幀內(nèi)預(yù)測主要結(jié)構(gòu)
AVS2采用四叉樹編碼結(jié)構(gòu),從圖1中我們可以看到,將一幅圖像劃分為若干個最大編碼單元(Largest Coding Unit,LCU),其最大尺寸為64×64。然后按照四叉樹遞歸的方式可以將LCU劃分為各種尺寸的編碼單元CU,CU的尺寸可以表示成L×L的樣式,L的取值有8,16,32或64。
不同的編碼單元可以通過不同的方式劃分成預(yù)測單元(prediction unit,PU)進行預(yù)測編碼,在劃分PU的形狀中,相比AVS1,AVS2增添了一種非對稱的劃分方法,它只適用于亮度子塊,對色度子塊則不適用,通過非方形劃分方式的引入,大大降低了相互之間的預(yù)測距離,使預(yù)測精度得到提高,因此又被稱為短距離幀內(nèi)預(yù)測(short distance intra predicion, SDIP),如圖2所示。
在預(yù)測方向上,與AVS1相比,AVS2增加了更多的預(yù)測模式。AVS2的每個亮度預(yù)測模塊運用了33種幀內(nèi)預(yù)測模式,如圖3 所示,其中編號3~32屬于運用于變化區(qū)域的角度預(yù)測模式,編號0~2屬于運用于平滑區(qū)域的非角度預(yù)測模式,包括DC、Plane和bilinear三種模式。
為了確定AVS2幀內(nèi)任何一個LCU下所有的幀內(nèi)預(yù)測模式,不僅需要遍歷所有尺寸下的CU,還要對每個CU中任意劃分的所有PU進行33種角度預(yù)測模式遍歷。從遍歷的過程可以發(fā)現(xiàn),AVS2的幀內(nèi)預(yù)測計算量非常龐大,同時也造成編碼復(fù)雜度的提高,如何減少遍歷的模式數(shù)量和簡化計算過程成為研究的重點。
3 零系數(shù)塊
3.1 零系數(shù)塊的引出
在AVS2的參考軟件中,視頻原始信號先通過幀內(nèi)預(yù)測和幀間預(yù)測編碼獲取殘差信號,而后通過編碼器對殘差信號進行一系列的整數(shù)變換和量化,對得到的量化系數(shù)進行最終的熵編碼,對視頻信號的編碼也隨之結(jié)束。經(jīng)實驗檢驗,在全部視頻序列中存在著一種特殊的編碼模塊,其量化系數(shù)全部為零,這意味著對零系數(shù)塊編碼沒有任何意義,我們稱之為全零系數(shù)塊(Zero Block,ZB)[7]。
零系數(shù)塊的統(tǒng)計情況如表1所示,不同的碼流中零系數(shù)塊在各自宏塊中占有很大的比例,并且隨著量化步長的增大而增大。因此尋找一種能夠在整數(shù)變換之前,利用殘差信號的相關(guān)信息提前判斷出當(dāng)前子塊為ZB的方法成為降低編碼復(fù)雜度的有效手段。