TW202145794A - 幀間預測方法、編碼器、解碼器以及電腦儲存媒介 - Google Patents

幀間預測方法、編碼器、解碼器以及電腦儲存媒介 Download PDF

Info

Publication number
TW202145794A
TW202145794A TW110118917A TW110118917A TW202145794A TW 202145794 A TW202145794 A TW 202145794A TW 110118917 A TW110118917 A TW 110118917A TW 110118917 A TW110118917 A TW 110118917A TW 202145794 A TW202145794 A TW 202145794A
Authority
TW
Taiwan
Prior art keywords
current block
motion information
candidate
lower right
candidate position
Prior art date
Application number
TW110118917A
Other languages
English (en)
Inventor
楊寧
Original Assignee
大陸商Oppo廣東移動通信有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 大陸商Oppo廣東移動通信有限公司 filed Critical 大陸商Oppo廣東移動通信有限公司
Publication of TW202145794A publication Critical patent/TW202145794A/zh

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/55Motion estimation with spatial constraints, e.g. at image or region borders

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申請實施例公開了一種幀間預測方法、編碼器、解碼器以及電腦儲存媒介,應用於解碼器,該方法包括:解析位元流,獲取當前塊的預測模式參數;當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。

Description

幀間預測方法、編碼器、解碼器以及電腦儲存媒介
本申請涉及影像編解碼技術領域,尤其涉及一種幀間預測方法、編碼器、解碼器以及電腦儲存媒介。
在影像編解碼領域,針對當前塊進行編解碼的過程,除了採用幀內預測方式外,還可以採用幀間預測方式。其中,幀間預測可以包括幀間幾何劃分預測模式(Geometric Partitioning Mode,GPM)和角度加權預測模式(Angular Weighted Prediction,AWP)等,透過將幀間的當前塊劃分為兩個非矩形的分區(或兩個塊)分別進行預測後再加權融合,能夠得到當前塊的預測值。
目前,在GPM或AWP的預測過程中,雖然使用了空域運動訊息和時域運動訊息來建構運動訊息候選清單,但是使用到的時域運動訊息是按照當前塊內部的左上角位置在指定參考幀中尋找對應位置。這樣,對於GPM或AWP的兩個分區,在部分劃分模式下,某些分區與構建運動訊息候選清單時所使用的相關位置都不明確相鄰,導致這些分區在進行預測時與這些位置的相關性較弱,從而影響了編解碼的性能。
本申請提出一種幀間預測方法、編碼器、解碼器以及電腦儲存媒介,可以增加運動訊息候選清單中運動訊息的多樣性,從而提升編解碼性能。
本申請的技術方案是這樣實現的:
第一方面,本申請實施例提供了一種幀間預測方法,應用於解碼器,該方法包括:
解析位元流,獲取當前塊的預測模式參數;
當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
在一實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,所述方法還包括:利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,所述方法還包括:在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一實施例中,所述確定第二預設偏移量,包括:獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
在一實施例中,在所述至少一個時域運動訊息的數量為多個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括:從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
在一實施例中,所述方法還包括:調整時域運動訊息在所述新的運動訊息候選清單中的比例值;根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
在一實施例中,所述方法還包括:將所述預設的幀間預測模式下的多種劃分模式進行分組,得到至少兩組劃分模式集合;確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一實施例中,所述至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,所述方法還包括:若當前劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若當前劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一實施例中,所述方法還包括:確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若所述第一數量和所述第二數量均大於預設值,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
第二方面,本申請實施例提供了一種幀間預測方法,應用於編碼器,該方法包括:
確定當前塊的預測模式參數;
當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
在一實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,所述方法還包括:利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,所述方法還包括:在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一實施例中,所述確定第二預設偏移量,包括:獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
在一實施例中,在所述至少一個時域運動訊息的數量為多個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括:從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
在一實施例中,所述方法還包括:調整時域運動訊息在所述新的運動訊息候選清單中的比例值;根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
在一實施例中,所述方法還包括:將所述預設的幀間預測模式下的多種劃分模式進行分組,得到至少兩組劃分模式集合;確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一實施例中,所述至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,所述方法還包括:若待使用的劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若待使用的劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一實施例中,所述方法還包括:確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若所述第一數量和所述第二數量均大於預設值,則將所述當前塊的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
第三方面,本申請實施例提供了一種解碼器,該解碼器包括解析單元、第一確定單元、第一構建單元和第一預測單元;其中,
所述解析單元,配置為解析位元流,獲取當前塊的預測模式參數;
所述第一確定單元,配置為當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
所述第一確定單元,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
所述第一構建單元,配置為基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
所述第一預測單元,配置為根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
第四方面,本申請實施例提供了一種解碼器,該解碼器包括第一記憶體和第一處理器;其中,
所述第一記憶體,用於儲存能夠在所述第一處理器上運行的電腦程式;
所述第一處理器,用於在運行所述電腦程式時,執行如第一方面所述的方法。
第五方面,本申請實施例提供了一種編碼器,該編碼器包括第二確定單元、第二構建單元和第二預測單元;其中,
所述第二確定單元,配置為確定當前塊的預測模式參數;及當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
所述第二確定單元,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
所述第二構建單元,配置為基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
所述第二預測單元,配置為根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
第六方面,本申請實施例提供了一種編碼器,該編碼器包括第二記憶體和第二處理器;其中,
所述第二記憶體,用於儲存能夠在所述第二處理器上運行的電腦程式;
所述第二處理器,用於在運行所述電腦程式時,執行如第二方面所述的方法。
第七方面,本申請實施例提供了一種電腦儲存媒介,該電腦儲存媒介儲存有電腦程式,所述電腦程式被第一處理器執行時實現如第一方面所述的方法、或者被第二處理器執行時實現如第二方面所述的方法。
本申請實施例所提供的一種幀間預測方法、編碼器、解碼器以及電腦儲存媒介,解析位元流,獲取當前塊的預測模式參數;當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。這樣,由於當前塊的時域運動訊息是基於當前塊內部的右下位置或當前塊外部的右下位置確定的,可以在運動訊息候選清單中補充增強與右下方更有相關性的運動訊息,從而增加了運動訊息候選清單中運動訊息的多樣性;尤其是對於GPM或AWP幀間預測模式而言,透過增加右下方時域運動訊息候選位置的方式能夠提高右下方的相關性,從而能夠提升編解碼性能。
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述。可以理解的是,此處所描述的具體實施例僅僅用於解釋相關申請,而非對該申請的限定。另外還需要說明的是,為了便於描述,附圖中僅示出了與有關申請相關的部分。
在影像圖像中,一般採用第一圖像分量、第二圖像分量和第三圖像分量來表徵當前塊(Coding Block,CB);其中,這三個圖像分量分別為一個亮度分量、一個藍色色度分量和一個紅色色度分量,具體地,亮度分量通常使用符號Y表示,藍色色度分量通常使用符號Cb或者U表示,紅色色度分量通常使用符號Cr或者V表示;這樣,影像圖像可以用YCbCr格式表示,也可以用YUV格式表示。
目前,通用的影像編解碼標準基於都採用基於塊的混合編碼框架。影像圖像中的每一幀被分割成相同大小(比如128×128,64×64等)的正方形的最大編碼單元(Largest Coding Unit,LCU),每個最大編碼單元還可以根據規則劃分成矩形的編碼單元(Coding Unit,CU);而且編碼單元可能還會劃分成更小的預測單元(Prediction Unit,PU)。具體地,混合編碼框架可以包括有預測、變換(Transform)、量化(Quantization)、熵編碼(Entropy Coding)、迴路濾波(In Loop Filter)等模組;其中,預測模組可以包括幀內預測(intra prediction)和幀間預測(inter prediction),幀間預測可以包括運動估計(motion estimation)和運動補償(motion compensation)。由於影像圖像的一個幀內相鄰像素之間存在很強的相關性,在影像編解碼技術中使用幀內預測方式能夠消除相鄰像素之間的空間冗餘;但是由於影像圖像中的相鄰幀之間也存在著很強的相似性,在影像編解碼技術中使用幀間預測方式消除相鄰幀之間的時間冗餘,從而能夠提高編碼效率。下述本申請將以幀間預測進行詳細描述。
應理解,本申請實施例提供一種影像編碼系統,如圖1所示,該影像編碼系統11可以包括:變換單元111、量化單元112、模式選擇和編碼控制邏輯單元113、幀內預測單元114、幀間預測單元115(包括:運動補償和運動估計)、反量化單元116、反變換單元117、迴路濾波單元118、編碼單元119和解碼圖像暫存單元110;針對輸入的原始視訊訊號,透過編碼樹單元(Coding Tree Unit,CTU)的劃分可以得到一個影像重建塊,透過模式選擇和編碼控制邏輯單元113確定編碼模式,然後,對經過幀內或幀間預測後得到的殘差像素訊息,透過變換單元111、量化單元112對該影像重建塊進行變換,包括將殘差訊息從像素域變換到變換域,並對所得的變換係數進行量化,用以進一步減少位元速率;幀內預測單元114用於對該影像重建塊進行幀內預測;其中,幀內預測單元114用於確定該影像重建塊的最優幀內預測模式(即目標預測模式);幀間預測單元115用於執行所接收的影像重建塊相對於一或多個參考幀中的一或多個塊的幀間預測編碼,以提供時間預測訊息;其中,運動估計為產生運動向量的過程,所述運動向量可以估計該影像重建塊的運動,然後,運動補償基於由運動估計所確定的運動向量執行運動補償;在確定幀間預測模式之後,幀間預測單元115還用於將所選擇的幀間預測資料提供到編碼單元119,而且,將所計算確定的運動向量資料也發送到編碼單元119;此外,反量化單元116和反變換單元117用於該影像重建塊的重構建,在像素域中重構建殘差塊,該重構建殘差塊透過迴路濾波單元118去除方塊效應假影,然後,將該重構殘差塊添加到解碼圖像暫存單元110的幀中的一個預測性塊,用以產生經重構建的影像重建塊;編碼單元119是用於編碼各種編碼參數及量化後的變換係數。而解碼圖像暫存單元110用於存放重構建的影像重建塊,用於預測參考。隨著影像圖像編碼的進行,會不斷生成新的重構建的影像重建塊,這些重構建的影像重建塊都會被存放在解碼圖像暫存單元110中。
本申請實施例還提供一種影像解碼系統,如圖2所示,該影像解碼系統12可以包括:解碼單元121、反變換單元127,與反量化單元122、幀內預測單元123、運動補償單元124、迴路濾波單元125和解碼圖像暫存單元126單元;輸入的視訊訊號經過影像編碼系統11進行編碼處理之後,輸出該視訊訊號的位元流;該位元流輸入影像解碼系統12中,首先經過解碼單元121,用於得到解碼後的變換係數;針對該變換係數透過反變換單元127與反量化單元122進行處理,以便在像素域中產生殘差塊;幀內預測單元123可用於基於所確定的幀內預測方向和來自當前幀或圖片的先前經解碼塊的資料而產生當前影像解碼塊的預測資料;運動補償單元124是透過剖析運動向量和其他關聯語法元素來確定用於影像解碼塊的預測訊息,並使用該預測訊息以產生正被解碼的影像解碼塊的預測性塊;透過對來自反變換單元127與反量化單元122的殘差塊與由幀內預測單元123或運動補償單元124產生的對應預測性塊進行求和,而形成解碼的影像塊;該解碼的視訊訊號透過迴路濾波單元125以便去除方塊效應假影,可以改善影像品質;然後將經解碼的影像塊儲存於解碼圖像暫存單元126中,解碼圖像暫存單元126儲存用於後續幀內預測或運動補償的參考圖像,同時也用於視訊訊號的輸出,得到所恢復的原始視訊訊號。
本申請實施例提供的一種幀間預測方法主要作用於影像編碼系統11的幀間預測單元115和影像解碼系統12的幀間預測單元,即運動補償單元124;也就是說,如果在影像編碼系統11能夠透過本申請實施例提供的幀間預測方法得到一個較好的預測效果,提高編碼性能;那麼,對應地,在影像解碼系統12,也能夠改善影像解碼恢復品質,從而提高解碼性能。
基於此,下面結合附圖和實施例對本申請的技術方案進一步詳細闡述。在進行詳細闡述之前,需要說明的是,說明書通篇中提到的“第一”、“第二”、“第三”等,僅僅是為了區分不同的特徵,不具有限定優先順序、先後順序、大小關係等功能。
本申請實施例提供一種幀間預測方法,該方法應用於影像解碼設備,即解碼器。該方法所實現的功能可以透過解碼器中的第一處理器調用電腦程式來實現,當然電腦程式可以保存在第一記憶體中,可見,該解碼器至少包括第一處理器和第一記憶體。
參見圖3,其示出了本申請實施例一種幀間預測方法的流程示意圖。如圖3所示,該方法可以包括:
S301:解析位元流,獲取當前塊的預測模式參數。
需要說明的是,待解碼圖像可以劃分為多個圖像塊,而當前待解碼的圖像塊可以稱為當前塊(可以用CU表示),與當前塊相鄰的圖像塊可以稱為相鄰塊;即在待解碼圖像中,當前塊與相鄰塊之間具有相鄰關係。這裡,每個當前塊可以包括第一圖像分量、第二圖像分量和第三圖像分量,也即當前塊表示待解碼圖像中當前待進行第一圖像分量、第二圖像分量或者第三圖像分量預測的圖像塊。
其中,假定當前塊進行第一圖像分量預測,而且第一圖像分量為亮度分量,即待預測圖像分量為亮度分量,那麼當前塊也可以稱為亮度塊;或者,假定當前塊進行第二圖像分量預測,而且第二圖像分量為色度分量,即待預測圖像分量為色度分量,那麼當前塊也可以稱為色度塊。
還需要說明的是,預測模式參數指示了當前塊採用的預測模式以及與該預測模式相關的參數。其中,預測模式通常包括有幀間預測模式、傳統幀內預測模式和非傳統幀內預測模式等,而幀間預測模式又包括有普通幀間預測模式、GPM預測模式和AWP預測模式等。也就是說,編碼器會選取最優的預測模式對當前塊進行預編碼,在這過程中就可以確定出當前塊的預測模式,從而將相應的預測模式參數寫入位元流,由編碼器傳輸到解碼器。
這樣,在解碼器側,透過解析位元流就可以直接獲取到當前塊的預測模式參數,根據所獲取的預測模式參數用以確定當前塊是否使用預設的幀間預測模式,比如GPM預測模式或AWP預測模式。
S302:當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置。
需要說明的是,在解碼器解析位元流獲取到預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值的情況下,就可以採用本申請實施例所提供的幀間預測方法。
還需要說明的是,運動訊息可以包括運動向量(Motion Vector,MV)訊息和參考幀訊息。具體地,對於使用幀間預測的當前塊而言,該當前塊所在的當前幀具有一個或多個參考幀,而當前塊可以是編碼單元或預測單元,可以使用一個包含一組運動向量和參考幀訊息的運動訊息指示到某一參考幀內一個與當前塊大小相同的像素區域,這裡稱之為參考塊,也可以使用一個包含兩組運動向量和參考幀訊息的運動訊息指示到某兩個可以相同也可以不同的參考幀內的兩個參考塊;然後運動補償可以根據運動訊息所指示的參考塊得到當前塊的幀間預測值。
應理解,P幀(Predictive Frame)是只能使用圖像播放順序(Picture Order Count,POC)在當前幀之前的參考幀進行預測的幀。這時候當前參考幀只有一個參考幀清單,用RefPicList0表示;且RefPicList0中都是POC在當前幀之前的參考幀。B幀(Bi-directional Interpolated Prediction Frame)早期是可以使用POC在當前幀之前的參考幀及POC在當前幀之後的參考幀進行預測的幀。B幀有兩個參考幀清單,分別用RefPicList0和RefPicList1表示;其中,RefPicList0中都是POC在當前幀之前的參考幀,RefPicList1中都是POC在當前幀之後的參考幀。對於當前塊而言,可以只參考RefPicList0中某一幀的參考塊,這種情況可稱為前向預測;或者也可以只參考RefPicList1中某一幀的參考塊,這種情況可稱為後向預測;或者還可以同時參考RefPicList0中某一幀的參考塊和RefPicList1中某一幀的參考塊,這種情況可稱為雙向預測。同時參考兩個參考塊的一種簡單方式是將兩個參考塊內每一個對應位置的像素進行平均以得到當前塊內每一像素的幀間預測值(或者可以稱為預測塊)。後期B幀不再限制RefPicList0中都是POC在當前幀之前的參考幀,RefPicList1中都是POC在當前幀之後的參考幀。換句話說,RefPicList0中也可以有POC在當前幀之後的參考幀,RefPicList1中也可以有POC在當前幀之前的參考幀,也即是指當前塊可以同時參考POC在當前幀之前的參考幀或者同時參考POC在當前幀之後的參考幀。但是當前塊為雙向預測時所使用的參考幀必須一個來自於RefPicList0,一個來自於RefPicList1;這種B幀也稱為廣義B幀。
由於隨機存取(Random Access,RA)配置的編解碼順序與POC順序不同,這樣B幀可以同時參考當前幀之前的訊息和當前幀之後的訊息,能夠明顯提高編碼性能。示例性地,RA的一種經典的圖像組(Group Of Pictures,GOP)結構如圖4所示,在圖4中,箭頭表示參考關係,由於I幀不需要參考幀,那麼在POC為0的I幀解碼後,將會解碼POC為4的P幀,而在解碼POC為4的P幀時可以參考POC為0的I幀。在POC為4的P幀解碼後,然後再解碼POC為2的B幀,而在解碼POC為2的B幀時可以參考POC為0的I幀和POC為4的P幀,等等。這樣,根據圖4可以得到,POC順序為{0  1  2  3  4  5  6  7  8}的情況下,其對應的解碼順序為{0  3  2  4  1  7  6  8  5}。
另外,低延遲(Low Delay,LD)配置的編解碼順序與POC順序是相同的,這時候當前幀只能參考當前幀之前的訊息。其中,Low Delay配置又分Low Delay P和Low Delay B。Low Delay P即傳統的Low Delay配置。其典型的結構是IPPP……,即先編解碼一個I幀,之後解碼的幀都是P幀。Low Delay B的典型結構是IBBB……,與Low Delay P的區別在於每個幀間幀都是B幀,即使用兩個參考幀清單,當前塊可以同時參考RefPicList0中的某一幀的參考塊和RefPicList1中的某一幀的參考塊。這裡,當前幀的一個參考幀清單最多可以有幾個參考幀,如2個、3個或4個等。當編碼或解碼某一個當前幀時,RefPicList0和RefPicList1內各有哪幾個參考幀是由預設配置或演算法決定的,但是同一個參考幀可以同時出現在RefPicList0和RefPicList1中,即編碼器或解碼器允許當前塊同時參考同一個參考幀中的兩個參考塊。
在本申請實施例中,編碼器或解碼器通常可以使用參考幀清單裡的索引值(用index表示)來對應參考幀。如果一個參考幀清單長度為4,那麼index有0、1、2、3等四個值。例如,如果當前幀的RefPicList0有POC為5,4,3,0的4個參考幀,那麼RefPicList0的index 0為POC 5的參考幀,RefPicList0的index 1為POC 4的參考幀,RefPicList0的index 2為POC 3的參考幀,RefPicList0的index 3為POC 0的參考幀。
目前的多功能影像編碼(Versatile Video Coding,VVC)標準中,預設的幀間預測模式可以為GPM預測模式。目前的數位音影像編解碼技術標準(Audio Video coding Standard,AVS)中,預設的幀間預測模式可以為AWP預測模式。這兩種預測模式雖然名稱不同、具體的實現形式不同、但原理上是共通的,即這兩種預測模式都可以適用本申請實施例的幀間預測方法。
具體來講,對於GPM預測模式來說,如果使用GPM,那麼位元流中將會傳輸GPM下的預測模式參數,比如GPM具體的劃分模式;通常情況下,GPM包括有64種劃分模式。對於AWP預測模式來說,如果使用AWP,那麼位元流中將會傳輸AWP下的預測模式參數,比如AWP具體的劃分模式;通常情況下,AWP包括有56種劃分模式。
在預設的預測模式下,比如GPM和AWP均需要使用兩個單向運動訊息查找兩個參考塊。目前的實現方式是在編碼器側利用當前塊之前已編碼/已解碼部分的相關訊息構建一個運動訊息候選清單(也可以稱為單向運動訊息候選清單),從該運動訊息候選清單中選擇單向運動訊息,將這兩個單向運動訊息在運動訊息候選清單中的索引值(index)寫入位元流。在解碼器側採用同樣的方式,即利用當前塊之前已解碼部分的相關訊息構建一個運動訊息候選清單,這個運動訊息候選清單與編碼器側構建的候選清單一定是相同的。如此,從位元流中解析出兩個運動訊息的索引值,然後從運動訊息候選清單中查找出這兩個單向運動訊息即為當前塊需要使用的兩個單向運動訊息。
還需要說明的是,本申請實施例所描述的單向運動訊息可以包括有運動向量訊息,即(x,y)的值,以及對應的參考幀訊息,即參考幀清單及在參考幀清單中的參考索引值。一種表示方式是記錄兩個參考幀清單的參考索引值,其中一個參考幀清單對應的參考索引值有效,如0,1,2等;另一個參考幀清單對應的參考索引值為無效,即-1。參考索引值有效的參考幀清單即為當前塊的運動訊息所使用的參考幀清單,根據參考索引值可以從該參考幀清單中查找到對應的參考幀。每個參考幀清單都有一個對應的運動向量,有效的參考幀清單對應的運動向量是有效的,無效的參考幀清單對應的運動向量是無效的。解碼器可以透過單向運動訊息中的參考幀訊息找到所需的參考幀,根據當前塊的位置以及運動向量即(x,y)的值可以在參考幀中找到參考塊,進而確定出當前塊的幀間預測值。
實際應用中,運動訊息候選清單的構建方式不僅使用了空域運動訊息,還使用了時域運動訊息。其中,在VVC中構建合併候選清單(merge list)時,也用到了時域運動訊息和空域運動訊息。如圖5所示,其示出了merge list構建時所使用到的相關位置的運動訊息,填充元素為1、2、3、4、5的候選位置表示空域相關位置,即當前幀內與當前塊相鄰的這些位置塊所使用的運動訊息;填充元素為6和7的候選位置表示時域相關位置,即某一個參考幀中對應位置所使用的運動訊息,這些運動訊息還可以是經過了縮放(scaling)。這裡,對於時域運動訊息來說,如果候選位置6可用,那麼可以使用6位置對應的運動訊息;否則,可以使用7位置對應的運動訊息。需要注意的是,三角劃分預測模式(Triangle Partition Mode,TPM)和GPM預測模式中關於運動訊息候選清單的構建中也涉及到了這幾個位置的使用;而且這裡塊的大小並非為實際大小,只是作為示例說明。
對於AWP預測模式來說,如圖6所示,塊E為當前塊,而塊A、塊B、塊C、塊D、塊F、塊G均為塊E的相鄰塊,塊H為塊E內部的左上位置。其中,塊A、塊B、塊C、塊D、塊F、塊G可以用於確定空域運動訊息,而時域運動訊息則是按當前塊的內部左上角位置在指定參考幀中尋找對應位置,即圖6所示的灰色填充位置(即塊H),這裡的塊H只是用來表示位置,並不表示塊大小。基於圖6可以明顯看到,AWP的相關位置全部來自於當前塊的左、左上、上、右上,但是並沒有來自於當前塊的下、右下、右的相關位置。
然而,GPM和AWP相對於其他預測模式,不同之處在於GPM和AWP實質上把當前塊劃分成兩個分區。對於這些其他預測模式來說,圖6所示的這些位置都是和當前塊是緊密相關的,比如這些位置與當前塊的至少一個邊界相鄰,或者這些位置與當前塊存在重疊。但是對GPM和AWP的兩個分區而言,就不是這樣的,比較明顯的是某些劃分模式下處於右下角的分區,這些分區與構建運動訊息候選清單所使用的相關位置都不明確相鄰。也就是說,如果當前塊較小,那麼時域上的對應位置可能與當前塊右下角的分區重疊;但是如果當前塊較大,這時候該分區與構建運動訊息候選清單所使用的相關位置都不相鄰,這樣該分區與這些所選位置的相關性就較弱。
另外,GPM和AWP中每個分區必須使用不同的運動訊息,否則GPM和AWP就沒有意義。以AWP為例,極端情況下,如果當前所選相關的運動訊息都與當前塊的左上角部分相同的話,右下角部分找不到可用的運動訊息,導致AWP不會被使用到。也就是指,對於AWP來說,右下角的相關性明顯缺失。而對於GPM來說,時域運動訊息是來自於不同幀,而空域運動訊息來自於相同幀,使得空域運動訊息的相關性會更強,而右下角的相關性處於弱勢。這種右下角的相關性存在不足,在GPM和AWP中要比其他預測模式的影響更大,從而會影響到編解碼的性能。
這時候,為了提高編解碼的性能,本申請實施例就需要增強AWP和GPM右下角的相關性。也就是說,在AWP預測模式下,構建運動訊息候選清單使用時域運動訊息時,可以增加與當前塊右下角位置對應的時域運動訊息,或者將原來使用的與當前塊左上角位置對應的時域運動訊息替換為與當前塊右下角位置對應的時域運動訊息。需要注意的是,如果是增加右下角的相關性,那麼與當前塊右下角位置對應的時域運動訊息的順序可以是在當前塊左上角位置對應的時域運動訊息前面。這裡的右下角位置可以包括當前塊內部的右下位置和當前塊外部的右下位置。
在一些實施例中,對於S302來說,所述確定所述當前塊的至少一個候選位置,可以包括:
獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合;
從所述候選位置集合中,確定所述當前塊的至少一個候選位置;
其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
需要說明的是,以圖7為例,灰色填充位置均表示為當前塊的右下角,這裡可以分為4個右下候選位置。具體地,當前塊內部的右下位置可以是第一右下候選位置,如圖7中填充1的位置所示;當前塊外部的右下位置可以是第二右下候選位置,如圖7中填充2的位置所示;當前塊外部的右下位置也可以是第三右下候選位置,如圖7中填充3的位置所示;當前塊外部的右下位置還可以是第四右下候選位置,如圖7中填充4的位置所示。換句話說,本申請實施例中的右下角,可以是指當前塊內部右下角,如圖7中填充1的位置所示;或者是指當前塊外部右下角,如圖7中填充2的位置所示;或者是指當前塊外部下方(且靠右),如圖7中填充3的位置所示;或者是指當前塊外部右方(且靠下),如圖7中填充4的位置所示。這裡,如果與AVS標準的文本保持一致,那麼填充的1、2、3、4可以用H、I、J、K替代。
這樣,在獲取到第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置後,可以組成候選位置集合;然後從該候選位置集合中,確定當前塊的至少一個候選位置。
進一步地,在一些實施例中,所述獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,可以包括:
獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息;
分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息;
將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
也就是說,當前塊內部右下角即1位置是根據當前塊右下角的像素位置來確定的。這裡,假定當前塊的左上像素位置(即左上角的像素位置)用(x,y)表示,當前塊的寬度用width表示,當前塊的高度用height表示,那麼可以得到第一座標訊息為(x+width-1,y+height-1),這時候第一右下候選位置(即1的位置)可以是根據該第一座標訊息所確定的位置;也可以得到第二座標訊息為(x+width,y+height),這時候第二右下候選位置(即2的位置)可以是根據該第二座標訊息所確定的位置;還可以得到第三座標訊息為(x+width-1,y+height),這時候第三右下候選位置(即3的位置)可以是根據該第三座標訊息所確定的位置;甚至還可以得到第四座標訊息為(x+width,y+height-1),這時候第四右下候選位置(即4的位置)可以是根據該第四座標訊息所確定的位置。
進一步地,如果考慮到上述的方式所確定的四個位置距離太近,在對應的參考幀的對應位置上屬於同一個塊的可能性較大,這時候還可以設置一個偏移量,即第一預設偏移量,用offset表示。因此,在一些實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,該方法還可以包括:
利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;
將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
也就是說,上述四個位置中,1的位置仍然可以是根據第一座標訊息,即(x+width-1,y+height-1)所確定的位置;而2的位置可以是根據第一修正後的第二座標訊息,即(x+width+offset,y+height+offset)所確定的位置;3的位置可以是根據第一修正後的第三座標訊息,即(x+width-1,y+height+offset)所確定的位置;4的位置可以是根據第一修正後的第四座標訊息,即(x+width+offset,y+height-1)所確定的位置。
還需要說明的是,本申請實施例中的offset可以是一個預設的固定值,比如0,1,2,4,8,16等;或者,還可以是根據當前塊的大小(即width,height)所確定的一個值;或者,甚至還可以是採用其他方式所確定的一個值。這裡,每個位置處offset的取值可以相同,也可以不同,本申請實施例不作限定。
進一步地,由於當前幀和匯出時域運動訊息所參考運動訊息的參考幀之間可能存在著時間上的偏差,即當前幀上的塊到匯出時域運動訊息所使用的參考幀可能也存在一個運動,這時候還可以設置第二偏移量,用(x’,y’)表示。因此,在一些實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,該方法還可以包括:
在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;
利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;
將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
也就是說,一種可能的實施方式是按照上述方式在匯出時域運動訊息所參考運動訊息的參考幀中找對應位置的時候,需要考慮當前幀上的塊到匯出時域運動訊息所使用的參考幀存在有運動向量。示例性地,如果2位置是根據第二座標訊息(x+width,y+height)所確定的位置,這時候考慮到當前幀上(x+width,y+height)的塊到匯出時域運動訊息所使用的參考幀的運動,假定(x’,y’)為當前幀上(x+width,y+height)的塊到匯出時域運動訊息所使用的參考幀的運動向量,那麼第二修正後的第二座標訊息為(x+width+x’,y+height+y’),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width+x’,y+height+y’)所確定的位置。其中,該位置可能就是(x+width+x’,y+height+y’),也可能是根據(x+width+x’,y+height+y’)經過其他計算得到的。或者,如果考慮到第一預設偏移量,2位置是根據(x+width+offset,y+height+offset)所確定的位置,這時候再考慮到當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所使用的參考幀的運動,假定(x’,y’)仍為當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所用的參考幀的運動向量,那麼第二修正後的第二座標訊息為(x+width+offset+x’,y+height+offset +y’),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width+offset +x’,y+height+offset+y’)所確定的位置。其中,該位置可能就是(x+width+offset +x’,y+height+offset+y’),也可能是根據(x+width+offset+x’,y+height+offset+y’)經過其他計算得到的。同理還可以確定出1位置、3位置和4位置等,這裡不再詳述。
進一步地,在一些實施例中,所述確定第二預設偏移量,可以包括:
獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,
將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
也就是說,在本申請實施例中,對於(x’,y’)的確定,可以是查找某一個相鄰塊到匯出時域運動訊息所使用的參考幀(或者確定時域運動訊息所參考運動訊息的參考幀)的運動向量作為(x’,y’),或者是查找某一個相鄰塊的運動訊息縮放到匯出時域運動訊息所使用的參考幀(或者匯出時域運動訊息所參考運動訊息的參考幀或者確定時域運動訊息所參考運動訊息的參考幀)的運動向量作為(x’,y’),這裡不作具體限定。
應理解,另一種可能的實施方式是按照上述方式在匯出時域運動訊息所使用的參考幀訊息中找對應位置的時候,不考慮到當前幀上的塊到匯出時域運動訊息所使用的參考幀存在有運動向量。示例性地,如果2位置是根據(x+width,y+height)所確定的位置,這時候不考慮當前幀上(x+width,y+height)的塊到匯出時域運動訊息所使用的參考幀的運動,那麼這時候的第二座標訊息為(x+width,y+height),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width,y+height)所確定的位置。其中,該位置可能就是(x+width,y+height),也可能是根據(x+width,y+height)經過其他計算得到的。或者,如果考慮到第一預設偏移量,2位置是根據(x+width+offset,y+height+offset)所確定的位置,這時候不再考慮當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所使用的參考幀的運動,那麼這時候的第二座標訊息為(x+width+offset,y+height+offset),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width+offset,y+height+offset)所確定的位置。其中,該位置可能就是(x+width+offset,y+height+offset),也可能是根據(x+width+offset,y+height+offset)經過其他計算得到的。同理還可以確定出1位置、3位置和4位置等,這裡不再詳述。
此外,在本申請實施例中,一種可能的方式是只使用上述四個位置中的某一個位置,一種可能的方式是使用上述四個位置中的某幾個位置的組合。因此,可選地,在一些實施例中,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,可以包括:
從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置;或者,
從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
可選地,在一些實施例中,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,可以包括:
從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,
從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
需要說明的是,以圖7為例,當運動訊息候選清單中只需要一個時域運動訊息時,這時候可以從上述1、2、3、4等位置中按照預設方式選取某一個位置作為候選位置,或者可以是按照預設優先順序,比如2、1、3、4,如果2的優先順序最高,且2可用,這時候將2位置作為候選位置;如果2的優先順序最高,但2不可用,這時候按照預設優先順序,將順序選擇高優先順序對應的1,且1可用,那麼可以將1位置作為候選位置。或者,當運動訊息候選清單中需要多個時域運動訊息時,這時候可以從上述1、2、3、4等位置中按照預設組合方式選取多個位置作為候選位置,或者可以是按照預設優先順序,比如2的優先順序最高,將2位置排列在最前面,然後在被選取的候選位置可用的情況下,按照預設優先順序選擇多個位置作為候選位置。
也就是說,一種可能的方式是只使用上述四個位置中的某一個位置,另一種可能的方式是使用上述四個位置中的某幾個位置的組合,比如使用2、3、4的位置組合,使用3、4的位置組合等。這裡,1、2、3、4位置全用也是一種組合。換句話說,上述四個位置的任意個數(1,2,3,4)的排列組合,均可以作為確定候選位置所採用的一種選擇方式。需要注意的是,當需要使用多個位置時,一種可能的方式是設置2排列在第一個,即2位置具有最高的優先順序。
進一步地,在一些實施例中,該方法還可以包括:
從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
也就是說,仍以圖7為例,2、3、4位置都位於當前塊的外面,而且2、3、4位置有時是不可用的。如果遇到圖像邊界,某種幀間參考無法跨越的邊界等,這時候2、3、4位置可能都不可用。在遇到2、3、4位置均不可用的情況下,一種可能的方式是使用1位置代替不可用的位置。如果當前運動訊息候選清單的構建中已經使用了1位置,那麼還可以跳過不可用的位置。
這樣,在確定出當前塊的至少一個候選位置後,這裡的候選位置是為當前塊右下角的位置,可以是當前塊內部的右下位置,也可以是當前塊外部的右下位置,根據這些候選位置來確定當前塊的至少一個時域運動向量,可以使得構建運動訊息候選清單使用時域運動訊息時,能夠增加與當前塊右下角位置對應的時域運動訊息,從而提升右下角的相關性。
S303:基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息。
需要說明的是,在得到至少一個候選位置之後,可以根據所得到的候選位置來確定時域運動訊息,具體是將對應參考幀中的時域位置所使用的運動訊息作為該候選位置的時域運動訊息。這裡,當前塊所屬的幀可以為稱為當前幀,當前幀中的候選位置與參考幀中的時域位置雖然所屬的幀不同,但是位置是相同的。
在一些實施例中,對於S303來說,所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息,可以包括:
確定所述至少一個候選位置中每一候選位置對應的參考幀訊息;
針對每一候選位置,在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息;
基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
也就是說,時域運動訊息是根據某一個參考幀訊息中對應位置所使用的運動訊息來確定的。而且針對不同的候選位置,可以得到不同的時域運動訊息。
示例性地,方法一,以圖7中的2位置為例,推導時域運動訊息的步驟如下:
假定當前預測單元的左上角亮度樣本位置為(x,y),亮度預測塊的寬度為l_width,亮度預測塊的高度為l_height;而所選當前預測單元的右下方亮度樣本位置為(x’,y’),那麼x’ = x + l_width,y’ = y + l_height。
如果上面推導出的(x’,y’)不可用,比如超出圖像邊界、patch邊界等,那麼x’ = x + l_width-1,y’ = y + l_height-1。
第一步,
如果參考圖像佇列1中參考索引值為0的圖像中與所選當前預測單元的右下方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元儲存的參考幀索引為-1,則當前預測單元的L0參考索引和L1參考索引均等於0。以當前預測單元所在編碼單元的尺寸和位置作為當前預測單元的尺寸和位置,然後將所得到的L0運動向量預測值和L1運動向量預測值分別作為當前預測單元的L0運動向量MvE0和L1運動向量MvE1,並令當前預測單元的L0參考索引RefIdxL0和L1參考索引RefIdxL1均等於0,結束運動訊息匯出過程。
否則,
當前預測單元的L0參考索引和L1參考索引均等於0。當前預測單元的L0參考索引和L1參考索引對應的圖像的距離索引分別記為DistanceIndexL0和DistanceIndexL1;當前預測單元的L0參考索引和L1參考索引對應的圖像的BlockDistance分別記為BlockDistanceL0和BlockDistanceL1。
在參考圖像佇列1中參考索引為0的圖像中與所選當前預測單元的右下方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元的L0運動向量記為mvRef(mvRef_x,mvRef_y),該運動訊息儲存單元所在的圖像的距離索引記為DistanceIndexCol,該運動向量指向的參考單元所在的圖像的距離索引記為DistanceIndexRef。
第二步,
BlockDistanceRef = DistanceIndexCol - DistanceIndexRef
第三步,
令當前預測單元的L0參考索引RefIdxL0等於0,計算當前預測單元的L0運動向量mvE0(mvE0_x, mvE0_y):
mvE0_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE0_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE0。
令當前預測單元的L1參考索引RefIdxL1等於0,計算當前預測單元的L1運動向量mvE1(mvE1_x, mvE1_y):
mvE1_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE1_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE1。
第四步,interPredRefMode的值等於‘PRED_List01’。
方法二,以圖7中的4位置為例,推導時域運動訊息的步驟如下:
假定當前預測單元的左上角亮度樣本位置為(x,y),亮度預測塊的寬度為l_width,亮度預測塊的高度為l_height;而所選當前預測單元的右方亮度樣本位置為(x’,y’),x’ = x + l_width,y’ = y + l_height – 1。
如果上面推導出的(x’,y’)不可用,比如超出圖像邊界、patch邊界等,那麼x’ = x + l_width-1,y’ = y + l_height-1。
第一步,
如果參考圖像佇列1中參考索引值為0的圖像中與所選當前預測單元的右方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元儲存的參考幀索引為-1,則當前預測單元的L0參考索引和L1參考索引均等於0。以當前預測單元所在編碼單元的尺寸和位置作為當前預測單元的尺寸和位置,然後將所得到的L0運動向量預測值和L1運動向量預測值分別作為當前預測單元的L0運動向量MvE0和L1運動向量MvE1,並令當前預測單元的L0參考索引RefIdxL0和L1參考索引RefIdxL1均等於0,結束運動訊息匯出過程。
否則,
當前預測單元的L0參考索引和L1參考索引均等於0。當前預測單元的L0參考索引和L1參考索引對應的圖像的距離索引分別記為DistanceIndexL0和DistanceIndexL1;當前預測單元的L0參考索引和L1參考索引對應的圖像的BlockDistance分別記為BlockDistanceL0和BlockDistanceL1。
在參考圖像佇列1中參考索引為0的圖像中與所選當前預測單元的右方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元的L0運動向量記為mvRef(mvRef_x,mvRef_y),該運動訊息儲存單元所在的圖像的距離索引記為DistanceIndexCol,該運動向量指向的參考單元所在的圖像的距離索引記為DistanceIndexRef。
第二步,
BlockDistanceRef = DistanceIndexCol - DistanceIndexRef
第三步,
令當前預測單元的L0參考索引RefIdxL0等於0,計算當前預測單元的L0運動向量mvE0(mvE0_x, mvE0_y):
mvE0_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE0_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE0。
令當前預測單元的L1參考索引RefIdxL1等於0,計算當前預測單元的L1運動向量mvE1(mvE1_x, mvE1_y):
mvE1_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE1_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE1。
第四步,interPredRefMode的值等於‘PRED_List01’。
方法三,以圖7中的3位置為例,推導時域運動訊息的步驟如下:
假定當前預測單元的左上角亮度樣本位置為(x,y),亮度預測塊的寬度為l_width,亮度預測塊的高度為l_height;而所選當前預測單元的下方亮度樣本位置為(x’,y’),那麼x’ = x + l_width – 1, y’ = y + l_height。
如果上面推導出的(x’,y’)不可用,比如超出圖像邊界、patch邊界等,那麼x’ = x + l_width-1,y’ = y + l_height-1。
第一步,
如果參考圖像佇列1中參考索引值為0 的圖像中與所選當前預測單元的下方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元儲存的參考幀索引為-1,則當前預測單元的L0參考索引和L1參考索引均等於0。以當前預測單元所在編碼單元的尺寸和位置作為當前預測單元的尺寸和位置,然後將所得到的L0運動向量預測值和L1運動向量預測值分別作為當前預測單元的L0運動向量MvE0和L1運動向量MvE1,並令當前預測單元的L0參考索引RefIdxL0和L1參考索引RefIdxL1均等於0,結束運動訊息匯出過程。
否則,
當前預測單元的L0參考索引和L1參考索引均等於0。當前預測單元的L0參考索引和L1參考索引對應的圖像的距離索引分別記為DistanceIndexL0和DistanceIndexL1;當前預測單元的L0參考索引和L1參考索引對應的圖像的BlockDistance分別記為BlockDistanceL0和BlockDistanceL1。
在參考圖像佇列1中參考索引為0的圖像中與所選當前預測單元的下方亮度樣本位置對應的亮度樣本所在的時域運動訊息儲存單元的L0運動向量記為mvRef(mvRef_x,mvRef_y),該運動訊息儲存單元所在的圖像的距離索引記為DistanceIndexCol,該運動向量指向的參考單元所在的圖像的距離索引記為DistanceIndexRef。
第二步,
BlockDistanceRef = DistanceIndexCol - DistanceIndexRef
第三步,
令當前預測單元的L0參考索引RefIdxL0等於0,計算當前預測單元的L0運動向量mvE0(mvE0_x, mvE0_y):
mvE0_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE0_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL0 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL0 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE0。
令當前預測單元的L1參考索引RefIdxL1等於0,計算當前預測單元的L1運動向量mvE1(mvE1_x, mvE1_y):
mvE1_x = Clip3(-32768, 32767, Sign(mvRef_x * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_x * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
mvE1_y = Clip3(-32768, 32767, Sign(mvRef_y * BlockDistanceL1 * BlockDistanceRef) * (((Abs(mvRef_y * BlockDistanceL1 * (16384 / BlockDistanceRef))) + 8192 ) >> 14))
這裡,mvX即為mvRef,MVX即為mvE1。
第四步,interPredRefMode的值等於‘PRED_List01’。
這樣,在匯出時域運動訊息之後,可以將所得到的時域運動訊息填充至運動訊息候選清單中,以得到新的運動訊息候選清單。
S304:基於所述至少一個時域運動訊息,構建新的運動訊息候選清單。
需要說明的是,在得到至少一個時域運動訊息之後,可以將其填入到運動訊息候選清單中,以得到新的運動訊息候選清單。具體地,對於S304來說,該步驟可以包括:將至少一個時域運動訊息填入運動訊息候選清單中,得到所述新的運動訊息候選清單。
還需要說明的是,現有的運動訊息候選清單中只預留一個時域運動訊息的填充位置,為了提高右下角的相關性,還可以增加運動訊息候選清單中時域運動訊息的填充位置。具體地,在一些實施例中,該方法還可以包括:
調整時域運動訊息在所述新的運動訊息候選清單中的比例值;
根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
也就是說,可以增加時域運動訊息在運動訊息候選清單中的比例值。如果AWP預測模式下候選清單中給時域運動訊息保留了至少1個位置,那麼可以調整為AWP預測模式下候選清單中給時域運動訊息保留了至少2個(或3個)位置,使得新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
可以理解地,當預測模式參數指示使用預設的幀間預測模式(比如GPM或AWP)確定當前塊的幀間預測值時,這時候可以確定出當前塊的兩個分區。也就是說,該方法還可以包括:當預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
這裡,在GPM或AWP預測模式下,還可以根據GPM或AWP的劃分模式選擇匯出時域運動訊息所使用的候選位置,或選擇根據不同位置匯出時域運動訊息的排列組合。在一些實施例中,該方法還可以包括:
將GPM或AWP下的多種劃分模式進行分組,得到至少兩組劃分模式集合;
確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;
針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
進一步地,至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,該方法還可以包括:
若當前劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若當前劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
進一步地,至少兩組劃分模式集合包括第一組劃分模式集合、第二組劃分模式集合、第三劃分模式集合和第四劃分模式集合,該方法還可以包括:
若當前劃分模式屬於所述第一組劃分模式集合,則將所述當前塊的第一右下候選位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若當前劃分模式屬於所述第二組劃分模式集合,則將所述當前塊的第二右下候選位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若當前劃分模式屬於所述第三組劃分模式集合,則將所述當前塊的第三右下候選位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若當前劃分模式屬於所述第四組劃分模式集合,則將所述當前塊的第四右下候選位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
也就是說,可以將GPM或AWP的劃分模式進行分組,以得到至少兩組劃分模式集合。比如一種可能的實施方式是如果將AWP的劃分模式分為0~31為一組劃分模式集合,32~55為另一組劃分模式集合,那麼若當前AWP的劃分模式是第0~31中某一種劃分模式,則可以按照現有方法(即當前塊的左上角位置)推導出時域運動訊息;否則,若當前AWP的劃分模式是第32~55中某一種劃分模式,則將本申請實施例的方法(即當前塊外部的右下角位置)推導出時域運動訊息。或者,將GPM或AWP的劃分模式分成四組劃分模式集合,這四組劃分模式集合分別對應當前塊的四個右下位置,比如第一組劃分模式集合對應第一右下候選位置(如圖7中的1位置),第二組劃分模式集合對應第二右下候選位置(如圖7中的2位置),第三組劃分模式集合對應第三右下候選位置(如圖7中的3位置),第四組劃分模式集合對應第四右下候選位置(如圖7中的4位置)。
另一種可能的實施方式是可以根據GPM或AWP的劃分模式選擇匯出時域運動訊息所使用的位置,或者選擇根據不同位置匯出時域運動訊息的排列組合。示例性地,以使用當前塊左上角的位置推導出時域運動訊息和使用當前塊右下角的位置(如圖7中的2位置)推導出時域運動訊息等兩種方式為例,即GPM或AWP下的一些劃分模式可以使用當前塊左上角的位置推導出時域運動訊息,而GPM或AWP下的另一些劃分模式可以使用當前塊右下角的位置(如圖7中的2位置)推導出時域運動訊息。這裡,本申請實施例並不局限於當前塊的左上角和右下角,也可能是左下角、右上角等,本申請實施例不作限定。
還需要說明的是,由於GPM或AWP預測模式下,某些劃分模式所得到的兩個分區,它們所能夠找到的緊密相關的空域位置個數是不同的,還可以根據這些個數來確定當前塊使用哪個部分的位置推導出時域運動訊息。因此,在一些實施例中,該方法還可以包括:
確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;
確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;
若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若所述第一數量和所述第二數量均大於預設值,則將所述當前塊的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
這裡,一種可能的實施原則是如果GPM或AWP下劃分的某一個分區能夠找到緊密相關的空域位置(即圖7中的F、G、C、A、B、D等空域位置與該分區的最近像素位置相鄰)的個數少於N,這裡的N為1或2或3或4等;這時候時域運動訊息可以使用當前塊右下角的位置推導出時域運動訊息,否則時域運動訊息使用當前塊左上角的位置推導出時域運動訊息。
另一種可能的實施原則是如果GPM或AWP下劃分的兩個分區分別能夠找到緊密相關的空域位置(即圖7中的F、G、C、A、B、D等空域位置與該分區的最近像素位置相鄰)的個數大於N,這裡的N為1或2或3或4等;這時候時域運動訊息可以使用當前塊左上角的位置推導出時域運動訊息,否則時域運動訊息使用當前塊右下角的位置推導出時域運動訊息。
需要注意的是,針對不同的編碼塊或預測塊形狀,如正方形、2N×N、N×2N、4N×N、N×4N等不同形狀時,由於GPM或AWP的同一個劃分模式分別能夠找到緊密相關的空域位置(即圖7中的F、G、C、A、B、D等空域位置與該分區的最近像素位置相鄰)的個數不一定相同,一種可能的方式是同一個劃分模式在任何形狀下都使用同一種時域運動訊息的推導方法,而使用哪一個或哪幾個位置用來推導出時域運動訊息可能是由正方形時對應的情況決定的。另一種可能的方式是同一個劃分模式在不同形狀下使用不同的時域運動訊息推導方法。又一種可能的方式是指定某些劃分模式使用一種空域運動訊息推導方法,指定另外某些劃分模式使用另外一種空域運動訊息推導方法等等,這裡,指定哪些模式使用哪種空域運動訊息推導方法是根據以上所述的相關性綜合確定的,本申請實施例不作具體限定。
這樣,在推導出時域運動訊息之後,可以構建出新的運動訊息候選清單。後續根據新的運動訊息候選清單來確定當前塊的幀間預測值。
S305:根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
需要說明的是,當預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,這時候可以確定出當前塊的兩個分區;其中,兩個分區可以包括第一分區和第二分區。
這樣,在得到新的運動訊息候選清單後,可以確定出當前塊的第一分區對應的運動訊息和所述第二分區的運動訊息;然後根據第一分區對應的運動訊息和所述第二分區的運動訊息,能夠確定出當前塊的幀間預測值。
具體地,如圖8所示,其示出了本申請實施例提供的另一種幀間預測方法的流程示意圖。該方法可以包括:
S801:解析位元流,確定所述第一分區對應的第一運動訊息索引值和所述第二分區對應的第二運動訊息索引值;
S802:基於新的運動訊息候選清單,將所述第一運動訊息索引值指示的所述新的運動訊息候選清單中的運動訊息確定為所述第一分區的運動訊息,將所述第二運動訊息索引值指示的所述新的運動訊息候選清單中的運動訊息確定為所述第二分區的運動訊息;
S803:利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;
S804:對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
需要說明的是,傳統的單向預測只是查找一個與當前塊大小相同的參考塊,而傳統的雙向預測使用兩個與當前塊大小相同的參考塊,且預測塊內每個點的像素值為兩個參考塊對應位置的平均值,即每一個參考塊的所有點都占50%的比例。雙向加權預測使得兩個參考塊的比例可以不同,如第一個參考塊中所有點都占75%的比例,第二個參考塊中所有點都占25%的比例。但同一個參考塊中的所有點的比例都相同。其他一些優化方式比如採用解碼端運動向量修正(Decoder side Motion Vector Refinement,DMVR)技術、雙向光流(Bi-directional Optical Flow,BIO)等會使參考像素或預測像素產生一些變化,而且GPM或AWP也使用兩個與當前塊大小相同的參考塊,但某些像素位置100%使用第一個參考塊對應位置的像素值,某些像素位置100%使用第二個參考塊對應位置的像素值,而在交界區域,按一定比例使用這兩個參考塊對應位置的像素值。具體這些權重如何分配,由GPM或AWP的預測模式決定,或者也可以認為GPM或AWP使用兩個與當前塊大小不相同的參考塊,即各取所需的一部分作為參考塊。
示例性地,如圖9A所示,其示出了本申請實施例提供的一種GPM在64×64的當前塊上的多種劃分模式的權重分配示意圖。在圖9A中,GPM存在有64種劃分模式。如圖9B所示,其示出了本申請實施例提供的一種AWP在64×64的當前塊上的多種劃分模式的權重分配示意圖。在圖9B中,AWP存在有56種劃分模式。無論是圖9A還是圖9B,每一種劃分模式下,黑色區域表示第一個參考塊對應位置的權重值為0%,白色區域表示第一個參考塊對應位置的權重值為100%,灰色區域則按顏色深淺的不同表示第一個參考塊對應位置的權重值為大於0%且小於100%的某一個權重值,第二個參考塊對應位置的權重值則為100%減去第一個參考塊對應位置的權重值。
應理解,早期的編解碼技術中只存在矩形的劃分方式,無論是CU、PU還是變換單元(Transform Unit,TU)的劃分。而GPM或AWP均實現了非矩形的劃分,即用一條直線可以將一個矩形塊分成兩個分區,根據直線的位置和角度的不同,劃分的兩個分區可能是三角形或梯形或矩形等,從而能使得劃分更貼近物體的邊緣或者兩個運動不同區域的邊緣。需要注意的是,這裡所說的劃分並不是真正意義上的劃分,而更像是一種預測效果上的劃分。因為這個劃分只是劃分了兩個參考塊在產生預測塊時的權重,或者可以簡單地理解為預測塊的一部分位置來自於第一個參考塊,而另一部分位置來自於第二個參考塊,並沒有真正按劃分線把當前塊劃分成兩個CU或PU或TU。這樣,在預測之後殘差的變換、量化、反變換、反量化等也都是將當前塊作為一個整體進行處理。
還需要說明的是,GPM或AWP屬於一種幀間預測技術,GPM或AWP需要在位元流中傳輸一個GPM或AWP是否使用的標誌(flag),該flag可以指示當前塊是否使用GPM或AWP。如果使用GPM或AWP,編碼器在位元流中需要傳輸具體使用的模式,即GPM的64種劃分模式之一,或AWP的56種劃分模式之一;以及兩個單向運動訊息的索引值。也就是說,對於當前塊而言,解碼器透過解析位元流可以得到GPM或AWP是否使用的訊息,如果確定使用GPM或AWP,解碼器可以解析出GPM或AWP的預測模式參數以及兩個運動訊息索引值,比如當前塊可以劃分為兩個分區,那麼可以解析出第一分區對應的第一運動訊息索引值和第二分區對應的第二運動訊息索引值。
在計算當前塊的幀間預測值之前,首先需要構建一個新的運動訊息候選清單,下面以AVS中的AWP為例介紹運動訊息候選清單的構建方法。
如圖7所示,塊E為當前塊,而塊A、塊B、塊C、塊D、塊F、塊G均為塊E的相鄰塊。其中,塊E的相鄰塊A是樣本(
Figure 02_image001
Figure 02_image003
)所在的塊,塊E的相鄰塊B是樣本(
Figure 02_image005
Figure 02_image007
)所在的塊,塊E的相鄰塊C是樣本(
Figure 02_image009
Figure 02_image007
)所在的塊,塊E的相鄰塊D是樣本(
Figure 02_image001
Figure 02_image007
)所在的塊,塊E的相鄰塊F是樣本(
Figure 02_image001
Figure 02_image013
)所在的塊,塊E的相鄰塊G是樣本(
Figure 02_image015
Figure 02_image007
)所在的塊。其中(
Figure 02_image005
Figure 02_image003
)是塊E左上角樣本在圖像中的座標,(
Figure 02_image015
Figure 02_image003
)是塊E右上角樣本在圖像中的座標,(
Figure 02_image005
Figure 02_image013
)是塊E左下角樣本在圖像中的座標。也就是說,塊E和它的相鄰塊A、B、C、D、F和G的空間位置關係詳見圖7。
對於圖7而言,相鄰塊X(X表示為A、B、C、D、F或G)“存在”是指該塊應在待解碼圖像內並且該塊應與塊E屬於同一空間區域;否則相鄰塊“不存在”。可以得到,如果塊“不存在”或者尚未解碼,那麼此塊“不可用”;否則此塊“可用”。或者,如果待解碼圖像樣本所在的塊“不存在”或者此樣本尚未解碼,那麼此樣本“不可用”;否則此樣本“可用”。
假定第一個單向運動訊息表示為mvAwp0L0、mvAwp0L1、RefIdxAwp0L0和RefIdxAwp0L1。其中,mvAwp0L0表示在第一個參考幀清單RefPicList0中對應的運動向量,RefIdxAwp0L0表示在第一個參考幀清單RefPicList0中對應的參考幀的參考索引值;mvAwp0L1表示在第二個參考幀清單RefPicList1中對應運動向量,RefIdxAwp0L1表示在第二個參考幀清單RefPicList1中對應的參考幀的參考索引值。第二個單向運動訊息以此類推。
由於這裡的運動訊息都是單向的,所以RefIdxAwp0L0和RefIdxAwp0L1必有一個為有效值,比如0,1,2等;另一個為無效值,比如-1。如果RefIdxAwp0L0為有效值,那麼RefIdxAwp0L1為-1;這時候對應的mvAwp0L0即為所需要的運動向量,即(x,y),mvAwp0L1不需要考慮。反之亦然。
具體來講,推導mvAwp0L0、mvAwp0L1、RefIdxAwp0L0、RefIdxAwp0L1、mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1的步驟如下:
第一步,如圖7所示,F、G、C、A、B和D是當前塊E的相鄰塊,確定F、G、C、A、B和D的“可用”性:
(a)如果F存在且採用幀間預測模式,那麼F“可用”;否則F“不可用”。
(b)如果G存在且採用幀間預測模式,則G“可用”;否則G“不可用”。
(c)如果C存在且採用幀間預測模式,則C“可用”;否則C“不可用”。
(d)如果A存在且採用幀間預測模式,則A“可用”;否則A“不可用”。
(e)如果B存在且採用幀間預測模式,則B“可用”;否則B“不可用”。
(f)如果D存在且採用幀間預測模式,則D“可用”;否則D“不可用”。
第二步,按F、G、C、A、B和D的順序將單向可用的運動訊息放入單向運動訊息候選清單(用AwpUniArray表示),直至AwpUniArray長度為3(或4)或者遍歷結束。
第三步,如果AwpUniArray的長度小於3(或4),按F、G、C、A、B和D的順序將雙向可用的運動訊息拆分為指向參考幀清單List0的單向運動訊息以及指向參考幀清單List1的單向運動訊息,先進行單向運動訊息查重操作,若不重複則放入AwpUniArray,直至長度為3(或4)或遍歷結束。
第四步,依次將按照前述的方法一、方法二、方法三推導出的時域雙向的運動訊息拆分為指向參考幀清單List0的單向運動訊息以及指向參考幀清單List1的單向運動訊息,先進行單向運動訊息查重操作,若不重複則放入AwpUniArray,直至長度為4(或5)或遍歷結束。
第五步,如果AwpUniArray的長度小於4(或5),那麼將AwpUniArray中最後一個單向運動訊息進行重複填充操作,直至AwpUniArray長度為4(或5)。
第六步,將AwpUniArray中第AwpCandIdx0+1個運動訊息賦值給mvAwp0L0、mvAwp0L1、RefIdxAwp0L0和RefIdxAwp0L1,將AwpUniArray中第AwpCandIdx1+1個運動訊息賦值給mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1。
這樣,對於當前塊而言,解碼器透過解析位元流可以得到GPM或AWP是否使用的訊息,如果確定使用GPM或AWP,解碼器可以解析出GPM或AWP的預測模式參數以及兩個運動訊息索引值,並且解碼器建構當前塊GPM或AWP使用的運動訊息候選清單,然後根據解析到的兩個運動訊息索引值可以在上述構建出新的運動訊息候選清單中找到兩個單向運動訊息,然後利用這兩個單向運動訊息可以查找到兩個參考塊,根據GPM或AWP使用的具體預測模式能夠確定出兩個參考塊在每一個像素位置的權值,最後將兩個參考塊加權計算以得到當前塊的預測塊。
進一步地,如果當前模式是跳過(skip)模式,那麼預測塊就是解碼塊,意味著當前塊的解碼結束。如果當前模式不是跳過模式,熵解碼解析量化係數,接著反量化與反變換以得到殘差塊,最後將殘差塊與預測塊相加可以得到解碼塊,意味著當前塊的解碼結束。
除此之外,對於解碼器而言,如果當前AWP的劃分模式是第0~31中某一種劃分模式,可以按照現有方法推導出時域運動訊息;否則,將按照前述的方法一推導出時域運動訊息(或者依次將按照前述的方法一、方法二、方法三推導出時域運動訊息),(依次)將推導出的時域雙向的運動訊息拆分為指向參考幀清單List0的單向運動訊息以及指向參考幀清單List1的單向運動訊息,並且先進行單向運動訊息查重操作,若不重複則放入AwpUniArray,直至長度為4(或5)或遍歷結束。具體的文本描述如下,
具體來講,推導mvAwp0L0、mvAwp0L1、RefIdxAwp0L0、RefIdxAwp0L1、mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1的步驟如下:
第一步,如圖7所示,F、G、C、A、B和D是當前塊E的相鄰塊,確定F、G、C、A、B和D的“可用”性:
(a)如果F存在且採用幀間預測模式,那麼F“可用”;否則F“不可用”。
(b)如果G存在且採用幀間預測模式,則G“可用”;否則G“不可用”。
(c)如果C存在且採用幀間預測模式,則C“可用”;否則C“不可用”。
(d)如果A存在且採用幀間預測模式,則A“可用”;否則A“不可用”。
(e)如果B存在且採用幀間預測模式,則B“可用”;否則B“不可用”。
(f)如果D存在且採用幀間預測模式,則D“可用”;否則D“不可用”。
第二步,按F、G、C、A、B和D的順序將單向可用的運動訊息放入單向運動訊息候選清單(用AwpUniArray表示),直至AwpUniArray長度為3(或4)或者遍歷結束。
第三步,如果AwpUniArray的長度小於3(或4),按F、G、C、A、B和D的順序將雙向可用的運動訊息拆分為指向參考幀清單List0的單向運動訊息以及指向參考幀清單List1的單向運動訊息,先進行單向運動訊息查重操作,若不重複則放入AwpUniArray,直至長度為3(或4)或遍歷結束。
第四步,如果AwpIdx(AWP預測模式下)屬於0~31,按現有方法(即當前塊的左上角位置)推導出時域雙向的運動訊息,否則按照本申請實施例的方法(比如前述的方法一)推導出時域雙向的運動訊息,將匯出的雙向的運動訊息拆分為指向參考幀清單List0的單向運動訊息以及指向參考幀清單List1的單向運動訊息,先進行單向運動訊息查重操作,若不重複則放入AwpUniArray,直至長度為4(或5)或遍歷結束。
第五步,如果AwpUniArray的長度小於4(或5),那麼將AwpUniArray中最後一個單向運動訊息進行重複填充操作,直至AwpUniArray長度為4(或5)。
第六步,將AwpUniArray中第AwpCandIdx0+1個運動訊息賦值給mvAwp0L0、mvAwp0L1、RefIdxAwp0L0和RefIdxAwp0L1,將AwpUniArray中第AwpCandIdx1+1個運動訊息賦值給mvAwp1L0、mvAwp1L1、RefIdxAwp1L0和RefIdxAwp1L1。
也就是說,在本申請實施例中,透過使用本申請實施例的幀間預測方法建構時域運動訊息並填入運動訊息候選清單,使得該運動訊息候選清單的構建中使用了右下方的時域運動訊息。對於AWP或GPM使用更多的右下方的候選位置,可以增強右下方的相關性。還可以使用一個offset來減少所選的幾個塊在參考幀中屬於一個塊的情況。另外,當所選的位置不可用時,使用當前塊內部的右下角位置替代;或者根據GPM或AWP的劃分模式選擇匯出時域運動訊息所使用的位置,或選擇根據不同位置匯出時域運動訊息的排列組合。
這樣,本申請實施例的運動訊息候選清單補充增強與右下方更有相關性的運動訊息,特別是使那些在AWP劃分中處於右下方且與原有構建方式中左上方相關的運動訊息相關性不強的塊,能夠得到更有相關性的運動訊息,從而提高編碼性能;而GPM中右下方的相關性偏弱,透過增加右下方時域運動訊息候選位置的方式也能夠提高右下方的相關性,從而提高編碼性能。
還需要說明的是,本申請實施例的運動訊息候選清單一般是指單向運動訊息候選清單,但是本申請實施例單向運動訊息的建構方式可以擴展到雙向運動訊息的建構,從而單向運動訊息候選清單的構建也可以擴展到雙向運動訊息候選清單的構建。
本實施例提供了一種幀間預測方法,應用於解碼器。解析位元流,獲取當前塊的預測模式參數;當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。這樣,由於當前塊的時域運動訊息是基於當前塊內部的右下位置或當前塊外部的右下位置確定的,可以在運動訊息候選清單中補充增強與右下方更有相關性的運動訊息,從而增加了運動訊息候選清單中運動訊息的多樣性;尤其是對於GPM或AWP幀間預測模式而言,透過增加右下方時域運動訊息候選位置的方式能夠提高右下方的相關性,從而能夠提升編解碼性能。
本申請實施例提供一種幀間預測方法,該方法應用於影像編碼設備,即編碼器。該方法所實現的功能可以透過編碼器中的第二處理器調用電腦程式來實現,當然電腦程式可以保存在第二記憶體中,可見,該編碼器至少包括第二處理器和第二記憶體。
參見圖10,其示出了本申請實施例又一種幀間預測方法的流程示意圖。如圖10所示,該方法可以包括:
S1001:確定當前塊的預測模式參數;
需要說明的是,待編碼圖像可以劃分為多個圖像塊,當前待編碼的圖像塊可以稱為當前塊,與當前塊相鄰的圖像塊可以稱為相鄰塊;即在待編碼圖像中,當前塊與相鄰塊之間具有相鄰關係。這裡,每個當前塊可以包括第一圖像分量、第二圖像分量和第三圖像分量;也即當前塊為待編碼圖像中當前待進行第一圖像分量、第二圖像分量或者第三圖像分量預測的圖像塊。
其中,假定當前塊進行第一圖像分量預測,而且第一圖像分量為亮度分量,即待預測圖像分量為亮度分量,那麼當前塊也可以稱為亮度塊;或者,假定當前塊進行第二圖像分量預測,而且第二圖像分量為色度分量,即待預測圖像分量為色度分量,那麼當前塊也可以稱為色度塊。
還需要說明的是,預測模式參數指示了當前塊採用的預測模式以及與該預測模式相關的參數。這裡,針對預測模式參數的確定,可以採用簡單的決策策略,比如根據失真值的大小進行確定;也可以採用複雜的決策策略,比如根據位元率失真優化(Rate Distortion Optimization,RDO)的結果進行確定,本申請實施例不作任何限定。通常而言,可以採用RDO方式來確定當前塊的預測模式參數。
具體地,在一些實施例中,對於S1001來說,所述確定當前塊的預測模式參數,可以包括:
利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值;
從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
也就是說,在編碼器側,針對當前塊可以採用多種預測模式分別對當前塊進行預編碼處理。這裡,多種預測模式通常包括有幀間預測模式、傳統幀內預測模式和非傳統幀內預測模式;其中,傳統幀內預測模式可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非傳統幀內預測模式可以包括有基於矩陣的幀內預測(Matrix-based Intra Prediction,MIP)模式、跨分量線性模型預測(Cross-component Linear Model Prediction,CCLM)模式、幀內塊複製(Intra Block Copy,IBC)模式和PLT(Palette)模式等,而幀間預測模式可以包括有普通幀間預測模式、GPM預測模式和AWP預測模式等。
這樣,在利用多種預測模式分別對當前塊進行預編碼之後,可以得到每一種預測模式對應的位元率失真代價值;然後從所得到的多個位元率失真代價值中選取最小位元率失真代價值,並將該最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。除此之外,還可以在利用多種預測模式分別對當前塊進行預編碼之後,得到每一種預測模式對應的失真值;然後從所得到的多個失真值中選取最小失真值,並將該最小失真值對應的預測模式確定為當前塊的預測模式參數。如此,最終使用所確定的預測模式參數對當前塊進行編碼,而且在這種預測模式下,可以使得預測殘差較小,能夠提高編碼效率。
S1002:當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置。
需要說明的是,如果預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值的情況下,就可以採用本申請實施例所提供的幀間預測方法。這裡,預設的幀間預測模式可以為GPM預測模式或AWP預測模式等。
還需要說明的是,運動訊息可以包括運動向量訊息和參考幀訊息。另外,參考幀訊息可以是由參考幀清單以及參考索引值共同確定所對應的參考幀。
在一些實施例中,對於S1002來說,所述確定所述當前塊的至少一個候選位置,可以包括:
獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合;
從所述候選位置集合中,確定所述當前塊的至少一個候選位置;
其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
需要說明的是,以圖7為例,當前塊內部的右下位置可以是第一右下候選位置,如圖7中填充1的位置所示;當前塊外部的右下位置可以是第二右下候選位置,如圖7中填充2的位置所示;當前塊外部的右下位置也可以是第三右下候選位置,如圖7中填充3的位置所示;當前塊外部的右下位置還可以是第四右下候選位置,如圖7中填充4的位置所示。
這樣,在獲取到第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置後,可以組成候選位置集合;然後從該候選位置集合中,確定當前塊的至少一個候選位置。
進一步地,在一些實施例中,所述獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,可以包括:
獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息;
分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息;
將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
也就是說,當前塊內部右下角即1位置是根據當前塊右下角的像素位置來確定的。這裡,仍以圖7為例,假定當前塊的左上像素位置(即左上角的像素位置)用(x,y)表示,當前塊的寬度用width表示,當前塊的高度用height表示,那麼可以得到第一座標訊息為(x+width-1,y+height-1),第二座標訊息為(x+width,y+height),第三座標訊息為(x+width-1,y+height),第四座標訊息為(x+width,y+height-1);然後根據這四個座標訊息,可以依次確定出第一右下候選位置(即1位置)、第二右下候選位置(即2位置)、第三右下候選位置(即3位置)和第四右下候選位置(即4位置)。
進一步地,如果考慮到上述的方式所確定的四個位置距離太近,在對應的參考幀的對應位置上屬於同一個塊的可能性較大,這時候還可以設置一個偏移量,即第一預設偏移量,用offset表示。因此,在一些實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,該方法還可以包括:
利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;
將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
也就是說,上述四個位置中,1的位置仍然可以是根據第一座標訊息,即(x+width-1,y+height-1)所確定的位置;而2的位置可以是根據第一修正後的第二座標訊息,即(x+width+offset,y+height+offset)所確定的位置;3的位置可以是根據第一修正後的第三座標訊息,即(x+width-1,y+height+offset)所確定的位置;4的位置可以是根據第一修正後的第四座標訊息,即(x+width+offset,y+height-1)所確定的位置。
進一步地,由於當前幀和匯出時域運動訊息所使用的參考幀訊息之間可能存在著時間上的偏差,當前幀上的塊到匯出時域運動訊息所使用的參考幀間可能也存在一個運動,這時候還可以設置第二偏移量,用(x’,y’)表示。因此,在一些實施例中,在所述得到第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息之後,該方法還可以包括:
在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;
利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;
將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
進一步地,在一些實施例中,所述確定第二預設偏移量,可以包括:
獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,
將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
這裡,對於(x’,y’)的確定,可以是查找某一個相鄰塊到匯出時域運動訊息所使用的參考幀的運動向量作為(x’,y’),或者是查找某一個相鄰塊的運動訊息縮放到匯出時域運動訊息所使用的參考幀的運動向量作為(x’,y’),這裡不作具體限定。
也就是說,一種可能的實施方式是按照上述方式在匯出時域運動訊息所使用的參考幀訊息中找對應位置的時候,需要考慮當前幀上的塊到匯出時域運動訊息所使用的參考幀存在有運動向量。示例性地,如果考慮到第一預設偏移量,2位置是根據(x+width+offset,y+height+offset)所確定的位置,這時候再考慮到當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所使用的參考幀的運動,假定(x’,y’)仍為當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所用的參考幀的運動向量,那麼第二修正後的第二座標訊息為(x+width+offset+x’,y+height+offset +y’),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width+offset +x’,y+height+offset+y’)所確定的位置。
另一種可能的實施方式是按照上述方式在匯出時域運動訊息所使用的參考幀訊息中找對應位置的時候,不考慮到當前幀上的塊到匯出時域運動訊息所使用的參考幀存在有運動向量。示例性地,如果考慮到第一預設偏移量,2位置是根據(x+width+offset,y+height+offset)所確定的位置,這時候不再考慮當前幀上(x+width+offset,y+height+offset)的塊到匯出時域運動訊息所使用的參考幀的運動,那麼這時候的第二座標訊息為(x+width+offset,y+height+offset),即2位置可以是在匯出時域運動訊息所使用的參考幀的(x+width+offset,y+height+offset)所確定的位置。這裡,具體的實施方式可以參見解碼器側的描述。
此外,在本申請實施例中,一種可能的方式是只使用上述四個位置中的某一個位置,一種可能的方式是使用上述四個位置中的某幾個位置的組合。因此,可選地,在一些實施例中,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,可以包括:
從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置;或者,
從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
可選地,在一些實施例中,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,可以包括:
從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,
從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
也就是說,一種可能的方式是只使用上述四個位置中的某一個位置,另一種可能的方式是使用上述四個位置中的某幾個位置的組合,比如使用2、3、4的位置組合,使用3、4的位置組合等。這裡,1、2、3、4位置全用也是一種組合。換句話說,上述四個位置的任意個數(1,2,3,4)的排列組合,均可以作為確定候選位置所採用的一種選擇方式。需要注意的是,當需要使用多個位置時,一種可能的方式是設置2排列在第一個,即2位置具有最高的優先順序。
進一步地,在一些實施例中,該方法還可以包括:
從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
也就是說,仍以圖7為例,2、3、4位置都位於當前塊的外面,而且2、3、4位置有時是不可用的。如果遇到圖像邊界,某種幀間參考無法跨越的邊界等,這時候2、3、4位置可能都不可用。在遇到2、3、4位置均不可用的情況下,一種可能的方式是使用1位置代替不可用的位置。如果當前運動訊息候選清單的構建中已經使用了1位置,那麼還可以跳過不可用的位置。
這樣,在確定出當前塊的至少一個候選位置後,這裡的候選位置是為當前塊右下角的位置,可以是當前塊內部的右下位置,也可以是當前塊外部的右下位置,根據這些候選位置來確定當前塊的至少一個時域運動向量,可以使得構建運動訊息候選清單使用時域運動訊息時,能夠增加與當前塊右下角位置對應的時域運動訊息,從而提升右下角的相關性。
S1003:基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息。
需要說明的是,在得到至少一個候選位置之後,可以根據所得到的候選位置來確定時域運動訊息。具體地,在一些實施例中,對於S1003來說,所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息,可以包括:
確定所述至少一個候選位置中每一候選位置對應的參考幀訊息;
針對每一候選位置,在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息;
基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
也就是說,時域運動訊息是根據某一個參考幀訊息中對應位置所使用的運動訊息來確定的。而且針對不同的候選位置,可以得到不同的時域運動訊息。這樣,在推導出時域運動訊息之後,可以將所得到的時域運動訊息填充至運動訊息候選清單中,以得到新的運動訊息候選清單。
S1004:基於所述至少一個時域運動訊息,構建新的運動訊息候選清單。
需要說明的是,在得到至少一個時域運動訊息之後,可以將其填入到運動訊息候選清單中,以得到新的運動訊息候選清單。具體地,對於S304來說,該步驟可以包括:將至少一個時域運動訊息填入運動訊息候選清單中,得到所述新的運動訊息候選清單。
還需要說明的是,現有的運動訊息候選清單中只預留一個時域運動訊息的填充位置,為了提高右下角的相關性,還可以增加運動訊息候選清單中時域運動訊息的填充位置。具體地,在一些實施例中,該方法還可以包括:
調整時域運動訊息在所述新的運動訊息候選清單中的比例值;
根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
也就是說,可以增加時域運動訊息在運動訊息候選清單中的比例值。如果AWP預測模式下候選清單中給時域運動訊息保留了至少1個位置,那麼可以調整為AWP預測模式下候選清單中給時域運動訊息保留了至少2個(或3個)位置,使得新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
可以理解地,當預測模式參數指示使用預設的幀間預測模式(比如GPM或AWP)確定當前塊的幀間預測值時,這時候可以確定出當前塊的兩個分區。也就是說,該方法還可以包括:當預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
這裡,在GPM或AWP預測模式下,還可以根據GPM或AWP的劃分模式選擇匯出時域運動訊息所使用的候選位置,或選擇根據不同位置匯出時域運動訊息的排列組合。在一些實施例中,該方法還可以包括:
將GPM或AWP下的多種劃分模式進行分組,得到至少兩組劃分模式集合;
確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;
針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
進一步地,至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,該方法還可以包括:
若當前劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若當前劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
還需要說明的是,由於GPM或AWP預測模式下,某些劃分模式所得到的兩個分區,它們所能夠找到的緊密相關的空域位置個數是不同的,還可以根據這些個數來確定當前塊使用哪個部分的位置推導出時域運動訊息。因此,在一些實施例中,該方法還可以包括:
確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;
確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;
若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;
若所述第一數量和所述第二數量均大於預設值,則將所述當前塊的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
需要說明的是,一種可能的方式是根據GPM或AWP的劃分模式選擇匯出時域運動訊息所使用的位置,或選擇根據不同位置匯出時域運動訊息的排列組合。這裡,具體的實施方式可以參見解碼器側的描述。
這樣,在推導出時域運動訊息之後,可以構建出新的運動訊息候選清單。後續根據新的運動訊息候選清單來確定當前塊的幀間預測值。
S1005:根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
需要說明的是,當預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,這時候可以確定出當前塊的兩個分區;其中,兩個分區可以包括第一分區和第二分區。
這樣,在得到新的運動訊息候選清單後,可以確定出當前塊的第一分區對應的運動訊息和所述第二分區的運動訊息;然後根據第一分區對應的運動訊息和所述第二分區的運動訊息,能夠確定出當前塊的幀間預測值。
具體地,在一些實施例中,對於S1005來說,所述根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值,可以包括:
基於所述新的運動訊息候選清單,確定所述第一分區的運動訊息和所述第二分區的運動訊息,並將第一運動訊息索引值設置為所述第一分區的運動訊息在所述新的運動訊息候選清單中的索引序號值,將第二運動訊息索引值設置為所述第二分區的運動訊息在所述新的運動訊息候選清單中的索引序號值;
利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;
對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
進一步地,在一些實施例中,該方法還可以包括:
將所述第一運動訊息索引值和所述第二運動訊息索引值寫入位元流。
需要說明的是,GPM或AWP屬於一種幀間預測技術,在編碼器側,GPM或AWP需要在位元流中傳輸一個GPM或AWP是否使用的標誌(flag)以及兩個運動訊息索引值(比如第一運動訊息索引值和第二運動訊息索引值),這樣後續解碼器側,能夠透過解析位元流直接得到GPM或AWP是否使用的flag以及兩個運動訊息索引值。
也就是說,對於當前塊而言,可以嘗試使用GPM或AWP進行預編碼及其他可用預測模式進行預編碼,確定是否使用GPM或AWP。如果GPM或AWP的預編碼代價最小,那麼可以使用GPM或AWP。同時,在嘗試使用GPM或AWP時,還可以構建運動訊息候選清單,該構建方式和解碼器側實施例所述的構建方式相同。
這樣,在編碼器側,從運動訊息候選清單中選擇兩個單向運動訊息,然後從GPM或AWP的劃分模式中選擇一種模式進行預編碼來確定GPM或AWP的預編碼代價。一種可能的方式是對所有可能的單向運動訊息候選的組合,基於所有可能的GPM或AWP的劃分模式確定其代價,然後取代價最小的兩個單向運動訊息和GPM或AWP的劃分模式的組合作為最終所確定的兩個單向運動訊息和GPM或AWP的預測模式。
最後,在位元流中寫入GPM或AWP是否使用的訊息。如果確定使用GPM或AWP,在位元流中寫入GPM或AWP的預測模式參數和兩個單向運動訊息索引值。如此,如果當前模式是跳過模式,那麼預測塊既是編碼塊,意味著當前塊的編碼結束。如果當前模式不是跳過模式,還需要在位元流中寫入量化係數;其中,量化係數由當前塊的實際值減去幀間預測值所得到的殘差而組成的殘差塊,並對殘差塊進行變換與量化得到,這時候當前塊的編碼結束。也就是說,如果當前模式不是跳過模式,需要將當前塊與幀間預測塊相減得到殘差塊,然後將殘差塊進行變換、量化、熵編碼;後續在解碼器側,對於當前模式不是跳過模式的情況,透過熵解碼解析量化係數,然後反量化、反變換以得到殘差塊,最後將殘差塊與預測塊相加得到解碼塊,意味著當前塊的解碼結束。
本實施例提供了一種幀間預測方法,應用於編碼器。確定當前塊的預測模式參數;當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。這樣,由於當前塊的時域運動訊息是基於當前塊內部的右下位置或當前塊外部的右下位置確定的,可以在運動訊息候選清單中補充增強與右下方更有相關性的運動訊息,從而增加了運動訊息候選清單中運動訊息的多樣性;尤其是對於GPM或AWP幀間預測模式而言,透過增加右下方時域運動訊息候選位置的方式能夠提高右下方的相關性,從而能夠提升編解碼性能。
基於前述實施例相同的發明構思,參見圖11,其示出了本申請實施例提供的一種解碼器110的組成結構示意圖。如圖11所示,解碼器110可以包括:解析單元1101、第一確定單元1102、第一構建單元1103和第一預測單元1104;其中,
解析單元1101,配置為解析位元流,獲取當前塊的預測模式參數;
第一確定單元1102,配置為當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
第一確定單元1102,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
第一構建單元1103,配置為基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
第一預測單元1104,配置為根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
在一些實施例中,所述運動訊息包括運動向量訊息和參考幀訊息。
在一些實施例中,第一確定單元1102,還配置為獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合;從所述候選位置集合中,確定所述當前塊的至少一個候選位置;其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
在一些實施例中,第一確定單元1102,還配置為獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息;分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第一確定單元1102,還配置為利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第一確定單元1102,還配置為在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第一確定單元1102,還配置為獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
在一些實施例中,參見圖11,解碼器110還可以包括第一選擇單元1105,配置為在所述至少一個時域運動訊息的數量為一個的情況下,從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
在一些實施例中,第一選擇單元1105,還配置為在所述至少一個時域運動訊息的數量為多個的情況下,從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
在一些實施例中,第一選擇單元1105,還配置為從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
在一些實施例中,參見圖11,解碼器110還可以包括第一調整單元1106,配置為調整時域運動訊息在所述新的運動訊息候選清單中的比例值;根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
在一些實施例中,第一確定單元1102,還配置為確定所述至少一個候選位置中每一候選位置對應的參考幀訊息;針對每一候選位置,在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息;基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
在一些實施例中,所述預設的幀間預測模式包括:GPM或AWP;
第一確定單元1102,還配置為當所述預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
在一些實施例中,第一確定單元1102,還配置為將GPM或AWP下的多種劃分模式進行分組,得到至少兩組劃分模式集合;確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,第一確定單元1102,還配置為所述至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,若當前劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若當前劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,第一確定單元1102,還配置為確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;以及若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若所述第一數量和所述第二數量均大於預設值,則將所述當前塊的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,解析單元1101,還配置為解析位元流,確定所述第一分區對應的第一運動訊息索引值和所述第二分區對應的第二運動訊息索引值;
第一確定單元1102,還配置為基於所述新的運動訊息候選清單,將所述第一運動訊息索引值指示的所述新的運動訊息候選清單中的運動訊息確定為所述第一分區的運動訊息,將所述第二運動訊息索引值指示的所述新的運動訊息候選清單中的運動訊息確定為所述第二分區的運動訊息;
第一預測單元1104,還配置為利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;以及對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
可以理解地,在本申請實施例中,“單元”可以是部分電路、部分處理器、部分程式或軟體等等,當然也可以是模組,還可以是非模組化的。而且在本實施例中的各組成部分可以集成在一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
所述集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒介中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或processor(處理器)執行本實施例所述方法的全部或部分步驟。而前述的儲存媒介包括:隨身碟、行動硬碟、唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒介。
因此,本申請實施例提供了一種電腦儲存媒介,應用於解碼器110,該電腦儲存媒介儲存有幀間預測程式,所述幀間預測程式被第一處理器執行時實現前述實施例中解碼器側所述的方法。
基於上述解碼器110的組成以及電腦儲存媒介,參見圖12,其示出了本申請實施例提供的解碼器110的具體硬體結構示例,可以包括:第一通訊介面1201、第一記憶體1202和第一處理器1203;各個元件透過第一匯流排系統1204耦合在一起。可理解,第一匯流排系統1204用於實現這些元件之間的連接通訊。第一匯流排系統1204除包括資料匯流排之外,還包括電源匯流排、控制匯流排和狀態信號匯流排。但是為了清楚說明起見,在圖12中將各種匯流排都標為第一匯流排系統1204。其中,
第一通訊介面1201,用於在與其他外部網路元件之間進行收發訊息過程中,信號的接收和發送;
第一記憶體1202,用於儲存能夠在第一處理器1203上運行的電腦程式;
第一處理器1203,用於在運行所述電腦程式時,執行:
解析位元流,獲取當前塊的預測模式參數;
當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
可以理解,本申請實施例中的第一記憶體1202可以是揮發性記憶體或非揮發性記憶體,或可包括揮發性和非揮發性記憶體兩者。其中,非揮發性記憶體可以是唯讀記憶體(Read-Only Memory,ROM)、可程式唯讀記憶體(Programmable ROM,PROM)、可擦除可程式唯讀記憶體(Erasable PROM,EPROM)、電可擦除可程式唯讀記憶體(Electrically EPROM,EEPROM)或快閃記憶體。揮發性記憶體可以是隨機存取記憶體(Random Access Memory,RAM),其用作外部快取記憶體。透過示例性但不是限制性說明,許多形式的RAM可用,例如靜態隨機存取記憶體(Static RAM,SRAM)、動態隨機存取記憶體(Dynamic RAM,DRAM)、同步動態隨機存取記憶體(Synchronous DRAM,SDRAM)、雙倍數據速率同步動態隨機存取記憶體(Double Data Rate SDRAM,DDRSDRAM)、增強型同步動態隨機存取記憶體(Enhanced SDRAM,ESDRAM)、同步連接動態隨機存取記憶體(Synclink DRAM,SLDRAM)和直接記憶體匯流排隨機存取記憶體(Direct Rambus RAM,DRRAM)。本申請描述的系統和方法的第一記憶體1202旨在包括但不限於這些和任意其它適合類型的記憶體。
而第一處理器1203可能是一種積體電路晶片,具有信號的處理能力。在實現過程中,上述方法的各步驟可以透過第一處理器1203中的硬體的集成邏輯電路或者軟體形式的指令完成。上述的第一處理器1203可以是通用處理器、數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、場域可程式閘陣列(Field Programmable Gate Array,FPGA)或者其他可程式邏輯器件、離散閘或者電晶體邏輯器件、離散硬體元件。可以實現或者執行本申請實施例中的公開的各方法、步驟及邏輯方塊圖。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。結合本申請實施例所公開的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體,快閃記憶體、唯讀記憶體,可程式唯讀記憶體或者電可讀寫可程式記憶體、暫存器等本領域成熟的儲存媒介中。該儲存媒介位於第一記憶體1202,第一處理器1203讀取第一記憶體1202中的訊息,結合其硬體完成上述方法的步驟。
可以理解的是,本申請描述的這些實施例可以用硬體、軟體、韌體、中介軟體、微碼或其組合來實現。對於硬體實現,處理單元可以實現在一個或多個專用積體電路(Application Specific Integrated Circuits,ASIC)、數位訊號處理器(Digital Signal Processing,DSP)、數位信號處理設備(DSP Device,DSPD)、可程式邏輯裝置(Programmable Logic Device,PLD)、場域可程式閘陣列(Field-Programmable Gate Array,FPGA)、通用處理器、控制器、微控制器、微處理器、用於執行本申請所述功能的其它電子單元或其組合中。對於軟體實現,可透過執行本申請所述功能的模組(例如過程、函數等)來實現本申請所述的技術。軟體代碼可儲存在記憶體中並透過處理器執行。記憶體可以在處理器中或在處理器外部實現。
可選地,作為另一個實施例,第一處理器1203還配置為在運行所述電腦程式時,執行前述實施例中任一項所述的方法。
本實施例提供了一種解碼器,該解碼器可以包括解析單元、第一確定單元、第一構建單元和第一預測單元。在該解碼器中,可以在運動訊息候選清單中補充增強與右下方更有相關性的運動訊息,從而增加了運動訊息候選清單中運動訊息的多樣性;尤其是對於GPM或AWP幀間預測模式而言,透過增加右下方時域運動訊息候選位置的方式能夠提高右下方的相關性,從而能夠提升編解碼性能。
基於前述實施例相同的發明構思,參見圖13,其示出了本申請實施例提供的一種編碼器130的組成結構示意圖。如圖13所示,該編碼器130可以包括:第二確定單元1301、第二構建單元1302和第二預測單元1303;其中,
第二確定單元1301,配置為確定當前塊的預測模式參數;及當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
第二確定單元1301,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
第二構建單元1302,配置為基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
第二預測單元1303,配置為根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
在一些實施例中,所述運動訊息包括運動向量訊息和參考幀訊息。
在一些實施例中,參見圖13,編碼器130還可以包括預編碼單元1304和第二選擇單元1305;其中,
預編碼單元1304,配置為利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值;
第二選擇單元1305,配置為從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
在一些實施例中,第二確定單元1301,還配置為獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合;從所述候選位置集合中,確定所述當前塊的至少一個候選位置;其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
在一些實施例中,第二確定單元1301,還配置為獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息;分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第二確定單元1301,還配置為利用第一預設偏移量對所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第一修正後的第二座標訊息、第一修正後的第三座標訊息和第一修正後的第四座標訊息;將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第一修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第一修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第一修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第二確定單元1301,還配置為在當前幀上的圖像塊到候選參考幀存在有運動向量時,確定第二預設偏移量;其中,所述候選參考幀為確定時域運動訊息所參考運動訊息的參考幀,所述圖像塊至少包括相鄰塊,所述相鄰塊與所述當前塊在所述當前幀內空間相鄰;利用第二預設偏移量對所述第一座標訊息、所述第二座標訊息、所述第三座標訊息和所述第四座標訊息進行修正,得到第二修正後的第一座標訊息、第二修正後的第二座標訊息、第二修正後的第三座標訊息和第二修正後的第四座標訊息;將所述第二修正後的第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二修正後的第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第二修正後的第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第二修正後的第四座標訊息對應的位置確定為所述第四右下候選位置。
在一些實施例中,第二確定單元1301,還配置為獲取所述當前幀上的預設相鄰塊到所述候選參考幀的運動向量,將所獲取的運動向量確定為所述第二預設偏移量;或者,將所述當前幀上的預設相鄰塊的運動訊息縮放到所述候選參考幀,獲得縮放後的運動向量,將所述縮放後的運動向量確定為所述第二預設偏移量。
在一些實施例中,第二選擇單元1305,還配置為在所述至少一個時域運動訊息的數量為一個的情況下,從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
在一些實施例中,第二選擇單元1305,還配置為從所述候選位置集合中按照預設組合方式選取多個候選位置,將所選取的多個候選位置確定為所述當前塊的多個候選位置;或者,從所述候選位置集合中,按照預設優先順序選取多個候選位置且被選取的候選位置可用,將所選取的多個候選位置確定為所述當前塊的多個候選位置。
在一些實施例中,第二選擇單元1305,還配置為從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
在一些實施例中,參見圖13,編碼器130還可以包括第二調整單元1306,配置為調整時域運動訊息在所述新的運動訊息候選清單中的比例值;根據所調整的比例值,控制所述新的運動訊息候選清單中預留至少兩個時域運動訊息的填充位置。
在一些實施例中,第二確定單元1301,還配置為確定所述至少一個候選位置中每一候選位置對應的參考幀訊息;針對每一候選位置,在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息;基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
在一些實施例中,所述預設的幀間預測模式包括:GPM或AWP;
第二確定單元1301,還配置為當所述預測模式參數指示使用GPM或AWP確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
在一些實施例中,第二確定單元1301,還配置為將GPM或AWP下的多種劃分模式進行分組,得到至少兩組劃分模式集合;確定所述至少兩組劃分模式集合中每一組劃分模式集合各自對應的至少一個候選位置;其中,不同組的劃分模式集合對應不同的至少一個候選位置;針對每一組劃分模式集合內的劃分模式,根據對應確定的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,第二確定單元1301,還配置為所述至少兩組劃分模式集合包括第一組劃分模式集合和第二組劃分模式集合,若待使用的劃分模式屬於所述第一組劃分模式集合,則將所述當前塊內部的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若待使用的劃分模式屬於所述第二組劃分模式集合,則將所述當前塊外部的右下像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,第二確定單元1301,還配置為確定第一空域像素位置對應的第一數量;其中,所述第一空域像素位置與所述第一分區的至少一個邊界空間相鄰;確定第二空域像素位置對應的第二數量;其中,所述第二空域像素位置與所述第二分區的至少一個邊界空間相鄰;以及若所述第一數量或所述第二數量小於預設值,則將所述當前塊外部的右下像素位置確定所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟;若所述第一數量和所述第二數量均大於預設值,則將所述當前塊的左上像素位置確定為所述當前塊的至少一個候選位置,執行所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息的步驟。
在一些實施例中,第二確定單元1301,還配置為基於所述新的運動訊息候選清單,確定所述第一分區的運動訊息和所述第二分區的運動訊息,並將第一運動訊息索引值設置為所述第一分區的運動訊息在所述新的運動訊息候選清單中的索引序號值,將第二運動訊息索引值設置為所述第二分區的運動訊息在所述新的運動訊息候選清單中的索引序號值;
第二預測單元1303,還配置為利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;以及對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
在一些實施例中,參見圖13,編碼器130還可以包括寫入單元1307,配置為將所述第一運動訊息索引值和所述第二運動訊息索引值寫入位元流。
可以理解地,在本實施例中,“單元”可以是部分電路、部分處理器、部分程式或軟體等等,當然也可以是模組,還可以是非模組化的。而且在本實施例中的各組成部分可以集成在一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
所述集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例提供了一種電腦儲存媒介,應用於編碼器130,該電腦儲存媒介儲存有幀間預測程式,所述幀間預測程式被第二處理器執行時實現前述實施例中編碼器側所述的方法。
基於上述編碼器130的組成以及電腦儲存媒介,參見圖14,其示出了本申請實施例提供的編碼器130的具體硬體結構示例,可以包括:第二通訊介面1401、第二記憶體1402和第二處理器1403;各個元件透過第二匯流排系統1404耦合在一起。可理解,第二匯流排系統1404用於實現這些元件之間的連接通訊。第二匯流排系統1404除包括資料匯流排之外,還包括電源匯流排、控制匯流排和狀態信號匯流排。但是為了清楚說明起見,在圖14中將各種匯流排都標為第二匯流排系統1404。其中,
第二通訊介面1401,用於在與其他外部網路元件之間進行收發訊息過程中,信號的接收和發送;
第二記憶體1402,用於儲存能夠在第二處理器1403上運行的電腦程式;
第二處理器1403,用於在運行所述電腦程式時,執行:
確定當前塊的預測模式參數;
當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置;
基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息;
基於所述至少一個時域運動訊息,構建新的運動訊息候選清單;
根據所述新的運動訊息候選清單,確定所述當前塊的幀間預測值。
可選地,作為另一個實施例,第二處理器1403還配置為在運行所述電腦程式時,執行前述實施例中任一項所述的方法。
可以理解,第二記憶體1402與第一記憶體1202的硬體功能類似,第二處理器1403與第一處理器1203的硬體功能類似;這裡不再詳述。
本實施例提供了一種編碼器,該編碼器可以包括第二確定單元、第二構建單元和第二預測單元。在該編碼器中,可以在運動訊息候選清單中補充增強與右下方更有相關性的運動訊息,從而增加了運動訊息候選清單中運動訊息的多樣性;尤其是對於GPM或AWP幀間預測模式而言,透過增加右下方時域運動訊息候選位置的方式能夠提高右下方的相關性,從而能夠提升編解碼性能。
需要說明的是,在本申請中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本申請實施例序號僅僅為了描述,不代表實施例的優劣。
本申請所提供的幾個方法實施例中所揭露的方法,在不衝突的情況下可以任意組合,得到新的方法實施例。
本申請所提供的幾個產品實施例中所揭露的特徵,在不衝突的情況下可以任意組合,得到新的產品實施例。
本申請所提供的幾個方法或設備實施例中所揭露的特徵,在不衝突的情況下可以任意組合,得到新的方法實施例或設備實施例。
以上所述,僅為本申請的具體實施方式,但本申請的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以所述請求項的保護範圍為準。
11:影像編碼系統 110:解碼圖像暫存單元 111:變換單元 112:量化單元 113:模式選擇和編碼控制邏輯單元 114:幀內預測單元 115:幀間預測單元 116:反量化單元 117:反變換單元 118:迴路濾波單元 119:編碼單元 12:影像解碼系統 121:解碼單元 122:反量化單元 123:幀內預測單元 124:運動補償單元 125:迴路濾波單元 126:解碼圖像暫存單元 127:反變換單元 110:解碼器 1101:解析單元 1102:第一確定單元 1103:第一構建單元 1104:第一預測單元 1105:第一選擇單元 1106:第一調整單元 1201:第一通訊介面 1202:第一記憶體 1203:第一處理器 1204:第一匯流排系統 130:編碼器 1301:第二確定單元 1302:第二構建單元 1303:第二預測單元 1304:預編碼單元 1305:第二選擇單元 1306:第二調整單元 1307:寫入單元 1401:第二通訊介面 1402:第二記憶體 1403:第二處理器 1404:第二匯流排系統 A~H:塊 S301~S305:步驟 S801~S804:步驟 S1001~S1005:步驟
圖1為本申請實施例提供的一種影像編碼系統的組成方塊圖示意圖;
圖2為本申請實施例提供的一種影像解碼系統的組成方塊圖示意圖;
圖3為本申請實施例提供的一種幀間預測方法的流程示意圖;
圖4為本申請實施例提供的一種典型圖像組的結構示意圖;
圖5為本申請實施例提供的一種當前塊與相鄰塊的空間位置關係示意圖;
圖6為本申請實施例提供的另一種當前塊與相鄰塊的空間位置關係示意圖;
圖7為本申請實施例提供的又一種當前塊與相鄰塊的空間位置關係示意圖;
圖8為本申請實施例提供的另一種幀間預測方法的流程示意圖;
圖9A為本申請實施例提供的一種GPM在64×64的當前塊上多種劃分模式的權重分配示意圖;
圖9B為本申請實施例提供的一種AWP在64×64的當前塊上多種劃分模式的權重分配示意圖;
圖10為本申請實施例提供的又一種幀間預測方法的流程示意圖;
圖11為本申請實施例提供的一種解碼器的組成結構示意圖;
圖12為本申請實施例提供的一種解碼器的硬體結構示意圖;
圖13為本申請實施例提供的一種編碼器的組成結構示意圖;
圖14為本申請實施例提供的一種編碼器的硬體結構示意圖。
S301~S305:步驟

Claims (27)

  1. 一種幀間預測方法,應用於解碼器,所述方法包括: 解析位元流,獲取當前塊的預測模式參數; 當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置; 基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息; 基於所述至少一個時域運動訊息,構建運動訊息候選清單; 根據所述運動訊息候選清單,確定所述當前塊的幀間預測值。
  2. 根據請求項1所述的方法,其中,所述運動訊息包括運動向量訊息和參考幀訊息。
  3. 根據請求項1所述的方法,其中,所述確定所述當前塊的至少一個候選位置,包括: 獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合; 從所述候選位置集合中,確定所述當前塊的至少一個候選位置; 其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
  4. 根據請求項3所述的方法,其中,所述獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,包括: 獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息; 分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息; 將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
  5. 根據請求項3所述的方法,其中,在所述至少一個時域運動訊息的數量為一個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括: 從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置。
  6. 根據請求項3所述的方法,其中,在所述至少一個時域運動訊息的數量為一個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括: 從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
  7. 根據請求項3所述的方法,所述方法還包括: 從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
  8. 根據請求項1所述的方法,其中,所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息,包括: 確定所述至少一個候選位置對應的參考幀訊息; 在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息; 基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
  9. 根據請求項1所述的方法,其中,所述預設的幀間預測模式包括:幾何劃分預測模式或角度加權預測模式; 相應地,所述方法還包括: 當所述預測模式參數指示使用所述預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
  10. 根據請求項9所述的方法,其中,所述根據所述運動訊息候選清單,確定所述當前塊的幀間預測值,包括: 解碼位元流,確定所述第一分區對應的第一運動訊息索引值和所述第二分區對應的第二運動訊息索引值; 基於所述運動訊息候選清單,根據所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定所述第一分區的運動訊息,根據所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定所述第二分區的運動訊息; 利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值; 對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
  11. 一種幀間預測方法,應用於編碼器,所述方法包括: 確定當前塊的預測模式參數; 當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置; 基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息; 基於所述至少一個時域運動訊息,構建運動訊息候選清單; 根據所述運動訊息候選清單,確定所述當前塊的幀間預測值。
  12. 根據請求項11所述的方法,其中,所述運動訊息包括運動向量訊息和參考幀訊息。
  13. 根據請求項11所述的方法,其中,所述確定當前塊的預測模式參數,包括: 利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值; 從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
  14. 根據請求項11所述的方法,其中,所述確定所述當前塊的至少一個候選位置,包括: 獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,組成候選位置集合; 從所述候選位置集合中,確定所述當前塊的至少一個候選位置; 其中,所述第一右下候選位置表徵所述當前塊內部的右下位置,所述第二右下候選位置、第三右下候選位置和第四右下候選位置表徵所述當前塊外部的右下位置。
  15. 根據請求項14所述的方法,其中,所述獲取第一右下候選位置、第二右下候選位置、第三右下候選位置和第四右下候選位置,包括: 獲取所述當前塊的左上像素位置對應的座標訊息、所述當前塊的寬度訊息和所述當前塊的高度訊息; 分別利用所述左上像素位置對應的座標訊息、所述寬度訊息和所述高度訊息進行座標計算,獲得第一座標訊息、第二座標訊息、第三座標訊息和第四座標訊息; 將所述第一座標訊息對應的位置確定為所述第一右下候選位置,將所述第二座標訊息對應的位置確定為所述第二右下候選位置,將所述第三座標訊息對應的位置確定為所述第三右下候選位置,將所述第四座標訊息對應的位置確定為所述第四右下候選位置。
  16. 根據請求項14所述的方法,其中,在所述至少一個時域運動訊息的數量為一個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括: 從所述候選位置集合中按照預設方式選取一個候選位置,將所選取的候選位置確定為所述當前塊的一個候選位置。
  17. 根據請求項14所述的方法,其中,在所述至少一個時域運動訊息的數量為一個的情況下,所述從所述候選位置集合中,確定所述當前塊的至少一個候選位置,包括: 從所述候選位置集合中,按照預設優先順序選取高優先順序對應的候選位置且被選取的候選位置可用,將所選取的候選位置確定為所述當前塊的一個候選位置。
  18. 根據請求項14所述的方法,所述方法還包括: 從所述候選位置集合中選取候選位置時,若待選取的候選位置屬於所述當前塊外部的右下位置且所述當前塊外部的右下位置均不可用,則將所述第一右下候選位置確定為所述待選取的候選位置。
  19. 根據請求項11所述的方法,其中,所述基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息,包括: 確定所述至少一個候選位置對應的參考幀訊息; 在對應的參考幀訊息中確定與所述候選位置關聯的時域位置,並將所述時域位置使用的運動訊息確定為所述候選位置對應的時域運動訊息; 基於所述至少一個候選位置,對應得到至少一個時域運動訊息。
  20. 根據請求項11所述的方法,其中,所述預設的幀間預測模式包括:幾何劃分預測模式或角度加權預測模式; 相應地,所述方法還包括: 當所述預測模式參數指示使用所述預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的兩個分區;其中,所述兩個分區包括第一分區和第二分區。
  21. 根據請求項20所述的方法,其中,所述根據所述運動訊息候選清單,確定所述當前塊的幀間預測值,包括: 基於所述運動訊息候選清單,確定所述第一分區的運動訊息和所述第二分區的運動訊息,並將第一運動訊息索引值設置為所述第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,將第二運動訊息索引值設置為所述第二分區的運動訊息在所述運動訊息候選清單中的索引序號值; 利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值; 對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
  22. 根據請求項21所述的方法,所述方法還包括: 將所述第一運動訊息索引值和所述第二運動訊息索引值寫入位元流。
  23. 一種解碼器,所述解碼器包括解析單元、第一確定單元、第一構建單元和第一預測單元;其中, 所述解析單元,配置為解析位元流,獲取當前塊的預測模式參數; 所述第一確定單元,配置為當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置; 所述第一確定單元,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息; 所述第一構建單元,配置為基於所述至少一個時域運動訊息,構建運動訊息候選清單; 所述第一預測單元,配置為根據所述運動訊息候選清單,確定所述當前塊的幀間預測值。
  24. 一種解碼器,所述解碼器包括第一記憶體和第一處理器;其中, 所述第一記憶體,用於儲存能夠在所述第一處理器上運行的電腦程式; 所述第一處理器,用於在運行所述電腦程式時,執行如請求項1至10任一項所述的方法。
  25. 一種編碼器,所述編碼器包括第二確定單元、第二構建單元和第二預測單元;其中, 所述第二確定單元,配置為確定當前塊的預測模式參數;及當所述預測模式參數指示使用預設的幀間預測模式確定當前塊的幀間預測值時,確定所述當前塊的至少一個候選位置;其中,所述候選位置至少包括所述當前塊內部的右下位置和所述當前塊外部的右下位置; 所述第二確定單元,還配置為基於所述至少一個候選位置,確定所述當前塊的至少一個時域運動訊息; 所述第二構建單元,配置為基於所述至少一個時域運動訊息,構建運動訊息候選清單; 所述第二預測單元,配置為根據所述運動訊息候選清單,確定所述當前塊的幀間預測值。
  26. 一種編碼器,所述編碼器包括第二記憶體和第二處理器;其中, 所述第二記憶體,用於儲存能夠在所述第二處理器上運行的電腦程式; 所述第二處理器,用於在運行所述電腦程式時,執行如請求項11至22任一項所述的方法。
  27. 一種電腦儲存媒介,所述電腦儲存媒介儲存有電腦程式,所述電腦程式被第一處理器執行時實現如請求項1至10任一項所述的方法、或者被第二處理器執行時實現如請求項11至22任一項所述的方法。
TW110118917A 2020-05-29 2021-05-25 幀間預測方法、編碼器、解碼器以及電腦儲存媒介 TW202145794A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010479444.3A CN113747172A (zh) 2020-05-29 2020-05-29 帧间预测方法、编码器、解码器以及计算机存储介质
CN202010479444.3 2020-05-29

Publications (1)

Publication Number Publication Date
TW202145794A true TW202145794A (zh) 2021-12-01

Family

ID=78725117

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110118917A TW202145794A (zh) 2020-05-29 2021-05-25 幀間預測方法、編碼器、解碼器以及電腦儲存媒介

Country Status (4)

Country Link
CN (3) CN113747172A (zh)
MX (1) MX2022015006A (zh)
TW (1) TW202145794A (zh)
WO (1) WO2021238396A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023123478A1 (zh) * 2021-12-31 2023-07-06 Oppo广东移动通信有限公司 预测方法、装置、设备、系统、及存储介质
WO2023130233A1 (zh) * 2022-01-04 2023-07-13 Oppo广东移动通信有限公司 时域运动信息预测和构建候选列表的方法、装置和系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10187655B2 (en) * 2015-09-30 2019-01-22 Apple Inc. Memory-to-memory low resolution motion estimation systems and methods
US10715812B2 (en) * 2018-07-13 2020-07-14 Tencent America LLC Method and apparatus for video coding
CN110868602B (zh) * 2018-08-27 2024-04-12 华为技术有限公司 视频编码器、视频解码器及相应方法
WO2020084554A1 (en) * 2018-10-24 2020-04-30 Beijing Bytedance Network Technology Co., Ltd. Searching based motion candidate derivation for sub-block motion vector prediction
CN110213590B (zh) * 2019-06-25 2022-07-12 浙江大华技术股份有限公司 时域运动矢量获取、帧间预测、视频编码的方法及设备

Also Published As

Publication number Publication date
WO2021238396A1 (zh) 2021-12-02
CN114651443A (zh) 2022-06-21
CN113747172A (zh) 2021-12-03
MX2022015006A (es) 2023-01-04
CN115052161A (zh) 2022-09-13

Similar Documents

Publication Publication Date Title
US11190795B2 (en) Method and an apparatus for processing a video signal
US11190799B2 (en) Intra-prediction mode-based image processing method and apparatus therefor
US11265540B2 (en) Apparatus and method for applying artificial neural network to image encoding or decoding
CN113748676B (zh) 帧内编解码模式下的矩阵推导
JP7463460B2 (ja) ビデオ復号方法およびビデオデコーダ
JP2015516758A (ja) 時間的予測のための時間的動きベクトル予測(mvp)フラグのシグナリング
CN113853791B (zh) 数字视频中的变换旁路编解码残差块
KR20210058856A (ko) 저장된 파라미터들을 사용하는 비디오 인코딩 및 디코딩을 위한 로컬 조명 보상
CN115176468A (zh) 跨分量自适应环路滤波器
TW202145794A (zh) 幀間預測方法、編碼器、解碼器以及電腦儲存媒介
TW202201958A (zh) 幀間預測方法、編碼器、解碼器以及電腦儲存媒介
TW202145784A (zh) 幀間預測方法、編碼器、解碼器以及電腦儲存媒介
WO2021244125A1 (zh) 帧间预测方法、解码器、编码器及计算机存储介质
JPWO2020211807A5 (zh)
TW202147851A (zh) 幀間預測方法、編碼器、解碼器以及電腦儲存媒介
TWI749297B (zh) 合成式預測及限制性合併技術
TW202123698A (zh) 具有幀內預測模式映射之視訊資料的編碼或解碼方法和裝置
CN115280778A (zh) 帧间预测方法、编码器、解码器以及存储介质
TW202145783A (zh) 幀間預測方法、編碼器、解碼器以及電腦儲存媒介
WO2022140905A1 (zh) 预测方法、编码器、解码器以及存储介质
WO2024077562A1 (zh) 编解码方法及装置、编解码器、码流、存储介质
TW202209884A (zh) 幀間預測方法、編碼器、解碼器及電腦可讀儲存媒介
TW202209883A (zh) 幀間預測方法、編碼器、解碼器及儲存媒介
US20220141477A1 (en) Image processing apparatus and image processing method
KR20230140450A (ko) 디코딩 프로세스의 에너지 소비를 나타내는 정보를 시그널링하기 위한 메타데이터