楊若蘭,何小海,熊淑華,卿粼波,陳洪剛
(四川大學 電子信息學院,四川 成都 610065)
隨著5G 技術的發展與普及,超高清視頻的應用也越來越廣泛,視頻數據迅速增長,但傳輸寬帶和各種終端設備的存儲容量有限,以往的視頻壓縮編碼技術H.264/高級視頻編碼(Advanced Video Coding,AVC)[1]和H.265/高效視頻編碼(High Efficiency Video Coding,HEVC)[2]已無法滿足市場的需求。為了研究更加高效的視頻壓縮編碼技術,以支持未來一代的高分辨率視頻編碼標準,由聯合視頻探索組(Joint Video Explore Team,JVET)在2020 年7 月正式發布了新一代視頻壓縮編碼標準H.266/多功能視頻編碼(Versatile Video Coding,VVC)[3,4],標準參考軟件為VVC 測試軟件(VVC Test Model,VTM)[5]。VVC 與HEVC的整體編碼框架區別不大,只是在每個編碼模塊中引入了新的技術。在不影響視頻視覺質量的前提下,VVC的編碼效率較HEVC 提升了約50%。但同時帶來的還有編碼時間的巨大提高,不利于實時通信。
在幀間預測模塊中,VVC 引入了仿射運動估計模型[6]。與HEVC 幀間預測時僅采用平移運動對運動物體進行運動補償相比,仿射運動模型除了能描述物體的平移運動,還能描述物體的旋轉和縮放,這也更貼近現實中物體的真實運動過程。仿射運動帶來了更高的壓縮效率,然而同時也導致計算復雜度升高,從而使預測編碼時間大幅度增加,不利于在很多實際場景中的應用[7]。同時,VVC 在編碼塊(Coding Unit,CU)劃分部分引入了多類型樹劃分[8],與選擇最佳幀間預測模式遞歸進行,這也進一步增加了計算量,使編碼時間大幅增加[9]。因此找到一種不明顯影響VVC 壓縮效率的快速仿射運動估計方法是有意義的。
為了降低VVC 幀間仿射運動估計的計算復雜度,文獻[10]提出了一種基于邊緣檢測算法的VVC 快速仿射運動估計算法,利用迭代梯度下降法的對稱性限制仿射運動估計的迭代次數,并根據VVC 中仿射高級矢量預測(Affine Advanced Motion Vector Prediction,A AMVP)模式對于4 參數仿射模型的對稱性對6 參數的A AMVP 模式進行了修正。文獻[11]提出了一種自適應選擇4 參數或6 參數仿射運動模型的框架,減少了遍歷兩種仿射模型的冗余計算。文獻[12]針對HEVC 提出了兩種快速仿射運動補償算法:一種是單步亞像素查值法,第二種是基于插值精度的自適應塊大小運動補償方法。由于文獻[12]提出的基于H.265/HEVC的算法不能很好適用于H.266/VVC,文獻[13]對文獻[12]提出的算法做出了改進,對AAMVP 候選列表的構建方法和迭代搜索法進行了優化,進一步節省了編碼時間。文獻[14]和文獻[15]都利用父CU的相關性,提出了一種根據父CU 最佳幀間預測模式是否是Skip 模式來跳過當前CU的仿射運動估計過程的方法,此外,文獻[15]還通過最佳預測方向縮小仿射運動估計參考幀的大小。以上方法都在一定程度上降低了H.266/VVC 中仿射運動估計的復雜度,節省了編碼時間,但很少使用到劃分過程中同一父CU 下,前面已經使用過的劃分方式下的子CU(后文稱為前序子CU)和相鄰CU 之間的運動相關性。因此,本文在分析了H.266/VVC 中仿射運動估計模式的分布情況,以及它與已重建先驗信息的相關性的基礎上,提出了一種基于已重建先驗信息的快速仿射運動估計算法。
HEVC 在幀間預測中僅使用平移運動作為運動補償的基本模型[16],而VVC 在幀間預測模塊中引入了基于塊的仿射運動估計模型(Afiine),提高了幀間預測編碼的性能。仿射運動估計除了能表示平移運動,還能表示物體的旋轉和縮放,這也更加符合現實生活中運動物體的運動軌跡。VVC 中的仿射運動估計模型有兩種,分別為4 參數模型和6 參數模型[17,18]。4 參數模型中,一個塊的仿射運動向量由兩個控制點控制,而6 參數模型中有3 個控制點。圖1 為VVC 中的仿射運動模型,圖1(a)和圖1(b)分別為4 參數仿射運動模型和6 參數仿射運動模型。這兩種模型都是通過當前塊控制點的運動矢量(Control Point Motion Vector,CPMV),并根據相應公式計算得到當前塊的運動矢量。
本文以4 參數模型的仿射運動估計具體過程為例,如圖1(a)中左上和右上兩個控制點的運動矢量分別為mv0和mv1,則以(x,y)像素為中心的當前塊的運動向量計算公式為:

