王佳波,楊 靜
(上海海事大學(xué) 信息與工程學(xué)院,上海 201306)
2020 年7 月1 日,國際電信聯(lián)盟視頻編碼專家組(ITU-T VCEG)和國際標準化組織活動圖像編碼專家組(ISO/IEC MPEG)聯(lián)合制定了新一代視頻編碼標準H.266/VVC。直到標準測試模型VTM-10.0 后,通用視頻編碼(Versatile Video Coding,VVC)性能基本穩(wěn)定,在相同的峰值信噪比條件下相比HEVC 的高清視頻和超高清視頻,VCC 標準平均碼率節(jié)省了約40%[1]。
在幀間預(yù)測過程中,H.265/HEVC 采用平移運動模型對物體的運動進行描述,即用一個運動矢量表示物體的運動,但該模型不能準確地描述物體的復(fù)雜運動,例如旋轉(zhuǎn)、縮放和裁剪等[2-3]。在H.266/VVC 的幀間預(yù)測過程中采用了仿射運動模型,它可以更精確地表示物體復(fù)雜運動的類型[4]。以往的相關(guān)研究嘗試將仿射運動模型嵌入到運動補償幀中,但是該方法在VVC 之前一直未被采納,其原因是所提的仿射運動估計方法增加了視頻編碼過程的復(fù)雜度,而且在大多數(shù)應(yīng)用場景中該復(fù)雜度是不能忽略的[5-6]。
文獻[7]基于H.266/VVC 提出2 種降低仿射運動估計復(fù)雜度的方法,通過檢查當前塊父塊的最佳幀間預(yù)測模式是否為Skip 模式,如果是Skip 模式,則當前塊直接跳過整個仿射運動估計過程;對當前塊的傳統(tǒng)運動估計的最佳預(yù)測方向進行檢查,基于檢查結(jié)果決策是否縮減仿射運動估計參考幀序列的大小。文獻[8]基于H.266/VVC 的JEM 測試模型提出一種仿射運動估計架構(gòu),該架構(gòu)使得編碼器自適應(yīng)地選擇四參數(shù)或者六參數(shù)仿射模型。文獻[9]基于HEVC 提出一種迭代搜索最優(yōu)仿射運動矢量的仿射運動估計算法和一種仿射高級矢量預(yù)測(AAMVP)候選列表的構(gòu)建方法,其中迭代搜索最優(yōu)仿射運動矢量的仿射運動估計算法在VVC 標準中已經(jīng)被采納。
相比H.265/HEVC,H.266/VVC 視頻編碼標準的適應(yīng)場景更廣泛,H.265/HEVC 中的仿射運動估計算法難以滿足H.266/VVC 對編碼復(fù)雜度的要求,因此,本文提出一種改進的仿射運動估計算法。通過優(yōu)化VVC 中AAMVP 候選列表的構(gòu)建方法,使得選擇出的候選運動矢量更精確,同時對VVC 中迭代搜索最優(yōu)仿射運動矢量的方法進行優(yōu)化,縮短迭代搜索所需的時間。
在H.266/VVC 的幀間預(yù)測中采用與H.265/HEVC平移運動估計相類似的方式來實現(xiàn)仿射運動估計。H.266/VVC 中編碼器首先通過AAMVP 技術(shù)為當前編碼塊構(gòu)建一個仿射運動估計起始運動矢量組合的候選列表;然后在該列表中選擇一個最優(yōu)的候選運動矢量組合,編碼器將該組合作為仿射運動估計的起始點,通過迭代搜索確定當前編碼塊真實的運動矢量組合[10-13]。
在H.266/VVC 的仿射運動估計中,有2 種仿射運動模型,分別為四參數(shù)仿射運動模型和六參數(shù)仿射運動模型。四參數(shù)仿射運動模型使用2 個控制點的運動矢量組合來描述當前編碼塊的運動類型,如圖1 所示。六參數(shù)仿射運動模型用3 個控制點的運動矢量來描述當前編碼塊的運動類型,相比于四參數(shù)仿射模型能更精確地表示仿射運動。
圖1 四參數(shù)仿射運動模型Fig.1 4-parameter affine motion model
當前圖像中的編碼塊具有2 個控制點,這2 個控制點的運動矢量為mmv(0)和mmv(1),則當前編碼塊中任意點(x,y)的運動矢量如式(1)所示:
其中:ω為當前編碼塊的寬度;分別為控制點0 和控制點1 運動矢量的水平和垂直分量。式(1)也可以改寫成矩陣形式,如式(2)~式(4)所示:
六參數(shù)仿射運動模型當前編碼塊的運動矢量的推導(dǎo)方式與四參數(shù)仿射運動模型的推導(dǎo)方式相類似。
AAMVP 技術(shù)在H.266/VVC 中被用于構(gòu)建仿射迭代搜索過程中起始向量組合候選列表,同時編碼器會選擇一個最優(yōu)的候選向量組合作為迭代搜索的起始位置[14-16]。
在H.266/VVC 中AAMVP 候選列表的長度被限定為2。首先編碼器按照特定的順序?qū)Ξ斍熬幋a塊的相鄰已編碼塊是否使用仿射運動估計進行檢查,如果相鄰已編碼塊使用了仿射運動估計,則直接復(fù)用相鄰已編碼塊的仿射運動信息。如果編碼器對上一步所有相鄰已編碼塊檢查完成后,AAMVP 候選列表未被填滿,則分別檢查當前編碼塊的3 個角落相鄰塊中第1 個可用的已編碼塊的平移運動矢量,若3 個角落相鄰塊至少存在1 個可用的平移運動矢量,則將它們直接構(gòu)造組成運動矢量組合,并作為AAMVP 的候選項。經(jīng)過上述步驟,如果候選列表仍未被填滿,則編碼器直接用當前編碼塊3 個角落的相鄰已編碼塊,對第1 個可用的已編碼塊的平移運動矢量進行重復(fù)擴充為運動矢量組合,作為AAMVP 候選列表的候選項。然后,若AAMVP 候選列表未被填滿,編碼器檢查當前編碼塊的相鄰編碼塊的時域候選是否存在,若存在,直接作為AAMVP列表的候選項。最后,若候選列表仍未被填滿,編碼器直接使用零向量對AAMVP 候選列表進行填充。圖2 所示為AAMVP 候選列表中候選來自于當前編碼塊的相鄰已編碼塊的位置信息[17-19]。
圖2 仿射AAMVP 候選列表的構(gòu)建Fig.2 Construction of affine AAMVP candidate list
在H.266/VVC 中,編碼器從AAMVP 候選列表中選出一個最優(yōu)的候選項,將該最優(yōu)候選項作為起始點,通過迭代搜索得到當前編碼塊真實的仿射運動矢量。
在迭代搜索過程中,編碼器采用最小均方誤差作為匹配準則,如式(5)所示:
其中:ω和h分別為當前編碼塊的寬度和高度;為當前編碼塊所在的圖像;為當前編碼塊的參考圖像。
定義第i次迭代過程的運動矢量變化為,則第i次迭代時的運動矢量如式(6)所示:
其中:(x,y)為當前編碼塊的位置;為一個行矩陣。的轉(zhuǎn)置矩陣如式(7)所示:
經(jīng)過i次迭代后,參考點的像素值如式(8)所示:
其中:(xi-1,yi-1)為上一次迭代搜索時匹配塊的位置。
對式(8)進行泰勒展開,并忽略高階項得到式(9):
在H.266/VVC 的測試模型VTM10.0 中,采用Sobel 算子對像素矩陣進行卷積,求解的相對梯度,如式(10)所示:
文獻[9]基于H.265/HEVC 提出一種利用相鄰已編碼塊的平移運動信息構(gòu)造仿射AAMVP 候選方法。圖2 中編碼器首先檢查當前編碼塊的3 個角落中所有相鄰塊的平移運動信息可用性,并不是像H.266/VVC 中在獲得第一個可用相鄰已編碼塊的平移信息后就立即終止與同一個角落其他相鄰已編碼塊可用性的檢查。編碼器在得到3 個角落的所有相鄰已編碼塊的可用平移運動信息之后,分別將3 個角落所有相鄰塊的可用平移運動矢量組合成向量組,同時利用準則選擇DMV 最小和次小的向量進行組合,并作為AAMVP 候選列表的兩個候選項。DMV 具體表達如式(11)所示:
相比于H.266/VVC的AAMVP候選列表構(gòu)建過程,優(yōu)化的AAMVP 是直接使用3 個角落的相鄰已編碼塊中第一個可用平移運動矢量,以構(gòu)成AAMVP 列表候選項,文獻[9]基于DMV 準則,利用所有相鄰已編碼塊的平移運動矢量構(gòu)造的AAMVP列表候選項更加精確,因此本文考慮把文獻[9]的DMV 準則引入到H.266/VVC 中AAMPV 候選列表的構(gòu)建過程。對于仿射變換塊,在小程度變形的情況下,當前塊的寬度在水平方向的變化程度接近高度在垂直方向的變化程度,而高度在水平方向上的變化程度接近寬度在垂直方向的變化程度,因此,本文對DMV 準則進行改進,提出本文算法中的準則,如式(12)所示:
本文將DMV′準則引入到H.266/VVC 的AAMVP 候選列表構(gòu)建過程中,得到更加精確的AAMVP 列表候選項,使得列表的候選項更接近編碼塊真實的仿射運動矢量,從而減少后續(xù)編碼器根據(jù)AAMVP 列表最優(yōu)候選項迭代搜索真實仿射運動矢量時所需的迭代次數(shù),達到縮短編碼時間的目的。具體算法主要有以下5 個步驟。
步驟1檢查當前編碼塊左上角相鄰塊A->C 的平移運動矢量的可用性,并將可用的平移運動矢量添加到數(shù)組amvpInfo0 中,利用變量ret0 完成檢查,確定amvpInfo0 是否為空。
步驟2檢查當前編碼塊右上角相鄰塊D->E 的平移運動矢量的可用性,并將可用的平移運動矢量添加到數(shù)組amvpInfo1 中,利用變量ret1 完成檢查,確定amvpInfo1 是否為空。
步驟3檢查當前編碼塊左下角相鄰塊F->G 的平移運動矢量的可用性,并將可用的平移運動矢量添加到數(shù)組amvpInfo2 中,利用變量ret2 完成檢查,確定amvpInf2 是否為空。
步驟4若根據(jù)ret0、ret1、ret2 的檢查結(jié)果判斷3 個數(shù)組amvpInfo0、amvpInfo1、amvpInfo2 中任意一個為空,則結(jié)束仿射AAMVP 候選的構(gòu)造過程,否則利用循環(huán)遍歷計算所有運動矢量組合的DMV′值。
步驟5將最小DMV′值對應(yīng)的運動矢量組合添加到AAMVP 候選列表中。
AAMVP 算法的流程如圖3 所示。
圖3 AAMVP 優(yōu)化流程Fig.3 Optimization procedure of AAMVP
編碼器在H.266/VVC 的仿射運動估計中進行迭代搜索,以尋找當前迭代位置周圍像素梯度的最小失真方向,并更新最小失真對應(yīng)的運動矢量,更新的運動矢量作為下一次迭代的初始運動矢量。當前運動矢量對應(yīng)的率失真在每一次迭代時都會被更新,其反映了運動矢量匯聚到最優(yōu)運動矢量的速度。為避免在迭代搜索過程中像素梯度極值處收斂太慢,本文所提的算法考慮在計算當前迭代位置的像素梯度時,增加一個動量參數(shù)以解決這個問題。當本次迭代的像素梯度在x或y方向上與上一次迭代的像素梯度方向相同時,動量參數(shù)能夠加速迭代搜索過程,從而減少迭代搜索過程消耗的時間。相反,當本次迭代的梯度在x或y方向上與上一次迭代的梯度方向差異較大時,動量參數(shù)能夠減緩梯度的變化趨勢,使得搜索過程更精確。該算法如式(13)所示:
考慮到包含復(fù)雜的仿射運動的視頻序列,梯度下降過快會導(dǎo)致迭代搜索過程中梯度不平滑,最終得到的最優(yōu)仿射運動矢量不夠精確,從而造成重建后的視頻序列質(zhì)量損失較大。因此,選擇六參數(shù)仿射運動的編碼塊的梯度下降速度相較于四參數(shù)仿射運動模型慢。對于快速仿射運動類型的編碼塊,在進行迭代搜索最優(yōu)仿射運動矢量時能夠達到相對減緩其梯度下降的目的,使搜索得到的最優(yōu)仿射運動矢量更接近真實的仿射運動矢量,從而減少重建后視頻序列的質(zhì)量損失。當前編碼塊使用六參數(shù)仿射運動模型且為雙向預(yù)測時,動量參數(shù)設(shè)置為0.1,其為單向預(yù)測時,動量參數(shù)設(shè)置為0.7;當前編碼塊使用四參數(shù)仿射運動模型且為雙向預(yù)測時,動量參數(shù)設(shè)置為0.3,其為單向預(yù)測時動量參數(shù)設(shè)置為0.9;當前編碼塊不使用仿射運動估計時,動量參數(shù)設(shè)置為0。
本文的算法仿真實驗以H.266/VVC 原始參考模型VTM-10.0 為平臺,配置文件為encoder_lowdelay_vtm.cfg,量化參數(shù)為22、27、32 和37,測試序列為官方推薦視頻序列,測試范圍為A~F 類。實驗平臺的硬件配置為Inter?CoreTMi5-6500 CPU,主頻為3.20 GHz,內(nèi)存為8 GB,集成開發(fā)環(huán)境為VS 2015。實驗編碼性能使用BD-BR 和ΔT來評估算法性能。其中BD-BR 為比特比變化率,表示在圖像質(zhì)量PSNR 一致的情況下碼率的平均變化情況,若數(shù)值為負數(shù),表示能夠減少碼率;相反,表示增加了碼率[20-21]。ΔT為編碼時間減少的百分比,若為負數(shù),表示相比VVC 原始算法,序列的整體編碼時間有所降低;相反,序列的整體編碼時間得到提高。ΔT如式(14)所示:
由于文獻[9]所提的算法是針對H.265/HEVC,仿真平臺是H.265/HEVC 的測試模型HM-16.7,而本文所提的算法是針對H.266/VVC 中仿射運動估計的改進,對于本文,文獻[9]的仿真結(jié)果不具有參考意義。因此,本文首先對文獻[9]所提算法在H.266/VVC 的測試模型VTM-10.0平臺上進行仿真,以該部分的仿真結(jié)果作為本文所提算法的對比;然后分別對本文所提算法的AAMVP改進和迭代搜索優(yōu)化進行仿真實驗;最后對本文所提算法的整體改進性能進行仿真,結(jié)果如表1所示。
文獻[9]所提的算法經(jīng)過改進后被H.266/VVC標準采納,因此表1 中文獻[9]所提的算法在相較于VVC 標準算法的BD-BR 增加了0.001%條件下,對于測試序列的整體編碼時間平均提高了1.51%。本文在對文獻[9]所提的算法做了適應(yīng)于H.266/VVC的改進之后,仿真結(jié)果表明,本文算法在AAMVP 改進部分中參考H.266/VVC 標準算法,其在相較于VCC 標準算法BD-BR 提高0.001%的條件下,對于測試序列的整體編碼時間平均降低了2.62%,迭代搜索改進部分參考H.266/VVC 標準算法,在相較于VCC標準算法BD-BR 增加0.014%的條件下,對于序列的整體編碼時間平均降低了11.2%,最后本文所提算法的整體性能參考H266/VVC 標準算法,在BD-BR 提高0.023%的條件下,對于序列的整體編碼時間平均降低了13%。相比文獻[9]所提的算法,本文算法在BD-BR 提高0.022%的條件下,對于序列的整體編碼時間平均降低了14.51%。
表1 本文算法與改進算法的仿真結(jié)果Table 1 Simulation results of the proposed algorithm and improved algorithms %
在F 類序列中所有測試序列的BD-BR 值都為負數(shù),表示在F 類的所有序列中既節(jié)省了碼率,同時減少了編碼時間,本文所提改進的仿射運動估計算法使得仿射編碼塊運動估計得到的運動信息更精確,從而提高率失真性能。然而在C 類和E 類視頻序列中,本文所提的算法具有較優(yōu)的編碼性能,相比VTM 原始算法,其在BD-BR 增加0.016%條件下,整體編碼時間縮短了15.7%。其主要原因為相比于其他測試序列,C 類和E 類測試序列包含大量的仿射運動,而本文所提的算法是對進行仿射運動的編碼過程進行改進。
將本文所提的算法與文獻[7]所提的H.266/VVC中快速仿射運動估計算法進行對比,實驗結(jié)果如表2所示。從表2 可以看出,本文算法相較于文獻[7]減少BD-BR 的條件下,整體編碼時間的下降幅度大于文獻[7]所提的快速仿射運動估計算法,因此,本文算法具有更優(yōu)的編碼質(zhì)量和更高的編碼效率。將本文的算法與文獻[21]的快速編碼算法相比,文獻[21]算法雖然降低了編碼的計算復(fù)雜度,但是編碼后重建的視頻質(zhì)量損失較大。本文算法能夠平衡編碼后重建視頻的質(zhì)量和編碼效率。
表2 不同算法的BD-BR 和ΔT 對比Table 2 BD-BR and ΔT comparison among different algorithms %
本文基于H.266/VVC 中幀間仿射運動估計的分析和研究,提出一種改進的仿射運動估計算法,對仿射運動估計中AAMVP 候選列表的構(gòu)建過程進行優(yōu)化,以得到更精確的編碼塊仿射候選運動信息,同時對仿射運動估計中的迭代搜索真實仿射運動矢量進行改進,加快迭代搜索的過程。實驗結(jié)果表明,本文算法在BD-BR 損失較少的條件下,能夠有效降低編碼的計算復(fù)雜度。后續(xù)將在本文工作基礎(chǔ)上對其他幀間預(yù)測工具進行優(yōu)化,進一步降低編碼的計算復(fù)雜度。