TW202139706A - 編碼方法、解碼方法、編碼器、解碼器以及儲存媒介 - Google Patents

編碼方法、解碼方法、編碼器、解碼器以及儲存媒介 Download PDF

Info

Publication number
TW202139706A
TW202139706A TW110109404A TW110109404A TW202139706A TW 202139706 A TW202139706 A TW 202139706A TW 110109404 A TW110109404 A TW 110109404A TW 110109404 A TW110109404 A TW 110109404A TW 202139706 A TW202139706 A TW 202139706A
Authority
TW
Taiwan
Prior art keywords
symbol string
symbol
motion information
binary
merge
Prior art date
Application number
TW110109404A
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 TW202139706A publication Critical patent/TW202139706A/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/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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/186Methods 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 a colour or a chrominance component
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一種編碼方法、解碼方法、編碼器、解碼器以及儲存媒介,當預測模式參數指示採用GPM確定當前塊的幀間預測值時,確定當前塊的兩個分區;從運動訊息候選清單中,確定兩個分區的運動訊息,將第一和第二運動訊息索引值分別設置為第一和第二分區的運動訊息在運動訊息候選清單中的索引序號值;分別對第一和第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;使用不同的上下文概率模型分別對第一符號串和第二符號串的第一個二元符號熵編碼;使用預設模型分別對第一符號串和第二符號串內除第一個二元符號之外的二元符號熵編碼。

Description

