湯 進, 彭 勇
(江南大學(xué) 物聯(lián)網(wǎng)工程學(xué)院, 無錫 214122)
由于視頻信息具有真實、具體、生動、全面、信息量大等特點, 人們對各種視頻信息的需求與日俱增,使得大數(shù)據(jù)中海量視頻信息的占比已過半, 因此, 保證海量視頻信息的高效、優(yōu)質(zhì)、標(biāo)準(zhǔn)化的壓縮日顯重要[1]. H.264/AVC[2]視頻編碼標(biāo)準(zhǔn)逐漸不能滿足應(yīng)用需求, 所以H.265/HEVC[3]視頻編碼標(biāo)準(zhǔn)應(yīng)運而生.
HEVC視頻編碼性能的高效, 是以更高的算法復(fù)雜度換取的. 相對于H.264, 它在很多地方有了革命性的變化. HEVC放棄了之前編碼標(biāo)準(zhǔn)中使用的宏塊, 采用了具有四叉樹遞歸劃分的編碼單元(CU)、預(yù)測單元(PU)和變換單元(TU). 這讓編碼更符合視頻圖像細(xì)節(jié)的特性. 但同時也顯著增加了計算復(fù)雜度[4]. 所以在不影響HEVC編碼效果的前提下, 有效降低編碼復(fù)雜度是目前研究的熱點.
幀內(nèi)編碼是視頻編碼的一個重要組成部分. HEVC中CU、PU和TU的四叉樹遞歸劃分和35種幀內(nèi)預(yù)測模式, 導(dǎo)致了編碼復(fù)雜度極高. 相關(guān)學(xué)者提出了很多幀內(nèi)快速編碼算法, 主要可以分為兩大類: 1) 根據(jù)當(dāng)前CU周圍相鄰已編碼重建單元的編碼結(jié)果, 對當(dāng)前CU的最佳劃分方式進行估計, 跳過一些可能性較小的結(jié)構(gòu); 2) 根據(jù)視頻圖像本身的紋理特性, 通過一些預(yù)處理方式, 實現(xiàn)各深度下CU的早劃分或早裁剪或減少PU預(yù)測模式數(shù)量. Zhang等[5]通過分析空間上相鄰的已編碼完成的CU和時間上前一幀相同位置的CU與當(dāng)前CU的關(guān)系, 對當(dāng)前CU進行快速分割; Zhao等[6]根據(jù)相鄰CU的結(jié)構(gòu)相似性, 當(dāng)前CU的劃分結(jié)構(gòu)和預(yù)測模式直接利用相鄰相似度高的已編碼CU的結(jié)果;文獻[7,8]用當(dāng)前CU內(nèi)像素方差值表示CU復(fù)雜程度,根據(jù)復(fù)雜程度決定CU分割; 文獻[9,10]利用Sobel算子對當(dāng)前CU進行邊緣檢測, 進而分析紋理復(fù)雜程度,根據(jù)紋理復(fù)雜程度決定CU是否劃分. 蔡婷婷等[11]根據(jù)CU在水平、垂直、45°和135°方向上的全局邊緣復(fù)雜度來判斷CU是否劃分, 并通過比較水平和垂直方向的邊緣復(fù)雜度大小減少預(yù)測模式數(shù)量, 但全局邊緣復(fù)雜度計算比較復(fù)雜, 且預(yù)測模式數(shù)量減少較少。
目前多數(shù)算法是單一的從CU的尺寸選擇或PU預(yù)測模式的快速決策入手. 通過分析HEVC幀內(nèi)編碼過程, 本文提出一種基于編碼塊紋理特征的CU尺寸提早劃分, PU預(yù)測模式快速決策算法. 通過一種預(yù)處理算法獲取當(dāng)前CU的紋理復(fù)雜度和方向性. 根據(jù)紋理復(fù)雜度決定部分CU的劃分方式, 根據(jù)紋理方向性減少PU預(yù)測模式的數(shù)量. 從CU和PU兩方面來降低幀內(nèi)編碼的復(fù)雜度.
在HEVC測試軟件HM中, 一幀圖像首先被分割成多個最大編碼單元(LCU), 對每個LCU以光柵掃描的順序進行編碼. 單個LCU可以進一步劃分成多個CU. 深度(Depth)為0, 1, 2, 3分別對應(yīng)CU的尺寸為64×64, 32×32, 16×16, 8×8. 當(dāng)深度為 0 , 1 , 2 時, PU 尺寸與CU相同, 當(dāng)深度為3時, PU尺寸可以是8×8, 也可以4×4. 因此, 在CU與PU劃分組合的過程中, 需要進行次遞歸劃分. 遞歸劃分過程如圖1所示, LCU先自上而下分割成4個尺寸為32×32的子CU (sub-CU),每個 sub-CU還可以繼續(xù)分割成4個sub-CU, 直到深度為3為止. 然后自下而上進行CU裁剪. 對每個sub-CU分別進行35種幀內(nèi)預(yù)測模式搜索, 找到率失真代價最小的最佳預(yù)測模式, 并將4個sub-CU的率失真代價和與其父CU的率失真代價進行比較決定父CU是否劃分. 若父CU的率失真代價小于4個sub-CU的率失真代價和, 則這個父CU不分割成4個sub-CU, 反之則分割.每一個CU都需要進行PU模式選擇. 圖2是
圖1 HEVC四叉樹遞歸劃分示意圖
HEVC幀內(nèi)預(yù)測的35種預(yù)測模式示意圖.
圖2 35種幀內(nèi)預(yù)測模式示意圖
首先, 利用公式(1)對PU的35種預(yù)測模式進行粗選(Rough Mode Decision, RMD).
其中,SATD表示殘差信息Hadamard變換絕對值之和,為拉格朗日乘子,Bit為編碼碼率. 當(dāng)PU尺寸是8×8和4×4時分別粗選出8種預(yù)測模式; 當(dāng)PU尺寸是64×64, 32×32, 16×16時分別粗選出3種預(yù)測模式[12]. 然后再從周圍已編碼的塊中提取出當(dāng)前PU的最有可能模式(Most Probable Mode, MPM). 將粗選出的模式和MPM一起加入到候選列表中, 進行率失真優(yōu)化(RDO)計算, 確定這個PU最佳的預(yù)測模式. RDO計算公式(2)如下:
其中,SSE為殘差平方和,為拉格朗日乘子,Bit為編碼所需碼率. 在這個過程中一共需要進行次JRMD的計算, 然后至少需要進行次RDO計算. 這些計算導(dǎo)致幀內(nèi)編碼的復(fù)雜度極高[13].
圖3是HM10.0 (HEVC Test Model)實際編碼一幀圖像的CU劃分圖. 從圖3中, 我們可以看出紋理平坦的區(qū)域如背景墻壁和地面, 適合用大尺寸的CU進行編碼. 而紋理復(fù)雜的區(qū)域如人臉和籃球, 適合用較小尺寸的CU編碼. 所有可以根據(jù)圖像的紋理特征避免一些不必要的遞歸劃分.
圖3 HM10.0實際編碼一幀圖像的CU劃分圖
在HEVC幀內(nèi)編碼的過程中, 圖像的紋理特征與CU的劃分方式以及PU預(yù)測模式有著非常緊密的聯(lián)系. 所以, 本文提出一種紋理特征提取函數(shù), 提取編碼塊水平、垂直、45°和135°方向上的紋理復(fù)雜度. 計算公式如 (3)~(6).
在公式(3)和(4)中,VarH和VarV分別表示水平和垂直方向的紋理復(fù)雜度(Variance),Y(i,j)為編碼塊在第i行第j列的像素值,YH(i)為第i行像素的均值,YV(j)為第j列像素的均值,N表示當(dāng)前編碼塊的尺寸.在公式 (5)和 (6)中,Var45°和Var135°分別表示 45°和135°方向上的紋理復(fù)雜度. 以CU尺寸64×64為例說明特征提取函數(shù), 如圖4所示, 將尺寸為64×64編碼塊的所有像素點劃分到45°和135°方向. 紋理復(fù)雜度的計算將沿對角線分成左右兩部分用Var45°L、Var45°R、Var135°L和Var135°R表示. 公式 (5)和公式 (6)可以進一步分解成公式(7)~(10). 其中,N表示當(dāng)前CU的尺寸,Y45°(k)表示從左上角到右下角第k(0<=k<=2×N-1)個45°方向上像素點的均值,Y135°(k)表示從左下角到右上角第k(0<=k<=2×N-1)個 135°方向上像素點的均值, 絕對值中的被減數(shù)表示沿著第k個45°或135°方向上相應(yīng)位置處的像素值.
圖4 45°和135°編碼塊像素點劃分示意圖
圖像紋理簡單區(qū)域, 像素點的值比較接近, 那么VarH、VarV、Var45°、Var135°的值都會很小. 如果圖像紋理存在方向性, 比如沿水平方向, 那么水平方向的像素值相差就不會很大, 則VarH的值最小,VarV、Var45°和Var135°相對要大. 所以通過分析VarH、VarV、Var45°和Var135°可以得出編碼塊的復(fù)雜度和方向特性.
本文CU快速分割算法是通過上述四個方向上計算出來的編碼塊的復(fù)雜度與閾值進行比較, 決定當(dāng)前編碼塊是否要分割. 所以閾值的選取至關(guān)重要, 在HM10.0中加入特征提取函數(shù), 讓HM10.0在正常編碼測試序列ClassA~ClassE的過程中分析閾值的取值.當(dāng)QP=32時, 通過大量仿真實驗表明, 選取閾值Var_Thre=6時, 編碼效果最佳. 本文提出的CU快速分割算法, 具體實現(xiàn)步驟如下:
首先計算當(dāng)前編碼塊的VarH、VarV、Var45°和Var135°. 求出這四個值里面的最大值VarMax和最小值VarMin, 如式(11)和式(12).
然后通過VarMax和VarMin與Var_Thre進行比較決定部分CU是否劃分. 如果VarMax小于Var_Thre,可以認(rèn)為當(dāng)前編碼塊是紋理簡單區(qū)域, 則CU不用進行子塊劃分. 如果VarMin大于1.25×Var_Thre, 則可以認(rèn)為當(dāng)前編碼塊為紋理復(fù)雜區(qū)域, 直接跳過率失真代價計算, 將CU劃分成4個Sub-CU. 如果不滿足前面的兩個條件, 則按照HM10.0的算法進行正常流程的CU劃分的判斷. 這樣挑選出編碼過程中根據(jù)紋理特征本可避免遞歸劃分的CU, 直接進行劃分判斷, 所以本算法可以大大減少CU四叉樹劃分的時間.
本文快速CU分割算法, 實際分割的一幀圖像如圖5所示. 滿足紋理復(fù)雜區(qū)域用小尺寸CU編碼, 紋理簡單區(qū)域用大尺寸CU編碼. 與圖3標(biāo)準(zhǔn)算法分割圖相比, 省去了一些不重要位置的詳細(xì)劃分, 不會影響重建圖像的視覺效果. 但更為簡單的劃分方式, 可以很好地縮短CU劃分的時間.
由前面分析可知最佳預(yù)測模式一般是與紋理方向保持一致. 所以先對35種預(yù)測模式進行分類, 通過VarMin判斷當(dāng)前編碼塊最佳預(yù)測模式落在哪個類中,然后只在這個類中進行尋找. 將圖2中的0–34種預(yù)測模式分成四類, 可得C0–C3候選集[14]. 如表1所示.
圖5 本文算法實際編碼一幀圖像的CU劃分圖
表1 角度預(yù)測模式候選集
若當(dāng)前編碼塊的紋理平坦, 不存在紋理方向性, 那么VarMax與VarMin比較接近, 即VarMax–VarMin<0.1×VarMin, 則將 DC、Planar和 MPM 模式進行RDO 計算, 選出最佳模式. 若VarSecMin–VarMin<0.1×VarMin, 其中VarSecMin為VarH,Var45°,VarV和Var135°中的第二小值, 說明當(dāng)前編碼塊存在兩個紋理方向, 將這兩個方向?qū)?yīng)的候選集Ci和Cj作為先選模式, 根據(jù)當(dāng)前深度粗選出JRMD值較小的前N(數(shù)量同文獻[12])個候選模式和MPM 模式一起進行RDO計算. 其它情況下, 說明當(dāng)前編碼塊只存在一個紋理方向,若此時編碼塊的深度小于等于2, 則將候選集Ci先進行RMD計算粗選出JRMD值較小的前3種候選模式和MPM模式一起進行RDO計算. 若當(dāng)前編碼塊深度大于2, 則將候選集Ci和MPM模式一起進行RDO計算, 選出最佳模式.
幀內(nèi)編碼快速算法的流程如圖6.
圖6 幀內(nèi)編碼快速算法流程圖
為了評估本文快速算法的編碼性能, 本文以HEVC的參考實現(xiàn)軟件HM10.0為參照進行試驗. 實驗硬件平臺是Intel(R) Core(TM) i5-3317U CPU@1.70 GHz, 內(nèi)存為4 GB, 軟件開發(fā)環(huán)境是Windows7,Visual Studio 2010. 因為本文只針對幀內(nèi)編碼進行優(yōu)化, 故采用的編碼配置模式為全I幀(AI)模式, QP選取32, 測試時使用JCT-VC提供的標(biāo)準(zhǔn)視頻測試序列ClassA~ClassE, 全部統(tǒng)一編碼100幀. 為了分析算法的性能, 使用節(jié)省的編碼時間百分比比特率增量峰值信噪比增量作為衡量標(biāo)準(zhǔn). 計算公式為 (13)~(15).
其中,Tproposed、BRproposed、PSNRproposed分別表示本文快速算法的編碼時間、比特率和峰值信噪比;THM10.0、BRHM10.0、PSNRHM10.0分別表示HEVC測試模型HM10.0的編碼時間、平均比特率和峰值信噪比.
表2是本文算法與標(biāo)準(zhǔn)算法HM10.0對比的實驗結(jié)果. 根據(jù)表2, 本文算法在碼率升高0.649%, 峰值信噪比降低0.059 dB的情況下, 編碼時間平均減少56.18%.
表2 本文算法與HM10.0的測試結(jié)果比較
表3是本文算法和參考文獻其它快速算法與HM標(biāo)準(zhǔn)算法的比較結(jié)果. 根據(jù)表3的數(shù)據(jù), 本文快速算法與其它快速算法在碼率和峰值信噪比相差不大的情況下, 能夠節(jié)省更多的編碼時間.
表3 本文算法與各快速算法的性能比較
圖7是本文算法與HM10.0的RD性能比較. 如圖所示, 本文算法在編碼視頻序列BasketballPass(416×240_50)下的RD曲線與HM10.0算法的RD曲線基本重合. 所以本文算法的編碼性能與HEVC標(biāo)準(zhǔn)算法相比, 沒有明顯的下降.從主觀評價上, 本文算法和HM10.0標(biāo)準(zhǔn)算法編碼重構(gòu)后的圖像如圖8和9. 從這兩幅圖像的比較中,
圖7 本文算法與HM10.0的RD曲線圖
可以看出本文算法與HM10.0標(biāo)準(zhǔn)算法實際編碼并沒有明顯差異.
圖8 HM10.0標(biāo)準(zhǔn)算法編碼重建后的圖像
圖9 本文算法編碼重建后的圖像
本文快速算法是根據(jù)當(dāng)前編碼單元的紋理特征,來降低幀內(nèi)編碼算法的復(fù)雜度, 節(jié)省編碼時間. 實驗結(jié)果顯示, 在保證視頻質(zhì)量和碼率的情況下, 有效地降低了編碼時間. 本文算法考慮了編碼塊的紋理特征, 并沒有考慮到視頻信息中存在的時空相關(guān)性, 接下來將研究編碼單元劃分深度的時空相關(guān)性進一步降低HEVC視頻編碼算法的復(fù)雜度, 縮減編碼時間. 之后,本文快速算法將應(yīng)用于智能回收箱項目的視頻監(jiān)控.