H.266/VVC技術學習48:自適應運動矢量精度(AMVR)

本篇博客的幀間常用術語
AMVR:自適應精度。
AMVP:高級運動矢量預測,通過周圍塊的MV構建列表得到MVP。
MVP:在AMVP中得到的預測的運動矢量。
MV:經過精確搜索得到的運動矢量。
MVD:運動矢量差,非merge模式中需要傳的內容:MVD=MV-MVP。

1 簡介

HEVC中,當在slice頭信息發送不使用整數精度信號時,就以四分之一像素精度爲單位用信號發送CU運動矢量差MVD。
VVC中,引入了CU級自適應運動矢量精度(AMVR)方案。 AMVR允許以不同的精度編碼CU的MVD。根據當前CU的幀間模式可以如下自適應地選擇當前CU的MVD:

1、正常 AMVP模式:四分之一像素精度、半像素精度、整像素精度、四像素精度。
2、Affine AMVP模式:十六分之一像素精度、四分之一亮度樣本,整像素精度。

如果當前CU具有非零MVD分量,則CU發出MVD精度信號,指示用的是哪一個AMVR精度信號。如果所有MVD分量均爲零(四個值都是0:即參考列表L0和參考列表L1的水平和垂直MVD均爲零),則使用四分之一像素精度。

2 解碼方式

對於正常AMVP模式且具有非零MVD的CU:
用信號通知第一個flag,以指示是否將四分之一像素精度用於CU:如果爲0,則使用四分之一像素精度用於當前CU,結束。
否則,會發信號通知第二個flag,以指示是否使用了半亮度採樣。如果爲1,則使用半像素精度用於當前CU,半亮度採樣位置使用6抽頭插值濾波器,而非默認的8抽頭插值濾波器。結束。
否則,用信號發送第三個flag,以指示MVD使用的是整像素精度還是四像素精度。

在當前CU爲Affine AMVP的情況下:
用信號通知第一個flag,以指示是否將四分之一像素精度用於CU:如果爲0,則使用四分之一像素精度用於當前CU,結束。
否則,使用第二個flag指示MVD是使用整像素精度還是1/16像素精度。

爲了確保重建的MV具有預期的精度,CU的MVP將向0舍入爲與MVD相同的精度。(也就是說,負的MVP四捨五入爲正無窮大,正MVP四捨五入爲負無窮大)。這一段沒太理解???

3 編碼過程

編碼器使用RD比較確定當前CU的精度。爲避免對每個MVD精度執行四次CU級RD檢查,在VTM7.0中,僅有條件地調用除四分之一亮度樣本外的MVD精度的RD檢查。

對於正常AVMP模式:首先計算四分之一精度和整數精度的RD代價,然後將四分之一精度的RD成本與整像素RD成本進行比較,決定MVD精度是否有必要進一步檢查四腔採樣MVD精度的RD成本。
當四分之一精度的RD成本比整型明度樣本MVD精度的RD成本小得多時,將跳過四精度的RD檢查。如果整像素精度的RD成本明顯大於先前測試的MVD精度的最佳RD成本,則跳過半亮度樣本MVD精度的檢查。

對於Affine AMVP模式:如果在檢查Affine merge/skip模式,merge/skip模式,四分之一精度普通AMVP模式和四分之一精度Affine AMVP的RD成本後未選擇Affine inter模式,則不檢查1/16精度和整像素精度Affine inter模式。此外,在四分之一精度Affine inter模式下獲得的Affine參數可以被用作1/16亮度採樣和四分之一精度Affine inter模式下的起始搜索點。

4 運動存儲

在VVC中,顯式發出信號的運動矢量的最高精度爲四分之一精度。在某些仿射模式間預測模式中,運動矢量以1/16亮度採樣精度導出,運動補償的預測以1/16採樣精度執行。運動存儲方面,所有運動矢量都以1/16像素精度存儲。
對於TMVP和ATVMP使用的臨時運動場存儲,與HEVC中的16x16塊大小相比,VVC運動以8x8塊存儲。

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