式中:mvh(x,y)和mvh(x,y)分別為當前塊的水平和垂直方向的運動矢量;和分別為左上角控制點的水平和垂直方向的運動矢量;和分別為右上角控制點的水平和垂直方向的運動矢量;W為當前塊的寬。
對于6 參數模型,如圖1(b)中所示,它比4 參數模型多了左下角的控制點,其運動矢量為mv2,6 參數模型的當前塊的運動向量計算公式為:

圖1 VVC 中的仿射運動模型

HEVC幀間預測中的平移運動有合并(Merge)[19]模式和高級運動矢量預測(Advanced Motion Vector Prediction,AMVP)[20]模式,VVC 中的仿射運動估計也有仿射合并(Affine Merge,AMerge)模式和AAMVP 兩種模式。Affine Merge 模式應用于寬和高均大于8的CU 塊,類似于HEVC 幀間預測的Merge 模式,Affine Merge 模式也會構建一個具有5個元素的候選列表,其中每個元素是CPMV的集合,每一個元素中包含2 個或者3 個CPMV,在編碼時僅需傳輸最佳的一個元素在列表中的索引[21]。Affine Merge 構建候選列表的具體過程為:
(1)繼承相鄰CU的CPMV:需要搜索的相鄰CU 如圖2 候選列表搜索塊所示,其中,左邊相鄰CU的搜索順序為L0->L1,上方相鄰CU的搜索順序為A0->A1->A2,然后利用包含L0的相鄰CU的CPMV 計算得到當前CU的CPMV。Affine Merge 模式的繼承過程如圖3 所示。

圖2 候選列表搜索塊

圖3 Affine Merge 模式繼承過程
(2)利用相鄰CU的平移MV 構造CPMVs:圖4 為Affine Merge 模式的構造過程,左上角的CPMV 由順序搜索A2->A3->L2的MV 得到,右上角的CPMV 由順序搜索A1->A0的MV 得到,左下角的CPMV 由順序搜索L1->L0的MV 得到,將得到的CPMV 構建候選列表。

圖4 Affine Merge 模式的構造過程
(3)零向量填充:當候選列表中的候選模式數量少于候選列表規定模式數量時,用零向量進行填充。
Affine AMVP 模式應用于寬和高均大于16的CU 塊,Affine AMVP 會構建一個長度為2的候選列表,編碼器根據候選列表中最優的矢量組元素進行迭代搜索實際CPMV,并且傳輸的是當前CU的實際CPMV 和預測CPMV 之間的差值,而不是Affine Merge 模式是直接傳輸預測CPMV的索引。
在普遍情況下,視頻中的運動物體往往只占整幀圖像的一小部分,其余的大部分為背景區域,而通常只有運動物體的運動軌跡存在平移、旋轉和縮放,背景區域一般只存在平移運動。在VVC的幀間預測時,是對所有的區域都進行仿射運動估計,而最終只有很少一部分區域將仿射運動估計模式作為最佳幀間預測模式,因此存在大量不必要的計算,造成了時間的浪費。設事件A表示最佳幀間預測模式是仿射運動估計模式的情況,P(A)表示最佳幀間預測模式是仿射運動估計模式的概率,P(A)的定義如式(3)所示,其中的MAffine表示最佳幀間預測模式是仿射運動估計模式的CU 數量,Mall表示所有幀間預測的CU 總數量。表1 展示了4 個視頻序列中仿射運動估計模式為最佳幀間預測模式的CU 占比情況,表1 中的P(A)普遍較小,均值為9.3%。從表1 可以看出,在整幀圖片中,僅有很少一部分圖像區域最終采用仿射運動估計,但其他沒有將仿射運動估計作為最佳模式的CU 在計算過程中也會使用仿射運動估計模型進行計算,這些不必要的計算在編碼時間上造成了較大的浪費。