編碼方法、解碼方法、編碼器、解碼器以及儲存媒介
本申請涉及編解碼技術領域,尤其涉及一種編碼方法、解碼方法、編碼器、解碼器以及儲存媒介。
在影像編解碼領域,針對當前塊進行編解碼的過程,除了採用幀內預測方式之外,還可以採用幀間預測方式。其中,幀間預測具體可以採用幀間幾何劃分預測模式(Geometrical partitioning for inter blocks,GEO),或稱之為GPM預測模式,將當前塊劃分為兩個非矩形的分區後分別進行預測再加權融合,從而得到當前塊的幀間預測值。
然而,針對這兩個分區,在語法元素描述中,第一分區的運動訊息索引值(用merge_gpm_idx0[xCb][yCb]表示)和第二分區的運動訊息索引值(用merge_ gpm_idx1[xCb][yCb]表示)二值化(Binarization)後的第一個位元使用相同的上下文(Context)概率模型編碼,但是這些語法元素值並不具有相同的概率分佈,將會使得編碼位元數增加;另外,二值化後的第二個位元使用等概模型編碼,由於並沒有充分考慮概率分佈,仍會使得編碼位元數增加。
本申請實施例提出一種編碼方法、解碼方法、編碼器、解碼器以及儲存媒介,充分利用第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,從而能夠減小編碼所需的位元數,提升編解碼性能。
本申請實施例的技術方案是這樣實現的:
第一方面,本申請實施例提供了一種編碼方法,應用於編碼器,該方法包括:
確定當前塊的預測模式參數;
當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;
分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;
使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;
使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;
將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
在一實施例中,所述確定當前塊的預測模式參數,包括:利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值;從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
第二方面,本申請實施例提供了一種解碼方法,應用於解碼器,該方法包括:
當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;
根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;
基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;
根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
第三方面,本申請實施例提供了一種編碼器,該編碼器包括第一確定單元、設置單元、處理單元和編碼單元;其中,
所述第一確定單元,配置為確定當前塊的預測模式參數;
所述第一確定單元,還配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定待編碼圖像中當前塊的兩個分區;
所述設置單元,配置為從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;
所述處理單元,配置為分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;
所述編碼單元,配置為使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;並將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
第四方面,本申請實施例提供了一種編碼器,該編碼器包括第一記憶體和第一處理器;其中,
所述第一記憶體,用於儲存能夠在所述第一處理器上運行的電腦程式;
所述第一處理器,用於在運行所述電腦程式時,執行如第一方面所述的方法。
第五方面,本申請實施例提供了一種解碼器,該解碼器包括解析單元、第二確定單元、逆處理單元和預測單元;其中,
所述解析單元,配置為解析位元流,獲得當前塊的預測模式參數;
所述第二確定單元,配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
所述解析單元,還配置為解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;
所述逆處理單元,配置為根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;
所述第二確定單元,還配置為基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;
所述預測單元,配置為根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
第六方面,本申請實施例提供了一種解碼器,該解碼器包括第二記憶體和第二處理器;其中,
所述第二記憶體,用於儲存能夠在所述第二處理器上運行的電腦程式;
所述第二處理器,用於在運行所述電腦程式時,執行如第二方面所述的方法。
第七方面,本申請實施例提供了一種電腦儲存媒介,該電腦儲存媒介儲存有電腦程式,所述電腦程式被第一處理器執行時實現如第一方面所述的方法、或者被第二處理器執行時實現如第二方面所述的方法。
本申請實施例所提供的一種編碼方法、解碼方法、編碼器、解碼器以及儲存媒介,應用於編碼器,確定當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。此外,本申請實施例提供了一種解碼方法,應用於解碼器,透過解析位元流,獲得當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。這樣,無論是編碼器還是解碼器,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了編解碼性能,以達到提升編解碼效率的目的。
下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述。可以理解的是,此處所描述的具體實施例僅僅用於解釋相關申請,而非對該申請的限定。另外還需要說明的是,為了便於描述,附圖中僅示出了與有關申請相關的部分。
在影像圖像中,一般採用第一圖像分量、第二圖像分量和第三圖像分量來表徵當前塊(Coding Block,CB);其中,這三個圖像分量分別為一個亮度分量、一個藍色色度分量和一個紅色色度分量,具體地,亮度分量通常使用符號Y表示,藍色色度分量通常使用符號Cb或者U表示,紅色色度分量通常使用符號Cr或者V表示;這樣,影像圖像可以用YCbCr格式表示,也可以用YUV格式表示。
在本申請實施例中,第一圖像分量可以為亮度分量,第二圖像分量可以為藍色色度分量,第三圖像分量可以為紅色色度分量,但是本申請實施例不作具體限定。
下面將針對幾何劃分預測模式(Geometrical Partition Mode,GPM)進行相關技術方案的描述。
在影像編碼的混合框架中,通常只以正方形和矩形的塊為單位實施預測、變換和量化等編碼技術。然而實際應用中,運動物體的邊緣並不一定都是水平或者垂直方向;即使是,也不一定剛好處於可以劃分的塊邊緣上,由於運動邊緣兩側的運動向量往往不同,這樣在編碼過程中以一個整塊進行運動預測和補償,容易產生較大的預測誤差,從而導致編碼效率受限。
在新一代影像編碼標準H.266/多功能影像編碼(Versatile Video Coding,VVC)的制定過程中,引入了正方形和矩形之外的其他形狀劃分。首先是三角劃分預測模式(Triangular partition Mode,TPM)的引入,如圖1A所示;在圖1A中,以一個正方形或矩形的對角線、或反對角線作為分割線,用以得到三角形的預測單元,從而能夠更靈活的表示幀間預測資料,降低了預測誤差,進而提高了編碼效率。
在聯合影像專家小組(Joint Video Experts Team,JVET)的第某次會議中,提出了一種比TPM更為靈活的幀間幾何劃分幀間預測模式(Geometrical partitioning for inter blocks,GEO),之後JVET還正式將GEO預測模式採納到VVC中,並且更名為GPM。具體地,該GPM預測技術針對圖像中運動物體的邊緣部分,採用更為靈活的表示方法,將幀間塊劃分為兩個非矩形的分區,如圖1B所示;針對劃分後的兩個分區分別進行預測後再加權融合,以得到當前塊的幀間預測值。
還需要說明的是,在目前VVC中,GPM預測技術總共可以有64種劃分模式,而每一種劃分模式對應一種角度(用α表示)和一種步長(用ρ表示),也即總共可以有20種角度、4種步長。如圖2所示,水平方向向右旋轉到分割線法線位置的角度即為α,分割線的法線距離即為ρ;這裡,每一種角度和步長的組合可以構成一種劃分模式。在GPM預測模式下,根據一種劃分模式可以將當前塊劃分為兩個非矩形的分區,每個分區單獨進行單向的運動補償以得到單向預測值,最後利用權重矩陣對兩個分區的單向預測值進行加權融合,可以得到最終的GPM預測值。
然而,針對每一個當前塊的兩個分區,在語法元素描述中,第一分區的運動訊息索引值(用merge_gpm_idx0[xCb][yCb]表示)和第二分區的運動訊息索引值(用merge_gpm_idx1[xCb][yCb]表示)均需要二值化處理。在目前的方案中,merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]二值化處理後的第一個位元採用同一個上下文概率模型,且與普通幀間預測模式的運動訊息索引值(用merge_idx表示)共用同一個上下文概率模型,但是這些語法元素值不具有相同的概率分佈,這就會導致在編碼過程中上下文概率模型較慢趨於穩定,使得編碼位元數增加;另外,針對二值化處理後的第二個位元,由於第二個位元為0的概率遠小於第二個位元為1的概率,但是目前的方案使用等概率模型並沒有充分考慮概率分佈,從而仍會使得編碼位元數增加,降低了編解碼效率。
本申請實施例提供了一種編碼方法,應用於編碼器,確定當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。此外,本申請實施例提供了一種解碼方法,應用於解碼器,透過解析位元流,獲得當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。這樣,無論是編碼器還是解碼器,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了編解碼性能,以達到提升編解碼效率的目的。
下面將結合附圖對本申請各實施例進行詳細說明。
參見圖3A,其示出了本申請實施例提供的一種影像編碼系統的組成方塊圖示例;如圖3A所示,該影像編碼系統10包括變換與量化單元101、幀內估計單元102、幀內預測單元103、運動補償單元104、運動估計單元105、反變換與反量化單元106、濾波器控制分析單元107、濾波單元108、熵編碼單元109和解碼圖像暫存單元110等,其中,濾波單元108可以實現去方塊濾波及取樣自適應偏移(Sample Adaptive Offset,SAO)濾波,熵編碼單元109可以實現標頭資訊編碼及前文參考之適應性二元算術編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC)。針對輸入的原始視訊訊號,透過編碼樹單元(Coding Tree Unit,CTU)的劃分可以得到一個影像編碼塊,然後對經過幀內或幀間預測後得到的殘差像素訊息透過變換與量化單元101對該影像編碼塊進行變換,包括將殘差訊息從像素域變換到變換域,並對所得的變換係數進行量化,用以進一步減少位元速率;幀內估計單元102和幀內預測單元103是用於對該影像編碼塊進行幀內預測;明確地說,幀內估計單元102和幀內預測單元103用於確定待用以編碼該影像編碼塊的幀內預測模式;運動補償單元104和運動估計單元105用於執行所接收的影像編碼塊相對於一或多個參考幀中的一或多個塊的幀間預測編碼以提供時間預測訊息;由運動估計單元105執行的運動估計為產生運動向量的過程,所述運動向量可以估計該影像編碼塊的運動,然後由運動補償單元104基於由運動估計單元105所確定的運動向量執行運動補償;在確定幀內預測模式之後,幀內預測單元103還用於將所選擇的幀內預測資料提供到熵編碼單元109,而且運動估計單元105將所計算確定的運動向量資料也發送到熵編碼單元109;此外,反變換與反量化單元106是用於該影像編碼塊的重構建,在像素域中重構建殘差塊,該重構建殘差塊透過濾波器控制分析單元107和濾波單元108去除方塊效應假影,然後將該重構殘差塊添加到解碼圖像暫存單元110的幀中的一個預測性塊,用以產生經重構建的影像編碼塊;熵編碼單元109是用於編碼各種編碼參數及量化後的變換係數,在基於CABAC的編碼演算法中,上下文內容可基於相鄰編碼塊,可用於編碼指示所確定的幀內預測模式的訊息,輸出該視訊訊號的位元流;而解碼圖像暫存單元110是用於存放重構建的影像編碼塊,用於預測參考。隨著影像圖像編碼的進行,會不斷生成新的重構建的影像編碼塊,這些重構建的影像編碼塊都會被存放在解碼圖像暫存單元110中。
參見圖3B,其示出了本申請實施例提供的一種影像解碼系統的組成方塊圖示例;如圖3B所示,該影像解碼系統20包括熵解碼單元201、反變換與反量化單元202、幀內預測單元203、運動補償單元204、濾波單元205和解碼圖像暫存單元206等,其中,熵解碼單元201可以實現標頭資訊解碼以及CABAC解碼,濾波單元205可以實現去方塊濾波以及SAO濾波。輸入的視訊訊號經過圖3A的編碼處理之後,輸出該視訊訊號的位元流;該位元流輸入影像解碼系統20中,首先經過熵解碼單元201,用於得到解碼後的變換係數;針對該變換係數透過反變換與反量化單元202進行處理,以便在像素域中產生殘差塊;幀內預測單元203可用於基於所確定的幀內預測模式和來自當前幀或圖片的先前經解碼塊的資料而產生當前影像解碼塊的預測資料;運動補償單元204是透過剖析運動向量和其他關聯語法元素來確定用於影像解碼塊的預測訊息,並使用該預測訊息以產生正被解碼的影像解碼塊的預測性塊;透過對來自反變換與反量化單元202的殘差塊與由幀內預測單元203或運動補償單元204產生的對應預測性塊進行求和,而形成解碼的影像塊;該解碼的視訊訊號透過濾波單元205以便去除方塊效應假影,可以改善影像品質;然後將經解碼的影像塊儲存於解碼圖像暫存單元206中,解碼圖像暫存單元206儲存用於後續幀內預測或運動補償的參考圖像,同時也用於視訊訊號的輸出,即得到了所恢復的原始視訊訊號。
本申請實施例主要應用在熵編碼部分(即如圖3A所示的熵編碼單元109中)和熵解碼部分(即如圖3B所示的熵解碼單元201中);對應地,在熵編碼部分中,還會影響到圖3A中的幀間預測部分,即圖3A所示的運動補償單元104和運動估計單元105;在熵解碼部分中,還會影響到圖3B中的幀間預測部分,即圖3B所示的運動補償單元204。也就是說,本申請實施例既可以應用於影像編碼系統,也可以應用於影像解碼系統,還可以同時應用於影像編碼系統和影像解碼系統,本申請實施例不作任何限定。
基於上述圖3A的應用場景示例,參見圖4,其示出了本申請實施例提供的一種編碼方法的流程示意圖。如圖4所示,該方法可以包括:
S401:確定當前塊的預測模式參數;
需要說明的是,待編碼圖像可以劃分為多個圖像塊,當前待編碼的圖像塊可以稱為編碼塊(Coding Block,CB)。這裡,每個編碼塊可以包括第一圖像分量、第二圖像分量和第三圖像分量;而當前塊為待編碼圖像中當前待進行第一圖像分量、第二圖像分量或者第三圖像分量預測的編碼塊。
其中,假定當前塊進行第一圖像分量預測,而且第一圖像分量為亮度分量,即待預測圖像分量為亮度分量,那麼當前塊也可以稱為亮度塊;或者,假定當前塊進行第二圖像分量預測,而且第二圖像分量為色度分量,即待預測圖像分量為色度分量,那麼當前塊也可以稱為色度塊。
還需要說明的是,預測模式參數指示了當前塊採用的預測模式以及與該預測模式相關的參數。這裡,針對預測模式參數的確定,可以採用簡單的決策策略,比如根據失真值的大小進行確定;也可以採用複雜的決策策略,比如根據位元率失真最佳化(Rate Distortion Optimization,RDO)的結果進行確定,本申請實施例不作任何限定。通常而言,可以採用RDO方式來確定當前塊的預測模式參數。
具體地,在一些實施例中,對於S401來說,所述確定當前塊的預測模式參數,可以包括:
利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值;
從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
也就是說,在編碼器側,針對當前塊可以採用多種預測模式分別對當前塊進行預編碼處理。這裡,多種預測模式通常包括有幀間預測模式、傳統幀內預測模式和非傳統幀內預測模式;其中,傳統幀內預測模式可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非傳統幀內預測模式可以包括有基於矩陣的幀內預測(Matrix-based Intra Prediction,MIP)模式、跨分量線性模型預測(Cross-component Linear Model Prediction,CCLM)模式、幀內塊複製(Intra Block Copy,IBC)模式和PLT(Palette)模式等,而幀間預測模式可以包括有傳統幀間預測模式和GPM預測模式等。
這樣,在利用多種預測模式分別對當前塊進行預編碼之後,可以得到每一種預測模式對應的位元率失真代價值;然後從所得到的多個位元率失真代價值中選取最小位元率失真代價值,並將該最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。除此之外,還可以在利用多種預測模式分別對當前塊進行預編碼之後,得到每一種預測模式對應的失真值;然後從所得到的多個失真值中選取最小失真值,並將該最小失真值對應的預測模式確定為當前塊的預測模式參數。如此,最終使用所確定的預測模式參數對當前塊進行編碼,而且在這種預測模式下,可以使得預測殘差較小,能夠提高編碼效率。
S402:當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
需要說明的是,對於當前塊而言,如果當前塊能夠使用GPM預測模式,那麼當前塊還需要滿足一些限制條件。示例性地,這些限制條件可以包括:
(a)序列層參數集(Sequence Parameter Set,SPS)允許採用GPM預測模式;
(b)當前塊的編碼圖像區域屬於雙向預測片(B slice);
(c)當前塊的尺寸限制,寬度和高度必須都大於或等於8,且小於或等於64,並且當前塊的寬高比和高寬比都小於8;
(d)當前塊為非普通融合(general merge)預測,非融合子塊(merge_ subblock)預測,非仿射預測,也非聯合幀內幀間預測(Composed Intra Inter Prediction,CIIP);
(e)對4:0:0格式的色度分量禁用GPM預測模式。
還需要說明的是,如果當前塊滿足上述限制條件,且預測模式參數指示當前塊採用幀間預測下的GPM預測模式時,這時候就可以確定出當前塊內分割線對應的角度和步長,進而確定出當前塊所劃分的兩個分區,比如第一分區和第二分區,可以用A分區和B分區表示。
進一步地,角度索引值和步長索引值分別設置為當前塊內分割線對應的角度和步長在預設映射表中對應的索引序號。在一些實施例中,當所述預測模式參數指示採用GPM確定所述當前塊的幀間預測值時,該方法還可以包括:
確定所述當前塊的劃分模式;
將劃分模式索引值確定為所述劃分模式在預設映射表中對應的索引序號並寫入位元流;其中,所述預設映射表用於指示劃分模式索引值、角度索引值和步長索引之間的對應關係。
也就是說,在確定出預測模式參數指示使用GPM預測模式來確定當前塊的幀間預測值時,這時候還可以確定當前塊的劃分模式;其中,每一種劃分模式對應有一種角度和一種步長。通常而言,GPM預測模式總共有64種劃分模式,針對這麼多的劃分模式,仍然可以採用RDO方式來確定當前塊的劃分模式,同時將劃分模式索引值確定為該劃分模式在預設映射表中對應的索引序號並寫入位元流,以便後續在解碼器側可以透過解析位元流以獲取到劃分模式索引值,進而透過查找預設映射表來確定當前塊的角度索引值和步長索引值。
其中,用於反映劃分模式索引值、角度索引值和步長索引的預設映射表如表1所示;在表1中,總共提供了64種劃分模式,以及每一種劃分模式對應的角度索引值和步長索引值;這裡,merge_gpm_partition_idx為劃分模式索引值,angleIdx為角度索引值,distanceIdx為步長索引值。
表1
merge_gpm_partition _idx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
angleIdx 0 0 2 2 2 2 3 3 3 3 4 4 4 4 5 5
distanceIdx 1 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1
merge_gpm_partition _idx 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
angleIdx 5 5 8 8 11 11 11 11 12 12 12 12 13 13 13 13
distanceIdx 2 3 1 3 0 1 2 3 0 1 2 3 0 1 2 3
merge_gpm_partition _idx 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
angleIdx 14 14 14 14 16 16 18 18 18 19 19 19 20 20 20 21
distanceIdx 0 1 2 3 1 3 1 2 3 1 2 3 1 2 3 1
merge_gpm_partition _idx 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
angleIdx 21 21 24 24 27 27 27 28 28 28 29 29 29 30 30 30
distanceIdx 2 3 1 3 1 2 3 1 2 3 1 2 3 1 2 3
如此,當前塊採用GPM預測模式時,編碼器側可以根據表1所示的預設映射表來確定寫入位元流中的劃分模式索引值;而解碼器側可以透過解析位元流獲得當前塊所選擇的劃分模式索引值,透過查表得到對應的角度索引值和步長索引值,進而確定出當前塊所劃分的第一分區和第二分區。
S403:從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;
需要說明的是,運動訊息至少可以包括運動向量和參考圖像索引。由於相鄰塊的運動訊息是可以獲取到的,這樣可以根據相鄰塊的運動訊息對當前塊的至少兩個分區進行運動訊息候選清單的構建,從而能夠得到運動訊息候選清單。具體地,在一些實施例中,在S402之前,該方法還可以包括:
利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
可以理解,編碼器側,GPM預測模式與其他幀間預測模式可以看作相互競爭的模式,如果當前塊選擇使用GPM預測模式,在其內部也有針對各個參數的選擇過程。另外,還需要說明的是,與當前塊相鄰的圖像塊稱之為相鄰塊;即在待編碼圖像中,當前塊與相鄰塊之間具有相鄰關係。這裡所述的相鄰塊包括所述當前塊的空間相鄰塊和時域相鄰塊。其中,空間相鄰塊指的是與所述當前塊位於同一個圖像中的、已編碼(或已解碼)的塊;時域相鄰塊指的是位於所述當前塊的幀間預測參考圖像中的已編碼(或已解碼)的塊。
這裡,GPM預測模式可以重用已有的常規merge清單,按照同位方式建構屬於GPM的單向merge清單,使得使用GPM劃分後的兩個分區各自的候選運動向量(motion vector,mv)訊息都是從該單向merge清單中選出的。
具體來講,第一步,建構merge候選清單,與普通merge模式下建構清單的過程一致。其建構順序為:上側相鄰塊(用B1表示),左側相鄰塊(用A1表示),右上側相鄰塊(用B0表示),左下側相鄰塊(用A0表示),左上側相鄰塊(用B2表示),參考幀對應位置塊(用col表示),歷史參考塊(用his表示),第一、第二候選mv的平均運動向量(用mv avg表示),以及零運動向量(用0表示)。如圖5所示,其給出了當前塊建構merge候選清單的相鄰塊分佈示意圖;按照該建構順序,能夠得到當前塊的merge候選清單,即運動訊息候選清單。
第二步,依照RDO或其他策略方式在不同的預測模式參數之間,包括不同的分割線對應的角度與步長,以及對兩個分區的mv在上述merge候選清單內mv選項之間進行選擇,將選擇的結果(劃分模式對應的角度、偏移訊息,以及A、B分區各自在merge候選清單中所選擇的參考選項位置訊息,分別用m和n表示)以位元流中語法元素的形式傳送給解碼器側。
這裡,主要說明第一運動訊息索引值(用merge_gpm_idx0[xCb][yCb]表示)和第二運動訊息索引值(用merge_gpm_idx1[xCb][yCb]表示)的位元流寫入過程。在得到m和n這兩個A、B分區各自在merge候選清單中所選擇的參考選項位置訊息之後,編碼器側可以按照下式對語法元素進行賦值:
merge_gpm_idx0[xCb][yCb]=m                                   (1)
merge_gpm_idx1[xCb][yCb]=n-(merge_gpm_idx1[xCb][yCb]>=m)?1:0   (2)
然後對其進行二值化、熵編碼等處理,並將其寫入位元流傳輸。也就是說,在編碼器側,當前塊對應的編碼單元(coding unit,CU)層語法元素描述如下表2所示。
表2
merge_data(x0, y0, cbWidth, cbHeight, cbType) { Descriptor
……  
merge_gpm_partition_idx[x0][y0] ae(v)
merge_gpm_idx0[x0][y0] ae(v)
if( MaxNumGpmMergeCand > 2 )  
merge_gpm_idx1[x0][y0] ae(v)
……}  
這裡,ae(v)表示context-adaptive arithmetic entropy-coded syntax element,即前文適應性算術熵編碼語法元素,merge_gpm_partition_idx[x0][y0]表示GPM預測模式下的劃分模式索引值,用以結合表1查表得到當前塊內分割線對應的角度和步長。
這樣,在得到運動訊息候選清單之後,從該運動訊息候選清單中還可以確定出每個分區的運動訊息,並將每個分區的運動訊息索引值設置為所對應確定的運動訊息在該運動訊息候選清單中的索引序號值,以便後續對運動訊息索引值進行二值化和二進位編碼處理。
S404:分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;
需要說明的是,在獲得第一運動訊息索引值和所述第二運動訊息索引值之後,首先需要對這兩個運動訊息索引值分別進行二值化處理,能夠得到兩組符號串(即第一符號串和第二符號串),而每一組符號串內可以包含有一個或多個二元符號;這裡,二元符號的取值可以為0或1。
還需要說明的是,m、n代表A、B兩個分區各自在merge候選清單中選擇的參考選項位置訊息,當前m、n的取值範圍都是0~ MaxNumGpmMergeCand-1;其中,MaxNumGpmMergeCand 表示為GPM merge候選清單的長度,其取值可以為2~6,具體由SPS層相關語法元素設定。在二值化處理之前,首先需要進行式(1)和式(2)的映射操作,使得merge_gpm_idx0[xCb][yCb]的取值範圍仍為0~MaxNumGpmMergeCand-1,而merge_gpm_idx1[xCb][yCb]的取值範圍縮小為0~ MaxNumGpmMergeCand-2;這裡,merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]代表了當前塊內被分割線劃分的兩個分區各自選取的mv訊息在merge候選清單中的位置訊息。對merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]而言,兩者可以使用截斷一元碼進行二值化處理。
以MaxNumGpmMergeCand=5為例,merge_gpm_idx0[xCb][yCb]的二值化結果如表3所示,merge_gpm_idx1[xCb][yCb]的二值化結果如表4所示。
表3
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 10
2 110
3 1110
4 1111
表4
merge_gpm_idx1[xCb][yCb] bit string
0 0
1 10
2 110
3 111
進一步地,由於merge候選清單的設計使得可能性較大的候選位置訊息放在候選清單的靠前位置,便於為這些候選的運動訊息分配較小的索引值;所以merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]=0的可能性較大,後續熵編碼時也可以為概率較大的位置訊息索引配置較少的位元。
S405:使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;
S406:使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;
S407:將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
需要說明的是,H.266/VVC的熵編碼模式通常有兩種,分別是基於上下文概率模型的二進位編碼模式和基於等概率模型的二進位編碼模式。其中,上下文概率模型(Context Model)可以簡稱為上下文模型,用於表示二元符號“0”或“1”出現的概率,而且在二元算術編碼過程中還需要根據二元符號編碼後的值更新上下文概率模型;等概率模型,則可以稱為旁路模型(Bypass Model),在二元算術編碼過程中對二元符號“0”或“1”採用相同的概率,而且在二元符號編碼後也不需要更新等概率模型。
也就是說,在獲得二進位化後的位元之後,通常採用基於上下文概率模型的二元算術熵編碼(CABAC)。這裡,CABAC為每個位元選取一個概率模型,利用此概率模型進行算術編碼。目前的VVC中,對於merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]二進位化處理之後的第一個位元與普通merge模式(非GPM預測模式)的第一個位元使用同一個上下文概率模型進行熵編碼,其餘的位元使用等概率模型進行熵編碼;但是目前並沒有充分考慮第一個位元、第二個位元甚至每一個位元的概率分佈特性,比如,針對第一個位元而言,merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]的第一個位元使用同一個上下文概率模型,且與merge_idx共用上下文概率模型,但是這些語法元素值不具有相同的概率分佈,這就會導致編碼位元數增加;針對第二個位元而言,以表3為例,merge_gpm_idx0[xCb][yCb]使用截斷一元碼進行二值化處理,此時merge_gpm_idx0[xCb][yCb]=1二值化後的結果為10,其第二個位元是0,merge_gpm_idx0[xCb][yCb]=2、3、4二值化的第二個位元都是1;根據統計概率分析發現,merge_gpm_idx0[xCb][yCb]=1的概率基本都遠小於merge_gpm_ idx0[xCb][yCb]=2、3、4的概率之和,由於目前的VVC對第二個位元仍然使用等概率模型進行熵編碼,從而仍會使得編碼位元數增加。
在本申請實施例中,編碼器針對GPM預測模式的相關語法merge_gpm_idx0[x0][y0]和merge_gpm_idx1[x0][y0]的編碼過程進行優化;具體如下,
一是針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb]二值化後的第一個位元(bit)單獨設計上下文概率模型,如此可以有效地學習該位元的概率,提升該位元的編碼性能;
二是針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb]二值化後的第二個位元(如果存在第二個位元的話)單獨設計一個上下文概率模型進行熵編碼,以此替代目前VVC中的等概率模型熵編碼。這裡,由於統計了merge_gpm_idx0[xCb][yCb]的概率分佈特性之後發現,p(1)<(p(2)+p(3)+p(4));其中,p(i)表示merge_gpm_idx0[xCb][yCb]=i的概率,i=1,2,3,4;所以第二個位元為0的概率遠小於第二個位元為1的概率,也即第二個位元並不適合使用等概率模型。
具體地,在一些實施例中,對於S405來說,所述使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼,可以包括:
利用第一上下文概率模型對所述第一符號串的第一個二元符號進行熵編碼,利用第二上下文概率模型對所述第二符號串的第一個二元符號進行熵編碼;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
也就是說,針對第一個二元符號(即第一個位元),可以為第一運動訊息索引值(merge_gpm_idx0[xCb][yCb])單獨設計一個上下文概率模型,從原來共用的上下文概率模型中分離出來;或者,也可以為第二運動訊息索引值(merge_gpm_idx1[xCb][yCb])單獨設計一個上下文概率模型,從原來共用的上下文概率模型中分離出來;或者,還可以為第一運動訊息索引值(merge_gpm_idx0[xCb][yCb])和第二運動訊息索引值(merge_gpm_ idx1[xCb][yCb])分別單獨設計一個上下文概率模型,將兩者都從原來共用的上下文概率模型中分離出來;本申請實施例不作具體限定。
以修改merge_gpm_idx0[xCb][yCb]為例,將其從原來共用的上下文概率模型中分離出來而單獨設計一個上下文概率模型;具體的文本修改如下,表5示出了目前VVC中merge_idx[ ][ ]、merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]三者共用同一個上下文概率模型的示例,表6示出了本申請實施例提供的merge_gpm_idx0[ ][ ]從三者共用同一個上下文概率模型中分離出來的示例,表7示出了目前VVC中merge_gpm_idx0[ ][ ]的除第一個位元外剩餘位元使用等概率模型的示例,其中“bypass”表示旁路模型,即等概率模型;表8示出了本申請實施例提供的merge_gpm_idx0[ ][ ]的第二個位元使用上下文概率模型的示例,表9示出了目前VVC中三者共用同一個上下文概率模型的參數規格設計示例,表10示出了本申請實施例提供的merge_idx[ ][ ]和merge_gpm_idx1[ ][ ]共用上下文概率模型的參數規格設計示例,表11示出了本申請實施例提供的merge_gpm_idx0[ ][ ]所單獨設計的上下文概率模型的參數規格設計示例。
表5
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx0[ ][ ] merge_gpm_idx1[ ][ ] 表9 0 1 2
表6
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx1[ ][ ] 表10 0 1 2
merge_gpm_idx0[ ][ ] 表11 0 1 2
表7
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 bypass bypass bypass na na
表8
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 1 bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 bypass bypass bypass na na
表8.1
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 1 bypass bypass na na
表8.2
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 1 bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 1 bypass bypass na na
表9
Initialization variable ctxIdx of merge_idx, merge_gpm_idx0, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表10
Initialization variable ctxIdx of merge_idx, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表11
Initialization variable ctxIdx of merge_gpm_idx0
0 1 2 3 4 5
initValue EP EP EP EP EP EP
shiftIdx 0 0 0 0 0 0
這裡,本申請實施例中的EP表示為equal probability。除了可以修改merge_gpm_idx0[xCb][yCb]之外,還可以修改merge_gpm_idx1[xCb][yCb],其上下文概率模型選擇的文本修改與merge_gpm_idx0[xCb][yCb]相同。具體來說,對於表8來說,其示出了本申請實施例提供的merge_gpm_idx0[ ][ ]二值化後的第二個位元使用上下文概率模型的示例;如果修改merge_gpm_ idx1[xCb][yCb]以使得merge_gpm_idx1[xCb][yCb]二值化後的第二個位元使用上下文概率模型,那麼其示例如表8.1所示;如果同時修改merge_gpm_ idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]以使得merge_gpm_idx0[xCb][yCb]和merge_gpm_ idx1[xCb][yCb]二值化後的第二個位元均使用上下文概率模型,那麼其示例如表8.2所示。
進一步地,本申請實施例還可以修正merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb]二值化後的每一個位元,單獨設計符合該位元概率分佈的上下文概率模型,下面將針對這些情況分別進行描述。
可選地,在一些實施例中,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],只針對二值化後的第一個位元設計不同的上下文概率模型,但是二值化後除第一個位元之外的剩餘位元仍然採用等概率模型。具體地,對於S406來說,所述使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼,包括:
利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
也就是說,將merge_gpm_idx0[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,單獨為merge_gpm_idx0[xCb][yCb]的第一個位元設計一個上下文概率模型,該上下文概率模型參數初始化後0是大概率符號,對應於merge_gpm_idx0[xCb][yCb]二進位化後第一個位元的概率分佈。此外,還將merge_gpm_idx1[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,單獨為merge_gpm_idx1[xCb][yCb]的第一個位元設計一個上下文概率模型,該上下文概率模型參數初始化後0是大概率符號,對應於merge_gpm_idx1[xCb][yCb]二進位化後第一個位元的概率分佈。
示例性地,具體的文本修改如下,表12示出了目前VVC中merge_idx[ ][ ]、 merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]三者共用同一個上下文概率模型的示例,表13示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_ idx1[ ][ ]均從共用同一個上下文概率模型中分離出來的示例,表14示出了目前VVC中三者共用同一個上下文概率模型的參數規格設計示例,表15示出了本申請實施例提供的merge_idx[ ][ ]使用上下文概率模型的參數規格設計示例,表16示出了本申請實施例提供的merge_gpm_idx0[ ][ ]所使用上下文概率模型的參數規格設計示例,表17示出了本申請實施例提供的merge_gpm_idx1[ ][ ]所使用上下文概率模型的參數規格設計示例。
表12
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx0[ ][ ] merge_gpm_idx1[ ][ ] 表14 0 1 2
表13
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] 表15 0 1 2
merge_gpm_idx0[ ][ ] 表16 0 1 2
merge_gpm_idx1[ ][ ] 表17 0 1 2
表14
Initialization variable ctxIdx of merge_idx, merge_gpm_idx0, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表15
Initialization variable ctxIdx of merge_idx
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表16
Initialization variable ctxIdx of merge_gpm_idx0
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表17
Initialization variable ctxIdx of merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
可選地,在一些實施例中,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],不僅針對二值化後的第一個位元設計不同的上下文概率模型,而且針對二值化後的第二個位元也設計不同的上下文概率模型,但是二值化後除第一個位元和第二個位元之外的剩餘位元仍然採用等概率模型。具體地,對於S406來說,所述使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼,包括:
利用不同的上下文概率模型對所述第一符號串和所述第二符號串的第二個二元符號進行熵編碼;
利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
進一步地,所述利用不同的上下文概率模型對所述第一符號串和所述第二符號串的第二個二元符號進行熵編碼,可以包括:
利用第三上下文概率模型對第一符號串的第二個二元符號進行熵編碼,利用第四上下文概率模型對第二符號串的第二個二元符號進行熵編碼;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
也就是說,將merge_gpm_idx0[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,單獨為merge_gpm_idx0[xCb][yCb]的第一個位元設計一個上下文概率模型;同時,為merge_gpm_idx0[xCb][yCb]的第二個位元也單獨設計一個上下文模型。此外,還將merge_gpm_idx1[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_ idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,單獨為merge_gpm_idx1[xCb][yCb]的第一個位元設計一個上下文模型;同時,為merge_gpm_idx1[xCb][yCb]的第二個位元也單獨設計一個上下文模型。
示例性地,具體的文本修改如下,表18示出了目前VVC中merge_idx[ ][ ]、 merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]三者共用同一個上下文概率模型的示例,表19示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_ idx1[ ][ ]均從共用同一個上下文概率模型中分離出來的示例,表20示出了目前VVC中merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]的除第一個位元外剩餘位元均使用等概率模型的示例,表21、表21.1和表21.2示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和/或merge_gpm_idx1[ ][ ]的第二個位元使用上下文概率模型的示例,表22示出了目前VVC中三者共用同一個上下文概率模型的參數規格設計示例,表23示出了本申請實施例提供的merge_idx[ ][ ]使用上下文概率模型的參數規格設計示例,表24示出了本申請實施例提供的merge_gpm_idx0[ ][ ]所使用上下文概率模型的參數規格設計示例,表25示出了本申請實施例提供的merge_gpm_idx1[ ][ ]所使用上下文概率模型的參數規格設計示例。
表18
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx0[ ][ ] merge_gpm_idx1[ ][ ] 表22 0 1 2
表19
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] 表23 0 1 2
merge_gpm_idx0[ ][ ] 表24 0 1 2
merge_gpm_idx1[ ][ ] 表25 0 1 2
表20
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 bypass bypass bypass na na
表21
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 0 bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 1 bypass bypass na na
表21.1
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 1 bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 0 bypass bypass na na
表21.2
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 1 bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 1 bypass bypass na na
表22
Initialization variable ctxIdx of merge_idx, merge_gpm_idx0, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表23
Initialization variable ctxIdx of merge_idx
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表24
Initialization variable ctxIdx of merge_gpm_idx0
0 1 2 3 4 5
initValue EP EP EP EP EP EP
shiftIdx 0 0 0 0 0 0
表25
Initialization variable ctxIdx of merge_gpm_idx1
0 1 2 3 4 5
initValue EP EP EP EP EP EP
shiftIdx 0 0 0 0 0 0
可選地,在一些實施例中,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],可以針對二值化後的每一個位元分別設計不同的上下文概率模型。具體地,該方法還可以包括:
利用不同的上下文概率模型對所述第一符號串和所述第二符號串內每一個二元符號依次熵編碼。
也就是說,將merge_gpm_idx0[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,為merge_gpm_idx0[xCb][yCb]二值化後的每一個位元分別設計上下文概率模型。此外,還將merge_gpm_idx1[xCb][yCb]從merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型中分離出來,為merge_gpm_idx1[xCb][yCb]二值化後的每一個位元分別設計上下文概率模型。
示例性地,具體的文本修改如下,表26示出了目前VVC中merge_idx[ ][ ]、 merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]三者共用同一個上下文概率模型的示例,表27示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_ idx1[ ][ ]均從共用同一個上下文概率模型中分離出來的示例,表28示出了目前VVC中merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]的除第一個位元外剩餘位元均使用等概率模型的示例,表29示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]的每一個位元均使用上下文概率模型的示例,表30示出了目前VVC中三者共用同一個上下文概率模型的參數規格設計示例,表31示出了本申請實施例提供的merge_idx[ ][ ]使用上下文概率模型的參數規格設計示例,表32示出了本申請實施例提供的merge_gpm_idx0[ ][ ]所使用上下文概率模型的參數規格設計示例,表33示出了本申請實施例提供的merge_gpm_idx1[ ][ ]所使用上下文概率模型的參數規格設計示例。
表26
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx0[ ][ ] merge_gpm_idx1[ ][ ] 表30 0 1 2
表27
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] 表31 0 1 2
merge_gpm_idx0[ ][ ] 表32 0 1 2
merge_gpm_idx1[ ][ ] 表33 0 1 2
表28
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 bypass bypass bypass na na
表29
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 1 2 3 4 na
merge_gpm_idx1[ ][ ] 0 1 2 3 na na
表30
Initialization variable ctxIdx of merge_idx, merge_gpm_idx0, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表31
Initialization variable ctxIdx of merge_idx
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表32
Initialization variable ctxIdx of merge_gpm_idx0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
initValue EP EP EP EP EP EP EP EP EP EP EP EP EP EP EP
shiftIdx 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
表33
Initialization variable ctxIdx of merge_gpm_idx1
0 1 2 3 4 5 6 7 8 9 10 11
initValue EP EP EP EP EP EP EP EP EP EP EP EP
shiftIdx 0 0 0 0 0 0 0 0 0 0 0 0
可選地,在一些實施例中,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],可以針對二值化後的每一個位元均使用旁路模型。具體地,該方法還可以包括:
利用旁路模型對所述第一符號串和所述第二符號串內每一個二元符號依次熵編碼。
也就是說,merge_gpm_idx0[ xCb ][ yCb ]二值化後的所有位元都使用旁路編碼模式,merge_gpm_idx1[ xCb ][ yCb ]二值化後的所有位元都使用旁路編碼模式。
示例性地,具體的文本修改如下,表34示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_ idx1[ ][ ]均從共用同一個上下文概率模型中分離出來的示例,只有merge_idx[ ][ ]使用上下文概率模型;表35示出了目前VVC中merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]的除第一個位元外剩餘位元均使用等概率模型的示例,表36示出了本申請實施例提供的merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]的每一個位元均使用旁路模型的示例,表37示出了本申請實施例提供的merge_idx[ ][ ]使用上下文概率模型的參數規格設計示例。
表34
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] 表37 0 1 2
表35
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] 0 bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] 0 bypass bypass bypass na na
表36
Syntax element binIdx
0 1 2 3 4 >= 5
merge_gpm_idx0[ ][ ] bypass bypass bypass bypass bypass na
merge_gpm_idx1[ ][ ] bypass bypass bypass bypass na na
表37
Initialization variable ctxIdx of merge_idx
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
可選地,在一些實施例中,除了在修改二值化後位元編碼時的上下文概率模型之外,還可以針對二值化的處理方式進行優化。
具體地,本申請實施例還提出了修改GPM預測模式下相關語法元素merge_gpm_idx0[xCb][yCb]的二進位化方式,即替代上述的表3。針對每一個位元的概率模型,可以使用與目前VVC相同的上下文模型(即第一個位元可以選擇merge_gpm_idx0[xCb][yCb]、merge_gpm_idx1[xCb][yCb]和merge_idx共用的上下文概率模型,其他位元選擇等概率模型)進行熵編碼。
以MaxNumGpmMergeCand=5為例,透過修改merge_gpm_idx0[xCb][yCb]的二進位化方式,所得到的二值化結果如下表38所示;這裡,加粗數字表示該位元使用上下文概率模型進行熵編碼,加底線數位表示該位元使用等概率模型進行熵編碼。
表38
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 1 00
2 1 01
3 1 10
4 1 11
針對MaxNumGpmMergeCand=2、3、4、6,其熵編碼方式與MaxNumGpmMergeCand=5相同,不作變動。如下所示,表39給出了本申請實施例提供的一種MaxNumGpmMergeCand=2的二值化結果,表40給出了本申請實施例提供的一種MaxNumGpmMergeCand=3的二值化結果,表41給出了本申請實施例提供的一種MaxNumGpmMergeCand=4的二值化結果,表42給出了本申請實施例提供的一種MaxNumGpmMergeCand=6的二值化結果。
表39
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 1
表40
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 1 0
2 1 1
表41
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 1 0
2 1 10
3 1 11
表42
merge_gpm_idx0[xCb][yCb] bit string
0 0
1 1 00
2 1 01
3 1 100
4 1 101
5 1 110
示例性地,具體的文本修改如下,表43示出了目前VVC中merge_gpm_idx0[ ][ ]二值化(Binarization)處理方式的示例,表44示出了本申請實施例提供的merge_gpm_idx0[ ][ ]二值化處理方式的示例,其中,TR表示Truncated Rice,是一種二值化處理方法。
表43
Syntax structure Syntax element Binarization
Process Input parameters
merge_data( ) merge_gpm_idx0[ ][ ] TR cMax = MaxNumGpmMergeCand−1, cRiceParam = 0
表44
Syntax structure Syntax element Binarization
Process Input parameters
merge_data( ) merge_gpm_idx0[ ][ ] 表45  
進一步地,針對merge_gpm_idx0[ ][ ]的二值化處理,該處理過程的輸入為語法元素merge_gpm_idx0[ ][ ]和cMax的二值化請求;該處理過程的輸出為語法元素的二值化結果,而merge_gpm_idx0[ ][ ]的二值化處理方式如表45所示。
表45
Merge_gpm_idx0 cMax Binary process
  1 TR
