VTM6變換算法小結(譯自O2002)

高頻調零

VTM6中允許最大爲64x64的大尺寸變換,適用於更高分辨率的視頻處理,例如1080P和4K序列。對於大小(寬度或高度,或寬度和高度)等於64的變換塊,將高頻變換系數歸零,僅保留低頻係數。例如,對於一個尺寸爲MxN的變換塊,其中M是寬度,N是高度,當M等於64,僅保留左邊32列的變換系數。類似地,當N等於64,只保留上邊的32行變換系數。如果大尺寸塊使用了transform skip模式,則保留所有的變換系數。VTM還支持在SPS裏設置最大變換尺寸,因此編碼器可以根據實際需求靈活地選擇最大變換尺寸爲16,32或64。

多變換選擇(MTS)

除了HEVC裏採用的DCT-II變換,VTM還支持對幀內或幀間殘差編碼使用多變換選擇方法。它支持來自DCT8和DST7的多個可選變換。表3-10中給出了DCT2, DCT8和DST7的函數表達式。

爲了保證變換矩陣的正交性,變換矩陣的精度比HEVC中的精度更高。爲保證變換系數中間值的精度在16bit範圍內,在水平變換和垂直變換後,所有的係數的精度均調整爲10bit。
在SPS級上,分別給幀內和幀間設置了獨立的使能標誌位,以更好地控制MTS方法。當SPS級使能MST時,CU級會有標誌位指示當前CU是否使用MTS. 此處的MTS僅適用於亮度分量。CU級的MTS標誌位僅在下列條件滿足時存在:
1.當CU的寬度和高度均小於等於32時;
2.CBF標誌位等於1.
如果CU級的MTS標誌位等於0,則在水平和垂直變換方向均採用DCT2變換公式。反之,若CU級的MTS標誌位等於1,那麼對水平和垂直方向分別需要增加兩個標誌位來指示變換類型。表3-11中給出了變換類型和標誌位的匹配情況。通過消除對幀內預測模式和變換塊形狀的依賴性,統一了ISP(幀內子劃分,下略)的變換選擇和隱式MTS的用法。如果當前變換塊是ISP模式或當前塊是幀內塊且幀內和幀間的顯式MTS都打開時,水平和垂直變換核都是DST7. 關於變換矩陣的精度,使用8bit主變換核。因此,HEVC中使用的變換核均保持不變,包括4點DCT2和DST7,8點、16點和32點的DCT2。此外,新增了一些變換核,包括64點DCT2,4點DCT8,8點、16點和32點的DST7和DCT8,使用8bit主變換核。

爲了減少大尺寸DST7和DCT8的複雜度,對大小(寬度或高度,或寬度和高度)等於32的DST7和DCT8變換塊採用高頻調零技術。只有殘差係數在16x16的低頻區域範圍內的係數纔會保留。
在HEVC中,變換塊的殘差信息可以用transform skip模式編碼。爲了避免語法元素的編碼冗餘,當CU級的MTS_CU_flag不等於0時,無需編碼transform skip標誌位。Transform skip的尺寸限制和JEM4中的MTS一樣,即當塊的寬度和高度均等於或小於32時才適用transform skip模式。注意,當前CU使用LFNST或MIP時,隱式MTS變換均設爲DCT2。此外,當對幀間編碼塊啓用MTS時,仍然可以啓用MTS。

低頻不可分變換(LFNST)

VVC裏,LFNST(低頻不可分變換)被稱爲減少的二次變換,如圖40所示,用於前向主變換和量化(編碼端)之間以及反量化和逆主變換(解碼端)之間。LFNST裏,根據塊尺寸適用4x4不可分變換核8x8不可分變換。例如,對於小尺寸變換塊(如寬和高的較小值小於8)適用4x4 LFNST,對於較大尺寸的塊(如寬和高的較小值大於4)適用8x8 LFNST.

下面舉例說明不可分變換在LFNST中的應用。對於4x4 LFNST,輸入爲如下的4x4輸入塊X:

首先將其表示成向量形式:
在這裏插入圖片描述
不可分變換的計算公式爲 F = T ·X,其中 F表示變換系數向量,T是個16x16的變換矩陣。隨後,16x1的係數向量F通過該塊使用的掃描順序(水平,垂直或對角線)重新組織爲4x4塊。索引較小的係數將被放在4x4係數塊中掃描索引值較小的位置。

減少的不可分變換

LFNST(低頻不可分變換)是基於直接的矩陣乘法的不可分變換,因此它只需通過一次計算實現而不需要多次迭代。然而,不可分變換矩陣的維度需要減少以最小化計算複雜度和變換系數的存儲空間。因此,在LFNST裏採用了減少的不可分變換(或RST)。減少的不可分變換法主要思想是將N維向量(N通常等於64或8x8 NSST)映射爲不同空間中的R維向量,其中N/R(R<N)是減少因子。因此,RST矩陣變成了如下所示的RxN矩陣,而不是NxN矩陣:

