一種基于四叉樹編碼分割的hevc復雜度控制方法
【技術領域】
[0001] 本發(fā)明屬于視頻編碼領域,具體涉及一種基于四叉樹編碼分割的HEVC復雜度控 制方法。
【背景技術】
[0002] 在視頻編碼領域,復雜度控制對視頻編碼有重要影響;復雜度控制一般是指降低 原編碼復雜度至任意指定目標復雜度,同時保證由復雜度降低所導致的視頻失真最小。在 視頻編碼的演進過程中,伴隨著編碼效率的不斷提高,視頻編碼的復雜度也不斷提高;降低 和控制視頻編碼的復雜度成為視頻編碼的關鍵問題。
[0003] 高效率視頻編碼HEVC(High Efficiency Video Coding)標準,也稱為H. 265,能夠 減少時空冗余以滿足高清乃至超高清視頻的壓縮需求,具有靈活的圖像分割方案,并行化 編解碼設定,相比較之前的H. 264/AVC視頻編碼標準,HEVC可以在只消耗H. 264 -半碼率 的前提下獲得幾乎相同的視頻壓縮質量;但是這是以編碼復雜度作為代價的,這種高昂的 編碼復雜度對HEVC的實時編碼的應用造成了很大的挑戰(zhàn)。
[0004] 隨著當下智能終端的多樣化發(fā)展,越來越多的智能終端(智能手機,平板電腦,筆 記本電腦,計算機等)進入到人們的生活。計算能力的各異化導致其對視頻編碼時編碼復 雜度的承受能力各不相同。同時,智能終端自帶的電量往往難以滿足長時間的視頻錄制。因 此,有必要根據智能終端實際計算能力和電量水平進行視頻編碼的復雜度控制。
[0005] 四叉樹編碼分割算法是HEVC采用的一種新的圖像分割算法,這種算法對于編碼 效率的提升顯著,但由于要遍歷幾乎所有可能的不同深度的編碼塊,導致其編碼復雜度很 尚。
【發(fā)明內容】
[0006] 本發(fā)明針對現(xiàn)有的HEVC復雜度控制算法無法實現(xiàn)精準控制并且無法保證控制后 視頻主觀質量的問題,提出了一種基于四叉樹編碼分割的HEVC復雜度控制方法,實現(xiàn)不同 智能終端在不同計算能力下HEVC編碼復雜度的精準控制,并保證控制后視頻的主觀質量。
[0007] 具體步驟如下:
[0008] 步驟一、用戶根據自己的需求或者終端的計算能力設定視頻編碼每一幀的初始目 標復雜度。
[0009] 步驟二、編碼器利用區(qū)域顯著性檢測算法生成視頻中每一幀的編碼塊權重圖譜。
[0010] 具體包括:
[0011] 步驟201、輸入視頻幀;
[0012] 每一幀包括多個編碼塊,每個編碼塊包括多個像素點;
[0013] 步驟202、利用區(qū)域顯著性檢測算法獲得視頻中每個編碼塊包含的每個像素點的 權重值;
[0014] 步驟203、計算每個編碼塊內所有像素點權重值,取平均值獲得該編碼塊的權重;
[0015] 針對第i個編碼塊,計算編碼塊i內的所有像素點的權重值并取平均值,獲得編碼 塊i的權重W 1,公式為:
[0016]
[0017] 其中,Vn表示第η個像素點的權重值,η為整數(shù),M為編碼塊內所有像素點的個數(shù)。
[0018] 步驟204、將每一幀內所有編碼塊的權重值構成權重圖譜。
[0019] 步驟三、根據每一幀目標復雜度和編碼塊權重圖譜,編碼器設計每一幀的塊級別 復雜度-失真優(yōu)化控制模型;
[0020] 步驟301、通過訓練至少三個視頻,建立編碼深度與編碼復雜度之間的函數(shù)關系;
[0021] 步驟(1)、選取至少三個訓練視頻,包含上萬個編碼塊;
[0022] 步驟(2)、將所有編碼塊的編碼深度設置為最大值3 ;記錄每一個編碼塊的編碼時 間C1 (3),作為參考時間。
[0023] i表示編碼塊的序號,為自然數(shù);
[0024] 步驟(3)、將所有編碼塊的編碼深度分別設置不同的深度值山,(1# {3, 2, 1,0},記 錄每一個編碼塊在相應的編碼深度下的編碼時間C1 (Cl1)。
[0025] 步驟(4)、利用參考時間對編碼時間C1 (Cl1)進行歸一化,獲得每一個編碼塊歸一化 的編碼時間,即相對歸一化編碼復雜度,公式為:
[0026]
[0027] 步驟(5)、對所有訓練視頻的所有編碼塊的相對歸一化編碼復雜度取平均值,獲得 不同編碼深度(I i對應的編碼復雜度C(d J。
[0028] 步驟302、通過訓練至少三個視頻,建立編碼深度與失真程度之間的函數(shù)關系;
[0029] 步驟(3-1)、選取至少三個訓練視頻,包含上萬個編碼塊;
[0030] 步驟(3-2)、將所有編碼塊的編碼深度設置為最大值3,記錄每一個編碼塊編碼后 的均方誤差值MSE 1 (3),作為參考均方誤差值。
[0031] i表示編碼塊的序號,為自然數(shù);
[0032] 步驟(3-3)、將所有編碼塊的編碼深度分別設置為不同的深度值山, Cl1G {3, 2, 1,0},記錄每一個編碼塊在相應的編碼深度下的編碼后的均方誤差值MSE Jd1)。
[0033] 步驟(3-4)、利用參考均方誤差值對均方誤差值MSE1 (Cl1)進行歸一化,得到每一個 編碼塊在不同編碼深度下的歸一化失真程度r公式如下:
[0034]
[0035] 步驟(3-5)、對所有訓練視頻的所有編碼塊的歸一化失真程度與最大深度的關系 做二次擬合,獲得不同編碼深度Cl 1所對應的失真程度ADW J。
[0036] 步驟303、綜合編碼深度與編碼復雜度,失真程度之間的函數(shù)關系以及步驟二中每 一幀的編碼塊權重圖譜,得到每幀的塊級別復雜度-失真優(yōu)化控制模型;
[0037]
[0038] 其中,I為每一幀內編碼塊的數(shù)量,T。為初始目標復雜度,AD(Cl1)為編碼深度 為山時所對應的編碼失真;C(d J在編碼深度為山時所對應的編碼復雜度。針對第i 個和第1個兩個編碼塊,O1是第i個編碼塊的權重值;ω 1是第1個編碼塊的權重值, AD(Cl1)是第1個編碼塊的失真程度,通過比較兩個編碼塊的權重值和失真程度,滿足條件: Vq 2 ,保證了權重值高的編碼塊的失真程度小于權重低的編碼塊的失 真程度。
[0039] 步驟四、針對視頻中的所有幀,循環(huán)更新當前幀的目標復雜度替換前一幀的目標 復雜度,應用于步驟三中得到的當前幀的塊級別復雜度-失真優(yōu)化控制模型;
[0040] 步驟401、針對視頻的前N幀,正常編碼不進行復雜度控制,計算編碼時間之和tg;
[0041] 步驟402、獲取前N幀的平均編碼時間作為參考時間ts:
[0042]
[0043] 其中,tg是前N幀的編碼時間之和,N為整數(shù);T。是初始目標復雜度。
[0044] 步驟403、利用初始目標復雜度,對第N+1幀的目標復雜度TN+1進行調整,公式為:
[0045]
[0046] 其中,F(xiàn)為視頻所包含的所有幀的數(shù)量。
[0047] 步驟404、循環(huán)計算第N+1幀之后的幀的目標復雜度作為當前幀的目標復雜度,替 換前一幀的目標復雜度并應用于塊級別復雜度-失真優(yōu)化控制模型中。
[0048] 計算當前幀之前所有幀的編碼時間的平均值4,根據tk與參考時間ts的關系獲得 當前幀的目標復雜度,公式如下:
[0049]
[0050] 其中,k為當前幀,k > N+1 ; α和β用來調整復雜度波動幅度和波動頻率,α和 β值越接近1,復雜度的波動幅度越大,波動頻率越小。a和b用來調整復雜度控制精度和 復雜度波動幅度,a和b值越大,復雜度控制精度越高,波動幅度越大。
[0051] 步驟405、利用每幀的塊級別復雜度-失真優(yōu)化控制模型控制該幀的實際編碼復 雜度;使當前幀的實際編碼復雜度等于當前幀設定的目標復雜度。
[0052] 步驟五、當前視頻的所有幀全部處理完,編碼結束。
[0053] 本發(fā)明的優(yōu)點在于:
[0054] (1) -種基于四叉樹編碼分割的HEVC復雜度控制方法,可以在最大程度地保證視 頻主觀質量的前提下,將視頻編碼的復雜度降低至指定水平。
[0055] (2) -種基于四叉樹編碼分割的HEVC復雜度控制方法,用戶可以在編碼端根據既 定需求指定目標復雜度進行編碼,從而將HEVC編解碼廣泛地應用于具有不同計算能力或 者不同電量的終端設備中,或在一定電量下完成指定時間內的視頻錄制。
【附圖說明】
[0056] 圖1為本發(fā)明基于四叉樹編碼分割的HEVC復雜度控制方法的流程圖;
[0057] 圖2為本發(fā)明生成視頻每一幀的編碼塊權重圖譜的方法流程圖;
[0058] 圖3為本發(fā)明編碼塊權重圖譜的效果示意圖;
[0059] 圖4為本發(fā)明設計每幀的塊級別復雜度-失真優(yōu)化控制模型的方法流程圖;
[0060] 圖5為本發(fā)明編碼深度與復雜度之間關系訓練流程圖;
[0061] 圖6為本發(fā)明編碼深度與失真程度之間關系訓練流程圖;
[0062] 圖7為本發(fā)明更新當前幀的目標復雜度方法流程圖;
[0063] 圖8為本發(fā)明編碼深度與復雜度之間關系訓練效果圖;
[0064] 圖9為本發(fā)明編碼深度與失真程度之間關系訓練效果圖;
[0065] 圖10為本發(fā)明編碼深度與失真程度的擬合關系圖;
[0066] 圖11為本發(fā)明編碼深度分配示意圖;
[0067] 圖12為本發(fā)明幀級別復雜度分配調整示意效果圖。<