2 TR
3 TR
4 TB
5 TR
進一步地,在一些實施例中,在上述實施例提供的修改GPM相關語法元素merge_gpm_idx0[xCb][yCb]的二值化處理方式的基礎上,針對每一個位元的概率模型,可以使用本申請實施例中提出的上下文模型(修改第一位元、第二位元或者每一個位元的上下文概率模型)。
具體地,二值化處理的方式可以採用上述的表43、表44和表45,而概率模型選擇的文本修改如下,表46示出了目前VVC中merge_idx[ ][ ]、 merge_gpm_idx0[ ][ ]和merge_gpm_idx1[ ][ ]三者共用同一個上下文概率模型的示例,表47示出了本申請實施例提供的merge_gpm_idx0[ ][ ]從三者共用同一個上下文概率模型中分離出來的示例,表48示出了目前VVC中三者共用同一個上下文概率模型的參數規格設計示例,表49示出了本申請實施例提供的merge_idx[ ][ ]和merge_gpm_idx1[ ][ ]共用上下文概率模型的參數規格設計示例,表50示出了本申請實施例提供的merge_gpm_idx0[ ][ ]所單獨設計的上下文概率模型的參數規格設計示例。
表46
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx0[ ][ ] merge_gpm_idx1[ ][ ] 表48 0 1 2
表47
Syntax structure Syntax element ctxTable initType
0 1 2
merge_data( ) merge_idx[ ][ ] merge_gpm_idx1[ ][ ] 表49 0 1 2
merge_gpm_idx0[ ][ ] 表50 0 1 2
表48
Initialization variable ctxIdx of merge_idx, merge_gpm_idx0, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表49
Initialization variable ctxIdx of merge_idx, merge_gpm_idx1
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
表50
Initialization variable ctxIdx of merge_gpm_idx0
0 1 2
initValue EP EP EP
shiftIdx 0 0 0
可以理解地,本申請實施例在於充分利用資料的概率分佈特性,為merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb]二值化後第一個位元、第二個位元或者每一個位元分別設計一個上下文概率模型,使得實際編碼中用到的碼字小於1位元,能夠減少編碼所需的位元數,從而提升編碼性能。
本實施例提供了一種編碼方法,應用於編碼器。透過確定當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。這樣,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了編碼性能,以達到提升編碼效率的目的。
基於上述圖3B的應用場景示例,參見圖6,其示出了本申請實施例提供的一種解碼方法的流程示意圖。如圖6所示,該方法可以包括:
S601:解析位元流,獲得當前塊的預測模式參數;
需要說明的是,待解碼圖像可以劃分為多個圖像塊,當前待解碼的圖像塊可以稱為解碼塊。這裡,每個解碼塊可以包括第一圖像分量、第二圖像分量和第三圖像分量;而當前塊為待解碼圖像中當前待進行第一圖像分量、第二圖像分量或者第三圖像分量預測的解碼塊。
還需要說明的是,預測模式參數指示了當前塊採用的預測模式以及與該預測模式相關的參數。其中,預測模式通常包括有幀間預測模式、傳統幀內預測模式和非傳統幀內預測模式等,而幀間預測模式又包括有傳統幀間預測模式和GPM預測模式等。也就是說,編碼器會選取最優的預測模式對當前塊進行預編碼,在這過程中就可以確定出當前塊的預測模式,從而將相應的預測模式參數寫入位元流,由編碼器傳輸到解碼器。
這樣,在解碼器側,透過解析位元流可以獲取到當前塊的預測模式參數,根據所獲取的預測模式參數用以確定當前塊是否使用GPM預測模式。
S602:當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
S603:解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;
其中,第一符號串和第二符號串分別表示當前塊的兩個分區的運動訊息索引值各自相關的一個或多個二元符號。這裡,第一符號串包含有一個或多個二元符號,它是與當前塊的第一分區對應的第一運動訊息索引值(用用merge_gpm_idx0[xCb][yCb]表示)相關;第二符號串也包含有一個或多個二元符號,它是與當前塊的第二分區對應的第二運動訊息索引值(用用merge_gpm_idx1[xCb][yCb]表示)相關。
需要說明的是,如果預測模式參數指示當前塊使用GPM預測模式,那麼還需要繼續解析位元流,以獲取到當前塊的角度索引值和步長索引值。具體地,當預測模式參數指示當前塊採用GPM確定所述當前塊的幀間預測值時,該方法還可以包括:
解析位元流,獲取所述當前塊的劃分模式索引值;
基於所述劃分模式索引值,從預設映射表中查詢與所述劃分模式索引值對應的角度索引值和步長索引值;其中,所述預設映射表用於指示劃分模式索引值、角度索引值和步長索引之間的對應關係;
將查詢得到的角度索引值和步長索引值確定為所述當前塊內分割線對應的角度索引值和步長索引值。
也就是說,當預測模式參數指示當前塊使用GPM預測模式時,還可以繼續解析位元流,以獲取當前塊的劃分模式索引值,用merge_gpm_partition_ idx表示,結合表1所示的預設映射表,可以查表得到對應的角度索引值(用angleIdx表示)和步長索引值(用distanceIdx表示)。如此,在得到角度索引值和步長索引值之後,可以確定出當前塊的分割線並對其進行劃分,從而能夠得到當前塊的兩個分區,比如第一分區和第二分區,還可以用A分區和B分區表示。
進一步地,在解碼器側,透過解析位元流還能夠獲得兩組符號串,即第一符號串和第二符號串。利用和編碼器側一樣的上下文概率模型的算術編碼規則,對位元流進行熵解碼,以獲得二值化後的位元。在此過程中,解碼器也會維持與編碼器側一致的概率模型,並且利用此概率模型進行二元算術解碼。
針對merge_gpm_idx0[x0][y0]和merge_gpm_idx1[x0][y0]二值化後的第一位元可以使用不同的上下文概率模型進行解碼。具體地,在一些實施例中,所述使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號,可以包括:
利用第一上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第一個二元符號;
利用第二上下文概率模型進行二元算術熵解碼,獲得所述第二符號串的第一個二元符號;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
可選地,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],只針對二值化後的第一個位元設計不同的上下文概率模型,但是二值化後除第一個位元之外的剩餘位元仍然採用等概率模型。在一些實施例中,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,包括:
利用旁路模型解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
可選地,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb][yCb],不僅針對二值化後的第一個位元設計不同的上下文概率模型,而且針對二值化後的第二個位元也設計不同的上下文概率模型,但是二值化後除第一個位元和第二個位元之外的剩餘位元仍然採用等概率模型。在一些實施例中,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,包括:
利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串的第二個二元符號;
利用旁路模型繼續解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
進一步地,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,可以包括:
利用第三上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第二個二元符號;
利用第四上下文概率模型進行二元算術熵解碼,獲得所述第二組符號串的第二個二元符號;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
可選地,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb] [yCb],可以針對二值化後的每一個位元分別設計不同的上下文概率模型。在一些實施例中,該方法還可以包括:
利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
可選地,針對merge_gpm_idx0[xCb][yCb]和/或merge_gpm_idx1[xCb] [yCb],可以針對二值化後的每一個位元均使用旁路模型。在一些實施例中,該方法還可以包括:
利用旁路模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
這樣,可以使用和編碼器側一樣的上下文概率模型的算術編碼規則,對位元流進行熵解碼,能夠解析得到第一符號串和第二符號串;根據這第一符號串和第二符號串,後續可以對其分別進行二值化逆處理。
S604:根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;
需要說明的是,二值化模型用於將符號串轉換為對應的數值;具體地,可以利用與編碼器相同的表3和表4來將二進位的位元恢復成對應的運動訊息索引值,即merge_gpm_idx0[xCb][yCb]和merge_gpm_idx1[xCb][yCb]。
S605:基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;
需要說明的是,運動訊息至少可以包括運動向量和參考圖像索引。由於相鄰塊的運動訊息是可以獲取到的,這樣可以根據相鄰塊的運動訊息對當前塊的至少兩個分區進行運動訊息候選清單的構建,從而能夠得到運動訊息候選清單。具體地,在一些實施例中,該方法還可以包括:
利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
這裡,解碼器側建構運動訊息候選清單的方式與普通merge模式下建構清單的過程一致。其建構順序仍為:上側相鄰塊B1,左側相鄰塊A1,右上側相鄰塊B0,左下側相鄰塊A0,左上側相鄰塊B2,參考幀對應位置塊col,歷史參考塊his,第一、第二候選mv的平均運動向量mv avg,以及零運動向量0。也就是說,解碼器側建構運動訊息候選清單與編碼器側建構運動訊息候選清單的操作一致。
由於編碼器傳輸的位元流中包括有A分區和B分區各自在merge候選清單中所選擇的參考位置訊息(用merge_gpm_idx0[xCb][yCb]和merge_gpm_ idx1[xCb][yCb])表示,先A分區後B分區),透過解析位元流可以得到merge_ gpm_idx0[xCb][yCb],表示A分區的mv在merge候選清單中的位置,令
m=merge_gpm_idx0[xCb][yCb]                                       (3)
透過解析位元流還可以得到merge_gpm_idx1[xCb][yCb],表示B分區的mv在merge候選清單中的位置,由於B分區的mv在merge清單中的位置可能因為A分區先選取了靠前位置的選項,而會減小1,即令
n=merge_gpm_idx1 [xCb][yCb]+(merge_gpm_idx1[xCb][yCb]>=m)?1:0        (4)
其中,n表示的就是B分區選擇的mv在merge清單中的實際位置。在得到m和n之後,令M=mergeCandList[m],從merge候選清單中取出第m項用於A分區的mv建構;令N=mergeCandList[n],從merge候選清單中取出第n項用於B分區的mv建構。
還需要說明的是,解碼器側無需進行運動估計,在獲得M和N之後,可以用以確定當前塊的幀間預測值。
S606:根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
需要說明的是,在透過對位元流進行解析以及二值化逆處理之後,可以得到當前塊的第一分區對應的運動訊息和所述第二分區的運動訊息;然後根據第一分區對應的運動訊息和所述第二分區的運動訊息,能夠確定出當前塊的幀間預測值。
示例性地,參見圖7,其示出了本申請實施例提供的一種GPM預測處理流程的總體架構示意圖。在圖7中,該總體架構可以包括有輸入模組701、處理模組702和輸出模組703。其中,輸入模組701提供GPM預測模式下的輸入參數,這些輸入參數包括有:當前塊的像素位置,以亮度分量為例,可以用a luma location(xCb,yCb)描述;當前塊的尺寸訊息,可以用cbWidth和cbHeight描述;1/16像素精度的亮度分量的mv訊息,可以用1/16 fractional-sample accuracy mvA and mvB表示;1/32像素精度的色度分量的mv訊息,可以用1/32 fractional-sample accuracy mvCA and mvCB表示;mv訊息對應的參考幀,可以用refIdxA and refIdxB表示;mv訊息所選用的list標識,用predListFlagA and predListFlagB表示。處理模組702包括有3個步驟:首先,為三個圖像分量(包括L分量、Cb分量和Cr分量)推導參考幀清單(用refPicLN表示)、亞像素預測像素值(用predSamplesLN表示),N為A或B,而且亞像素預測像素值為14位元深度;其次,推導分割線的角度和步長;再次,為三個圖像分量推導加權預測像素值(用predSamples表示);最後,儲存mv訊息,用於後續預測mvN、refIdxN和predListFlagN。輸出模組703用於輸出預測像素值,可以包括三個圖像分量各自對應的預測像素值,分別用predSampleL、predSampleCb和predSampleCr表示。這裡,在確定出第一分區對應的運動訊息和所述第二分區的運動訊息之後,可以確定出當前塊的第一分區的第一預測值和當前塊的第二分區的第二預測值;在根據偏移訊息計算出當前塊的權重矩陣後,還可以利用第一預測值、第二預測值以及權重矩陣對當前塊內各像素點進行加權融合,從而獲得當前塊的幀間預測值。
本實施例提供了一種解碼方法,應用於解碼器。透過解析位元流,獲得當前塊的預測模式參數;當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。這樣,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了解碼性能,以達到提升解碼效率的目的。
基於前述實施例相同的發明構思,參見圖8,其示出了本申請實施例提供的一種編碼器80的組成結構示意圖。如圖8所示,編碼器80可以包括:第一確定單元801、設置單元802、處理單元803和編碼單元804;其中,
第一確定單元801,配置為確定當前塊的預測模式參數;
第一確定單元801,還配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定待編碼圖像中當前塊的兩個分區;
設置單元802,配置為從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;
處理單元803,配置為分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;
編碼單元804,配置為使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;並將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
在一些實施例中,參見圖8,編碼器80還可以包括第一建構單元805,配置為利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
在一些實施例中,編碼單元804,具體配置為利用第一上下文概率模型對所述第一符號串的第一個二元符號進行熵編碼,利用第二上下文概率模型對所述第二符號串的第一個二元符號進行熵編碼;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
在一些實施例中,編碼單元804,還配置為利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
在一些實施例中,編碼單元804,還配置為利用不同的上下文概率模型對所述第一符號串和所述第二符號串的第二個二元符號進行熵編碼;利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
進一步地,編碼單元804,具體配置為利用第三上下文概率模型對所述第一符號串的第二個二元符號進行熵編碼,利用第四上下文概率模型對所述第二符號串的第二個二元符號進行熵編碼;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
在一些實施例中,編碼單元804,還配置為利用不同的上下文概率模型對所述第一符號串和所述第二符號串內每一個二元符號進行熵編碼。
在一些實施例中,編碼單元804,還配置為利用旁路模型對所述第一符號串和所述第二符號串內每一個二元符號進行熵編碼。
在一些實施例中,第一確定單元801,具體配置為利用多種預測模式對所述當前塊進行預編碼處理,獲得每一種預測模式對應的位元率失真代價值;以及從所獲得的多個位元率失真代價值中選擇最小位元率失真代價值,將所述最小位元率失真代價值對應的預測模式確定為當前塊的預測模式參數。
可以理解地,在本申請實施例中,“單元”可以是部分電路、部分處理器、部分程式或軟體等等,當然也可以是模組,還可以是非模組化的。而且在本實施例中的各組成部分可以集成在一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
所述集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例的技術方案本質上或者說對現有技術做出貢獻的部分或者該技術方案的全部或部分可以以軟體產品的形式體現出來,該電腦軟體產品儲存在一個儲存媒介中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或processor(處理器)執行本實施例所述方法的全部或部分步驟。而前述的儲存媒介包括:隨身碟、行動硬碟、唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒介。
因此,本申請實施例提供了一種電腦儲存媒介,應用於編碼器80,該電腦儲存媒介儲存有編碼程式,所述編碼程式被第一處理器執行時實現前述實施例中任一項所述的方法。
基於上述編碼器80的組成以及電腦儲存媒介,參見圖9,其示出了本申請實施例提供的編碼器80的具體硬體結構示例,可以包括:第一通訊介面901、第一記憶體902和第一處理器903;各個元件透過第一匯流排系統904耦合在一起。可理解,第一匯流排系統904用於實現這些元件之間的連接通訊。第一匯流排系統904除包括資料匯流排之外,還包括電源匯流排、控制匯流排和狀態信號匯流排。但是為了清楚說明起見,在圖9中將各種匯流排都標為第一匯流排系統904。其中,
第一通訊介面901,用於在與其他外部網路元件之間進行收發訊息過程中,信號的接收和發送;
第一記憶體902,用於儲存能夠在第一處理器903上運行的電腦程式;
第一處理器903,用於在運行所述電腦程式時,執行:
確定當前塊的預測模式參數;
當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值;
分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號;
使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;
使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;
將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
可以理解,本申請實施例中的第一記憶體902可以是揮發性記憶體或非揮發性記憶體,或可包括揮發性和非揮發性記憶體兩者。其中,非揮發性記憶體可以是唯讀記憶體(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)。本申請描述的系統和方法的第一記憶體902旨在包括但不限於這些和任意其它適合類型的記憶體。
而第一處理器903可能是一種積體電路晶片,具有信號的處理能力。在實現過程中,上述方法的各步驟可以透過第一處理器903中的硬體的集成邏輯電路或者軟體形式的指令完成。上述的第一處理器903可以是通用處理器、數位訊號處理器(Digital Signal Processor,DSP)、專用積體電路(Application Specific Integrated Circuit,ASIC)、場域可程式閘陣列(Field Programmable Gate Array,FPGA)或者其他可程式邏輯器件、離散閘或者電晶體邏輯器件、離散硬體元件。可以實現或者執行本申請實施例中的公開的各方法、步驟及邏輯方塊圖。通用處理器可以是微處理器或者該處理器也可以是任何常規的處理器等。結合本申請實施例所公開的方法的步驟可以直接體現為硬體解碼處理器執行完成,或者用解碼處理器中的硬體及軟體模組組合執行完成。軟體模組可以位於隨機記憶體,快閃記憶體、唯讀記憶體,可程式唯讀記憶體或者電可讀寫可程式記憶體、暫存器等本領域成熟的儲存媒介中。該儲存媒介位於第一記憶體902,第一處理器903讀取第一記憶體902中的訊息,結合其硬體完成上述方法的步驟。
可以理解的是,本申請描述的這些實施例可以用硬體、軟體、韌體、中介軟體、微碼或其組合來實現。對於硬體實現,處理單元可以實現在一個或多個專用積體電路(Application Specific Integrated Circuits,ASIC)、數位訊號處理器(Digital Signal Processing,DSP)、數位信號處理設備(DSP Device,DSPD)、可程式邏輯裝置(Programmable Logic Device,PLD)、場域可程式閘陣列(Field-Programmable Gate Array,FPGA)、通用處理器、控制器、微控制器、微處理器、用於執行本申請所述功能的其它電子單元或其組合中。對於軟體實現,可透過執行本申請所述功能的模組(例如過程、函數等)來實現本申請所述的技術。軟體代碼可儲存在記憶體中並透過處理器執行。記憶體可以在處理器中或在處理器外部實現。
可選地,作為另一個實施例,第一處理器903還配置為在運行所述電腦程式時,執行前述實施例中任一項所述的方法。
本實施例提供了一種編碼器,該編碼器可以包括第一確定單元、設置單元、處理單元和編碼單元。在該編碼器中,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了編碼性能。
基於前述實施例相同的發明構思,參見圖10,其示出了本申請實施例提供的一種解碼器100的組成結構示意圖。如圖10所示,該解碼器150可以包括:解析單元1001、第二確定單元1002、逆處理單元1003和預測單元1004;其中,
解析單元1001,配置為解析位元流,獲得當前塊的預測模式參數;
第二確定單元1002,配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
解析單元1001,還配置為解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;
逆處理單元1003,配置為根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;
第二確定單元1002,還配置為基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;
預測單元1004,配置為根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
在一些實施例中,參見圖10,解碼器100還可以包括第二建構單元1005,配置為利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
在一些實施例中,解析單元1001,具體配置為利用第一上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第一個二元符號;利用第二上下文概率模型進行二元算術熵解碼,獲得所述第二符號串的第一個二元符號;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
在一些實施例中,解析單元1001,還配置為利用旁路模型解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
在一些實施例中,解析單元1001,還配置為利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串的第二個二元符號;利用旁路模型繼續解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
進一步地,解析單元1001,具體配置為利用第三上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第二個二元符號;利用第四上下文概率模型進行二元算術熵解碼,獲得所述第二組符號串的第二個二元符號;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
在一些實施例中,解析單元1001,還配置為利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
在一些實施例中,解析單元1001,還配置為利用旁路模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
可以理解地,在本實施例中,“單元”可以是部分電路、部分處理器、部分程式或軟體等等,當然也可以是模組,還可以是非模組化的。而且在本實施例中的各組成部分可以集成在一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
所述集成的單元如果以軟體功能模組的形式實現並非作為獨立的產品進行銷售或使用時,可以儲存在一個電腦可讀取儲存媒介中,基於這樣的理解,本實施例提供了一種電腦儲存媒介,應用於解碼器100,該電腦儲存媒介儲存有解碼程式,所述解碼程式被第二處理器執行時實現前述實施例中任一項所述的方法。
基於上述解碼器100的組成以及電腦儲存媒介,參見圖11,其示出了本申請實施例提供的解碼器100的具體硬體結構示例,可以包括:第二通訊介面1101、第二記憶體1102和第二處理器1103;各個元件透過第二匯流排系統1104耦合在一起。可理解,第二匯流排系統1104用於實現這些元件之間的連接通訊。第二匯流排系統1104除包括資料匯流排之外,還包括電源匯流排、控制匯流排和狀態信號匯流排。但是為了清楚說明起見,在圖11中將各種匯流排都標為第二匯流排系統1104。其中,
第二通訊介面1101,用於在與其他外部網路元件之間進行收發訊息過程中,信號的接收和發送;
第二記憶體1102,用於儲存能夠在第二處理器1103上運行的電腦程式;
第二處理器1103,用於在運行所述電腦程式時,執行:
解析位元流,獲得當前塊的預測模式參數;
當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區;
解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;
根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值;
基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息;
根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
可選地,作為另一個實施例,第二處理器1103還配置為在運行所述電腦程式時,執行前述實施例中任一項所述的方法。
可以理解,第二記憶體1102與第一記憶體902的硬體功能類似,第二處理器1103與第一處理器903的硬體功能類似;這裡不再詳述。
本實施例提供了一種解碼器,該解碼器可以包括解析單元、第二確定單元、逆處理單元和預測單元。在該解碼器中,充分利用了第一分區的運動訊息索引值和/或第二分區的運動訊息索引值在二值化後的第一個位元、第二個位元或者每一個位元的概率分佈特性,為其設計對應的上下文概率模型,從而能夠減小編碼所需的位元數,提升了解碼性能。
需要說明的是,在本申請中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,並不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本申請實施例序號僅僅為了描述,不代表實施例的優劣。
本申請所提供的幾個方法實施例中所揭露的方法,在不衝突的情況下可以任意組合,得到新的方法實施例。
本申請所提供的幾個產品實施例中所揭露的特徵,在不衝突的情況下可以任意組合,得到新的產品實施例。
本申請所提供的幾個方法或設備實施例中所揭露的特徵,在不衝突的情況下可以任意組合,得到新的方法實施例或設備實施例。
以上所述,僅為本申請的具體實施方式,但本申請的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以所述請求項的保護範圍為準。
10:影像編碼系統 101:變換與量化單元 102:幀內估計單元 103:幀內預測單元 104:運動補償單元 105:運動估計單元 106:反變換與反量化單元 107:濾波器控制分析單元 108:濾波單元 109:熵編碼單元 110:解碼圖像暫存單元 20:影像解碼系統 201:熵解碼單元 202:反變換與反量化單元 203:幀內預測單元 204:運動補償單元 205:濾波單元 206:解碼圖像暫存單元 701:輸入模組 702:處理模組 703:輸出模組 80:編碼器 801:第一確定單元 802:設置單元 803:處理單元 804:編碼單元 805:第一建構單元 901:第一通訊介面 902:第一記憶體 903:第一處理器 904:第一匯流排系統 100:解碼器 1001:解析單元 1002:第二確定單元 1003:逆處理單元 1004:預測單元 1005:第二建構單元 1101:第二通訊介面 1102:第二記憶體 1103:第二處理器 1104:第二匯流排系統 S401~S407:步驟 S601~S606:步驟 A0:左下側相鄰塊 A1:左側相鄰塊 B0:右上側相鄰塊 B1:上側相鄰塊 B2:左上側相鄰塊 Co1:參考幀對應位置塊
圖1A為相關技術方案提供的一種幾何劃分模式的結構示意圖;
圖1B為相關技術方案提供的另一種幾何劃分模式的結構示意圖;
圖2為相關技術方案提供的一種當前塊的角度和步長的結構示意圖;
圖3A為本申請實施例提供的一種影像編碼系統的組成方塊圖;
圖3B為本申請實施例提供的一種影像解碼系統的組成方塊圖;
圖4為本申請實施例提供的一種編碼方法的流程示意圖;
圖5為本申請實施例提供的一種建構merge候選清單的相鄰塊分佈示意圖;
圖6為本申請實施例提供的一種解碼方法的流程示意圖;
圖7為本申請實施例提供的一種GPM預測處理流程的總體架構示意圖;
圖8為本申請實施例提供的一種編碼器的組成結構示意圖;
圖9為本申請實施例提供的一種編碼器的具體硬體結構示意圖;
圖10為本申請實施例提供的一種解碼器的組成結構示意圖;
圖11為本申請實施例提供的一種解碼器的具體硬體結構示意圖。
S401~S407:步驟