表1 仿射運動估計模式為最佳幀間預測模式的CU 占比情況
VVC 在選擇CU 最佳幀間預測模式的過程中,CU 劃分和模式的率失真代價計算是遞歸進行的。通過計算每種劃分方式下的每種模式的率失真代價值選擇代價最小的作為最佳模式。率失真代價的計算公式為:

式中:SAD為絕對誤差和;λ為拉格朗日算子;B為編碼所需比特數。CU的劃分順序如圖5 所示。
圖5 是VVC 中CU的劃分方式,父CU 一共有5種劃分方式劃分為子CU,分別為四叉樹劃分(QT),水平二叉樹劃分(BH),垂直二叉樹劃分(BV),水平三叉樹劃分(TH),垂直三叉樹劃分(TV)。但是在實際劃分過程中,是按照圖5 中虛線所示的順序進行的,并會保存前面劃分后的預測模式和編碼信息,而在同一編碼樹單元(Coding Tree Unit,CTU)中的圖像紋理及運動方式具有很強的相似性,因此可以利用前面已經進行劃分編碼的同層級子CU(前序子CU)的信息和上一層級父CU的信息來預測當前CU 選擇仿射運動估計模式作為最佳模式的可能性,從而可以跳過不必要的仿射運動估計過程。同時,相鄰CU的紋理和運動方式也具有較強的相關性,因此相鄰CU的重建信息也可以作為是否跳過仿射運動估計的判斷條件之一。

圖5 VVC 中CU 劃分方式
幀間預測Merge 模式中存在一種特殊模式,即Skip 模式。Skip 模式的特殊之處在于它不傳殘差,是一種更為簡單的模式。Skip 模式和Affine 模式具有互斥性。Skip 模式多用于背景區域以及紋理較少和運動緩慢的區域,而此類區域往往不會將仿射運動估計模式作為最佳模式,因此可以通過判斷父CU、前序子CU 和相鄰CU的最佳模式是否是Skip模式,來提前終止仿射運動估計過程。
設事件Nskip為相鄰左、上CU 最佳模式都為Skip的事件,事件Pskip為父CU 和前序子CU 中至少有一個的最佳模式為Skip的事件。P(A|B)表示,在事件B(B∈{Nskip,Pskip})的條件下,當前CU的最佳幀間預測模式是Affine 模式的概率。表2 統計了4 個視頻序列中的P(A|B)情況。P(A|Nskip)和P(A|Pskip)的定義為:

從表2 可以看出,P(A|B)的值普遍較小,P(A|Nskip)的平均值為0.13,P(A|Pskip)的平均值為0.1,這表明在當前CU 相鄰塊的最佳幀間預測模式都是Skip 模式時,或者在父CU 和前序子CU 中至少有一個的最佳幀間預測模式為Skip 模式時,當前CU將Affine 模式作為最佳模式的概率很低。通過以上分析可以根據條件提前跳過很多冗余的仿射運動估計計算過程。

表2 條件概率P(A|B)
本文提出了一種基于已重建先驗信息的快速仿射運動估計算法,算法整體框架如圖6 所示。

圖6 本文算法整體框架
本文算法的具體步驟為:
(1)執行仿射運動估計之前的常規平移運動估計過程,獲取父CU、前序子CU、相鄰左邊和相鄰上邊CU的最佳幀間預測模式以及當前CU 目前的最佳模式;
(2)判斷當前CU 目前的最佳幀間預測模式是否是Skip 模式,若是,則跳過當前CU的仿射運動估計過程,執行步驟(6),若否,執行步驟(3);
(3)判斷父CU 和前序子CU 中是否存在最佳幀間預測模式為Skip 模式的CU,若存在,則跳過當前CU的仿射運動估計過程,執行步驟(6),若不存在,執行步驟(4);
(4)判斷相鄰左邊、上邊對CU的最佳幀間預測模式是否都為Skip 模式,若是,則跳過當前CU的仿射運動估計過程,執行步驟(6),若否,則執行步驟(5);
(5)執行原始仿射運動估計過程;
(6)確定最佳幀間預測模式;
(7)結束運動估計過程。
為測試本文提出算法的有效性,將所提算法實驗結果與VVC 標準算法進行比較,采用H.266/VVC標準測試序列進行測試。實驗平臺的硬件配置為Inter(R)Core(TM)i7-6700 CPU @ 3.40 GHz。然后,在H.266/VVC 標準參考軟件模型VTM9.1 上進行了實驗,選擇22、27、32 和37 作為量化參數,測試配置文件為encoder_lowdelay_P_vtm.cfg。使用總體編碼時間差?Tall,仿射運動估計編碼時間差?Taffine,同等客觀質量下本文算法較VVC 標準算法改變的碼率百分比(Bj?ntegaard Delta Bit Rate,BDBR)和同等碼率下本文算法較VVC 標準算法改變的客觀質量(Bj?ntegaard Delta Peak Signal-to-Noise Rate,BDPSNR)作為實驗效果的評價參數。?Tall和?Taffine的定義分別為:

