TW202139693A - 一種幀間預測方法、編碼器、解碼器及儲存媒介 - Google Patents
一種幀間預測方法、編碼器、解碼器及儲存媒介 Download PDFInfo
- Publication number
- TW202139693A TW202139693A TW110109409A TW110109409A TW202139693A TW 202139693 A TW202139693 A TW 202139693A TW 110109409 A TW110109409 A TW 110109409A TW 110109409 A TW110109409 A TW 110109409A TW 202139693 A TW202139693 A TW 202139693A
- Authority
- TW
- Taiwan
- Prior art keywords
- motion information
- candidate list
- gpm
- information
- motion
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
- H04N19/139—Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/167—Position within a video image, e.g. region of interest [ROI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/56—Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一種幀間預測方法、編碼器、解碼器及儲存媒介,包括:確定當前塊的預測模式參數;當預測模式參數指示當前塊使用GPM確定幀間預測值時,建構當前塊的融合merge候選清單;根據當前塊的merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,根據GPM運動訊息候選清單,確定當前塊的幀間預測值。利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
Description
本申請實施例涉及影像處理技術,涉及但不限於幀間預測方法、編碼器、解碼器及儲存媒介。
在影像編解碼,對當前塊進行編解碼的過程中,除了有幀內預測外,還可以採用幀間預測方式。幀間預測可以包括運動估計和運動補償,針對運動補償在多功能影像編碼(Versatile Video Coding,VVC)的制定過程中,引入了正方形和矩形之外的其他形狀劃分。首先是三角劃分模式(Triangular partition Mode,TPM)的引入,以一個正方形或矩形的對角線、或反對角線為分割線,得到三角形的預測單元,從而更靈活的表示幀間預測資料,降低預測誤差,從而提高編碼效率。
在聯合影像專家小組(Joint Video Experts Team,JVET)會議中,引入了一種比TPM更為靈活的幀間幾何劃分預測模式(Geometrical partition Mode,GPM),GPM的Merge清單延續了VVC參考軟體測試平臺(VVC Test Model,VTM)8.0版本之前的TPM的Merge清單的建構方式,重用現有的常規Merge清單,但是因為不同區域的運動特性不同,GPM的兩個分區都只使用單向預測進行建構,所以目前的設計選擇了按照一奇一偶的方式,在每個merge清單的選項中僅選擇一個方向的運動向量對GPM運動訊息候選清單進行建構。儘管在Merge清單的建構過程中有查重去重的操作,但建構出的運動訊息候選清單中仍然大概率會出現重複選項,嚴重影響到運動訊息的表達效率,從而降低影像編碼和解碼效率。
有鑑於此,如何克服上述所提及的種種缺點,是目前業界亟需克服的課題。
本申請實施例提供了一種幀間預測方法、編碼器、解碼器及儲存媒介,能夠提高運動訊息的表達效率,並提高影像編碼和解碼效率。
第一方面,本申請實施例提供了一種幀間預測方法,應用於編碼器,所述方法包括:
確定當前塊的預測模式參數;
當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
第二方面,本申請實施例提供了一種幀間預測方法,應用於解碼器,所述方法包括:
解析位元流,確定當前塊的預測模式參數;
當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
第三方面,本申請實施例提供了一種編碼器,包括:
確定單元,用於確定當前塊的預測模式參數;
第一建構單元,用於當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
第一處理單元,用於根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
第一預測單元,用於根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
第四方面,本申請實施例提供了一種解碼器,包括:
解析單元,用於解析位元流,確定當前塊的預測模式參數;
第二建構單元,用於當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
第二處理單元,用於根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
第二預測單元,用於根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
第五方面,本申請實施例還提供了一種編碼器,包括:第一記憶體和第一處理器;所述第一記憶體儲存有可在第一處理器上運行的電腦程式,所述第一處理器執行所述程式時實現編碼器的所述幀間預測方法。
第六方面,本申請實施例還提供了一種解碼器,包括:第二記憶體和第二處理器;所述第二記憶體儲存有可在第二處理器上運行的電腦程式,所述第二處理器執行所述程式時實現解碼器的所述幀間預測方法。
第七方面,本申請實施例提供了一種儲存媒介,包括:其上儲存有電腦程式,該電腦程式被第一處理器執行時,實現編碼器的所述幀間預測方法;或者,該電腦程式被第二處理器執行時,實現解碼器的所述幀間預測方法。
本申請實施例提供了一種幀間預測方法、編碼器、解碼器及儲存媒介,包括:確定當前塊的預測模式參數;當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。這樣,利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
為了能夠更加詳盡地瞭解本申請實施例的特點與技術內容,下面結合附圖對本申請實施例的實現進行詳細闡述,所附附圖僅供參考說明之用,並非用來限定本申請實施例。
本申請提供一種影像編碼系統,如圖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去除方塊效應假影,然後,將該重構殘差塊添加到解碼圖像暫存單元111的幀中的一個預測性塊,用以產生經重構建的影像重建塊;編碼單元119是用於編碼各種編碼參數及量化後的變換係數。而解碼圖像暫存單元110用於存放重構建的影像重建塊,用於預測參考。隨著影像圖像編碼的進行,會不斷生成新的重構建的影像重建塊,這些重構建的影像重建塊都會被存放在解碼圖像暫存單元110中。
本申請實施例提供一種影像解碼系統,圖2為本申請實施例影像解碼系統的組成結構示意圖,如圖2所示,該影像解碼系統21包括:解碼單元211、反變換單元217,與反量化單元212、幀內預測單元213、運動補償單元214、迴路濾波單元215和解碼圖像暫存單元216單元;輸入的視訊訊號經過影像編碼系統11進行編碼處理之後,輸出該視訊訊號的位元流;該位元流輸入影像解碼系統21中,首先經過解碼單元211,用於得到解碼後的變換係數;針對該變換係數透過反變換單元217與反量化單元212進行處理,以便在像素域中產生殘差塊;幀內預測單元213可用於基於所確定的幀內預測方向和來自當前幀或圖片的先前經解碼塊的資料而產生當前影像解碼塊的預測資料;運動補償單元214是透過剖析運動向量和其他關聯語法元素來確定用於影像解碼塊的預測訊息,並使用該預測訊息以產生正被解碼的影像解碼塊的預測性塊;透過對來自反變換單元217與反量化單元212的殘差塊與由幀內預測單元213或運動補償單元214產生的對應預測性塊進行求和,而形成解碼的影像塊;該解碼的視訊訊號透過迴路濾波單元215以便去除方塊效應假影,可以改善影像品質;然後將經解碼的影像塊儲存於解碼圖像暫存單元216中,解碼圖像暫存單元216儲存用於後續幀內預測或運動補償的參考圖像,同時也用於視訊訊號的輸出,得到所恢復的原始視訊訊號。
本申請實施例提供的一種幀間預測方法主要作用於影像編碼系統11的幀間預測單元115和影像解碼系統21的幀內預測單元,即運動補償單元214;也就是說,如果在影像編碼系統11能夠透過本申請實施例提供的幀間預測方法得到一個較好的預測效果,那麼,對應地,在解碼端,也能夠改善影像解碼恢復品質。
基於此,下面結合附圖和實施例對本申請的技術方案進一步詳細闡述。在進行詳細闡述之前,需要說明的是,說明書通篇中提到的“第一”、“第二”、“第三”等,僅僅是為了區分不同的特徵,不具有限定優先順序、先後順序、大小關係等功能。
本申請實施例提供一種幀間預測方法,該方法應用於影像編碼設備,即編碼器。該方法所實現的功能可以透過影像編碼設備中的處理器調用程式碼來實現,當然程式碼可以保存在電腦儲存媒介中,可見,該影像編碼設備至少包括處理器和儲存媒介。
圖3為本申請實施例提供的幀內預測方法的第一流程示意圖,該方法應用於編碼器,如圖3所示,該方法包括:
步驟101、確定當前塊的預測模式參數。
需要說明的是,預測模式參數指示了當前塊的編碼模式及該模式相關的參數。通常可以採用位元率失真最佳化(Rate Distortion Optimization,RDO)的方式確定當前塊的預測模式參數。
具體地,在一些實施例中,編碼器確定當前塊的預測模式參數的實現為:編碼器確定當前塊的待預測圖像分量;基於當前塊的參數,利用多種預測模式分別對待預測圖像分量進行預測編碼,計算多種預測模式下每一種預測模式對應的位元率失真代價結果;從計算得到的多個位元率失真代價結果中選取最小位元率失真代價結果,並將最小位元率失真代價結果對應的預測模式確定為當前塊的預測模式參數。
也就是說,在編碼器側,針對當前塊可以採用多種預測模式分別對待預測圖像分量進行編碼。這裡,多種預測模式通常包括有幀間預測模式、傳統幀內預測模式和非傳統幀內預測模式,而傳統幀內預測模式又可以包括有直流(Direct Current,DC)模式、平面(PLANAR)模式和角度模式等,非傳統幀內預測模式又可以包括有MIP模式、跨分量線性模型預測(Cross-component Linear Model Prediction,CCLM)模式、幀內塊複製(Intra Block Copy,IBC)模式和PLT(Palette)模式等,幀間預測模式可以包括:幀間幾何劃分預測模式(Geometrical partition Mode,GPM)、三角預測模式(Triangle partition mode ,TPM)等。
這樣,在利用多種預測模式分別對當前塊進行編碼之後,可以得到每一種預測模式對應的位元率失真代價結果;然後從所得到的多個位元率失真代價結果中選取最小位元率失真代價結果,並將該最小位元率失真代價結果對應的預測模式確定為當前塊的預測模式參數;如此,最終可以使用所確定的預測模式對當前塊進行編碼,而且在這種預測模式下,可以使得預測殘差小,能夠提高編碼效率。
步驟102、當預測模式參數指示當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構當前塊的融合merge候選清單;
在本申請實施例中,預測模式參數指示使用GPM確定當前塊的幀間預測時,建構當前塊的merge候選清單。merge候選清單包含用於對所述當前塊進行運動預測的多項候選運動向量(motion vector,mv),mv為用於幀間預測的二維向量,其提供從解碼圖片中的座標到參考圖片中的座標的偏移量。
幀間預測是根據當前塊的參考幀中的像素,透過mv指示參考幀中用於預測的像素的位置,產生當前塊的預測值。參考幀作為短期參考圖片或長期參考圖片的圖片或幀,參考幀含有可以按解碼順序用於後續圖片的解碼過程中的幀間預測的樣本。
編碼單元(coding unit,CU),對應於圖像中一個A×B的矩形區域,包含A×B亮度像素或/和它對應的色度像素,A為矩形的寬,B為矩形的高,A和B可以相同也可以不同,A和B的取值通常為2的整數次冪,例如128、64、32、16、8、4。一個編碼單元包含預測圖像和殘差圖像,預測圖像與殘差圖像相加得到編碼單元的重建圖像。預測圖像透過幀內預測或幀間預測生成,殘差圖像透過對變換係數進行反量化和反變換處理生成。
融合編碼(merge):一種幀間編碼方式,其運動向量不直接在位元流中傳遞。當前塊可根據融合序號(merge index)從融合候選清單(merge candidate list)中選擇對應的運動訊息,將融合候選的運動訊息作為當前塊的運動訊息,或者對融合候選的運動訊息經過縮放後作為當前塊的運動訊息;當前塊根據運動訊息確定幀間預測值。
通常情況下,影像序列的圖像被劃分成圖像塊進行編碼。在影像編碼混合框架中,通常只以正方形和矩形的塊為單位實施預測、變換和量化等編碼技術。然而實際中運動物體的邊緣並不一定都是水平或者垂直方向的,即使是,也不一定剛好在可以劃分的塊邊緣上,而運動邊緣兩側的運動向量往往不同,這樣在編碼的過程中以一個整塊進行運動預測和補償,易產生較大的預測誤差,從而導致編碼效率受限。
在VVC的制定過程中,TPM引入以一個正方形或矩形的對角線、或反對角線為分割線,得到三角形的預測單元,如圖4a-圖4b所示,從而更靈活的表示幀間預測資料,降低預測誤差,從而提高編碼效率。
在JVET第15次會議中,提出了一種比TPM更為靈活的幀間幾何劃分幀間預測模式(Geometrical partitioning for inter blocks,GEO),經過兩次會議的討論,JVET正式將GEO預測模式採納到VVC的標準中,並更名為幾何劃分預測模式(Geometrical partition Mode,GPM)。該技術針對圖像中運動物體邊緣部分,採用更為靈活的表示方法,將幀間塊劃分為兩個非矩形的子分區分別進行預測後進行加權融合。如圖5a-圖5g所示。
在目前VVC Draft8中GPM技術總共有64種劃分模式,每種劃分模式對應一種角度α和一種步長ρ,總共有20種角度,4種步長。
示例性的,如圖6所示,每種角度和步長的組合構成一種劃分模式。GPM將當前塊劃分為兩個非矩形的子分區,每個子分區單獨進行單向的運動補償得到單向預測值,最後利用權重矩陣對兩分區的單向預測值加權融合得到最終的GPM預測值。
在本申請實施例中,在編碼器側,確定是採用GPM進行幀間預測時,該編碼器就可以獲取該當前塊採用GPM進行幀間預測時的GPM參數了。編碼器透過遍歷GPM對應的64種劃分模型,確定出位元率失真代價最小的劃分模式,即確定出目標劃分模式;該編碼器就可以依據目標劃分模式,透過預設劃分模式、角度索引和步長索引的映射表,確定出該目標劃分模式對應的角度索引訊息和步長索引訊息了。當前預測塊是GPM模式時,會根據當前塊選中的劃分模式索引merge_gpm_partition_idx去查表得到對應的角度angleIdx和步長distanceIdx,該劃分模式的映射表如表1所示:
表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 |
其中,wedge_partition_idx為劃分模式索引,angleIdx為角度索引訊息,distanceIdx為步長索引訊息。
具體的,建構當前塊的merge候選清單,與普通merge模式建構清單的過程一致。圖7為本申請實施例中空間Merge候選清單的相鄰塊位置示意圖,如圖7所示,Merge候選清單中相鄰塊的建構順序為:左側相鄰塊A1,上側相鄰塊B1,右上側相鄰塊B0,左下側相鄰塊A0,左上側相鄰塊B2,參考幀對應位置塊col為相鄰塊的運動向量訊息依次排列,且區分不同方向來源。
獲取圖7中5個相鄰塊的單向或雙向mv訊息,將每個相鄰塊的單向或雙向mv訊息按照相鄰塊的添加順序(A1-B1-B0-A0(B2)),添加到merge候選清單中組成當前塊的候選項,其中B2為替補,當前面四項有至少一項不可用時,需要使用B2的mv訊息加入到候選清單。相鄰塊的添加順序代表了各個mv訊息與當前塊的mv訊息之間相關性大小,也就是merge候選清單的添加順序代表了這個候選項被選為當前塊的mv訊息的可能性大小,也代表了這個候選項被選為當前塊mv訊息之後精確度的大小。
圖8為本申請實施例中merge清單的第一組成結構示意圖,根據圖7相鄰塊的位置示意圖得到圖8這種merge候選清單,如圖8所示,Merge候選清單中包括5個相鄰塊的mv訊息,序號分別為0、1、2、3、4,每個相鄰塊包含雙向預測mv訊息,即list0和list1。因為在GPM預測模式中,每個分區都只會使用單向預測模式,而merge清單中每一項都可能是雙向預測的mv訊息,因此需要取出其中的單向預測mv來供使用。令X=( m & 0x01 ),其中,X為參考清單指示訊息,用於指示list0和list1,&為位與運算,即取出m的最後一個位元位(類似於同位)。這樣,優先使用X對應的參考清單中的參考幀對應的mv訊息predFlagLXM用於分區預測,如圖8中的陰影區域對應的選項。如果相應的mv不可用(相鄰塊的mv本身也可能是單向的),才使用對向位置的mv(與陰影區域水平對應的空白區域中表示的mv),即X=1-X。
步驟103、根據當前塊的merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,構建過程包括對第一運動訊息進行去重複訊息的處理;
實際應用中,對當前塊的所述merge候選清單中的第一運動訊息進行查重去重處理目的是在構建GPM運動訊息候選清單(也稱“mv候選清單”)避免mv候選清單中存在重複的運動訊息,減小mv候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
圖9為本申請實施例中去重處理方法的流程示意圖,如圖9所示,本申請實施例提供的一種幀間預測方法中步驟103的去重處理步驟具體可以包括:
步驟201:初始化當前塊的GPM運動訊息候選清單;
這裡,初始化mv候選清單可以是為GPM建立一個空的mv候選清單,將merge候選清單(簡稱“merge清單”)中的mv訊息先進行查重去重處理,再添加到GPM的mv候選清單中,保證GPM的mv候選清單無重複mv訊息。
步驟202:按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息;
這裡,獲取策略規定了merge清單中第一運動訊息(也稱第一mv訊息)的查重順序,查重順序越靠前,merge清單中第一mv訊息先被取出進行去重複訊息的處理,當取出的第一mv訊息已經在mv候選清單中存在,則忽略取出的第一mv訊息無需利用其更新mv候選清單;當取出的第一mv訊息在mv候選清單中不存在,則需要利用取出的第一mv訊息更新mv候選清單。
在一些實施例中,獲取策略由merge候選清單中相鄰塊的建構順序和參考清單指示訊息決定,相鄰塊的建構順序可以為圖7所示的順序,所述參考清單指示訊息用於指示第一參考清單的mv訊息和第二參考清單的mv訊息的使用優先順序。
步驟202具體可以包括:按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
如圖8所示,Merge候選清單中包括5個相鄰塊的mv訊息,序號分別為0、1、2、3、4,相鄰塊的建構順序可以為序號從小到大的順序,每個相鄰塊包含雙向預測mv訊息,即list0參考清單中的mv訊息,和list1參考清單中的mv訊息。因為在GPM預測模式中,每個分區都只會使用單向預測模式,而merge清單中每一項都可能是雙向預測的mv訊息,因此需要取出其中的單向預測mv來供使用。令X=( m & 0x01 ),其中,X為參考清單指示訊息,用於指示list0和list1的使用優先順序,X=0表示優先使用list0中的mv訊息,X=1表示優先使用list1中的mv訊息,&為位元與運算,即取出m的最後一個位元位(類似於同位)。這樣,優先使用X對應的參考清單中的參考幀對應的mv訊息predFlagLXM用於分區預測,如圖8中的陰影區域對應的選項。如果相應的mv不可用(相鄰塊的mv本身也可能是單向的),才使用對向位置的mv(與陰影區域水平對應的空白區域中表示的mv),即X=1-X。
按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一mv訊息,即從上往下選擇每一項中參考清單指示訊息所指示的list0或list1中的第一mv訊息,也就是圖8中從上往下優先使用陰影區域中的第一mv訊息,並對取出的第一mv訊息進行查重去重處理。
具體的,所述按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息,包括:按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置;若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息;若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
以圖8為例,根據merge清單中相鄰塊的建構順序和參考清單指示訊息,優先使用陰影區域對應的選項,第一個目標位置為merge清單中第一行的第一列中的第一mv訊息(即第L00項),獲取到第L00項後,先判斷L00項是否可用,如果可用再執行後續的查重去重處理,如果不可用,則獲取第一個目標位置的對向位置即第一行的第二列中的第一mv訊息(即第L01項),再執行後續的查重去重處理。這裡,由於list0和list1中分別儲存不同方向預測的mv訊息,所以目標位置和對向位置分別儲存不同方向的mv訊息的位置。
步驟203:檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;
本申請實施例中,merge清單中的運動訊息稱為第一mv訊息,mv候選清單中的運動訊息稱為第二運動訊息(也稱第二mv訊息),第一mv訊息和第二mv訊息只是用來表示二者的來源不同,並不是用來區分二者的訊息內同不同。
步驟204:基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
在一些實施例中,步驟204具體包括:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
也就是說,在獲取到merge清單中的第一運動訊息之後,若運動訊息候選清單中已經儲存在相同的第二運動訊息,則不需要將第一運動訊息作為GPM的候選項;若不存在相同的第二運動訊息,則將第一運動訊息作為GPM的候選項。
具體的查重去重步驟包括:輸入為普通merge清單mergeCandList,輸出為mv候選清單mergeGPMCandList。
對i=0~MaxNumGpmMergeCand-1,j=0~MaxNumGpmMergeCand-1,MaxNumGpmMergeCand表示merge清單中候選項的最大數,i表示mv候選清單中第二mv訊息的序號,j表示merge清單中第一mv訊息的序號,實施以下操作:。
令X=(j & 0x01),其中,X為參考清單指示訊息,用於指示list0和list1的使用優先順序,X=0表示優先使用list0中的mv訊息,X=1表示優先使用list1中的mv訊息,&為位元與運算,即取出j的最後一個位元位(類似於同位)。這樣,優先使用X對應的參考清單中的參考幀對應的mv訊息predFlagLXM用於分區預測,如圖8中的陰影區域對應的選項。如果相應的mv不可用(相鄰塊的mv本身也可能是單向的),才使用對向位置的mv(與陰影區域水平對應的空白區域中表示的mv),即X=1-X。
檢驗當前普通merge清單中的第LXj項與mv候選清單的第0~i-1項是否有重合,如果有,i不變,j自增1;如果沒有,則執行下面的語句:
mvGPMi[0] = mvLXj[0]
mvGPMi[1] = mvLXj[1]
refIdxGPMi = refIdxLXj
predListFlagGPMi = X
然後i和j各自自增1.當j增加到MaxNumGpmMergeCand,則執行結束。
在一些實施例中,若i還沒有達到MaxNumGpmMergeCand-1,而j已經增加到MaxNumGpmMergeCand則後續補值為0的mv訊息,或重複在此之前存入的最後一個候選項的mv訊息。
圖10為本申請實施例中merge清單的第二組成結構示意圖,圖11為本申請實施例中GPM運動訊息候選清單的第一組成結構示意圖,若圖10的merge清單中的序號0的list0對應的mv訊息,與序號1的list1對應的mv訊息恰好相同,即雙向箭頭所指的兩個陰影區域,在重構的mv候選清單中它們將對應同一個選項,即merge清單中序號0和1中的兩個單向mv訊息進行去重操作後,建立mv候選清單,圖11中mv候選清單的序號0對應merge清單的序號0和1,由於去重操作使mv候選清單中的序號相比於merge清單中的序號減少一個。
在一些實施例中,步驟204具體包括:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
也就是說,在獲取到merge清單中的第一運動訊息之後,若運動訊息候選清單中已經儲存在相同的第二運動訊息,則獲取第一運動訊息所在位置的物件位置中儲存的第一運動訊息,以圖10為例,第一運動訊息為merge清單中第一行的第一列中的第一運動訊息(即第L00項),獲取到第L00項後,如果第L00項與運動訊息候選清單中第0~i-1項有重合,為了使運動訊息候選清單中的運動訊息更豐富,需要在獲取對向位置即第一行的第二列中的第一運動訊息(即第L01項),再利用物件位置的第一運動訊息更新GPM運動訊息候選清單。
在一些實施例中,所述利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單,包括:對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單;或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
這裡,對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單,即檢測物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將物件位置的第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略物件位置的第一運動訊息。
這裡,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中,即無需對物件位置的第一運動訊息進行去重複訊息的處理,直接將物件位置的第一運動訊息添加到運動訊息候選清單中。
在另一些實施例中,步驟103具體包括:根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。這裡,所說的第一運動訊息候選清單和第二運動訊息候選清單均為GPM運動訊息候選清單
也就是說,先對當前塊的所述merge候選清單中的第一運動訊息進行查重去重處理,再分別根據A分區mv選擇策略,建構A分區的第一運動訊息候選清單;根據B分區的mv選擇策略,建構B分區的第二運動訊息候選清單。
需要說明的是,A分區的選擇策略使用者確定mv訊息的使用優先順序和mv訊息在mv候選清單中排列的先後位置,B分區的選擇策略使用者確定mv訊息的使用優先順序和mv訊息在mv候選清單中排列的先後位置,使用優先順序越高在mv候選清單中位置越靠前。當A分區和B分區的選擇策略不相同時,需要為A分區和B分區建構不同的mv候選清單;當A分區和B分區的選擇策略相同時,可以為A分區和B分區建構同一個mv候選清單。
在一些實施例中,所述構建GPM運動訊息候選清單之後,所述方法還包括:當所述GPM運動訊息候選清單的候選項數量大於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,以及所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息和所述第二索引訊息寫入位元流。編碼器將位元流發送給解碼器,解碼器解析位元流確定運動訊息候選清單中第一分區的運動訊息的第一索引訊息,以及第二分區的運動訊息的第二索引訊息,進一步根據索引訊息從解碼端建立的運動訊息候選清單中獲取各個分區的運動訊息。
在另一些實施例中,所述構建GPM運動訊息候選清單之後,所述方法還包括:當所述GPM運動訊息候選清單的候選項數量等於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,或者所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息或者所述第二索引訊息寫入位元流。編碼器將位元流發送給解碼器,解碼器解析位元流確定運動訊息候選清單中第一分區的運動訊息的第一索引訊息,由於運動訊息候選清單只包含兩個候選項,因此,當根據第一索引訊息確定第一分區的運動訊息之後,另一個候選項中的運動訊息肯定是第二分區的運動訊息。解碼器解析位元流確定運動訊息候選清單中第二分區的運動訊息的第二索引訊息,同理。
也就是說,當運動訊息候選清單中候選項的數量大於2則解碼器需要將第一索引訊息和第二索引訊息同時寫入位元流,以指示解碼器根據索引訊息獲取各個分區的運動訊息;當運動訊息候選清單中候選項的數量等於2則解碼器只需要將一個索引訊息寫入位元流,解碼端便可以根據一個索引訊息獲取各個分區的運動訊息;當運動訊息候選清單中候選項的數量小於2則解碼器只需要將一個索引訊息寫入位元流,用於指示該候選項是那個分區的候選項。
步驟104:根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
具體的,確定當前塊的幀間預測值的方法包括:從所述GPM運動訊息候選清單中,獲取用於所述當前塊第一分區的運動訊息,以及用於所述當前塊第二分區的運動訊息;利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;對所述第一預測值和所述第二預測值進行加權融合,得到當前塊的幀間預測值。
實際應用中,該方法還包括:編碼器獲取當前塊內像素點對應的權重索引絕對訊息,根據該當前塊內像素點對應的權重索引和當前塊內像素點對應的權重索引絕對訊息,確定出與權重索引絕對訊息對應的權重值,再基於權重索引絕對訊息對應的權重值,從當前塊內像素點中確定出第一分區的第一像素點的權重值和第二分區的第二像素點的權重值,然後根據和第一分區的第一像素點的權重值和第二分區的第二像素點的權重值,確定出第一分區對應的當前塊內像素點的第一權重值,最後根據第一權重值,確定出第二分區對應的當前塊內像素點的第二權重值。
在本申請實施例中,編碼器可以根據每個像素點的第一預測值與第一權重值相乘,加上對應的每個像素點的第二預測值與第二權重值之積,完成對當前塊內像素點的加權融合,得到當前塊的幀間預測值。
具體的,mv候選清單建立之後,兩個分區(先A分區後B分區)的mv獲取步驟包括以下:
merge_gpm_idx0[ x0 ][ y0 ],表示A分區的mv在merge清單中的位置;
令m = merge_gpm_idx0[ xCb ][ yCb ],等待後續處理。
merge_gpm_idx1[ x0 ][ y0 ] ,代表B分區的mv在merge清單中的位置,B分區的mv在merge清單中的位置可能因為A先選去了靠前位置的選項,而減小1。
令n = merge_gpm_idx1[ xCb ][ yCb ] + ( merge_gpm_idx1[ xCb ][ yCb ] >= m ) ? 1 : 0,n表示的就是B分區選擇的mv在merge候選清單中的實際位置,等待後續處理。
以圖10為例,加入序號0對應的list0中的mv訊息,與序號1的list1對應的mv訊息恰好相同,在重構的mv候選清單中它們將對應同一個選項,m為第一索引訊息,n為第二索引訊息,m和n對應的是圖11方塊內0-3的序號。
令M = mergeGPMCandList [ m ],從GPM模式的mv候選清單中取出第m項用於A分區的mv建構。將相應的mv訊息存入給A分區的處理變數,準備後續的預測塊建構。
mvA[ 0 ] = mvGPMM[ 0 ]
mvA[ 1 ] = mvGPMM[ 1 ]
refIdxA = refIdxGPMM
predListFlagA = predListFlagGPMM
其中mvA為mv向量,refIdxA為該運動向量對應的參考幀,predListFlagA表示當前選用了該運動向量備選項的哪個list中的分量。
令N = mergeCandList[ n ] ,從GPM模式的mv候選清單取出第n項用於B分區的mv建構。
mvB[ 0 ] =mvGPMN[ 0 ]
mvB[ 1 ] =mvGPMN[ 1 ]
refIdxB = refIdxGPMN
predListFlagB =predListFlagGPMN
其中mvB為mv向量,refIdxB為該運動向量對應的參考幀,predListFlagB表示當前選用了該運動向量備選項的哪個list中的分量。
本申請實施例還提供了另一種GPM運動訊息候選清單的建構方法,步驟202具體還可以包括:按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
以圖10中merge清單為例,從上到下,從左到右依次獲取merge清單中list0中的單向運動訊息和list1中的可用的單向運動訊息,將所有可用的單向運動訊息按照merge清單中候選項的添加順序依次添加到GPM運動訊息候選清單中,無需區分list0和list1的使用優先順序。
這裡,mv可用是指目標位置儲存有運動訊息,如果當前塊的相鄰塊的mv是單向的,list0和list1中只有一個儲存有運動訊息,另一個沒有儲存運動訊息,儲存運動訊息的參考清單中的運動訊息即為可用,沒有儲存運動訊息的參考清單中的mv即為不可用。如果,當前塊的相鄰塊的mv是雙向的,則list0和list1中的mv均可用。
進一步的,在利用merge清單中所有可用運動訊息構建運動訊息候選清單之前,同樣需要對merge清單中可用運動訊息進行去重複訊息的處理,即檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果。
相應的,步驟204具體包括:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
也就是說,在獲取到merge清單中的可用的第一運動訊息之後,若運動訊息候選清單中已經儲存在相同的第二運動訊息,則不需要將第一運動訊息作為GPM的候選項;若不存在相同的第二運動訊息,則將第一運動訊息作為GPM的候選項。
圖12為本申請實施例中GPM運動訊息候選清單的第二組成結構示意圖,若圖10的merge清單中的陰影區域中的mv訊息均可用,對merge清單中可用的mv訊息查重後,沒有重合的mv訊息則將merge清單中5個陰影區域中的mv儲存到mv候選清單中。圖12中mv候選清單候選項為5項,序號為0-4。
需要說明的是,若圖10中白色區域中也包含可用的mv訊息,則同樣需要取出白色區域中的可用mv訊息,進行後續的查重去重操作並建立mv候選清單,mv候選清單中候選項的數量可能大於5。
上述方案中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息。也就是說,對merge清單進行查重去重操作之後,直接利用merge清單中的運動訊息建立運動訊息候選清單。
本申請另一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息。也就是說,對merge清單進行查重去重操作之後,利用merge清單中的運動訊息的索引訊息建立運動訊息候選清單。
相應的,上述步驟204可以替換為:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
也就是說,在獲取到merge清單中的第一運動訊息之後,若運動訊息候選清單中已經儲存在相同的第二運動訊息,則不需要將第一運動訊息作為GPM的候選項;若不存在相同的第二運動訊息,則將第一運動訊息作為GPM的候選項。
具體的查重去重步驟包括:輸入為普通merge清單mergeCandList,輸出為mv候選清單映射表mergeGPMCandMapList。
對i=0~MaxNumGpmMergeCand-1,j=0~MaxNumGpmMergeCand-1,MaxNumGpmMergeCand表示merge清單中候選項的最大數,i表示mv候選清單中第二mv訊息的序號,j表示merge清單中第一mv訊息的序號,實施以下操作:
令X=(j & 0x01),其中,X為參考清單指示訊息,用於指示list0和list1的使用優先順序,X=0表示優先使用list0中的mv訊息,X=1表示優先使用list1中的mv訊息,&為位元與運算,即取出j的最後一個位元位(類似於同位)。這樣,優先使用X對應的參考清單中的參考幀對應的mv訊息predFlagLXM用於分區預測,如圖10中的陰影區域對應的選項。如果相應的mv不可用(相鄰塊的mv本身也可能是單向的),才使用對向位置的mv(與陰影區域水平對應的空白區域中表示的mv),即X=1-X。
檢驗當前普通merge清單中的第LXj項與mv候選清單的第0~i-1項是否有重合,如果有,i不變,j自增1;如果沒有,則執行下面的語句:
mergeGPMCandMapList [i][0] = j
mergeGPMCandMapList [i][1] = X
然後i和j各自自增1.當j增加到MaxNumGpmMergeCand,則執行結束。
在一些實施例中,若i還沒有達到MaxNumGpmMergeCand-1,而j已經增加到MaxNumGpmMergeCand則後續補值為0的mv訊息映射訊息,或重複在此之前存入的最後一個候選項的mv訊息映射訊息。
該過程的一個例子如圖13所示。
以圖10為例,若圖10的merge清單中的序號0的list0對應的mv訊息,與序號1的list1對應的mv訊息恰好相同,即雙向箭頭所指的兩個陰影區域,在重構的mv候選清單中它們將對應同一個選項,即merge清單中序號0和1中的兩個單向mv訊息進行去重操作後,建立mv候選清單。圖13為本申請實施例中GPM運動訊息候選清單的第三組成結構示意圖,圖13中映射的是merge清單中mv訊息的二元組訊息(j,X),j為merge清單的序號,j取0-4,X為參考清單指示訊息,X取0或1。序號為0的二元組(0,0)對應merge清單的第L00項,序號為0的二元組(2,0)對應merge清單的第L20項,序號為0的二元組(3,1)對應merge清單的第L31項,序號為0的二元組(4,0)對應merge清單的第L40項。
在另一些實施例中,上述步驟204還可以替換為:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息;所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
也就是說,在獲取到merge清單中的第一mv訊息之後,若mv候選清單中已經儲存在相同的第二mv訊息,則獲取第一mv訊息所在位置的物件位置中儲存的第一mv訊息,以圖10為例,第一mv訊息為merge清單中第一行的第一列中的第一mv訊息(即第L00項),獲取到第L00項後,如果第L00項與mv候選清單中第0~i-1項有重合,為了使mv候選清單中的mv訊息更豐富,需要在獲取對向位置即第一行的第二列中的第一mv訊息(即第L01項),再利用物件位置的第一mv訊息更新mv候選清單。
在一些實施例中,所述利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單,包括:對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單;或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
這裡,對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單,即檢測物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略物件位置的第一運動訊息。
這裡,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中,即無需對物件位置的第一運動訊息進行去重複訊息的處理,直接將物件位置的第一運動訊息的映射訊息添加到運動訊息候選清單中。
在一些實施例中,所述構建GPM運動訊息候選清單之後,所述方法還包括:當所述GPM運動訊息候選清單的候選項數量大於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,以及所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息和所述第二索引訊息寫入位元流。
或者,當所述GPM運動訊息候選清單的候選項數量等於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,或者所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息或者所述第二索引訊息寫入位元流。
這裡,第一索引訊息用於指示運動訊息候選清單中第一分區的運動訊息的映射訊息,第二索引訊息用於指示運動訊息候選清單中第二分區的運動訊息的映射訊息。
實際應用中,所述構建GPM運動訊息候選清單之後,所述方法還包括:從所述GPM運動訊息候選清單中,獲取用於所述當前塊第一分區的運動訊息的第一映射訊息,以及用於所述當前塊第二分區的運動訊息的第二映射訊息;再從merge候選清單中獲取第一映射訊息對應的運動訊息,以及第二映射訊息對應的運動訊息;利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;對所述第一預測值和所述第二預測值進行加權融合,得到當前塊的幀間預測值。
具體的,mv候選清單建立之後,兩個分區(先A分區後B分區)的mv獲取步驟包括以下:
merge_gpm_idx0[ x0 ][ y0 ],表示A分區的mv在merge清單中的位置;
令m = merge_gpm_idx0[ xCb ][ yCb ],等待後續處理。
merge_gpm_idx1[ x0 ][ y0 ] ,代表B分區的mv在merge清單中的位置,B分區的mv在merge清單中的位置可能因為A先選去了靠前位置的選項,而減小1。
令n = merge_gpm_idx1[ xCb ][ yCb ] + ( merge_gpm_idx1[ xCb ][ yCb ] >= m ) ? 1 : 0,n表示的就是B分區選擇的mv在merge候選清單中的實際位置,等待後續處理。
如圖10所示例子,加入序號0對應的list0中的mv訊息,與序號1的list1對應的mv訊息恰好相同,在重構的mv候選清單中它們將對應同一個選項,m為第一索引訊息,n為第二索引訊息,m和n對應的是圖13中序號0-3,根據序號得到一個二元組訊息,該二元組訊息能夠映射merge清單中的一個候選項。
令M = mergeCandList [ mergeGPMCandMapList [m][0] ],X= mergeGPMCandMapList [m][1], 從GPM模式mv候選清單中取出第m項用於A分區的mv建構。將相應的mv訊息存入給A分區的處理變數,準備後續的預測塊建構。
mvA[ 0 ] = mvLXM[ 0 ]
mvA[ 1 ] = mvLXM[ 1 ]
refIdxA = refIdxLXM
predListFlagA = X
其中mvA為mv向量,refIdxA為該運動向量對應的參考幀,predListFlagA表示當前選用了該運動向量備選項的哪個list中的分量。
令N = mergeCandList[ mergeGPMCandMapList [n][0] ] ,X= mergeGPMCandMapList [n][1], 從GPM模式的mv候選清單取出第n項用於B分區的mv建構。
mvB[ 0 ] = mvLXN[ 0 ]
mvB[ 1 ] = mvLXN[ 1 ]
refIdxB = mvLXN
predListFlagB = X
其中mvB為mv向量,refIdxB為該運動向量對應的參考幀,predListFlagB表示當前選用了該運動向量備選項的哪個list中的分量。
上述mv候選清單也可以由一項組成:
mergeGPMCandMapList [i] = j<<1+X
對應的兩個分區(先A分區後B分區)的mv獲取步驟中從其中取出資料的時候就可以如下進行:
令M=mergeCandList[mergeGPMCandMapList [m]]>>1],X= mergeGPMCandMapList [m]&0x01,…
令N=mergeCandList[ mergeGPMCandMapList [n]>>1 ],X= mergeGPMCandMapList [n]&0x01,…
其中的&為位與操作,&0x01即取出最後一個位元的意思。
採用上述方案,利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
基於本申請上述幀間預測方法,提供了一種具體的幀間預測實現過程,該過程包括:
第一步:使用條件與語法解析
需要說明的是,目前在VTM8.0中,每個當前塊對應的編碼單元對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預測模式。
當前塊對應的編碼單元層語法描述如表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_idx0[x0][y0],表示A分區的mv在merge清單中的位置,merge_gpm_idx1[x0][y0],表示B分區的mv在merge清單中的位置,MaxNumGpmMergeCand由查重去重後的表長所確定。
按照圖7的建構順序進行merge清單建構,能夠得到當前塊的merge清單。建構merge候選清單,與常規merge模式下建構清單的過程一致。其建構順序為:Merge候選清單中相鄰塊的建構順序為:上側相鄰塊B1,左側相鄰塊A1,右上側相鄰塊B0,左下側相鄰塊A0,左上側相鄰塊B2,參考幀對應位置塊col為相鄰塊的運動向量訊息依次排列,且區分不同方向來源。需要說明的是,merge清單中還可以添加歷史參考塊his,第一、第二候選mv的平均mv avg,以及零運動向量0。
第二步:對第一步構建的merge清單進行查重去重後構建mv候選清單。
具體的採用本申請上述實施例中給出的任意一種候選清單的構建方法進行構建,這裡不再贅述。
第三步:兩個分區(先A分區後B分區)的mv獲取
(a)當mv候選清單中包括mv訊息時,兩個分區的mv獲取步驟包括以下:
merge_gpm_idx0[ x0 ][ y0 ],表示A分區的mv在merge清單中的位置;
令m = merge_gpm_idx0[ xCb ][ yCb ],等待後續處理。
merge_gpm_idx1[ x0 ][ y0 ] ,代表B分區的mv在merge清單中的位置,B分區的mv在merge清單中的位置可能因為A先選去了靠前位置的選項,而減小1。
令n = merge_gpm_idx1[ xCb ][ yCb ] + ( merge_gpm_idx1[ xCb ][ yCb ] >= m ) ? 1 : 0,n表示的就是B分區選擇的mv在merge候選清單中的實際位置,等待後續處理。
以圖10為例,加入序號0對應的list0中的mv訊息,與序號1的list1對應的mv訊息恰好相同,在重構的mv候選清單中它們將對應同一個選項,m和n對應的是圖11方塊內0-3的序號。
令M = mergeGPMCandList [ m ],從GPM模式mv候選清單中取出第m項用於A分區的mv建構。將相應的mv訊息存入給A分區的處理變數,準備後續的預測塊建構。
mvA[ 0 ] = mvGPMM[ 0 ]
mvA[ 1 ] = mvGPMM[ 1 ]
refIdxA = refIdxGPMM
predListFlagA = predListFlagGPMM
其中mvA為mv向量,refIdxA為該運動向量對應的參考幀,predListFlagA表示當前選用了該運動向量備選項的哪個list中的分量。
令N = mergeCandList[ n ] ,從GPM模式的mv候選清單取出第n項用於B分區的mv建構。
mvB[ 0 ] =mvGPMN[ 0 ]
mvB[ 1 ] =mvGPMN[ 1 ]
refIdxB = refIdxGPMN
predListFlagB =predListFlagGPMN
其中mvB為mv向量,refIdxB為該運動向量對應的參考幀,predListFlagB表示當前選用了該運動向量備選項的哪個list中的分量。
(b)當mv候選清單中包括mv訊息的映射訊息時,兩個分區的mv獲取步驟包括以下:
merge_gpm_idx0[ x0 ][ y0 ],表示A分區的mv在merge清單中的位置;
令m = merge_gpm_idx0[ xCb ][ yCb ],等待後續處理。
merge_gpm_idx1[ x0 ][ y0 ] ,代表B分區的mv在merge清單中的位置,B分區的mv在merge清單中的位置可能因為A先選去了靠前位置的選項,而減小1。
令n = merge_gpm_idx1[ xCb ][ yCb ] + ( merge_gpm_idx1[ xCb ][ yCb ] >= m ) ? 1 : 0,n表示的就是B分區選擇的mv在merge候選清單中的實際位置,等待後續處理。
如圖10所示例子,加入序號0對應的list0中的mv訊息,與序號1的list1對應的mv訊息恰好相同,在重構的mv候選清單中它們將對應同一個選項,m和n對應的是圖13中序號0-3,而映射得到的是方塊內的二元組訊息。
令M = mergeCandList [ mergeGPMCandMapList [m][0] ],X= mergeGPMCandMapList [m][1], 從GPM模式mv候選清單中取出第m項用於A分區的mv建構。將相應的mv訊息存入給A分區的處理變數,準備後續的預測塊建構。
mvA[ 0 ] = mvLXM[ 0 ]
mvA[ 1 ] = mvLXM[ 1 ]
refIdxA = refIdxLXM
predListFlagA = X
其中mvA為mv向量,refIdxA為該運動向量對應的參考幀,predListFlagA表示當前選用了該運動向量備選項的哪個list中的分量。
令N = mergeCandList[ mergeGPMCandMapList [n][0] ] ,X= mergeGPMCandMapList [n][1],從GPM模式的mv候選清單取出第n項用於B分區的mv建構。
mvB[ 0 ] = mvLXN[ 0 ]
mvB[ 1 ] = mvLXN[ 1 ]
refIdxB = mvLXN
predListFlagB = X
其中mvB為mv向量,refIdxB為該運動向量對應的參考幀,
predListFlagB表示當前選用了該運動向量備選項的哪個list中的分量。
上述mv候選清單也可以由一項組成:
mergeGPMCandMapList [i] = j<<1+X
對應的兩個分區(先A分區後B分區)的mv獲取步驟中從其中取出資料的時候就可以如下進行:
令M=mergeCandList[mergeGPMCandMapList [m]]>>1],X=
mergeGPMCandMapList [m]&0x01,…
令N=mergeCandList[ mergeGPMCandMapList [n]>>1 ],X=
mergeGPMCandMapList [n]&0x01,…
其中的&為位與操作,&0x01即取出最後一個位元的意思。
第四步:編碼器GPM預測過程
下面對VVC Draft8相應的編碼器中的GPM模式預測過程進行詳細介紹:
圖14為本申請實施例中GPM模式預測流程示意圖,預測流程的輸入包括:
a luma location( xCb,yCb )
cbWidth,cbHeight
1/16 fractional-sample accuracy mvA and mvB
mvCA and mvCB
refidxA and refidxB
predListFlagA and predListFlagB.
針對輸入訊息預測流程具體包括:
S1:計算兩個分區的單向預測值
GPM模式重用現有的常規Merge清單,按照同位的方式建構屬於GPM的單向Merge清單,GPM劃分後的兩個子分區各自的Merge候選都是從該單向Merge候選清單中選出的。
然後為L、Cb、Cr三個分量推導參考幀清單refPicLN、亞像素預測像素值predSamplesLN,N為A或B。該步驟同一般Inter預測技術相同。即用現有的運動補償方式,計算得到兩個分區各自的單向運動補償預測值,用於後面GPM最終的加權融合過程。這裡的運動補償和常規運動補償過程一樣,即透過運動向量找到相應的區域的像素值並複製。
S2:獲取GPM模式的角度和步長
當前預測塊是GPM模式時,會根據當前塊選中的劃分模式索引merge_gpm_partition_idx去查表得到對應的角度angleIdx和步長distanceIdx,該劃分模式的映射表如表1所示。
S3:為L、Cb、Cr三個分量推導加權預測像素值predSamples
S3.1:當前亮度塊預測值的計算
S3.1.1:透過對預定義的權重矩陣裁剪獲取當前亮度塊的權重遮罩矩陣:
1)首先權重矩陣的獲取需要透過當前塊以及當前塊的劃分模式去計算當前塊的左上角對應於座標原點的偏移值Offset(x,y),而座標原點處於同樣角度分割線穿過幾何中心點的同樣尺寸塊的幾何中心點。
圖15為本申請實施例中當前塊的劃分方式示意圖,如圖15所示,虛線表示分割線,其中白色背景是根據目前的限定條件,陰影區域為當前塊,透過當前塊以及當前塊的劃分模式去計算當前塊的左上角對應於座標原點的偏移值(OffsetX,OffsetY),進而確定最大尺寸塊(64x64)相對該坐標系的最大移動範圍(112x112)。如果分割線不經過塊中心點,那麼就保持分割線相對位置不動,移動該塊在坐標系中的位置,從而得到恰當的分割。
下面是偏移值計算所需要用到的核心參數:
因為點(x1,y1)到線的距離,首先需要獲取當前角度所對應的中的索引號displacementX,以及對應的對應的的索引號displacementY。
displacementX= angleIdx; (1)
displacementY=(displacementX + 8)%32; (2)
其中,建構預定義權重矩陣時所使用的步長僅僅為第一個步長(即分割線一定與塊的中心點相交)。
由於A分區和B分區在位元流中相關訊息的傳輸是有先後順序的,從而使得在兩個分區的順序安排上必須遵循一定的原則,即透過下式來計算partFlip值,具體如下所示:
partFlip = ( angleIdx >=13 && angleIdx <= 27 ) ? 0 : 1 (3)
其中,partFlip用於指示A分區和B分區在當前塊內的分佈位置。具體地,partFlip為0,表示後續(8)式中得到的點與分割線距離weightIdx為負值的一側為A分區,分割線對側為B分區;partFlip為為1時則相反,即weightIdx為正值的一側為A分區,其對側(即負值一側)為B分區。
透過下面兩式計算獲得關鍵參數shiftHor:
hwRatio = nH/nW (4)
即CU的高/CU的寬
shiftHor = ( angleIdx % 16 = = 8 | | ( angleIdx % 16 != 0 && hwRatio > 0 ) ) ? 0 : 1 (5)
shiftHor的含義是在同一角度下不同分割線之間的位移方向的確定,如其值為0,分割線將在Y軸上偏移;其值為1,分割線將在X軸上偏移。
然後根據當前預測塊的尺寸和劃分訊息,用式(6~7)計算當前預測塊的偏移值offsetX和offsetY:
如果 shiftHor==0,這時候當前塊在垂直方向上存在與當前塊的高度相關的偏移值,此時的偏移訊息如下所示:
offsetX = (− nW ) >> 1
offsetY =((− nH ) >> 1)+ angleIdx < 16 ? (distanceIdx * nH) >> 3 : −((distanceIdx * nH) >> 3) (6)
如果偏移方向標識值等於1,即shiftHor等於1,這時候當前塊在垂直方向上存在與當前塊的寬度相關的偏移值,此時的偏移訊息如下所示:
offsetX =((− nW ) >> 1 )+ angleIdx < 16 ? (distanceIdx * nW) >> 3 : −((distanceIdx * nW) >> 3)
offsetY = (− nH ) >> 1 (7)
其中,“>>”表示右移運算子,nW表示當前塊的寬度,nH表示當前塊的高度。
2)在確定出偏移訊息offsetX和offsetY後,透過當前塊內像素點位置可以計算當前像素點處的權重索引值(用weightIdx表示),進而透過式(8~10)能夠計算出當前像素點處的權重值,以得到當前塊的權重矩陣。
weightIdx = (((x * subW + offsetX)<<1) + 1)*disLut[displacementX]
+ (((y * subH + offsetY )<<1) + 1)*disLut[displacementY]. (8)
weightIdxL = partFlip?32 + weightIdx:32 – weightIdx (9)
wValue = Clip3(0, 8, ( weightIdxL + 4 )>> 3 ) (10)
其中,clip3表示鉗位運算子,0表示下界值,8表示上界值,比如clip3(i,j,x)表示:當x小於i時,其取值為i;當x大於j時,其取值為j;當x大於或等於i且小於或等於j時,其取值為x。
另外,表3提供了一種幾何分割線距離排列查閱資料表示例,式(8)中所使用的disLut[]如表3所示,subW和subH表示下取樣速率,如果當前塊的YUV格式為420格式,subW和subH都可以為2。其中使用的disLut[]如表3所示。subW和subH表示下取樣速率,如果是420格式,subW和subH都為2。亮度不需要下採樣,色度權重是對亮度權重下採樣得到的,見S3.2節。
表3.
idx | 0 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 11 | 12 | 13 | 14 |
disLut [idx] | 8 | 8 | 8 | 4 | 4 | 2 | 0 | −2 | −4 | −4 | −8 | −8 |
idx | 16 | 18 | 19 | 20 | 21 | 22 | 24 | 26 | 27 | 28 | 29 | 30 |
disLut [idx] | −8 | −8 | −8 | −4 | −4 | −2 | 0 | 2 | 4 | 4 | 8 | 8 |
這裡,weightIdx絕對值越小,表明了當前像素點距離分區的邊緣越近,該像素點處在A、B兩個分區上的權重分佈越平均。
S3.1.2:對兩個分區的單向預測值進行逐像素加權,得到最終的GPM預測塊,具體加權的計算如式(11)所示:
pbSamples[ x ][ y ] = Clip3( 0, ( 1 << BitDepth ) − 1, ( predSamplesLA[ x ][ y ] * wValue +
predSamplesLB[x][y]*(8− wValue )+offset1 )>>shift1 ) (11)
其中,BitDepth表示位元深度,offset1用於四捨五入,shift1用於使得加權平均後的預測值恢復到與輸入影像相同的位元深度;而offset1和shift1的計算如式(12~13)所示:
shift1=Max( 5, 17 − BitDepth (12)
offset1=1<<( shift1−1 ) (13)
S3.2:當前色度塊(Cb和Ct)預測值的計算
透過獲取圖16a中每個2*2塊的左上角的亮度樣本權重直接作為當前(x,y)處的色度樣本權重,即對亮度樣本權重進行下採樣,得到圖16b當前塊色度權重矩陣。色度加權的計算也如式(11)所示。
亮度和色度權重矩陣的採樣關係如圖16a和圖16b所示。
S4:儲存mv訊息用於後續預測mvN、refidxN、predListFlagN
該儲存過程是利用當前亮度塊的運動遮罩矩陣來實現的,預測值完全來自於A分區的,則記錄A分區的運動向量,完全來自於B分區的,記錄B分區的運動向量;否則同時記錄兩個分區的運動向量。運動遮罩的計算同計算亮度權重矩陣的過程基本一致,首先計算偏移值offset,該offset的計算如式(14~17)所示:
如果偏移方向標識值等於0,即shiftHor等於0,這時候的偏移訊息如下所示:
offsetX = ( −cbWidth ) >> 1 (14)
offsetY = ((−cbHeight )>>1) +
( angleIdx < 16 ? ( distanceIdx * cbHeight ) >>3:−( ( distanceIdx * cbHeight )>>3 ) ) (15)
如果偏移方向標識值等於1,即shiftHor等於1,這時候的偏移訊息如下所示:
offsetX = ( ( −cbWidth ) >> 1 ) +
( angleIdx < 16 ? ( distanceIdx * cbWidth ) >> 3 : −( ( distanceIdx * cbWidth ) >>3 ) ) (16)
offsetY = ( −cbHeight ) >> 1 (17)
其中,cbWidth和cbHeight是GPM預測塊對應的運動遮罩矩陣的寬度和高度(即當前塊亮度分量的寬度和高度)。
由於GPM預測塊的運動遮罩矩陣仍是以4×4子塊為單位進行計算的,那麼每個4×4子塊的幾何中心位置(4i+2, 4j+2)處的運動索引值(可以用motionIdx表示)的計算類似於式(8)權重索引值weightIdx的計算,具體如下所示,
motionIdx=(((4*xSbIdx + offsetX) <<1) + 5)*disLut[displacementX]
+ (((4*ySbIdx + offsetY) <<1) + 5)*disLut[displacementY] (18)
然後,再確定當前4×4的子塊需要儲存的mv訊息。同預測加權時一樣,需要首先確定出當前子塊處於A分區還是B分區。
partIdx = ( angleIdx >= 13 && angleIdx <= 27 ) ? 0 : 1 (19)
其中(xSbIdx, ySbIdx)表示每個4×4子塊(subblock,sb)在當前CU中的子塊座標。座標的範圍為xSbIdx = 0..numSbX – 1和 ySbIdx = 0..numSbY – 1。partIdx表示是否需要對兩個分區進行翻轉。
sType = abs( motionIdx ) < 32 ? 2 : ( motionIdx <=0 ? ( 1 − partIdx ) : partIdx ) (20)
預測流程的輸出包括:預測像素值predSamplesL、predSamplesCb和predSamplesCr。
如此,根據每個4×4子塊的幾何中心位置(4i+2, 4j+2)處abs(motionIdx)的大小,來判斷當前子塊儲存單向mv還是雙向mv;具體判斷過程如下:
如果sType 為2,當前塊儲存建構的雙向mv;
否則,如果sType為0,當前塊儲存第一個分區的mvA;
如果sType 為1,當前塊儲存第二個分區的mvB;
這些儲存下來的mv訊息將用於後續編碼塊的mv預測。
第五步、編碼器針對GPM預測模式相關語法的編碼過程
編碼器中將GPM與其他幀間預測模式視為相互競爭的模式,依照位元率失真最佳化(RDO)或其他策略在模式之間進行選擇,將選擇的結果以位元流中語法元素的形式傳送給解碼端。即1)節中所述語法的寫入操作。該過程與解析過程相反,首先得到的m和n這兩個A、B分區各自在merge清單中所選擇的參考選項位置訊息,然後再依照下式對語法元素進行賦值。
merge_gpm_idx0[xCb][yCb]=m
merge_gpm_idx1[xCb][yCb]=n-(merge_gpm_idx1[xCb][yCb]>=m)?1:0
再對其進行二值化、熵編碼,從而最終寫入位元流傳輸。
圖17為本申請實施例提供的幀內預測方法的第二流程示意圖,應用於解碼器,如圖17所示,該方法包括:
步驟301:解析位元流,確定當前塊的預測模式參數;
步驟302:當預測模式參數指示當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構當前塊的融合merge候選清單;
步驟303:根據當前塊的merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,構建過程包括對第一運動訊息進行去重複訊息的處理;
步驟304:根據GPM運動訊息候選清單,確定當前塊的幀間預測值。
在一些實施例中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括:初始化當前塊的GPM運動訊息候選清單;按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息;檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
在一些實施例中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括:按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
也就是說,按照相鄰塊的建構順序在merge清單中從上往下選擇每一項中參考清單指示訊息所指示的list0或list1中的第一運動訊息,並對取出的第一運動訊息進行查重去重處理。
在一些實施例中,所述按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息,包括:按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置;若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息;若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
在另一些實施例中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括:按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
在一些實施例中,具體的去重步驟可以包括:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
在一些實施例中,具體的去重步驟還可以包括:所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
在一些實施例中,所述利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單,包括:對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單;或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
這裡,對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單,即檢測物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將物件位置的第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵物件位置的第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略物件位置的第一運動訊息。
這裡,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中,即無需對物件位置的第一運動訊息進行去重複訊息的處理,直接將物件位置的第一運動訊息添加到運動訊息候選清單中。
在一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息,或者儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息。
在一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息時,所述將所述第一運動訊息添加到所述GPM運動訊息候選清單中,包括:將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息。
在一些實施例中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括:根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。
也就是說,先對當前塊的所述merge候選清單中的第一運動訊息進行查重去重處理,再分別根據A分區mv選擇策略,建構A分區的第一運動訊息候選清單;根據B分區的mv選擇策略,建構B分區的第二運動訊息候選清單。
需要說明的是,A分區的選擇策略使用者確定運動訊息的使用優先順序和運動訊息在運動訊息候選清單中的排列位置,B分區的選擇策略使用者確定運動訊息的使用優先順序和運動訊息在運動訊息候選清單中的排列位置,使用優先順序越高在運動訊息候選清單中位置越靠前。當A分區和B分區的選擇策略不相同時,需要為A分區和B分區建構不同的運動訊息候選清單;當A分區和B分區的選擇策略相同時,可以為A分區和B分區建構相同的運動訊息候選清單。
在一些實施例中,所述構建GPM運動訊息候選清單之後,所述方法還包括:解析位元流,確定所述GPM運動訊息候選清單中所述當前塊第一分區的運動訊息對應的第一索引訊息,以及所述當前塊第二分區運動訊息對應的第二索引訊息;基於所述第一索引訊息,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息;基於所述第二索引訊息,從所述GPM運動訊息候選清單中獲取所述第二分區的運動訊息;利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;對所述第一預測值和所述第二預測值進行加權融合,得到當前塊的幀間預測值。
具體的,解析位元流,當所述GPM運動訊息候選清單的候選項數量大於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息和所述第二分區運動訊息對應的第二索引訊息;
當所述GPM運動訊息候選清單的候選項數量等於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,或者所述第二分區運動訊息對應的第二索引訊息。
實際應用中,該方法還包括:編碼器獲取當前塊內像素點對應的權重索引絕對訊息,根據該當前塊內像素點對應的權重索引和當前塊內像素點對應的權重索引絕對訊息,確定出與權重索引絕對訊息對應的權重值,再基於權重索引絕對訊息對應的權重值,從當前塊內像素點中確定出第一分區的第一像素點的權重值和第二分區的第二像素點的權重值,然後根據和第一分區的第一像素點的權重值和第二分區的第二像素點的權重值,確定出第一分區對應的當前塊內像素點的第一權重值,最後根據第一權重值,確定出第二分區對應的當前塊內像素點的第二權重值。
在本申請實施例中,編碼器可以根據每個像素點的第一預測值與第一權重值相乘,加上對應的每個像素點的第二預測值與第二權重值之積,完成對當前塊內像素點的加權融合,得到當前塊的幀間預測值。
實際應用中,解碼器解析位元流獲取第一分區的第一索引訊息和第二分區的第二索引訊息,再根據索引訊息從解碼器建立的運動訊息候選清單中確定各自分區的運動訊息。解碼器端對merge清單查重去重操作構建GPM運動訊息候選清單的方法與解碼端相同,解碼器端的其他幀間預測過程與編碼器端相同,這裡不再贅述。
採用上述方案,解碼器在進行幀間預測的過程中,利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
本申請實施例提供一種編碼器,圖18為本申請實施例中編碼器的第一組成結構示意圖,如圖18所示,該編碼器40包括:
確定單元401,用於確定當前塊的預測模式參數;
第一建構單元402,用於當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
第一處理單元403,用於根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
第一預測單元404,用於根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
在本申請的一些實施例中,第一處理單元403,具體用於初始化當前塊的GPM運動訊息候選清單;按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息;檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
在本申請的一些實施例中,第一處理單元403,具體用於按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
在本申請的一些實施例中,第一處理單元403,具體用於按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置;若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息;若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
在本申請的一些實施例中,第一處理單元403,具體用於按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
在本申請的一些實施例中,第一處理單元403,具體用於所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;或者,所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
在本申請的一些實施例中,第一處理單元403,具體用於對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單;或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
在本申請的一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息,或者儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息。
在本申請的一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息時,第一處理單元403,具體用於將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息。
在本申請的一些實施例中,第一處理單元403,具體用於根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。
在本申請的一些實施例中,第一預測單元404,具體用於從所述GPM運動訊息候選清單中,獲取用於所述當前塊第一分區的運動訊息,以及用於所述當前塊第二分區的運動訊息;利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;對所述第一預測值和所述第二預測值進行加權融合,得到當前塊的幀間預測值。
在本申請的一些實施例中,所述編碼器40還包括:寫入單元(圖中未示出),寫入單元,用於當所述GPM運動訊息候選清單的候選項數量大於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,以及所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息和所述第二索引訊息寫入位元流;
寫入單元,還用於當所述GPM運動訊息候選清單的候選項數量等於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,或者所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息或者所述第二索引訊息寫入位元流。
在實際應用中,本申請實施例還提供了一種編碼器,圖19為本申請實施例中編碼器的第二組成結構示意圖如圖19所示,編碼器40包括:
第一記憶體405和第一處理器406;所述第一記憶體405儲存有可在第一處理器406上運行的電腦程式,所述第一處理器406執行所述程式時編碼器側的幀間預測方法。
採用上述方案,編碼器在進行幀間預測的過程中,利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
本申請實施例提供一種解碼器器,圖20為本申請實施例中解碼器的第一組成結構示意圖,如圖20所示,該解碼器50包括:
解析單元501,用於解析位元流,確定當前塊的預測模式參數;
第二建構單元502,用於當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;
第二處理單元503,用於根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理;
第二預測單元504,用於根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
在本申請的一些實施例中,第二處理單元503,具體用於初始化當前塊的GPM運動訊息候選清單;按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息;檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果;基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
在本申請的一些實施例中,第二處理單元503,具體用於按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
在本申請的一些實施例中,第二處理單元503,具體用於按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置;若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息;若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
在本申請的一些實施例中,第二處理單元503,具體用於按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
在本申請的一些實施例中,第二處理單元503,具體用於所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中;所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;或者,所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單;按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
在本申請的一些實施例中,第二處理單元503,具體用於對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單;或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
在本申請的一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息,或者儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息。
在本申請的一些實施例中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息時,第二處理單元503,具體用於將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息。
在本申請的一些實施例中,第二處理單元503,具體用於根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。
在本申請的一些實施例中,第二預測單元504,具體用於解析位元流,確定所述GPM運動訊息候選清單中所述當前塊第一分區的運動訊息對應的第一索引訊息,以及所述當前塊第二分區運動訊息對應的第二索引訊息;基於所述第一索引訊息,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息;基於所述第二索引訊息,從所述GPM運動訊息候選清單中獲取所述第二分區的運動訊息;利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值;對所述第一預測值和所述第二預測值進行加權融合,得到當前塊的幀間預測值。
在實際應用中,本申請實施例還提供了一種解碼器,圖21為本申請實施例中解碼器的第二組成結構示意圖,如圖21所示,解碼器50包括:
第二記憶體505和第二處理器506;所述第二記憶體505儲存有可在第二處理器506上運行的電腦程式,所述第二處理器506執行所述程式時解碼器側的幀間預測方法。
可以理解的是,解碼器在進行幀間預測的過程中,在利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
另外,在本實施例中的各功能模組可以集成在一個處理單元中,也可以是各個單元單獨實體存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。
相應的,本申請實施例提供了一種儲存媒介,其上儲存有電腦程式,該電腦程式被第一處理器執行時,實現編碼器的幀間預測方法;或者,該電腦程式被第二處理器執行時,實現解碼器的幀間預測方法。
這裡需要指出的是:以上儲存媒介和裝置實施例的描述,與上述方法實施例的描述是類似的,具有同方法實施例相似的有益效果。對於本申請儲存媒介和裝置實施例中未披露的技術細節,請參照本申請方法實施例的描述而理解。
以上所述,僅為本申請的實施方式,但本申請的保護範圍並不局限於此,任何熟悉本技術領域的技術人員在本申請揭露的技術範圍內,可輕易想到變化或替換,都應涵蓋在本申請的保護範圍之內。因此,本申請的保護範圍應以所述請求項的保護範圍為準。
工業實用性
本申請實施例中,確定當前塊的預測模式參數;當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單;根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。這樣,利用merge候選清單構建GPM運動訊息候選清單時,先對merge候選清單進行查重去重處理,再構建運動訊息候選清單,可以避免GPM運動訊息候選清單中存在重複的運動訊息,減小GPM運動訊息候選清單長度,提高了運動訊息的表達效率,從而提高影像編碼和解碼效率。
11:影像編碼系統
110:解碼圖像暫存單元
111:變換單元
112:量化單元
113:編碼控制邏輯單元
114:幀內預測單元
115:幀間預測單元
116:反量化單元
117:反變換單元
118:迴路濾波單元
119:編碼單元
21:影像解碼系統
211:解碼單元
212:反量化單元
213:幀內預測單元
214:運動補償單元
215:迴路濾波單元
216:解碼圖像暫存單元
217:反變換單元
40:解碼器
401:確定單元
402:第一建構單元
403:第一處理單元
404:第一預測單元
405:第一記憶體
406:第一處理器
50:編碼器
501:解析單元
502:第二建構單元
503:第二處理單元
504:第二預測單元
505:第二記憶體
506:第二處理器
101~104:步驟
201~204:步驟
301~304:步驟
A0:左下側相鄰塊
A1:左側相鄰塊
B0:右上側相鄰塊
B1:上側相鄰塊
B2:左上側相鄰塊
Co1:參考幀對應位置塊
圖1為本申請實施例提供的一種影像編碼系統的組成方塊圖示意圖;
圖2為本申請實施例提供的一種影像解碼系統的組成方塊圖示意圖;
圖3為本申請實施例提供的幀內預測方法的第一流程示意圖;
圖4a-4b為TPM模式兩種劃分示意圖;
圖5a-5g為GPM模式的7種劃分示意圖;
圖6為本申請實施例提供的示例性當前塊的角度和步長的示意圖;
圖7為本申請實施例中空間Merge候選清單的相鄰塊位置示意圖;
圖8為本申請實施例中merge清單的第一組成結構示意圖;
圖9為本申請實施例中去重處理方法的流程示意圖;
圖10為本申請實施例中merge清單的第二組成結構示意圖;
圖11為本申請實施例中GPM運動訊息候選清單的第一組成結構示意圖;
圖12為本申請實施例中GPM運動訊息候選清單的第二組成結構示意圖;
圖13為本申請實施例中GPM運動訊息候選清單的第三組成結構示意圖;
圖14為本申請實施例中GPM模式預測流程示意圖;
圖15為本申請實施例中當前塊的劃分方式示意圖;
圖16a為本申請實施例提供的示例性的亮度的權重值的示意圖;
圖16b為本申請實施例提供的示例性的色度的權重值的示意圖;
圖17為本申請實施例提供的幀內預測方法的第二流程示意圖;
圖18為本申請實施例中編碼器的第一組成結構示意圖;
圖19為本申請實施例中編碼器的第二組成結構示意圖
圖20為本申請實施例中解碼器的第一組成結構示意圖;
圖21為本申請實施例中解碼器的第二組成結構示意圖。
101~104:步驟
Claims (20)
- 一種幀間預測方法,應用於編碼器,包括: 確定當前塊的預測模式參數; 當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單; 根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理; 根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
- 根據請求項1所述的方法,其中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括: 初始化所述當前塊的GPM運動訊息候選清單; 按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息; 檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果; 基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
- 根據請求項2所述的方法,其中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
- 根據請求項3所述的方法,其中,所述按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置; 若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息; 若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
- 根據請求項2所述的方法,其中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
- 根據請求項2-5任一項所述的方法,其中,所述基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,包括: 所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中; 所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;或者,所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單; 按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
- 根據請求項6所述的方法,其中,所述利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單,包括: 對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單; 或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中。
- 根據請求項6所述的方法,其中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息,或者儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息;其中 所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息時,所述將所述第一運動訊息添加到所述GPM運動訊息候選清單中,包括: 將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息。
- 根據請求項1所述的方法,其中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括: 根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。
- 根據請求項1所述的方法,其中,所述根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值,包括: 從所述GPM運動訊息候選清單中,獲取用於所述當前塊第一分區的運動訊息,以及用於所述當前塊第二分區的運動訊息; 利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值; 對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值;以及 所述構建GPM運動訊息候選清單之後,所述方法還包括: 當所述GPM運動訊息候選清單的候選項數量大於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,以及所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息和所述第二索引訊息寫入位元流; 當所述GPM運動訊息候選清單的候選項數量等於2時,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息對應的第一索引訊息,或者所述第二分區運動訊息對應的第二索引訊息;將所述第一索引訊息或者所述第二索引訊息寫入位元流。
- 一種幀間預測方法,應用於解碼器,所述方法包括: 解析位元流,確定當前塊的預測模式參數; 當所述預測模式參數指示所述當前塊使用幾何劃分預測模式GPM確定幀間預測值時,建構所述當前塊的融合merge候選清單; 根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理; 根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值。
- 根據請求項11所述的方法,其中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括: 初始化所述當前塊的GPM運動訊息候選清單; 按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息; 檢測所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息是否重合,得到查重檢測結果; 基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,得到構建完成的GPM運動訊息候選清單。
- 根據請求項12所述的方法,其中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息;其中,所述參考清單指示訊息用於指示優先使用的第一參考清單的運動訊息或第二參考清單的運動訊息。
- 根據請求項13所述的方法,其中,所述按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序和參考清單指示訊息,確定所述merge候選清單的目標位置; 若所述目標位置中的第一運動訊息可用,獲取所述目標位置中儲存的第一運動訊息; 若所述目標位置中的第一運動訊息不可用,獲取所述目標位置的對向位置中儲存的第一運動訊息。
- 根據請求項12所述的方法,其中,所述按照預設的獲取策略,依次獲取所述merge候選清單中的第一運動訊息,包括: 按照所述merge候選清單中相鄰塊的建構順序,依次獲取所述merge候選清單中的所有可用的第一運動訊息。
- 根據請求項11-15任一項所述的方法,其中,所述基於所述查重檢測結果利用所述第一運動訊息更新GPM運動訊息候選清單,包括: 所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息不重合時,將所述第一運動訊息添加到所述GPM運動訊息候選清單中; 所述查重檢測結果表徵所述第一運動訊息與所述GPM運動訊息候選清單中的第二運動訊息重合時,忽略當前第一運動訊息;或者,所述查重檢測結果表徵所述第一運動訊息與所述第二運動訊息重合時,獲取所述第一運動訊息所在位置的對向位置中儲存的第一運動訊息,利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單; 按照預設的獲取策略,獲取所述merge候選清單中下一個第一運動訊息,並繼續對下一個第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單。
- 根據請求項16所述的方法,其中,所述利用所述對向位置中儲存的第一運動訊息更新GPM運動訊息候選清單,包括: 對所述對向位置中儲存的第一運動訊息進行去重複訊息的處理,以更新GPM運動訊息候選清單; 或者,將所述對向位置中儲存的第一運動訊息添加到所述GPM運動訊息候選清單中; 其中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息,或者儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息。
- 根據請求項17所述的方法,其中,所述GPM運動訊息候選清單中儲存所述merge候選清單中的至少部分第一運動訊息的映射訊息時,所述將所述第一運動訊息添加到所述GPM運動訊息候選清單中,包括: 將所述第一運動訊息的映射訊息添加到所述GPM運動訊息候選清單中;其中,所述第一運動訊息的映射訊息包括:第一運動訊息在所述merge候選清單中的序號和參考清單指示訊息。
- 根據請求項11所述的方法,其中,所述根據所述當前塊的所述merge候選清單中的第一運動訊息,構建GPM運動訊息候選清單,包括: 根據所述當前塊的所述merge候選清單中的第一運動訊息,分別構建所述當前塊第一分區對應的第一運動訊息候選清單,以及所述當前塊第二分區對應的第二運動訊息候選清單;其中,所述構建過程包括對所述第一運動訊息進行去重複訊息的處理。
- 根據請求項11所述的方法,其中,所述根據所述GPM運動訊息候選清單,確定所述當前塊的幀間預測值,包括: 解析位元流,確定所述GPM運動訊息候選清單中所述當前塊第一分區的運動訊息對應的第一索引訊息,以及所述當前塊第二分區運動訊息對應的第二索引訊息; 基於所述第一索引訊息,從所述GPM運動訊息候選清單中獲取所述第一分區的運動訊息; 基於所述第二索引訊息,從所述GPM運動訊息候選清單中獲取所述第二分區的運動訊息; 利用所述第一分區的運動訊息計算所述第一分區的第一預測值,利用所述第二分區的運動訊息計算所述第二分區的第二預測值; 對所述第一預測值和所述第二預測值進行加權融合,得到所述當前塊的幀間預測值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/083313 WO2021196211A1 (zh) | 2020-04-03 | 2020-04-03 | 一种帧间预测方法、编码器、解码器及存储介质 |
WOPCT/CN2020/083313 | 2020-04-03 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202139693A true TW202139693A (zh) | 2021-10-16 |
Family
ID=77930268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110109409A TW202139693A (zh) | 2020-04-03 | 2021-03-16 | 一種幀間預測方法、編碼器、解碼器及儲存媒介 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20230045687A1 (zh) |
EP (1) | EP4131955A4 (zh) |
CN (1) | CN115244925A (zh) |
TW (1) | TW202139693A (zh) |
WO (1) | WO2021196211A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023246868A1 (en) * | 2022-06-21 | 2023-12-28 | Beijing Bytedance Network Technology Co., Ltd. | Method, apparatus, and medium for video processing |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102415787B1 (ko) * | 2010-05-04 | 2022-06-30 | 엘지전자 주식회사 | 비디오 신호의 처리 방법 및 장치 |
CN113170174B (zh) * | 2018-11-30 | 2024-04-12 | 寰发股份有限公司 | 视频编码***中用于决定储存用运动向量的视频处理方法和装置 |
CN112565785B (zh) * | 2018-12-28 | 2022-04-26 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法及其设备 |
WO2021057996A1 (en) * | 2019-09-28 | 2021-04-01 | Beijing Bytedance Network Technology Co., Ltd. | Geometric partitioning mode in video coding |
-
2020
- 2020-04-03 EP EP20928595.6A patent/EP4131955A4/en active Pending
- 2020-04-03 WO PCT/CN2020/083313 patent/WO2021196211A1/zh unknown
- 2020-04-03 CN CN202080098331.7A patent/CN115244925A/zh active Pending
-
2021
- 2021-03-16 TW TW110109409A patent/TW202139693A/zh unknown
-
2022
- 2022-09-28 US US17/955,264 patent/US20230045687A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4131955A1 (en) | 2023-02-08 |
EP4131955A4 (en) | 2023-04-19 |
WO2021196211A1 (zh) | 2021-10-07 |
CN115244925A (zh) | 2022-10-25 |
US20230045687A1 (en) | 2023-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2683165C1 (ru) | Внутреннее предсказание блочного копирования с асимметричными разделами и схемами поиска на стороне кодера, диапазоны поиска и подходы к разделению | |
WO2021196235A1 (zh) | 帧间预测方法、编码器、解码器及存储介质 | |
TW201808006A (zh) | 基於幾何轉換之自適應迴路濾波 | |
KR20190014590A (ko) | 픽쳐 예측 방법 및 관련 장치 | |
TW202139700A (zh) | 一種幀間預測方法、編碼器、解碼器及儲存媒介 | |
WO2022104498A1 (zh) | 帧内预测方法、编码器、解码器以及计算机存储介质 | |
WO2021203841A1 (zh) | 一种帧间预测方法、编码器、解码器及存储介质 | |
US20230023856A1 (en) | Inter prediction method, encoder, decoder, and storage medium | |
WO2019114721A1 (zh) | 视频数据的帧间预测方法和装置 | |
CN108495139A (zh) | 屏幕内容编码的哈希块匹配 | |
CN113597767A (zh) | 预测方法、编码器、解码器及计算机存储介质 | |
CN109996083B (zh) | 帧内预测方法及装置 | |
KR20240038959A (ko) | 결합된 인터 및 인트라 예측을 수행하기 위한 방법 및 시스템 | |
WO2021238396A1 (zh) | 帧间预测方法、编码器、解码器以及计算机存储介质 | |
US20230045687A1 (en) | Inter Prediction Method, Encoder, Decoder, and Storage Medium | |
CA3222255A1 (en) | Decoding prediction method and apparatus, and computer storage medium | |
US20230080546A1 (en) | Inter Prediction Method, Encoder, Decoder and Storage Medium | |
WO2022116119A1 (zh) | 一种帧间预测方法、编码器、解码器及存储介质 | |
WO2021134627A1 (zh) | 一种帧间预测方法、编码器、解码器及存储介质 | |
WO2020063687A1 (zh) | 视频解码方法及视频解码器 | |
CN109889831A (zh) | 基于cu尺寸的360度视频帧内模式选择 | |
WO2024077569A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024119521A1 (zh) | 编解码方法、码流、编码器、解码器以及存储介质 | |
WO2024007120A1 (zh) | 编解码方法、编码器、解码器以及存储介质 | |
TW202425642A (zh) | 一種編解碼方法、裝置、編碼器、解碼器、儲存媒介及碼流 |