Claims (20)

  1. 一種編碼方法,應用於編碼器,所述方法包括: 確定當前塊的預測模式參數; 當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區; 從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值; 分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號; 使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼; 使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼; 將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
  2. 根據請求項1所述的方法,所述方法還包括: 利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
  3. 根據請求項1所述的方法,其中,所述使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼,包括: 利用第一上下文概率模型對所述第一符號串的第一個二元符號進行熵編碼,利用第二上下文概率模型對所述第二符號串的第一個二元符號進行熵編碼;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
  4. 根據請求項1所述的方法,其中,所述使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼,包括: 利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
  5. 根據請求項1所述的方法,其中,所述使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼,包括: 利用不同的上下文概率模型對所述第一符號串和所述第二符號串的第二個二元符號進行熵編碼; 利用旁路模型對所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號進行熵編碼;其中,所述旁路模型表徵利用等概率模型進行二元算術熵編碼。
  6. 根據請求項5所述的方法,其中,所述使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼,包括: 利用第三上下文概率模型對所述第一符號串的第二個二元符號進行熵編碼,利用第四上下文概率模型對所述第二符號串的第二個二元符號進行熵編碼;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
  7. 根據請求項1所述的方法,所述方法還包括: 利用不同的上下文概率模型對所述第一符號串和所述第二符號串內每一個二元符號進行熵編碼。
  8. 根據請求項1所述的方法,所述方法還包括: 利用旁路模型對所述第一符號串和所述第二符號串內每一個二元符號進行熵編碼。
  9. 一種解碼方法,應用於解碼器,所述方法包括: 解析位元流,獲得當前塊的預測模式參數; 當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區; 解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號; 根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值; 基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息; 根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
  10. 根據請求項9所述的方法,所述方法還包括: 利用所述當前塊的相鄰塊的運動訊息,建構所述運動訊息候選清單。
  11. 根據請求項9所述的方法,其中,所述使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號,包括: 利用第一上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第一個二元符號; 利用第二上下文概率模型進行二元算術熵解碼,獲得所述第二符號串的第一個二元符號;其中,所述第一上下文概率模型與所述第二上下文概率模型不同。
  12. 根據請求項9所述的方法,其中,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,包括: 利用旁路模型解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
  13. 根據請求項9所述的方法,其中,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,包括: 利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串的第二個二元符號; 利用旁路模型繼續解析位元流,依次獲得所述第一符號串和所述第二符號串內除第一個二元符號和第二個二元符號之外的二元符號;其中,所述旁路模型表徵利用等概率模型進行二元算術熵解碼。
  14. 根據請求項13所述的方法,其中,所述使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號,包括: 利用第三上下文概率模型進行二元算術熵解碼,獲得所述第一符號串的第二個二元符號; 利用第四上下文概率模型進行二元算術熵解碼,獲得所述第二組符號串的第二個二元符號;其中,所述第三上下文概率模型與所述第四上下文概率模型不同。
  15. 根據請求項9所述的方法,所述方法還包括: 利用不同的上下文概率模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
  16. 根據請求項9所述的方法,所述方法還包括: 利用旁路模型解析位元流,獲得所述第一符號串和所述第二符號串內每一個二元符號。
  17. 一種編碼器,所述編碼器包括第一確定單元、設置單元、處理單元和編碼單元;其中, 所述第一確定單元,配置為確定當前塊的預測模式參數; 所述第一確定單元,還配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定待編碼圖像中當前塊的兩個分區; 所述設置單元,配置為從運動訊息候選清單中,確定所述兩個分區的運動訊息,並將第一運動訊息索引值設置為第一分區的運動訊息在所述運動訊息候選清單中的索引序號值,第二運動訊息索引值設置為第二分區的運動訊息在所述運動訊息候選清單中的索引序號值; 所述處理單元,配置為分別對所述第一運動訊息索引值和所述第二運動訊息索引值進行二值化處理,得到第一符號串和第二符號串;其中,所述符號串包含一個或多個二元符號; 所述編碼單元,配置為使用不同的上下文概率模型分別對所述第一符號串和所述第二符號串的第一個二元符號進行熵編碼;使用預設模型分別對所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號進行熵編碼;並將對所述第一符號串和所述第二符號串進行編碼後得到的位元寫入位元流。
  18. 一種編碼器,所述編碼器包括第一記憶體和第一處理器;其中, 所述第一記憶體,用於儲存能夠在所述第一處理器上運行的電腦程式; 所述第一處理器,用於在運行所述電腦程式時,執行如請求項1至8任一項所述的方法。
  19. 一種解碼器,所述解碼器包括解析單元、第二確定單元、逆處理單元和預測單元;其中, 所述解析單元,配置為解析位元流,獲得當前塊的預測模式參數; 所述第二確定單元,配置為當所述預測模式參數指示採用幾何劃分模式GPM確定所述當前塊的幀間預測值時,確定所述當前塊的兩個分區; 所述解析單元,還配置為解析位元流,確定所述當前塊的兩個分區的運動訊息索引值對應的第一符號串和第二符號串,其中,所述第一符號串和所述第二符號串包含一個或多個二元符號,包括:使用不同的上下文概率模型解析位元流,獲得第一符號串和第二符號串的第一個二元符號;使用預設模型繼續解析位元流,獲得所述第一符號串和所述第二符號串內除第一個二元符號之外的二元符號; 所述逆處理單元,配置為根據預設的二值化模型,確定所述第一符號串和所述第二符號串的對應第一數值和第二數值,將所述第一數值和所述第二數值分別設置為第一運動訊息索引值和第二運動訊息索引值; 所述第二確定單元,還配置為基於運動訊息候選清單,將所述第一運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第一分區對應的運動訊息,將所述第二運動訊息索引值指示的所述運動訊息候選清單中的運動訊息確定為第二分區的運動訊息; 所述預測單元,配置為根據所述第一分區對應的運動訊息和所述第二分區的運動訊息,確定所述當前塊的幀間預測值。
  20. 一種解碼器,所述解碼器包括第二記憶體和第二處理器;其中, 所述第二記憶體,用於儲存能夠在所述第二處理器上運行的電腦程式; 所述第二處理器,用於在運行所述電腦程式時,執行如請求項9至16任一項所述的方法。
