H.266/VVC技術學習52:Merge模式相關

VVC中Merge模式分爲目錄中的以下五種。

1 Merge

在VVC中,通過按順序包括以下五種類型的候選對象來構造merge候選列表:
1)來自空間相鄰CU的空間MVP
2)來自相同位置CU的時間MVP
3)來自基於歷史的MVP隊列
4)來自成對平均MVP
5)來自零MV。

merge列表的大小在Slice標頭中用信號通知,並且merge列表的最大允許大小爲6。對於merge模式下的每個CU,使用截斷一元二進制化對最佳merge候選索引進行編碼。
merge索引的第一個位置使用上下文進行編碼,其他容器使用旁路編碼。

1.1 空域候選

除了交換前兩個merge候選的位置以外,VVC中的空間merge候選的推導與HEVC相同。
在位於下圖所示位置的候選中最多選擇4個合併候選者。
在這裏插入圖片描述
推導的順序爲B0, A0, B1, A1, B2。僅當位置B0, A0, B1, A1的一個CU或一個以上的CU不可用時(例如,因爲它屬於另一片或圖塊)或進行幀內編碼時,才考慮位置B2。
在添加位置A1的候選之後,對其餘候選者的添加進行冗餘檢查,以確保從列表中排除具有相同運動信息的候選者,從而提高了編碼效率。
爲了降低計算複雜度,在提到的冗餘檢查中並未考慮所有可能的候選對。而是僅考慮下圖中用箭頭鏈接的對,並且僅在用於冗餘檢查的相應候選對象具有相同運動信息時纔將候選對象添加到列表中。
在這裏插入圖片描述

1.2 時域候選

在此步驟中,僅將一個候選添加到列表中。
特別地,在該時域merge候選者的推導中,對於屬於相同的參考幀的相同的CU,推導了縮放的MV。在slice頭中明確地用信號發送要用於導出同位CU的參考圖片列表。如下圖的虛線所示,獲得了用於時域merge候選縮放後的運動矢量,該縮放後的運動矢量是使用POC距離tb和td從並置CU的運動矢量縮放而成的,其中tb爲將當前幀的參考幀之間的POC差;td定義爲位於參考同位幀和當前同位幀位於之間的POC差。將時域merge候選的參考幀索引設置爲零。
在這裏插入圖片描述
如下圖所示,在候選C0和C1之間選擇時域候選的位置。如果位置C0處的CU不可用,未進行內部編碼或在CTU的當前行之外,則使用位置C1。否則,在時間合併候選者的推導中使用位置C0。
在這裏插入圖片描述

1.3 歷史候選

在空間MVP和TMVP之後,將基於歷史記錄的MVP(HMVP)merge候選添加到merge列表。
在該方法中,先前編碼的塊的運動信息被存儲在表格中,並且用作當前CU的MVP。在編碼/解碼過程中將維護具有多個HMVP候選者的表。遇到新的CTU行時,將清空表。只要有非子塊間編碼的CU,相關聯的運動信息就會作爲新的HMVP候選者添加到表的最後一項。
HMVP表大小S設置爲6,這表示最多可以將6個基於歷史記錄的MVP(HMVP)候選者添加到表中。當向表中插入新的運動候選者時,約束先進先出。
利用(FIFO)規則,其中首先應用冗餘檢查以查找表中是否存在相同的HMVP。如果找到,則從表中刪除相同的HMVP,然後將所有HMVP候選者向前移動,HMVP候選者可以在merge候選列表構建過程中使用。按順序檢查表中最新的幾個HMVP候選者,並將其插入到TMVP候選者之後的候選者列表中。

冗餘檢查應用於HMVP候選者到空間或時間merge候選者。
爲了減少冗餘檢查操作的數量,引入了以下簡化:
1)將用於merge列表生成的HMVP候選數量設置爲(N <= 4 ) ? M: (8 – N),其中N表示merge列表中現有候選的數量,M表示merge列表中可用HMVP候選的數量表。
2)一旦可用merge候選的總數達到最大允許merge候選減去1,則HMVP的merge候選列表構建過程終止。

1.4 平均候選