式中:Tpro為本文提出算法的總體編碼時間;Tori為VVC 標準算法的總體編碼時間;TApro為所提算法的仿射運動估計總體編碼時間;TAori為VVC 標準算法的仿射運動估計總體編碼時間。TApro和TAori分別表示為:


式中:TAoff為將標準VVC 配置文件中的Affine flag設置為0,即關閉仿射運動估計的VVC 標準算法總體編碼時間。式(7)也可寫成:

?Tall和?Taffine為負數則分別表示本文提出算法節省了VVC 標準算法的總體編碼時間和仿射運動估計的編碼時間。
BDBR 表示在視頻圖像相同的情況下碼率的變化情況:若為負數,表示降低了碼率;若為正數,則表示增加了碼率。BDPSNR 表示在碼率相同的情況下,視頻圖像質量的變化情況:若為正數,表示視頻質量提升;若為負數,則表示質量下降。表3給出了該算法的實驗結果。

表3 算法實驗結果
如表3 所示,相較于VVC 標準算法,所提算法在所有測試序列中的編碼時間均有所下降,整體編碼時間平均下降了10.17%,仿射運動估計的編碼時間平均下降了44.20%,BDBR 平均只增加了0.21%,BDPSNR 平均值降低了0.008 dB。其中,序列BQTerrace、BQMall、RaceHorsesC、BQSquare、RaceHorses、Johnny 和SlideEditing的仿射運動估計時間都降低了超過50%,這主要是因為這些序列中大多為背景區域,且所包含的運動也多為平移運動,僅有很小一部分的區域采用了仿射運動,因此本算法減少了背景區域和平移運動區域的仿射運動估計計算過程,大幅度降低了仿射運動估計的預測編碼時間。為了更直觀地展示所提算法的實驗效果,圖7 給出了測試序列BQMall、BasketballDrillText 和PartyScene的率失真曲線。
在圖7 中,橫坐標表示編碼的比特率(Bitrate),單位為Kbps,縱坐標表示視頻的客觀質量評價標準PSNR,單位為dB。圖7 中星號標注的曲線表示原始VTM9.1算法的率失真曲線,豎直斷線標注的曲線表示所提算法的率失真曲線。從圖7 可以看出,本文算法與原始VVC算法的率失真曲線基本重合,表明本文所提快速仿射運動估計算法未明顯降低視頻的壓縮效率。

圖7 部分序列率失真曲線
為進一步體現所提算法的有效性,將所提算法與文獻[10]和文獻[15]中提出的快速仿射運動估計算法進行了對比。對比結果分別如表4 和表5 所示。
從表4 可知,本文算法在比文獻[10]中的算法只增加了0.02%的BDBR的情況下,進一步降低了3.26%的總體編碼時間。從表5 可知,本文算法在比文獻[15]中的算法只增加了0.09%的BDBR的情況下,進一步減少了4.6%的總體編碼時間和7%的仿射運動估計時間。從表4 和表5 可以看出,本文所提算法在降低復雜度的性能上均優于文獻[10]和文獻[15]。

表4 所提算法與文獻[10]算法比較 %

表5 所提算法與文獻[15]算法比較 %
針對H.266/VVC 幀間預測中的仿射運動估計過程存在大量冗余計算,復雜度高的問題,本文分析了VVC 幀間仿射運動估計模式的分布情況和編碼塊間最佳預測模式的相關性,提出了一種基于已重建先驗信息的快速仿射運動估計算法。該算法利用Skip 模式和Affine 模式之間的互斥性,根據上層級CU、本層級子CU 和相鄰CU的重建信息跳過冗余的仿射運動估計過程。實驗結果表明,在不明顯影響視頻碼率和質量的情況下,所提算法有效地降低了VVC的整體編碼時間和仿射運動估計時間。