TW110109404A 2020-04-08 2021-03-16 編碼方法、解碼方法、編碼器、解碼器以及儲存媒介 TW202139706A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010271284.3 2020-04-08
CN202010271284.3A CN113497936A (zh) 2020-04-08 2020-04-08 编码方法、解码方法、编码器、解码器以及存储介质

Publications (1)

Publication Number Publication Date
TW202139706A true TW202139706A (zh) 2021-10-16

Family

ID=77994973

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110109404A TW202139706A (zh) 2020-04-08 2021-03-16 編碼方法、解碼方法、編碼器、解碼器以及儲存媒介

Country Status (3)

Country Link
CN (1) CN113497936A (zh)
TW (1) TW202139706A (zh)
WO (1) WO2021203924A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023065202A1 (en) * 2021-10-21 2023-04-27 Qualcomm Incorporated Multiple composition distribution matching based on arithmetic coding and geometry-specific parameters
WO2024027700A1 (en) * 2022-08-05 2024-02-08 Mediatek Inc. Joint indexing of geometric partitioning mode in video coding
WO2024103304A1 (zh) * 2022-11-16 2024-05-23 Oppo广东移动通信有限公司 点云编解码方法、编码器、解码器、码流及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004040246A (ja) * 2002-06-28 2004-02-05 Canon Inc 情報処理装置、情報処理方法
CN101527845A (zh) * 2008-12-19 2009-09-09 无锡亿普得科技有限公司 一种指数分布数据的基于块自适应量化的方法
CN102771126A (zh) * 2010-02-24 2012-11-07 夏普株式会社 图像编码装置、图像解码装置及数据结构
CN105847829B (zh) * 2010-11-23 2019-08-09 Lg电子株式会社 视频编码装置和视频解码装置
CN102611880B (zh) * 2011-01-19 2015-02-04 华为技术有限公司 标识图像块几何划分模式的编解码方法和设备
US10123053B2 (en) * 2011-05-23 2018-11-06 Texas Instruments Incorporated Acceleration of bypass binary symbol processing in video coding
EP2732628A2 (en) * 2011-07-15 2014-05-21 Motorola Mobility LLC Context modeling techniques for transform coefficient level coding
CA2878206C (en) * 2012-07-02 2016-05-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding video and method and apparatus for decoding video determining inter-prediction reference picture list depending on block size
JP7127160B2 (ja) * 2018-07-02 2022-08-29 フラウンホファー ゲセルシャフト ツール フェールデルンク ダー アンゲヴァンテン フォルシュンク エー.ファオ. 依存スカラー量子化に好適な変換係数のエントロピーコーディング
CN110677655B (zh) * 2019-06-21 2022-08-16 杭州海康威视数字技术股份有限公司 一种编解码方法、装置及存储介质