通過平均現有合併候選列表中的預定義候選對來生成成對平均候選,並且將預定義對定義爲{(0,1),(0,2),(1,2),(0,3), (1,3),(2,3)},其中數字表示合併候選者列表的merge索引。爲每個參考列表分別計算平均運動矢量。如果兩個運動矢量在一個列表中均可用,則即使這兩個運動矢量指向不同的參考圖片,也要對其平均。如果只有一個運動矢量可用,則直接使用它;如果沒有運動矢量可用,則使此列表無效。

1.5 零MV

在添加成對平均合併候選者後merge列表依然不完整時,最後會插入零MVP,直到補充至最大merge候選數量。

2 MMVD(Merge mode with MVD)

除了merge模式(其中隱式導出的運動信息直接用於當前CU的預測樣本生成)外,VVC中還引入了具有運動矢量差(MMVD)的合併模式。發送skip標誌後立即發出MMVD標誌和merge標誌以指定是否將MMVD模式用於CU。

2.1 預測方式

1、選擇merge列表中前兩個候選對象之一作爲起點,用flag通知merge候選標誌以指定使用哪個;
2、用flag通知merge指示運動方向的索引(共4個);
3、用flag通知merge用於指定運動步長的索引(共8個)。
在這裏插入圖片描述

2.2 搜索方向

方向索引代表MVD相對於起點的方向。方向索引代表四個方向,如下表所示。
在這裏插入圖片描述
注意,MVD符號的含義可以根據起始MV的信息而變化:
1、當起點MV爲單向預測MV,或者是雙向預測MV但兩個列表均在當前幀同側時(即,兩個參考的POC均大於當前圖片的POC,或均小於當前圖片的POC)。上表中的符號指定添加到起始MV的MV偏移的符號。
2、當起始MV爲雙向預測MV時,兩個MV指向當前圖片的不同側(即,一個參考的POC大於當前圖片的POC,另一個參考的POC小於當前圖片的POC),上表中的符號指定添加到起始MV的list0中MV分量的MV偏移的符號,而list1種MV的符號是相反的。

2.3 搜索步長

步長索引代表運動幅度信息,指示距起點MV的預定義偏移。將偏移添加到起始MV的水平分量或垂直分量。距離索引與預定義偏移的關係在下表中指定。
在這裏插入圖片描述

3 CIIP(Combined inter and intra prediction)

在VVC中,當CU以merge模式編碼時,如果CU包含至少64個亮度採樣(即CU寬度乘以CU高度等於或大於64),並且CU寬度和CU高度均小於在128個亮度採樣中,用信號通知附加標誌以指示是否將組合幀間/幀內預測(CIIP)模式應用於當前CU。顧名思義,CIIP預測將幀間預測信號與幀內預測信號相結合。

3.1 預測值計算

1、幀間預測信號是使用與merge模式處理導出的。
2、幀內預測信號是在Planar模式的得出的。
然後,使用加權平均對幀內和幀間預測信號進行組合,其中權重值的計算取決於頂部和左側相鄰塊(圖39中所示)的編碼模式,如下所示:
在這裏插入圖片描述

3.2 權重獲取

1、如果上鄰居可用並且已幀內編碼,則將isIntraTop設置爲1,否則將isIntraTop設置爲0;
2、如果左鄰居可用並且已幀內編碼,則將isIntraLeft設置爲1,否則將isIntraLeft設置爲0;
3、如果(isIntraLeft + isIntraLeft)等於2,則wt設置爲3;
4、如果(isIntraLeft + isIntraLeft)等於1,則將wt設置爲2;
5、如果(isIntraLeft + isIntraLeft)等於0,將wt設置爲1。
,

4 TPM(Triangle Partition Mode)

在VVC中,對8x8或更大的CU,支持三角形分割模式(即TPM)進行幀間預測。
三角形分區模式不能與SBT結合使用,當使用TPM時無需flag就將cu的sbt標誌推斷爲0。

TPM模式使用CU級標誌作爲一種merge模式來進行信號通知。使用此模式時,可使用對角線分割或反對角線分割將CU均勻分割爲兩個三角形分區如下圖所示。
在這裏插入圖片描述

4.1 列表構建