其中變換矩陣中的R行表示N維空間中的R個基。RT的逆變換矩陣是它的正變換的轉置矩陣。對於8x8 LFNST,採用減少因子4,則可將64x64的直接矩陣(傳統的8x8不可分變換矩陣尺寸)減少爲16x48直接矩陣。因此,在解碼端使用48x16逆RST矩陣在左上8x8區域中生成核(主)變換系數。當使用16x48矩陣而不是16x64矩陣時,使用相同的變換集配置,每個變換集從左上8x8塊(不包括右下4x4塊)的三個4x4塊獲取48個輸入數據。藉助於降維,在合理的性能下降情況下,LFNST矩陣的內存使用從10KB減少到8KB。爲了減少複雜度,LFNST僅在第一子組係數之外的係數都不顯著時使用。因此,當使用LFNST時,所有的僅主變換系數必須爲零(不太理解?除了左上8x8塊之外的係數都得爲零?)。這允許在最後一個顯著位置上給LFNST索引信號提供判斷條件(只需要在特定位置上檢查顯著係數),因此可避免在當前LFNST設計中進行額外的係數掃描。 LFNST的最壞情況(就每個像素的乘法而言)是將4x4和8x8的塊分別限制爲8x16和8x48變換。在這些情況下,對於其他尺寸小於16的塊應用LFNST時,最後一個顯著係數的掃描位置必須小於8.對於形狀爲4xN和Nx4且N>8的塊,提議的限制意味着LFNST只能用一次,且只在左上4x4區域用。由於使用LFNST時,所有僅主變換的係數都爲零,因而減少了主變換所需的運算次數。從編碼端角度看,測試LFNST變換時,量化係數明顯簡化。必須對前面16個係數(按掃描順序)進行最大率失真優化量化,其餘係數則被強制爲0. ### LFNST變換選擇

LFNST共有4個變換集,每個變換集使用兩個不可分變換矩陣(核)。如表3-11所示,幀內預測模式和變換集的對應關係是預先確定的。如果當前塊(81<=predModeIntra<=83)使用三個CCLM模式(INTRA_LT_CCLM, INTRA_T_CCLM或INTRA_L_CCLM)中的一種,則選擇變換集0. 對於每個變換集,選擇的不可分二次變換集候選值進一步由顯示信號LFNST索引確定。在變換系數之後,每個幀內cu在比特流中發送一次索引信號。

LFNST索引信號及與其他工具的交互

由於LFNST僅限於第一個係數子組以外的係數均不顯著時才使用,故LFNST索引值的編碼依賴於最後一個顯著係數的位置。此外,LFNST索引的上下文編碼不依賴於幀內預測模式,且只有第一個bin是上下文編碼的。而且,LFNST適用於幀內和幀間slice裏的幀內CU塊,且對亮度和色度分量矩適用。如果允許雙樹,則亮度和色度的LFNST索引值分別編碼。對於幀間slice(禁用雙樹),只編碼單個LFNST索引,爲亮度和色度分量所共用。
當選擇ISP模式時,禁用LFNST且不用將RST索引信號寫入碼流,因爲即使對所有可能的分塊使用RST,性能的提升仍然微不足道。此外,對ISP預測殘差模式禁用RST可以減少編碼複雜度。當選擇MIP模式時,LFNST也被禁用,不需傳輸索引值。
考慮到當前最大變換尺寸存在限制(64x64), 尺寸大於64x64的CU塊存在隱式劃分(TU tiling),LFNST的索引值搜索可能在一些數量的解碼流水級上引起四倍數據緩存量的增加。因此,LFNST的最大適用尺寸爲64x64。注意,LFNST僅在DCT2爲主變換時可用。

子塊變換(SBT)

VTM裏,子塊變換被引入到幀間預測塊的變換中。這種變換方法僅對CU的子塊殘差進行變換。當幀間預測CU塊的cu_cbf等於1時,可以編碼cu_sbt_flag,用於指示是否對整個殘差塊或殘差塊的子塊進行編碼。在前種情況裏,需要進一步解析幀間MTS信息以決定當前CU的變換類型。在後種情況裏,利用推斷出的自適應變換對殘差塊的一部分進行編碼,將殘差塊的另一部分歸零。
當對幀間編碼CU使用SBT時,需要將SBT類型和SBT位置信息編入碼流。由圖41所示,有兩種SBT類型和SBT位置。對於SBT-V(或SBT-H),TU的寬度(或高度)可等於CU寬度(或高度)的一半或1/4,使得CU按2:2或1:3/3:1分塊。2:2劃分類似二叉樹(BT)劃分,而1:3/3:1類似非對稱的二叉樹(ABT)劃分。在ABT劃分中,只有較小的區域包含非零殘差。如果CU亮度分量的一個維度爲8,則不允許沿該維度的1:3/3:1拆分。CU最多有8個SBT劃分模式。
在SBT-V和SBT-H(色度TB總是使用DCT2)中,亮度變換塊採用位置相關的變換核選擇方法。SBT-H和SBT-V的兩個位置和不同的核變換相關。更具體地,圖41中給出了每個SBT位置的水平和垂直變換。例如,當殘差TU的一邊大於32時,兩個維度上的變換均設爲DCT2。因此,子塊變換可聯合確定殘差塊的TU tiling,cbf,水平和垂直核變換類型。
SPS裏的變量maxSbtSize可確定能使用SBT的最大CU尺寸。在VTM6裏,maxSbitSize的值在編碼器端設置,分辨率爲HD和4K序列的maxSbtSize通常設爲64,而其他較小分辨率的序列則設爲32.
SBT不適用於採用組合幀間-幀內模式或TPM(三角劃分模式)編碼的CU塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章