Also Published As

Publication number Publication date
CN113497936A (zh) 2021-10-12
WO2021203924A1 (zh) 2021-10-14

Similar Documents

Publication Publication Date Title
TWI826532B (zh) 基於歷史資訊的幀內模式編解碼
JP7325553B2 (ja) 符号化・復号化の方法、装置、および記憶媒体
TW202139706A (zh) 編碼方法、解碼方法、編碼器、解碼器以及儲存媒介
ES2933424T3 (es) Método de predicción intra para bloques de crominancia
CN113711597B (zh) 上下文建模和多重变换矩阵的选择
MX2012013263A (es) Metodos y aparatos para intracodificar un bloque que tiene pixeles asignados a grupos.
WO2022116113A1 (zh) 一种帧内预测方法、装置及解码器和编码器
JP2022521933A (ja) 符号化方法、復号化方法、デコーダ、エンコーダー及び記憶媒体
WO2021258841A1 (zh) 帧间预测方法、编码器、解码器以及计算机存储介质
TW202139707A (zh) 幀間預測方法、編碼器、解碼器以及儲存媒介
TW202017378A (zh) 色度模式幀內編碼
CA3222255A1 (en) Decoding prediction method and apparatus, and computer storage medium
WO2021056214A1 (zh) 编码方法、解码方法、编码器、解码器以及存储介质
WO2022188114A1 (zh) 帧内预测方法、编码器、解码器以及存储介质
WO2022174478A1 (zh) 编码方法、解码方法、编码器、解码器及存储介质
WO2022174467A1 (zh) 帧内预测方法、编码器、解码器以及存储介质
WO2023141970A1 (zh) 解码方法、编码方法、解码器、编码器和编解码系统
WO2023123736A1 (zh) 预测方法、装置、设备、系统、及存储介质
WO2024183007A1 (zh) 视频编解码方法、装置、设备、系统、及存储介质
WO2024119521A1 (zh) 编解码方法、码流、编码器、解码器以及存储介质
WO2023193254A1 (zh) 解码方法、编码方法、解码器以及编码器
WO2024077553A1 (zh) 视频编解码方法、装置、设备、系统、及存储介质
WO2023197229A1 (zh) 视频编解码方法、装置、设备、系统及存储介质
WO2022188239A1 (zh) 系数的编解码方法、编码器、解码器及计算机存储介质
TW202431846A (zh) 編解碼方法、碼流、編碼器、解碼器以及儲存媒介