CU中的每個三角形分區都是使用自己的運動進行幀間預測的;每個分區僅允許單向預測,即每個分區具有一個運動矢量和一個參考索引。應用單向預測運動約束以確保與常規雙向預測相同,每個CU僅需要兩個運動補償的預測。每個分區的單向預測運動如下:
單向預測候選列表直接從根據merge預測過程構造的merge列表中得出。將n表示爲三角形單預測候選列表中的單向預測運動的索引。 X等於n的奇偶校驗的第n個擴展merge候選的LX運動矢量用作三角形分區模式的第n個單向預測運動矢量。這些運動矢量在下圖中用“ x”標記。在不存在merge候選對象n的相應LX運動矢量的情況下,將相同候選對象的L(1-X)運動矢量用作替代對象。
在這裏插入圖片描述

4.2 分區融合成塊

在預測每個三角形分區之後,使用具有自適應權重的融合處理來調整沿對角線或反對角線邊緣的像素值。這是整個CU的預測信號,並且如同其他預測模式一樣,變換和量化處理將應用於整個CU。
在混合過程中使用權重如圖:
在這裏插入圖片描述

4.3 運動存儲

使用TPM預測的CU的運動場的存儲方式如下所示,即生成以TPM編碼的CU的運動矢量過程如下:
1)如果Mv1和Mv2來自不同的參考幀列表(一個來自LO,另一個來自L1),則簡單地將Mv1和Mv2組合起來即可形成雙向預測運動矢量。
2)否則,如果Mv1和Mv2來自同一列表,則僅存儲Mv2。

4.4 二值化方式

如果當前CU使用TPM,則用信號指示三角形分區的方向(對角線或反對角線)以及兩個合併索引(每個分區一個)。最大TPM候選大小的數目在Slice級別上指出,並指定TMP索引的語法二值化。

5 sbTMVP(Subblock-based temporal motion vector prediction)

VVC支持基於子塊的時間運動矢量預測(SbTMVP)方法。
類似於HEVC中的時間運動矢量預測(TMVP),SbTMVP使用同位幀中的運動存儲來改進運動矢量預測和當前圖片中CU的merge模式。 TMVP使用的相同並置圖片用於SbTVMP,SbTMVP在以下兩個主要方面與TMVP不同:
1、TMVP預測CU級別的運動,但SbIMVP預測subCU級別的運動;
2、TMVP從同位幀中的相同塊右下或中心位置獲取時間運動矢量,但SbTMVP在從同位幀中獲取時間運動信息之前應用了運動偏移,其中從當前CU的空間相鄰塊之一的運動矢量獲得運動偏移。

5.1 預測過程

SbTVMP過程下圖所示。SbTMVP分兩步預測當前CU內子CU的運動矢量。

1、檢查相鄰塊A1。如果A1具有將同位幀用作其參考幀的MV,則將該MV選擇爲要應用的運動偏移。如果未識別到此類運動,則將運動偏移設置爲(0,0)。

2、從同位幀中獲取子CU級運動信息(運動矢量和參考索引),並應用步驟1中標識的運動偏移(將同位幀各個子MV作用到當前塊標中),如下圖所示。
在這裏插入圖片描述
上圖假定將運動偏移設置爲阻止A1的運動。然後,對於每個子CU,在同位幀中其對應塊(覆蓋中心樣本的最小運動網格)的運動信息被用於導出子CU的運動信息。在識別出同位幀的子CU的運動信息之後,以與HEVC的TMVP過程類似的方式,將其轉換爲當前子CU的運動矢量和參考索引,這裏需要一個時間運動縮放係數,用來將時間運動向量的參考幀與當前CU的參考幀對齊(假定勻速)。

5.2 信令傳輸

在VVC中,基於組合子塊的merge列表(同時包含SbTVMP候選 和 Affine merge候選)用於基於子塊的merge模式的信令。SPS級標誌啓用/禁用SbTMVP模式。
如果啓用了SbTMVP模式,則將SbTMVP預測變量添加爲基於子塊的merge候選者列表的第一項,然後是Affine merge候選。
基於子塊的merge列表的大小在SPS中用信號通知,並且基於子塊的merge列表的最大允許5個。

5.3 使用限制

SbTMVP中使用的子CU大小固定爲8x8,並且與Affine merge模式一樣,SbTMVP模式僅適用於寬度和高度均大於或等於8的CU。
附加的SbTMVP候選的編碼邏輯與其他merge候選的編碼邏輯相同,即對於P或B幀中的每個CU,執行附加的RD檢查以確定是否使用SbTMVP候選。

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