TWI838089B - 一種視頻解碼方法、裝置、視頻解碼器及存儲介質 - Google Patents

一種視頻解碼方法、裝置、視頻解碼器及存儲介質 Download PDF

Info

Publication number
TWI838089B
TWI838089B TW112102125A TW112102125A TWI838089B TW I838089 B TWI838089 B TW I838089B TW 112102125 A TW112102125 A TW 112102125A TW 112102125 A TW112102125 A TW 112102125A TW I838089 B TWI838089 B TW I838089B
Authority
TW
Taiwan
Prior art keywords
current block
bits
decoded
image
rate control
Prior art date
Application number
TW112102125A
Other languages
English (en)
Other versions
TW202337212A (zh
Inventor
王岩
陳方棟
曹小強
孫煜程
Original Assignee
大陸商杭州海康威視數字技術股份有限公司
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
Priority claimed from CN202210074669.XA external-priority patent/CN116095335A/zh
Application filed by 大陸商杭州海康威視數字技術股份有限公司 filed Critical 大陸商杭州海康威視數字技術股份有限公司
Publication of TW202337212A publication Critical patent/TW202337212A/zh
Application granted granted Critical
Publication of TWI838089B publication Critical patent/TWI838089B/zh

Links

Images

Abstract

本發明實施例提供一種視頻解碼方法、裝置、視頻解碼器及存儲介質,涉及視頻解碼技術領域,有助於節省碼流中的資源,提升碼流的傳輸效率。該方法包括:獲取待解碼圖像中當前塊的一個或多個碼率控制參數;根據一個或多個碼率控制參數確定當前塊的量化參數;基於當前塊的量化參數對當前塊進行解碼。

Description

一種視頻解碼方法、裝置、視頻解碼器及存儲介質
本發明涉及視頻解碼技術領域,尤其涉及一種視頻解碼方法和裝置、視頻解碼器以及存儲介質。
視頻編解碼技術在視頻傳輸與存儲領域發揮著重要的作用。其中,量化在視頻編解碼過程中是決定圖像品質的關鍵步驟。量化主要通過量化參數降低資料的冗餘,但同時可能帶來圖像失真的風險。當前,用於進行量化的量化參數在視頻編碼階段寫入碼流,視頻解碼端通過解析碼流中的量化參數,實現解碼。而量化參數在碼流中佔據較多資源,影響傳輸效率。
本發明實施例提供一種視頻解碼方法、裝置及存儲介質,有助於節省碼流中的資源,提升碼流的傳輸效率。
為達到上述目的,本發明實施例採用如下技術方案:
第一方面,本發明實施例提供一種視頻解碼方法,該方法應用於視頻解碼設備或視頻解碼設備的晶片中,該方法包括:獲取待解碼圖像中當前塊的一個或多個碼率控制參數;根據一個或多個碼率控制參數確定當前塊的量化參數;基於當前塊的量化參數對當前塊進行解碼。
由於量化參數在碼流中佔據較多資源,影響傳輸效率。因此,採用本發明提出的視頻解碼方法,解碼端獲取碼率控制參數,通過碼率控制參數計算得到量化參數用於實現解碼,實現節省碼流中的資源,提升碼流傳輸的效率。
在一種可能的實現方式中,獲取待解碼圖像中當前塊的一個或多個碼率控制參數,包括:獲取待解碼圖像的資訊,待解碼圖像的資訊包括待解碼圖像的基本資訊和待解碼圖像中圖像塊的資訊;根據待解碼圖像的資訊中的部分或全部確定當前塊的一個或多個碼率控制參數。
該種可能的實現方式,提供了獲取碼率控制參數的具體實現方式,通過獲取待解碼圖像的基本資訊和該待解碼圖像中圖像塊的資訊,計算用於生成量化參數的碼率控制參數。通過圖像的部分特徵完成量化參數的計算。
在一種可能的實現方式中,碼率控制參數包括當前塊的資源充裕度、當前塊的複雜度、當前塊的預測比特數、當前塊的平均量化參數和當前塊的量化參數的變化值;其中,平均量化參數用於表徵待解碼圖像中已解碼圖像塊的量化參數的平均程度,資源充裕度是指用於存儲當前塊的資源在用於存儲待解碼圖像的資源中的充足程度,複雜度是指待解碼圖像中已解碼圖像塊的複雜程度,預測比特數是指預估當前塊解碼後佔用的資源,量化參數的變化值是指待解碼圖像中已解碼圖像塊之間量化參數的變化值。
該種可能的實現方式,提供了多種碼率控制參數,該多種碼率控制參數均可通過不同方式生成量化參數,提升方案可實施性。
在一種可能的實現方式中,根據一個或多個碼率控制參數確定當前塊的量化參數,包括:獲取已解碼圖像塊的碼率控制參數;根據已解碼圖像塊的碼率控制參數確定當前塊的量化參數。
該種可能的實現方式,提供了一種根據碼率控制參數生成量化參數的具體實現方式,通過已解碼圖像塊的碼率控制參數確定當前塊的量化參數,有助於建立圖像塊之間的相關性。
在一種可能的實現方式中,根據一個或多個碼率控制參數確定當前塊的量化參數,包括:獲取已解碼圖像塊的量化參數;根據已解碼圖像塊的量化參數確定當前塊的量化參數。
該種可能的實現方式,提供了一種根據碼率控制參數生成量化參數的具體實現方式,通過已解碼圖像塊的量化參數確定當前塊的量化參數,有助於建立圖像塊之間的相關性。
在一種可能的實現方式中,在獲取待解碼圖像的資訊之後,該方法還包括:根據當前塊資訊計算當前塊的總比特數,當前塊的總比特數為當前塊解碼後所佔用的比特數;根據總比特數確定可用比特數,可用比特數為存儲當前塊解碼後的圖像資料,可用比特數用於確定當前塊的一個或多個碼率控制參數。
該種可能的實現方式,提供了一種根據待解碼圖像的資訊確定碼率控制參數的具體實現方式,通過計算圖像塊的可用比特數,有助於提升碼率控制參數的精確度,提升方案可實施性。
在一種可能的實現方式中,根據總比特數確定可用比特數,包括:去除總比特數中用於存儲非圖像資料的其他比特數。
該種可能的實現方式,提供了一種確定可用比特數的具體實現方式,其中,通過去除部分用於存儲非圖像資料的其他比特數,確定用於存儲圖像資料的可用比特數,有助於提升碼率控制參數的精確度,提升方案可實施性。
在一種可能的實現方式中,該方法還包括:初始化中間參數,中間參數用於結合一個或多個碼率控制參數確定當前塊的量化參數。
該種可能的實現方式,提供了用於確定量化參數的中間參數的初始化過程,有助於量化參數的生成。
在一種可能的實現方式中,在根據一個或多個碼率控制參數確定當前塊的量化參數之後,方法還包括:基於一個或多個碼率控制參數,修正量化參數。
該種可能的實現方式中,提供了確定量化參數後,修正量化參數的方法,有助於提升解碼後圖像的品質。
在一種可能的實現方式中,在根據一個或多個碼率控制參數確定量化參數之後,該方法還包括:更新一個或多個碼率控制參數。
該種可能的實現方式中,提供了更新碼率控制參數的方法,針對待解碼圖像中圖像塊適應性調整,有助於提升方案應用的靈活性。
第二方面,本發明實施例提供一種視頻解碼裝置,該裝置具有實現上述第一方面中任一項的視頻解碼方法的功能。該功能可以通過硬體實現,也可以通過硬體執行相應的軟體實現。該硬體或軟體包括一個或多個與上述功能相對應的模組。
第三方面,提供一種視頻解碼裝置,包括:處理器和記憶體;該記憶體用於存儲電腦執行指令,當該視頻解碼裝置運行時,該處理器執行該記憶體存儲的該電腦執行指令,以使該視頻解碼裝置執行如上述第一方面中任一項的視頻解碼方法。
第四方面,提供一種電腦可讀存儲介質,該電腦可讀存儲介質中存儲有指令,當其在電腦上運行時,使得電腦可以執行上述第一方面中任一項的視頻解碼方法。
第五方面,提供一種包含指令的電腦程式產品,當其在電腦上運行時,使得電腦可以執行上述第一方面中任一項的視頻解碼方法。
第六方面,提供一種電子設備,電子設備包括視頻解碼裝置,處理電路被配置為執行如上述第一方面中任一項的視頻解碼方法。
第七方面,提供一種晶片,晶片包括處理器,處理器和記憶體耦合,記憶體存儲有程式指令,當記憶體存儲的程式指令被處理器執行時實現上述第一方面中任意一項的視頻解碼方法。
第二方面至第七方面中的任一種實現方式所帶來的技術效果可參見第一方面中對應實現方式所帶來的技術效果,此處不再贅述。
Figure 112102125-A0202-12-0043-93
,
Figure 112102125-A0202-12-0043-94
,
Figure 112102125-A0202-12-0043-95
,
Figure 112102125-A0202-12-0043-96
,
Figure 112102125-A0202-12-0043-97
:過程
0,1:中央處理器(CPU)
10:源裝置
100:解碼裝置
1001:獲取模組
1002:確定模組
1003:解碼模組
101:視頻源
102:視頻編碼器
103:輸出介面
11:目的裝置
111:顯示裝置
112:視頻解碼器
113:輸入介面
12:鏈路
13:存儲裝置
2:並行單元
20:預處理模組
201,202,301:求和器
21,31:預測模組
22:變換模組
23:量化模組
24:熵編碼模組
25,32:反量化模組
26,33:反變換模組
27,34:參考圖像記憶體
30:熵解碼模組
50:編解碼裝置
501:處理器
502:記憶體
503:通信介面
504:匯流排
S601,S602,S603,S901,S902,S903:步驟
圖1為本發明實施例提供的編解碼系統的系統架構圖;
圖2為本發明實施例提供的視頻編碼器的結構示意圖;
圖3為本發明實施例提供的視頻解碼器的結構示意圖;
圖4為本發明實施例提供的一種視頻解碼的流程示意圖;
圖5為本發明實施例提供的視頻解碼器結構示意圖;
圖6為本發明實施例提供的視頻解碼方法的流程圖;
圖7為本發明實施例提供的圖像塊位置資訊的示意圖;
圖8為本發明實施例提供的sigmoid函數示意圖;
圖9為本發明實施例提供的確定參數初始化的流程圖;
圖10為本發明實施例提供的編碼裝置的結構示意圖。
在本發明的描述中,除非另有說明,“/”表示“或”的意思,例如,A/B可以表示A或B。本文中的“和/或”僅僅是一種描述關聯對象的關聯關係,表示可以存在三種關係,例如,A和/或B,可以表示:單獨存在A,同時存在A和B,單獨存在B這三種情況。此外,“至少一個”是指一個或多個,“多個”是指兩個或兩個以上。“第一”、“第二”等字樣並不對數量和執行次序進行限定,並且“第一”、“第二”等字樣也並不限定一定不同。
需要說明的是,本發明中,“示例性的”或者“例如”等詞用於表示作例子、例證或說明。本發明中被描述為“示例性的”或者“例如”的任何實施例或設計方案不應被解釋為比其他實施例或設計方案更優選或更具優勢。確切而言,使用“示例性的”或者“例如”等詞旨在以具體方式呈現相關概念。
首先,對本發明實施例涉及的技術術語進行介紹:
1、視頻編碼技術
視頻序列存在空間冗餘、時間冗餘、視覺冗餘、資訊熵冗餘、結構冗餘、知識冗餘、重要性冗餘等一系列的冗餘資訊。為了盡可能的去除視頻序列中的冗餘資訊,減少表徵視頻的資料量,提出了視頻編碼技術,以達 到減小存儲空間和節省傳輸頻寬的效果。視頻編碼技術也稱為視頻壓縮技術。
在國際通用範圍內,視頻壓縮編碼標準包括但不限於:由運動圖像專家組(Motion Picture Experts Group,MPEG)制定的MPEG-2和MPEG-4標準中第10部分的高級視頻編解碼(Advanced Video Coding,AVC),由國際電信聯盟電信標準化組(International Telecommunication Union-Telecommunication Standardization Sector,ITU-T)制定的H.263、H.264和H.265(又稱高效率視頻編碼(High Efficiency Video Coding,HEVC)標準)。
需要說明的是,在基於混合編碼架構的編碼演算法中,上述壓縮編碼方式可以被混合使用。
視頻壓縮編碼過程中的基本處理單位是圖像塊,該圖像塊是編碼端將一幀/幅圖像進行劃分得到的。以HEVC為例,HEVC定義了編碼樹單元(Coding Tree Unit,CTU)、編碼單元(Coding Unit,CU)、預測單元(Prediction Unit,PU)和變換單元(Transform Unit,TU)。CTU、CU、PU和TU均可作為劃分後得到的圖像塊。其中PU和TU均基於CU進行劃分。
2、視頻採樣
像素為視頻或圖像最小的完整採樣,因此,對圖像塊進行資料處理是以像素為單位。其中,每個像素記錄顏色資訊,例如,可以通過RGB表示顏色,包括三個圖像通道,R表示紅色red,G表示綠色green,B表示藍色blue;又例如,可以通過YUV表示顏色,包括三個圖像通道,Y表示亮度(luminance),U表示第一色度Cb,V表示第二色度Cr。由於人們對亮度的敏感程度強於對色度的敏感程度,因此,可以通過多存儲亮度,少存儲色度實現減少存儲空間。具體地,在視頻編解碼中,通常採用YUV格式進行視頻採樣,包括420採樣格式、444採樣格式等。該採樣格式基於亮度的取樣數量,確定兩個色度的取樣數量,例如,假設一個CU有4×2 個像素,格式如下:
[Y0,U0,V0][Y1,U1,V1][Y2,U2,V2][Y3,U3,V3]
[Y4,U4,V4][Y5,U5,V5][Y6,U6,V6][Y7,U7,V7]
420採樣格式表示YUV以4:2:0的格式進行採樣,即亮度與第一色度或第二色度以4:2的比例進行選取,其中第一色度與第二色度隔行選取。則上述CU採樣選取第一行的亮度Y0-Y3,以及第一色度U0和U2,選取第二行的亮度Y4-Y7,以及第二色度V4和V6。該CU經採樣由亮度編碼單元及色度編碼單元構成,其中,亮度編碼單元為:
[Y0][Y1][Y2][Y3]
[Y4][Y5][Y6][Y7]
色度編碼單元為:
[U0][U2]
[V4][V6]
類似地,444採樣格式表示YUV以4:4:4的格式進行採樣,即亮度與第一色度和第二色度以4:4:4的比例進行選取。則上述CU經採樣的亮度編碼單元為:
[Y0][Y1][Y2][Y3]
[Y4][Y5][Y6][Y7]
色度編碼單元為:
[U0,V0][U1,V1][U2,V2][U3,V3]
[U4,V4][U5,V5][U6,V6][U7,V7]
上述經採樣得到的亮度編碼單元與色度編碼單元作為後續進行編碼處理的資料單元。
本發明提供的解碼方法適用於視頻編解碼系統。圖1示出了視頻編解碼系統的結構。
如圖1所示,視頻編解碼系統包含源裝置10和目的裝置11。源裝置10產生經過編碼後的視頻資料,源裝置10也可以被稱為視頻編碼裝置或視頻編碼設備,目的裝置11可以對源裝置10產生的經過編碼後的視頻資料進行解碼,目的裝置11也可以被稱為視頻解碼裝置或視頻解碼設備。源裝置10和/或目的裝置11可包含至少一個處理器以及耦合到所述至少一個處理器的記憶體。所述記憶體可包含但不限於唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、電子可抹除可程式唯讀記憶體(Electrically Erasable Programmable Read-Only Memory,EEPROM)、快閃記憶體或可用於以可由電腦存取的指令或資料結構的形式存儲所要的程式碼的任何其它媒體,本發明對此不作具體限定。
源裝置10和目的裝置11可以包括各種裝置,包含桌上型電腦、移動計算裝置、筆記型(例如,膝上型)電腦、平板電腦、機上盒、例如所謂的“智慧”電話等電話手持機、電視機、相機、顯示裝置、數位媒體播放機、視頻遊戲控制台、車載電腦或其類似者等電子設備。
目的裝置11可經由鏈路12從源裝置10接收經編碼視頻資料。鏈路12可包括能夠將經編碼視頻資料從源裝置10移動到目的裝置11的一個或多個媒體和/或裝置。在一個實例中,鏈路12可包括使得源裝置10能夠即時地將編碼後的視頻資料直接發射到目的裝置11的一個或多個通信媒體。在此實例中,源裝置10可根據通信標準(例如:無線通訊協定)來調製編碼後的視頻資料,並且可以將調製後的視頻資料發射到目的裝置11。上述一個或多個通信媒體可包含無線和/或有線通信媒體,例如:射頻(Radio Frequency,RF)頻譜、一個或多個物理傳輸線。上述一個或多個通信媒體可形成基於分組的網路的一部分,基於分組的網路例如為局域網、廣域網路或全球網路(例如,網際網路)等。上述一個或多個通信媒體可以包含路由器、交換器、基地台,或者實現從源裝置10到目的裝置11的通信的其它設備。
在另一實例中,可將編碼後的視頻資料從輸出介面103輸出 到存儲裝置13。類似地,可通過輸入介面113從存儲裝置13存取編碼後的視頻資料。存儲裝置13可包含多種本地存取式資料存儲媒體,例如藍光光碟、數位影音光碟(Digital Video Disc,DVD)、光碟唯讀記憶體(Compact Disc Read-Only Memory,CD-ROM)、快閃記憶體,或用於存儲經編碼視頻資料的其它合適數位存儲媒體。
在另一實例中,存儲裝置13可對應於檔案伺服器或存儲由源裝置10產生的編碼後的視頻資料的另一中間存儲裝置。在此實例中,目的裝置11可經由資料流或下載從存儲裝置13獲取其存儲的視頻資料。檔案伺服器可為任何類型的能夠存儲經編碼的視頻資料並且將經編碼的視頻資料發射到目的裝置11的伺服器。例如,檔案伺服器可以包含全球資訊網(World Wide Web,Web)伺服器(例如,用於網站)、檔案傳輸協定(File Transfer Protocol,FTP)伺服器、網路連結儲存(Network Attached Storage,NAS)裝置以及本地磁碟機。
目的裝置11可通過任何標準資料連接(例如,網際網路連接)存取編碼後的視頻資料。資料連接的實例類型包含適合於存取存儲於檔案伺服器上的編碼後的視頻資料的無線通道、有線連接(例如,纜線數據機等),或兩者的組合。編碼後的視頻資料從檔案伺服器發射的方式可為資料流、下載傳輸或兩者的組合。
本發明的解碼方法不限於無線應用場景,示例性的,本發明的解碼方法可以應用於支援以下多種多媒體應用的視頻編解碼:空中電視廣播、有線電視發射、衛星電視發射、資料流視頻發射(例如,經由網際網路)、存儲於資料存儲媒體上的視頻資料的編碼、存儲於資料存儲媒體上的視頻資料的解碼,或其它應用。在一些實例中,視頻編解碼系統可經配置,以支援單向或雙向視頻發射,以支援例如視頻資料流、視頻播放、視頻廣播及/或視頻電話等應用。
需要說明的是,圖1示出的視頻編解碼系統僅僅是視頻編解碼系統的示例,並不是對本發明中視頻編解碼系統的限定。本發明提供的編解碼方法還可適用於編碼裝置與解碼裝置之間無資料通信的場景。在其 它實例中,待編碼視頻資料或編碼後的視頻資料可以從本機存放區器檢索,也可以在網路上資料流等。視頻編碼裝置可對待編碼視頻資料進行編碼並且將編碼後的視頻資料存儲到記憶體,視頻解碼裝置也可從記憶體中獲取編碼後的視頻資料並且對該編碼後的視頻資料進行解碼。
在圖1中,源裝置10包含視頻源101、視頻編碼器102和輸出介面103。在一些實例中,輸出介面103可包含調製器/解調器(數據機)和/或發射器。視頻源101可包括視頻捕獲裝置(例如,照相機)、含有先前捕獲的視頻資料的視頻存檔、用以從視頻內容提供者接收視頻資料的視頻輸入介面,和/或用於產生視頻資料的電腦圖形系統,或視頻資料的此些來源的組合。
視頻編碼器102可對來自視頻源101的視頻資料進行編碼。在一些實例中,源裝置10經由輸出介面103將編碼後的視頻資料直接發射到目的裝置11。在其它實例中,編碼後的視頻資料還可存儲到存儲裝置13上,供目的裝置11稍後存取來用於解碼和/或播放。
在圖1的實例中,目的裝置11包含顯示裝置111、視頻解碼器112以及輸入介面113。在一些實例中,輸入介面113包含接收器和/或數據機。輸入介面113可經由鏈路12和/或從存儲裝置13接收編碼後的視頻資料。顯示裝置111可與目的裝置11集成或可在目的裝置11外部。一般來說,顯示裝置111顯示解碼後的視頻資料。顯示裝置111可包括多種顯示裝置,例如,液晶顯示器、等離子顯示器、有機發光二極體顯示器或其它類型的顯示裝置。
可選的,視頻編碼器102和視頻解碼器112可各自與音訊編碼器和解碼器集成,且可包含適當的多工器-多路分用器單元或其它硬體和軟體,以處理共同資料流程或單獨資料流程中的音訊和視頻兩者的編碼。
視頻編碼器102和視頻解碼器112可以包括微處理器、數位訊號處理器(Digital Signal Processor,DSP)、特殊應用積體電路(Application-Specific Integrated Circuit,ASIC)、現場可程式邏輯閘陣列 (Field Programmable Gate Array,FPGA)、離散邏輯電路、硬體或其任何組合。若本發明提供的解碼方法採用軟體實現,則可將用於軟體的指令存儲在合適的非易失性電腦可讀存儲媒體中,且可使用至少一個處理器執行所述指令從而實施本發明。
本發明中的視頻編碼器102和視頻解碼器112可以根據視頻壓縮標準(例如HEVC)操作,也可根據其它業界標準操作,本發明對此不作具體限定。
圖2是本發明實施例中視頻編碼器102的一種示意性框圖。視頻編碼器102可以在預測模組21、變換模組22、量化模組23以及熵編碼模組24分別進行預測、變換、量化以及熵編碼的過程。視頻編碼器102中還包括預處理模組20和求和器202,其中預處理模組20包括分割模組和碼率控制模組。對於視頻塊重構建,視頻編碼器102也包括反量化模組25、反變換模組26、求和器201和參考圖像記憶體27。
如圖2中所展示,視頻編碼器102接收視頻資料,預處理模組20中的分割模組將資料分割成原始塊。此分割也可包含分割成片(slice)、圖像塊或其它較大單元,以及(例如)根據最大編碼單元(Largest Coding Unit,LCU)及CU的四叉樹結構進行視頻塊分割。示例性的,視頻編碼器102編碼在待編碼的視頻條帶內的視頻塊的組件。一般的,片可劃分成多個原始塊(且可能劃分成稱作圖像塊的原始塊的集合)。通常在分割模組中確定CU、PU以及TU的尺寸。
預處理模組20中的碼率控制模組獲取CU、PU以及TU的尺寸,以及視頻資料的輸入參數,其中,該輸入參數包括該視頻資料中圖像的解析度、圖像的格式、位寬和輸入像素深度(bits per pixel,bpp);目標bpp。碼率控制模組根據輸入參數和圖像塊尺寸生成碼率控制參數,該碼率控制參數用於生成量化參數以使得量化模組23和反量化模組25進行相關計算。碼率控制模組還可以根據求和器201經重構得到的重建塊,更新碼率控制參數。
預測模組21可將預測塊提供到求和器202以產生殘差塊,且將該預測塊提供到求和器201經重構得到重建塊,該重建塊用於後續進行預測的參考像素。其中,視頻編碼器102通過原始塊的像素值減去預測塊的像素值來形成像素差值,該像素差值即組成殘差塊,該殘差塊中的資料可包含亮度差及色度差。求和器201表示執行此加法運算的一個或多個組件。預測模組21還可將相關的語法元素發送至熵編碼模組24用於將語法元素合併至碼流。
變換模組22可將殘差塊劃分為一個或多個TU進行變換。變換模組22可將殘差塊從像素域轉換到變換域(例如,頻域)。例如,使用離散餘弦變換(Discrete Cosine Transform,DCT)或離散正弦變換(Discrete Sine Transform,DST)將殘差塊經變換得到變換係數。變換模組22可將所得變換係數發送到量化模組23。
量化模組23對變換係數進行量化以進一步減小碼率得到量化係數。量化過程可減少與係數中的一些或全部相關聯的比特深度。可通過調整量化參數來修改量化的程度。在一些可行的實施方式中,量化模組23可接著執行包含經量化變換係數的矩陣的掃描。替代的,熵編碼模組24可執行掃描。
在量化之後,熵編碼模組24可熵編碼量化係數。例如,熵編碼模組24可執行基於上下文(或前文參考)之適應性變動長度編碼法(Context-Based Adaptive Variable-Length Coding,CAVLC)、前文參考之可適性算術編碼(Context-based Adaptive Binary Arithmetic Coding,CABAC)、基於語法的上下文自我調整性二進位算術解碼(Syntax-Based Context-Adaptive Binary Arithmetic Coding,SBAC)、概率區間分割熵(Probability Interval Partitioning Entropy,PIPE)解碼或其他熵編碼方法或技術。在通過熵編碼模組24進行熵編碼之後,可將經編碼碼流傳輸到視頻解碼器112或存檔以供稍後傳輸或由視頻解碼器112檢索。
反量化模組25及反變換模組26分別應用反量化與反變換,求和器201將反變換後的殘差塊得和預測的殘差塊相加以產生重建塊,該 重建塊用作後續原始塊進行預測的參考像素。該重建塊存儲於參考圖像記憶體27中。
圖3是本發明實施例中視頻解碼器112的結構示意圖。如圖3所示,視頻解碼器112包含熵解碼模組30、預測模組31、反量化模組32、反變換模組33、求和器301和參考圖像記憶體34。其中,熵解碼模組30包括解析模組和碼率控制模組。在一些可行的實施方式中,視頻解碼器112可執行與關於來自圖2的視頻編碼器102描述的編碼流程的示例性地互逆的解碼流程。
在解碼過程期間,視頻解碼器112從視頻編碼器102接收經編碼的視頻的碼流。視頻解碼器112的熵解碼模組30中的解析模組對碼流進行熵解碼,以產生量化係數和語法元素。熵解碼模組30將語法元素轉遞到預測模組31。視頻解碼器112可在視頻片層級和/或視頻塊層級處接收語法元素。
熵解碼模組30中的碼率控制模組根據解析模組得到的待解碼圖像的資訊,生成碼率控制參數,該碼率控制參數用於生成量化參數以使得反量化模組32進行相關計算。碼率控制模組還可以根據求和器301經重構得到的重建塊,更新碼率控制參數。
反量化模組32對碼流中所提供且通過熵解碼模組30所解碼的量化係數以及所生成的量化參數進行反量化(例如,解量化)。反量化過程可包含使用通過視頻編碼器102針對視頻片中的每一視頻塊所計算的量化參數確定量化的程度,且同樣地確定應用的反量化的程度。反變換模組33將反變換(例如,DCT、DST等變換方法對應的反變換方法)應用於反量化後的變換係數,將反量化後的變換係數按照反變換單元在像素域中產生反變換後的殘差塊。其中,反變換單元的尺寸與TU的尺寸相同,反變換方法與變換方法採用同樣的變換方法中相應的正變換與反變換,例如,DCT、DST的反變換為反DCT、反DST或概念上類似的反變換過程。
預測模組31生成預測塊後,視頻解碼器112通過將來自反變 換模組33的反變換後的殘差塊與通過與預測塊求和來形成經解碼視頻塊。求和器301表示執行此求和運算的一個或多個組件。在需要時,也可應用解塊濾波器來對經解碼塊進行濾波以便去除塊效應偽影。給定幀或圖像中的經解碼的視塊存儲於參考圖像記憶體34中,作為後續進行預測的參考像素。
本發明提供一種可能的視頻編/解碼實現方式,如圖4所示,圖4為本發明提供的一種視頻編/解碼的流程示意圖,該視頻編/解碼實現方式包括過程
Figure 112102125-A0202-12-0014-12
至過程
Figure 112102125-A0202-12-0014-13
,過程
Figure 112102125-A0202-12-0014-15
至過程
Figure 112102125-A0202-12-0014-17
可以由上述的源裝置10、視頻編碼器102、目的裝置11或視頻解碼器112中的任意一個或多個執行。
過程
Figure 112102125-A0202-12-0014-18
:將一幀圖像分成一個或多個互相不重疊的並行單元。該一個或多個並行單元間無依賴關係,可完全並行/獨立編碼和解碼,如圖4所示出的並行單元1和並行單元2。
過程
Figure 112102125-A0202-12-0014-19
:對於每個並行單元,可再將其分成一個或多個互相不重疊的獨立單元,各個獨立單元間可相互不依賴,但可以共用一些並行單元頭資訊。
獨立單元既可以是包括亮度Y、第一色度Cb、第二色度Cr三個分量,或RGB三個分量,也可以僅包含其中的某一個分量。若獨立單元包含三個分量,則這三個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像的輸入格式相關。
過程
Figure 112102125-A0202-12-0014-20
:對於每個獨立單元,可再將其分成一個或多個互相不重疊的編碼單元,獨立單元內的各個編碼單元可相互依賴,如多個編碼單元可以進行相互參考預編解碼。
若編碼單元與獨立單元尺寸相同(即獨立單元僅分成一個編碼單元),則其尺寸可為過程
Figure 112102125-A0202-12-0014-21
所述的所有尺寸。
編碼單元既可以是包括亮度Y、第一色度Cb、第二色度Cr三個分量(或RGB三分量),也可以僅包含其中的某一個分量。若包含三個分量,幾個分量的尺寸可以完全一樣,也可以不一樣,具體與圖像輸入 格式相關。
值得注意的是,過程
Figure 112102125-A0202-12-0015-23
是視頻編解碼方法中一個可選的步驟,視頻編/解碼器可以對過程
Figure 112102125-A0202-12-0015-26
獲得的獨立單元進行殘差係數(或殘差值)進行編/解碼。
過程
Figure 112102125-A0202-12-0015-27
:對於編碼單元,可以將其可再將其分成一個或多個互相不重疊的預測組(Prediction Group,PG),PG也可簡稱為Group,各個PG按照選定預測模式進行編解碼,得到PG的預測值,組成整個編碼單元的預測值,基於預測值和編碼單元的原始值,獲得編碼單元的殘差值。
過程
Figure 112102125-A0202-12-0015-28
:基於編碼單元的殘差值,對編碼單元進行分組,獲得一個或多個相不重疊的殘差小塊(Residual Block,RB),各個RB的殘差係數按照選定模式進行編解碼,形成殘差係數流。具體的,可分為對殘差係數進行變換和不進行變換兩類。
其中,過程
Figure 112102125-A0202-12-0015-29
中殘差係數編解碼方法的選定模式可以包括,但不限於下述任一種:半定長編碼方式、指數哥倫布(Golomb)編碼方法、Golomb-Rice編碼方法、截斷一元碼編碼方法、游程編碼方法、直接編碼原始殘差值等。
例如,視頻編碼器可直接對RB內的係數進行編碼。又如,視頻編碼器也可對殘差塊進行變換,如DCT、DST、Hadamard變換等,再對變換後的係數進行編碼。
作為一種可能的示例,當RB較小時,視頻編碼器可直接對RB內的各個係數進行統一量化,再進行二值化編碼。若RB較大,可進一步劃分為多個係數組(Coefficient Group,CG),再對各個CG進行統一量化,再進行二值化編碼。在本發明的一些實施例中,係數組(CG)和量化組(QG)可以相同。
下面以半定長編碼方式對殘差係數編碼的部分進行示例性說明。首先,將一個RB塊內殘差絕對值的最大值定義為修整最大值(modified maximum,mm)。其次,確定該RB塊內殘差係數的編碼比特 數(同一個RB塊內殘差係數的編碼比特數一致)。例如,若當前RB塊的關鍵限值(Critical Limit,CL)為2,當前殘差係數為1,則編碼殘差係數1需要2個比特,表示為01。若當前RB塊的CL為7,則表示編碼8-bit的殘差係數和1-bit的符號位。CL的確定是去找滿足當前子塊所有殘差都在[-2^(M-1),2^(M-1)]範圍之內的最小M值。若同時存在-2^(M-1)和2^(M-1)兩個邊界值,則M應增加1,即需要M+1個比特編碼當前RB塊的所有殘差;若僅存在-2^(M-1)和2^(M-1)兩個邊界值中的一個,則需要編碼一個Trailing位來確定該邊界值是-2^(M-1)還是2^(M-1);若所有殘差均不存在-2^(M-1)和2^(M-1)中的任何一個,則無需編碼該Trailing位。
另外,對於某些特殊的情況,視頻編碼器也可以直接編碼圖像的原始值,而不是殘差值。
上述視頻編碼器102以及視頻解碼器112也可以通過另外一種實現形態來實現,例如,採用通用的數位處理器系統實現,如圖5所示的編解碼裝置50,該編解碼裝置50可以為上述視頻編碼器102中的部分或全部裝置,也可以為上述視頻解碼器112中的部分或全部裝置。
該編解碼裝置50可以是應用於編碼側,也可以是應用於解碼側。編解碼裝置50包括處理器501以及記憶體502。所述處理器501與記憶體502相連接(如通過匯流排504相互連接)。可選的,編解碼裝置50還可包括通信介面503,通信介面503連接處理器501和記憶體502,用於接收/發送資料。
記憶體502可以為隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、可抹除可程式唯讀記憶體(Erasable Programmable Read Only Memory,EPROM)或光碟唯讀記憶體(Compact Disc Read-Only Memory,CD-ROM)。該記憶體502用於存儲相關程式碼及視頻資料。
處理器501可以是一個或多個中央處理器(Central Processing Unit,CPU),例如圖5中所示的CPU 0和CPU 1。在處理器501是一個 CPU的情況下,該CPU可以是單核CPU,也可以是多核CPU。
該處理器501用於讀取所記憶體502中存儲的程式碼,執行圖6所對應的任意一個實施方案及其各種可行的實施方式的操作。
以下,結合上述圖1示出的視頻編解碼系統、圖2示出的視頻編碼器102以及圖3示出的視頻解碼器112對本發明提供的解碼方法進行詳細描述。
如圖6所示,為本發明提供的一種視頻解碼方法的流程圖。該方法包括以下步驟。
步驟S601、視頻解碼器獲取待解碼圖像中當前塊的一個或多個碼率控制參數。其中,待解碼圖像由多個圖像塊構成,當前塊為多個圖像塊中的任意一塊。其中,碼率控制參數用於生成量化參數,該量化參數應用於解碼過程中的反量化過程,如上述圖3中關於反量化模組32的描述。碼率控制參數包括當前塊的資源充裕度、當前塊的複雜度、當前塊的預測比特數、當前塊的平均量化參數和量化參數變化值。資源充裕度是指用於存儲當前塊的資源在用於存儲該待解碼圖像的資源中的充足程度。當前塊的複雜度是指待解碼圖像中已解碼圖像塊的複雜程度。當前塊的預測比特數是指預估當前塊解碼後佔用的資源。當前塊的平均量化參數用於表徵待解碼圖像中已解碼圖像塊的量化參數的平均程度。量化參數的變化值是指待解碼圖像中已解碼圖像塊之間量化參數的變化值。
可選的,在步驟S601之前,該方法還包括,視頻解碼器獲取待解碼圖像的資訊,該待解碼圖像的資訊包括待解碼圖像的基本資訊和待解碼圖像中圖像塊的資訊。其中,基本資訊包括以下資訊的一種或多種。
待解碼圖像的解析度,用於表示待解碼圖像中所包含的像素個數,通常由水平像素和垂直像素構成。示例性的,640×480表示水平像素為640個單位,垂直像素為480個單位,該圖像的解析度為307200像素,也可以表示為30萬像素。
待解碼圖像的格式,是指待解碼圖像的採樣格式,可參考上 述關於視頻採樣的描述。
待解碼圖像的位寬,是指用於存儲待解碼圖像的每個像素的深度。例如,一幅彩色圖像的每個像素用R,G,B三個分量表示,若每個分量用8位,那麼一個像素共用24位表示,也就說像素的深度為24。
其中,待解碼圖像中圖像塊的資訊包括以下資訊的一種或多種。
待解碼圖像的輸入像素深度(bpp),是指傳輸待解碼圖像的每個像素的深度。例如,期望該圖像在碼流中以每個像素佔用18位進行傳輸,若該圖像以RGB三個分量表示,則每個分量佔用6位,相比上述用於存儲圖像的位寬節省2個比特位。需要說明的是,bpp通常情況下小於等於位寬,該bpp通常在編碼階段確定並寫入碼流中供解碼端獲取。
待解碼圖像中圖像塊的尺寸資訊(block_size),其中,圖像塊的尺寸可以相同或不同,相應地,待解碼圖像中所有圖像塊的尺寸資訊也可根據該資訊推算,或在碼流中直接獲取,本發明對此不作限制。關於圖像塊的尺寸資訊可參考上述關於圖2的描述,例如CU、PU以及TU的一種或多種尺寸,具體可以為8×8、16×8等其他尺寸。
當前塊的位置資訊,是指當前塊在待編碼圖像中的位置資訊。如圖7所示,待編碼圖像的尺寸為8×4,並按照2×2的圖像塊大小進行劃分,則可分為8小塊,假設圖中陰影部分為當前塊,則當前塊在待編碼圖像中的位置可以以座標的形式表示為(1,1)。
重建圖像塊,也可以稱為重建塊,是指根據反變換後的殘差塊與預測的殘差塊經重構得到多個像素形成的圖像塊,如圖3中所示的重建塊。
其中,根據上述基本資訊和各個圖像塊的資訊至少可以得到該待解碼圖像的資源,以及該待解碼圖像中每個圖像塊所佔用的資源,該資源可以通過以下部分或全部資訊表示:當前塊的剩餘比特數(remain_bits),是指存儲待解碼圖像的資源中未被已解碼圖像塊佔用的 比特資源;
當前塊的剩餘塊個數(remain_blocks),是指待解碼圖像中未解碼圖像塊的個數;
實際比特數,是指存儲待解碼圖像的資源中每塊已解碼圖像塊分別佔用的比特資源。
需要說明的是,上述待解碼圖像的資訊的獲取方式為本領域技術人員所熟知,例如視頻解碼器可通過獲取碼流的頭資訊,以獲取該待解碼圖像的基本資訊,該基本資訊是指該影像檔的格式、解析度、尺寸等資訊,碼流中還包括該待解碼圖像中圖像塊的資訊,例如圖像塊的尺寸以及bpp等資訊。
視頻解碼器根據部分或全部的待解碼圖像的資訊確定碼率控制參數。具體地,包括以下5種情況。
情況1、視頻解碼器根據待解碼圖像的資訊確定當前塊的資源充裕度(sufficiency)。
1)視頻解碼器根據剩餘比特數(remain_bits)、剩餘塊個數(remain_blocks)、當前塊的尺寸資訊(block_size)和輸入像素深度bpp確定資源充裕度。
如果(remain_bits/remain_blocks)>block_size×bpp×M,則表示資源充足;如果(remain_bits/remain_blocks)<block_size×bpp×N,則表示資源不足;其中,M>N>0。
2)視頻解碼器根據剩餘比特數、剩餘塊個數和當前塊的位置資訊確定資源充裕度。
具體地,視頻解碼器確定當前塊在待解碼圖像中的位置,進一步地,確定當前塊在該待解碼圖像中並行單元的位置,該並行單元可以為slice和/或組處理單元。具體地,若當前塊處於該並行單元的前1/n位置,則將第一權重係數w1設為1+a;若當前塊處於該並行單元的中間1/n位置, 則將w1設為1;若當前塊處於該並行單元的後1/n位置,則將w1設為1-a,其中,0<a<1。
可選的,a隨著前1/n與後1/n相對中間1/n的距離的增加而增加。通過a取值的改變,調整相應的第一權重係數。
sufficiency=w1×(remain_bits/remain_blocks)。
可以理解的是,並行單元不同,第一權重係數不同,當同時考慮當前塊在待解碼圖像中slice的位置和組處理單元的位置時,視頻解碼器可以將各自並行單元的權重係數的乘積作為第一權重係數。
情況2、視頻解碼器根據已解碼圖像塊的資訊中的重建圖像塊確定當前塊的複雜度(complexity)。
1)變換係數加權法。
具體地,視頻解碼器根據當前塊的前n個重建塊的變換係數進行加權,1
Figure 112102125-A0202-12-0020-30
n
Figure 112102125-A0202-12-0020-31
已解碼圖像塊的個數。已解碼圖像塊的個數可以通過解析碼流獲取,或者根據剩餘塊個數與待解碼圖像的圖像塊個數進行計算得到。其中,變換方法可以為DCT變換、Hadamard變換或DST變換。
Figure 112102125-A0202-12-0020-98
其中,Ci表示第i個重建塊的變換係數,Wi表示第i個重建塊的變換係數的權重係數。示例性的,在DCT變換中,包括DC係數和AC係數,DC係數表示已解碼圖像塊中第一個圖像塊的變換係數,AC係數表示已解碼圖像塊中其他圖像塊的變換係數。示例性的,當n為已解碼圖像塊的個數時,DC係數的權重係數設為0,其它AC係數的權重係數設為1。通過上述選取方式,有助於簡化計算過程。
需要說明的是,本發明對於n的選取方式不作限制,例如,n為預設的固定值,或者n可以參考上述資源充裕度,當資源充足時n取值較小,當資源不足時n取值較大。
2)視頻解碼器將當前塊的前n個重建塊的像素值的方差作為 複雜度,其中,1
Figure 112102125-A0202-12-0021-33
n
Figure 112102125-A0202-12-0021-34
已解碼圖像塊的個數。
3)梯度加權法
具體地,視頻解碼器根據當前塊的前n個重建塊的梯度進行加權,1
Figure 112102125-A0202-12-0021-35
n
Figure 112102125-A0202-12-0021-36
已解碼圖像塊的個數。
水平梯度x=第t列重建-第t-1列重建;
垂直梯度y=第s行重建-第s-1行重建;
水平複雜度(complexity1)=水平梯度的和(gradx)/grad_block_size;
垂直複雜度(complexity2)=垂直梯度的和(grady)/grad_block_size;
其中,0
Figure 112102125-A0202-12-0021-37
x
Figure 112102125-A0202-12-0021-38
重建塊的總列數,0
Figure 112102125-A0202-12-0021-41
y
Figure 112102125-A0202-12-0021-40
重建塊的總行數,第t列重建-第t-1列重建表示第t列和第t-1列對應位置的樣本的值兩兩相減,第s行重建-第s-1行重建表示第s行和第s-1行對應位置的樣本的值兩兩相減,grad_block_size是計算梯度重建塊中涉及到的像素點的個數。例如,當前重建塊為4×2,水平複雜度中的grad_block_size為3×2=6(水平方向減少一行),垂直複雜度中的grad_block_size為4×1=4(垂直方向減少一列)。
4)銳化加權法
具體地,視頻解碼器根據當前塊的前n個重建塊進行銳化,對銳化結果進行加權。其中,1
Figure 112102125-A0202-12-0021-42
n
Figure 112102125-A0202-12-0021-43
已解碼圖像塊的個數。常見的銳化演算法包括Robert、Prewitt、Sobel、Laplacian和Kirsch。
complexity1=A1×P;
complexity2=A2×P;
complexity=| complexity1|+| complexity2|;
其中,P表示重建塊的所有像素值,A1和A2分別表示上述任意一種銳化演算法的水平運算元和垂直運算元,A1×P表示在P上應用A1運算元。
情況3、視頻解碼器根據待解碼圖像的資訊確定當前塊的預 測比特數(pred_bits)。
1)視頻解碼器根據剩餘比特數和剩餘塊個數得到預測比特數。
pred_bits=remain_bits/remain_blocks。
2)視頻解碼器根據已解碼圖像塊的實際比特數(real_bits)加權得到預測比特數。
具體地,視頻解碼器根據前n個已解碼圖像塊的實際比特數進行加權,1
Figure 112102125-A0202-12-0022-44
n
Figure 112102125-A0202-12-0022-45
已解碼圖像塊的個數。
pred_bits=B1×real_bits1+B2×real_bits2+......+Bn×real_bitsn;
其中,B1,B2,......,Bn均大於0,且B1+B2+......+Bn=1。
可選的,在上述通過待編碼圖像的資訊確定至少一種碼率控制參數的基礎上,其他碼率控制參數還可以根據至少一種碼率控制參數推算得到。具體地,包括以下3種情形:
情形1、視頻解碼器根據預測比特數和複雜度確定資源充裕度
1)視頻解碼器根據當前塊的資訊(剩餘比特數、剩餘塊個數)和預測比特數確定資源充裕度。
如果(remain_bits/remain_blocks)>1+a×pred_bits,則表示資源充足;
如果(remain_bits/remain_blocks)
Figure 112102125-A0202-12-0022-46
1-a×pred_bits,則表示資源不足;
其中,0<a<1。
2)視頻解碼器根據當前塊的複雜度和預測比特數,以及前n個已解碼圖像塊的複雜度的最大值(max_complexity),結合當前塊的尺寸資訊和輸入像素深度確定資源充裕度。其中,1
Figure 112102125-A0202-12-0022-47
n
Figure 112102125-A0202-12-0022-48
已解碼圖像塊的個數。
如果complexity/max_complexity×C×block_size×bpp<pred_bits,則表示資源充足;
如果complexity/max_complexity×C×block_size×bpp>pred_bits,則表示資源不足。
其中,C>1。
情形2、視頻解碼器根據預測比特數和資源充裕度確定複雜度
1)複雜度加權法
視頻解碼器根據前n個已解碼圖像塊的複雜度進行加權,1
Figure 112102125-A0202-12-0023-49
n
Figure 112102125-A0202-12-0023-50
已解碼圖像塊的個數;
complexity=D1×complexity1+D2×complexity2+......+Dn×complexityn
其中,D1,D2,......,Dn均大於0,且D1+D2+......+Dn=1。
2)視頻解碼器根據前n個已解碼圖像塊的複雜度(pre_complexity)和當前塊的位置資訊確定當前塊的複雜度。其中,1
Figure 112102125-A0202-12-0023-51
n
Figure 112102125-A0202-12-0023-52
已解碼圖像塊的個數。
具體地,視頻解碼器確定當前塊在待解碼圖像中的位置,進一步地,確定當前塊在該待解碼圖像中並行單元的位置,該並行單元可以為slice和/或組處理單元。若當前塊處於該並行單元的前1/n位置,則將第二權重係數w2設為1+a;若當前塊處於該並行單元的中間1/n位置,則將w2設為1;若當前塊處於該並行單元的後1/n位置,則將w2設為1-a,其中,0<a<1。
可選的,a隨著前1/n與後1/n相對中間1/n的距離的增加而增加。通過a取值的改變,調整相應的第二權重係數。
complexity=w2×pre_complexity;
可以理解的是,並行單元不同,第二權重係數不同,當同時考慮當前塊在待解碼圖像中slice的位置和組處理單元的位置時,視頻解碼器可以將各自的權重係數的乘積作為第二權重係數。
3)視頻解碼器根據前n個已解碼圖像塊的預測比特數(pre_pred_bits)、前n個已解碼圖像塊的資源充裕度(pre_sufficiency),以及當前塊的預測比特數、資源充裕度確定當前塊的複雜度。
如果pred_bits>pre_pred_bits且sufficiency>pre_sufficiency認為是複雜度小;
如果pred_bits<pre_pred_bits且sufficiency<pre_sufficiency認為是複雜度大。
情形3、視頻解碼器根據資源充裕度和複雜度確定預測比特數
1)視頻解碼器根據前n個已解碼圖像塊的預測比特數加權得到當前塊的預測比特數,1
Figure 112102125-A0202-12-0024-53
n
Figure 112102125-A0202-12-0024-56
已解碼圖像塊的個數。
pred_bits=E1×pred_bits1+E2×pred_bits2+......+En×pred_bitsn;
其中,E1,E2,......,En均大於0,且E1+E2+......+En=1。
2)視頻解碼器根據前n個已解碼圖像塊的預測比特數和實際比特數加權得到當前塊的預測比特數,1
Figure 112102125-A0202-12-0024-57
n
Figure 112102125-A0202-12-0024-58
已解碼圖像塊的個數。
pred_bits=F1×pred_bits1+......+Fn×pred_bitsn+G1×real_bits1+......+Gn×real_bitsn
其中,F1,......,Fn,G1,......,Gn均大於0,且F1+......+Fn+G1+......+Gn=1。
3)視頻解碼器根據前n個已解碼圖像塊的整體複雜度(pre_complexity)、前n個已解碼圖像塊的預測比特數(pre_pred_bits),以及當前塊的複雜度(complexity)加權得到當前塊的預測比特數,1
Figure 112102125-A0202-12-0024-59
n
Figure 112102125-A0202-12-0024-60
已解碼圖像塊的個數。其中,pre_complexity為可變值,以滿足以下公式的計算:
pred_bits=clip(complexity/pre_complexity,1-a,1+a)×pre_pred_bits;
其中,clip(complexity/pre_complexity,1-a,1+a)表示通過調整pre_complexity使得complexity/pre_complexity的值處於(1-a,1+a)的區間範圍內,0<a<1。
需要說明的是,其中,pre_complexity可以為前n個已解碼圖像塊的複雜度均值;或者,為前n個已解碼圖像塊的任意一個複雜度;或者,為前n個已解碼圖像塊的複雜度的最大值等其他表示整體複雜度的係數。
4)視頻解碼器根據前n個已解碼圖像塊的整體複雜度、實際比特數以及當前塊的複雜度加權得到當前塊的預測比特數,1
Figure 112102125-A0202-12-0025-61
n
Figure 112102125-A0202-12-0025-62
已解碼圖像塊的個數。其中,pre_complexity為可變值,以滿足以下公式的計算;
pred_bits=clip(complexity/pre_complexity,1-a,1+a)×real_bits;
相關係數取值與上述3)相同,此處不再贅述。
5)視頻解碼器根據位置資訊獲得經驗值,以及當前塊的複雜度,和前n個已解碼圖像塊的預測比特數加權得到當前塊的預測比特數,1
Figure 112102125-A0202-12-0025-63
n
Figure 112102125-A0202-12-0025-64
已解碼圖像塊的個數。
具體地,視頻解碼器確定當前塊在待解碼圖像中的位置,進一步地,確定當前塊在該待解碼圖像中並行單元的位置,該並行單元可以為slice和/或組處理單元。具體地,若當前塊處於該並行單元的前1/n位置且複雜度小於第一預設複雜度,則將第三權重係數w3設為1+a;若當前塊處於該並行單元的中間1/n位置,則將w3設為1;若當前塊處於該並行單元的後1/n位置且複雜度大於第二預設複雜度,則將w3設為1-a,其中,0<a<1,第一預設複雜度小於第二預設複雜度。示例性的,a為0.2,第一預設複雜度為2000,第二預設複雜度為10000。
可選的,a隨著前1/n與後1/n相對中間1/n的距離的增加而增加。通過a取值的改變,調整相應的第三權重係數。
可以理解的是,並行單元不同,第三權重係數不同,當同時考慮當前塊在待解碼圖像中slice的位置和組處理單元的位置時,視頻解碼 器可以將各自的權重係數的乘積作為第三權重係數。
通過上述三種情形,利用碼率控制參數之間的相關性,有助於提升方案可實施性。
情況4、視頻解碼器根據待解碼圖像的資訊確定平均量化參數(average_quantization)。
可選的,視頻解碼器採用上述三種情況中的任意一種情況獲取前n個已解碼圖像塊的量化參數,1
Figure 112102125-A0202-12-0026-65
n
Figure 112102125-A0202-12-0026-66
已解碼圖像塊的個數,獲取前n個已解碼圖像塊的量化參數可參考下文步驟S602的描述。
1)全域平均
average_quantization=前n塊量化參數之和(total_sum)/n(total_blocks)
2)滑動平均
具體地,視頻解碼器根據位置資訊對應不同權重計算平均量化參數:
average_quantizationt=average_quantizationt-1×H1+H2×pre_quantization
其中,t表示當前塊,t-1表示當前塊的前一個已解碼圖像塊,average_quantizationt-1表示前一個已解碼圖像塊的平均量化參數,pre_quantization表示前一個已解碼圖像塊的量化參數。其中,H1+H2=1,H1、H2均大於0。
3)視頻解碼器根據前n個已解碼圖像塊的複雜度和當前塊的複雜度確定平均量化參數。
具體地,視頻解碼器將前n個已解碼圖像塊的複雜度劃分k個級別,確定當前塊的複雜度在k個級別中的位置,並計算該級別的量化參數的平均值作為當前塊的量化參數。示例性的,級別1為complexity>10000,級別2為1000<complexity<10000,級別3為complexity<1000,若當前塊的複雜度在級別3的範圍內,則計算級別3的量化參數的平均值作為該當前塊的平均量化參數。
4)視頻解碼器根據前n個已解碼圖像塊的資源充裕度和當前塊的資源充裕度確定平均量化參數。
5)視頻解碼器根據前n個已解碼圖像塊的預測比特數和當前塊的預測比特數確定平均量化參數。
其中,4)、5)與上述3)類似,劃分級別並計算相應級別的量化參數的平均值,此處不再贅述。
6)視頻解碼器用當前塊的預測比特數和之前塊的實際比特數進行聚類。
需要說明的是,上述3)-6)的方法主要採用了根據當前塊的某種資訊和之前N個塊的某種資訊進行聚類,相似類中的塊的量化參數進行平均,其中,還可以針對級別中不同塊使用不同的係數進行加權平均,得到平均量化參數。此外,用於聚類的資訊可以是多種資訊的組合,例如複雜度,資源充裕度,預測比特數中的至少兩個。
情況5、視頻解碼器根據待解碼圖像的資訊確定量化參數的變化值(△quantization)。
1)視頻解碼器根據前n個已解碼圖像塊的預測比特數和實際比特數的差值的累加,以及當前塊的尺寸資訊映射得到量化參數的變化值。
其中,前n個已解碼圖像塊的預測比特數和實際比特數的差值的累加由pred_real_sum表示,即
Figure 112102125-A0202-12-0027-102
,1
Figure 112102125-A0202-12-0027-68
n
Figure 112102125-A0202-12-0027-69
已解碼圖像塊的個數。
△quantization=clip(pred_real_sum/block_size,J1,J2);
其中,|J1|和|J2|均小於最大量化參數,該最大量化參數為預設值,表示待解碼圖像塊可採用的最大的量化參數。
可選的,pred_real_sum可替換為target_real_sum,該target_real_sum表示前n個已解碼圖像塊的目標比特數和實際比特數的差值的累加。其中,目標比特數(target_bits)是指目標像素深度(target bpp) 與當前塊的尺寸資訊的乘積。
可以理解的是,目標像素深度以塊處理單元為單位,用於表示傳輸當前塊的像素深度,即在基於傳輸待解碼圖像的輸入bpp的基礎上,進一步限定的參數。
target_bits=target bpp×block_size;
Figure 112102125-A0202-12-0028-100
,1
Figure 112102125-A0202-12-0028-71
n
Figure 112102125-A0202-12-0028-72
已解碼圖像塊的個數
△quantization=clip(target_real_sum/block_size,J1,J2)
可選的,pred_real_sum可替換為target_pred_sum,該target_pred_sum表示前n個已解碼圖像塊的目標比特數和預測比特數的差值的累加。
Figure 112102125-A0202-12-0028-101
,1
Figure 112102125-A0202-12-0028-75
n
Figure 112102125-A0202-12-0028-76
已解碼圖像塊的個數
△quantization=clip(target_pred_sum/block_size,J1,J2)
示例性的,最大量化參數用max_quantization來表示,J1為-max_quantization/3,J2為max_quantization/3。示例性的,J1為-4,J2為4。
2)視頻解碼器根據前n個已解碼圖像塊的目標比特數和預測bits數比特數的差值的累加,映射得到量化參數的變化值。
△quantization=sigmoid(target_pred_sum/block_size)×J3,其中J3為參數。
如圖8所示,函數y=sigmoid(x)是一個s形函數,y的取值範圍是[0,1],x趨於正無窮時,y=1,x趨於負無窮時,y=0。
需要說明的是,target_pred_sum還可以替換為pred_real_sum或target_real_sum。
3)視頻解碼器根據當前塊的複雜度、前一個已解碼圖像塊的複雜度以及最大量化參數確定量化參數的變化值。
若complexity>pre_complexity,則△quantization= clip(△pre_quantization+1,0,max_△quantization);
若complexity<pre_complexity,則△quantization=clip(△pre_quantization-1,0,max_△quantization)。
其中,△pre_quantization表示前一個已解碼圖像塊的量化參數的變化值,max_△quantization表示待解碼圖像中圖像塊的最大的量化參數的變化值,該最大值可以為預設固定值。
5)視頻解碼器設定量化參數的變化值為固定值。
示例性的,固定值為△quantization=1。
6)視頻解碼器根據待解碼圖像的資訊以及當前塊的其他碼控參數調整量化參數的變化值。
如果圖像位寬大於8bit,則△quantization=2;或者,如果當前通道為色度分量時,則△quantization=2;或者,如果當前塊的位置處於並行單元的前1/n位置,則△quantization=1;如果當前塊的位置處於並行單元的後1/n位置,則△quantization=2;如果當前塊的位置處於並行單元的邊界處,則△quantization=1。
需要說明的是,視頻解碼器還可以根據其他輸入參數調整固定值。
可選的,視頻解碼器根據當前塊的其他碼控參數中的資源充裕度設定量化參數的變化值為固定值。示例性的,如果當前塊的資源充足,則△quantization=1;如果當前塊的資源不足,則△quantization=4。
可選的,在上述步驟S601之前,該方法還包括,視頻解碼器初始化碼率控制參數,如圖9所示,包括以下步驟。
步驟S901、視頻解碼器根據待解碼圖像的資訊計算當前塊的總比特數。
其中,總比特數是指當前塊所佔用的比特數,根據上述待解碼圖像的基本資訊中的採樣格式、解析度、bpp計算總比特數。
可選的,總比特數可以按照圖像的採樣格式進行計算,例如,圖像為YUV格式,則可以分別計算Y通道的總比特數,U通道的總比特數和V通道的總比特數。其中,多個通道還可以組成不同的集合計算總比特數。
具體地,N通道圖像劃分為M個集合(M
Figure 112102125-A0202-12-0030-78
N)。示例性的,Y通道為第一集合,U通道和V通道為第二集合。
第一種可能的實現方式,各集合的參數相互獨立。其中,參數包括初始化參數,碼率控制參數、量化參數等解碼過程中的所有可變參數。該參數也可以包括上述所有可變參數中的部分參數,即各集合的部分參數或全部參數相互獨立。
第二種可能的實現方式,各集合的參數公用。類似地,該參數可以包括上述所有可變參數中的部分或全部參數,各集合公用部分或全部參數。示例性的,第一集合和第二集合的公用參數包括初始化的參數、更新的參數閾值和量化參數,獨立參數包括中間變數,碼率控制參數。其中,該中間變數是指計算量化參數中產生的中間參數,例如,基於當前塊的已解碼的圖像塊的個數。
可選的,上述參數按照M個集合進行更新。具體地,各個集合完成解碼後,更新參數;或者,所有集合完成解碼後,更新參數。
步驟S902、視頻解碼器根據總比特數確定可用比特數,該可用比特數用於存儲當前塊解碼前的圖像資料。
可選的,視頻解碼器去除掉總比特數中用於存儲非圖像資料的其他比特數為可用比特數。示例性的,其他比特包括以下多種類型的資料,例如用於存儲圖像的頭資訊的預留比特,用於確定資料在碼流中的位置的塊間偏移比特。可選的,視頻解碼器將總比特數作為可用比特數,這是因為在某些應用中,總比特中不包含其他比特。
可選的,在上述步驟S902之後,還可以包括分支步驟、視頻解碼器根據通道劃分結合,並計算各集合的可用總比特數目;將總資源按 照M個集合的比例分配到各個集合。
其中,M個集合的比例可以參考各個集合的圖像塊數確定。視頻解碼器將當前塊的可用總比特數按照集合的比例分配。
可選的,該分支步驟還可以應用與步驟S902之前,視頻解碼器計算M個集合分別的可用比特數。
其中,步驟S902中的其他非圖像比特數在劃分集合後分別去除。
可以理解的是,先劃分集合再分別去除各個集合中的用於存儲非圖像資料的其他比特數,有助於提升各個集合中可用比特數的靈活性,提升視頻解碼器的性能;先在總比特數中去除用於存儲非圖像資料的其他比特數,得到總的可用比特數,再劃分各個集合的可用比特數時,有助於保證各個集合中可用比特數的一致性。
可選的,在上述步驟S901之後,視頻解碼器還根據bpp,計算目標bpp(target_bpp);示例性的,target_bpp=bpp-0.1;可選的,該target_bpp可以是M個集合公用的,也可以是每個集合獨立的target_bpp。
如果每個集合具有獨立的target_bpp,此時全部集合加權得到的target_bpp要滿足bpp的限制,例如bpp=target_bpp+0.1(經驗值)。
需要說明的是,該目標bpp用於確定目標比特數,以及與目標比特數的其他參數。
步驟S903、視頻解碼器初始化中間參數,該中間參數用於結合一個或多個碼率控制參數確定當前塊的量化參數。
示例性的,包括以下參數target_bits、target_real_sum以及pred_real_sum。在初始化時,可以將這些參數設置為:
target_bits=total_bits/total_blocks;
target_real_sum=target_bits×total_blocks-total_bits;
pred_real_sum=0。
可選的,在計算碼率控制參數中的部分中間變數也可以在該步驟中預先定義,例如最大量化參數、允許複雜度的最大值等等。
步驟S602、視頻解碼器根據一個或多個碼率控制參數確定當前塊的量化參數。
具體地,包括以下7種方案。
方案1、將平均量化參數作為量化參數。
方案2、根據平均量化參數和量化參數變化值加權得到量化參數。
quantization=clip(average_quantization+△quantization,0,max_quantization)。
方案3、根據當前塊的複雜度、前一個已解碼圖像塊的複雜度以及前一個已解碼圖像塊的量化參數確定量化參數。
quantization=clip(complexity/pre_complexity,1-a,1+a)×pre_quantization;
其中,0<a<1。
方案4、根據當前塊的位置資訊、複雜度,以及前一個已解碼圖像塊的量化參數確定當前塊的量化參數。
如果當前塊處於該並行單元的前1/n位置,則第四權重係數w4為1-a;處於該並行單元的後1/2位置,則w4為1+a,0<a<1;
quantization=w4×pre_quantization;
可選的,如果當前塊的複雜度大於K1(或資源充裕度小於L1),則quantization=w4×pre_quantization×(1+b);如果複雜度小於K2(或資源充裕度大於L2),則quantization=w4×pre_quantization×(1-b),0<b<1,0<K1<K2,0<L1<L2;
方案5、根據前一個已解碼圖像塊的資訊確定當前塊的量化參數。
1)如果前一個已解碼圖像塊的target_real_sum>0,則quantization=clip(pre_quantization+M,0,max_quantization);如果前一個已解碼圖像塊的target_real_sum<0,則quantization=clip(pre_quantization-M,0,max_quantization);其中,M>1。
2)或者根據pred_real_sum,如果pred_real_sum大於預設閾值,則量化參數增加,反之,量化參數減少。
方案6、根據當前塊的位置資訊確定當前塊的量化參數。
示例性的,如果當前塊是並行單元中的第一個塊,quantization=0。
方案7、根據當前塊的多個複雜度確定當前塊的量化參數。
如果{complexity1<N1∥ complexity2<N2},其中,complexity1<N1與complexity2<N2至少一個滿足條件即成立;則quantization=0。N1與N2可通過位寬進行標定,N1、N2均大於0。
需要說明的是,結合上文針對圖2描述的編碼過程,視頻編碼器基於碼率控制參數生成量化參數的具體實現方式與上述解碼側的實施例為互逆的編碼流程,不再重複描述。
可選的,在上述確定量化參數後,視頻解碼器修正量化參數。
第一種可能的實現方式,根據當前塊的資源充裕度調整;若超過該資源充裕度的範圍則進行相應的調整。
示例性的,若資源充足,則quantization=clip(quantization -x,0,max_quantization);若資源不足,則quantization=clip(quantization +x,0,max_quantization);x>0。
第二種可能的實現方式,基於上述比特數進行調整。
1)根據之前全部目標比特數和實際比特數調整。
如果target_real_sum
Figure 112102125-A0202-12-0033-79
P1×target_bits且quntization
Figure 112102125-A0202-12-0033-80
pre_quantization,則quantization=clip(quantization+Q1,0,max_quantization); 如果target_real_sum<P2×target_bits且quantization>pre_quantization,quantization=clip(quantization+Q2,0,max_quantization)。其中,P1、P2、Q1、Q2的絕對值均大於1。
2)根據預測比特數和實際比特數目調整。
如果pred_real_sum<P3,則quantization=clip(quantization+Q3,0,max_quantization);如果pred_real_sum>P4,則quantization=clip(quantization+Q4,0,max_quantization)。其中,P3、P4、Q3、Q4的絕對值均大於1。
第三種可能的實現方式,根據前n個塊的實際比特數,以及當前塊的碼控緩衝區大小(buffer_size)調整。
target_real_sum實際和buffer_size相同。
示例性的,如果是8bit圖像,且buffer_size
Figure 112102125-A0202-12-0034-81
((max_buffer_size * 63)>>6),則quantization=max_quantization;如果是10bit圖像,且((max_buffer_size *15)>>4)
Figure 112102125-A0202-12-0034-82
buffer_size,則quantization=max_quantization;如果是其它比特圖像,且((max_buffer_size * 7)>>3)
Figure 112102125-A0202-12-0034-83
buffer_size,則quantization=max_quantization;如果buffer_size>0,則quantization=max(buffer_size * max_quantization/max_buffer_size,quantization);如果buffer_size<0,則quantization=0,buffer_size=0。
第四種可能的實現方式,根據當前塊的位置調整量化參數。
示例性的,如果處於並行單元的邊界處,則quantization=quantization/2;並行單元的邊界左右的並行單元的差距不能大於3;同一個並行單元的中上下左右塊的量化參數差距不能大於max_quantization/4。
第五種可能的實現方式,基於碼率控制的平滑度進行調整。
恆定碼率控制(Constant Bit Rate,CBR):該碼率控制方法存在一個buffer_size,每個塊都會根據實際比特數目和目標比特數更新 buffer_size,buffer_size嚴格不能超過第一預設閾值且不能小於0。其中,buffer_size為target_real_sum,或採用輸入bpp作為目標bpp計算target_real_sum。示例性的,採用了兩級緩衝區,兩級緩衝區並行獨立,來進行CBR。
a)一級緩衝,視頻解碼器限制量化參數的修正。
如果max_buffer_size×R1
Figure 112102125-A0202-12-0035-85
buffer_size,則quantization=max_quantization;如果max_buffer_size×R1<buffer_size<max_buffer_size×R2,則quantization=max(buffer_size×max_quantization/max_buffer_size,quantization);如果max_buffer_size×R2
Figure 112102125-A0202-12-0035-86
buffer_size,則quantization=0;如果buffer_size<0,表示編碼端在編碼過程中該當前塊包括多個無效資料;相應地,解碼端填充-buffer_size個比特數,該比特數為多個無效資料的比特數,並令buffer_size=0,使得解碼後圖像塊於編碼的圖像塊相同。
需要說明的是,上述一級緩衝還可以應用於視頻編碼器計算量化參數後進行修正。
可選的,b)二級緩衝,該量化參數的修正應用於編碼過程。
如果當前選擇的最優模式的real_bits會使得buffer_size<max_buffer_size×U1,此時選擇一個失真最小的模式;如果當前選擇的最優模式的real_bits會使得buffer_size<max_buffer_size×U2,此時選擇無失真的模式或者失真最小的模式;如果當前選擇的最優模式的real_bits會使得buffer_size>max_buffer_size×U3,此時選擇一個不會超過max_buffer_size x U3且失真較小;如果當前選擇的最優模式的real_bits會使得buffer_size>max_buffer_size×U4,此時選擇一個cost最小的新模式。
需要說明的是,該U1-U4可以根據max_buffer_size中cost最小模式的cost計算得到,或者預設不同的固定值。
第六種可能的實現方式,為了保證不出現buffer_size<0或buffer_size
Figure 112102125-A0202-12-0035-87
max_buffer_size的情況,要求buffer_size處於理想範圍內,即 max_buffer_size×V1<buffer_size<max_buffer_size×V2,其中,0
Figure 112102125-A0202-12-0036-88
V1
Figure 112102125-A0202-12-0036-89
V2
Figure 112102125-A0202-12-0036-90
1。
為了實現buffer_size處於上述理想範圍內,編碼端或解碼端可以在參數初始化時預留資源,該預留資源為max_buffer_size×V3,其中,V3
Figure 112102125-A0202-12-0036-91
1。其中,該預留資源在參數初始化中確定可用比特數時,屬於預留比特數,需要扣除以滿足後續資源的補充。
可以理解的是,該預留資源在實現buffer_size不外溢的情況下,還可以用於為最後幾個圖像塊編解碼,或者用於並行單元的邊界,將該預留資源釋放於資源相對不充裕的地方。
需要說明的是,上述修正量化參數的方案中未進行特殊說明的方案,均可在解碼端或編碼端生成量化參數後進行。
可選的,上述步驟S601-S603按照不同的並行單元實施。
實施例一、塊、行、組、slice級並行
具體地,編碼端記錄當前塊的資料的偏移資訊。該偏移資訊是指當前塊在並行單元中的位置,通過並行單元的第一個塊到當前塊的前一個圖像塊的實際比特數之和表示。
在編碼端,視頻編碼器將該偏移資訊寫入碼流,用於解碼端解析碼流並獲取該偏移資訊,實現定位當前塊在並行單元中的位置。
可選的,編碼端寫入碼流中的位置是整個並行單元碼流的開頭。
在解碼端,視頻解碼器獲取碼流中的偏移資訊,根據該偏移資訊定位該當前塊的位置,進行解碼。
需要說明的是,該偏移資訊在上述方案執行過程中,可以在參數初始化階段作為存儲非圖像資料的其他比特數去除,或者在編解碼過程中作為對並行單元的消耗計入實際比特數,或者在編解碼過程中不計入實際比特數的消耗。其中,計入方式不同,對於上述方案中的部分參數計 算產生影響,綜合考慮進行選擇。
實施例二、行級並行
具體地,編碼端按照規則填充於碼流中。
第一種可能的實現方式,每行分成若干個單元,每個單元按照某個給定參數(如128bit)對齊;(若該單元比特數不是128bit的倍數,則將該單元填充到128bits的倍數)。其中給定參數可以是:經驗參數,或者由行的寬、高以及bpp中的一個或多個資訊得到。
第二種可能的實現方式,slice行間最大bits數:所有slice同位置行中最長行的消耗bits數。按照slice行間最大比特數進行對齊;(若該行消耗比特數不是slice行間最大bits數的倍數,則將該消耗bits數填充到是slice行間最大比特數的倍數)。
第三種可能的實現方式,slice的編碼結束後,填充-buffer_size個bits數(CBR保證了buffer_size
Figure 112102125-A0202-12-0037-92
0)
針對上述三種可能的實現方式,解碼端包括三種可能的實現方式:
第一種可能的實現方式,讀取到單元末尾時,判斷當前消耗bits是否滿足給定參數bits的對齊,滿足則無需讀取填充bits,否則讀取滿足給定bits倍數所填充的bits數。
第二種可能的實現方式,解碼到行末尾時,判斷當前消耗bits是否滿足slice行間最大比特數的對齊,滿足則無需讀取填充bits,否則讀取slice行間最大比特數倍數所填充的比特數。
第三種可能的實現方式,讀取-buffer_size個填充比特數。
示例性的,一種碼流排布方法,以2個slice為例,其中,slice只會縱向劃分:slice1的第一個單元(填充),slice2的第一個單元(填充),slice1的第二個單元,slice2的第二個單元(填充)......slice1第一行的最後一個單元,slice2第一行的最後一個單元(填充)。
需要說明的是,slice第一行間最大比特數是slice1編碼一行 所消耗的比特數。
需要說明的是,該填充所消耗的比特數計入對應塊的實際比特數消耗,或者,填充所消耗的比特數不計入對應塊的實際比特數消耗。
實施例三、slice級並行
編碼端計算單元比特數寫入碼流。
可選的,當單元確定時,可以根據slice的寬度和高度以及bpp(或者target_bpp)中的一個或多個計算得到每個單元的比特數。示例性的,slice的寬×高×bpp=10000比特,該10000比特為slice中單元的比特數。
可選的,該單元的比特數也可以為預設的固定值。
其中,碼流排布一種碼流排布方法,以2個slice為例,其中,slice只會縱向劃分:slice1的第一個單元,slice2的第一個單元,slice1的第二個單元,slice2的第二個單元......slice1的最後一個單元,slice2的最後一個單元。
需要說明的是,每個單元的比特數為上述兩種可選方式中任意一種確定的恆定大小。
解碼端按照第一slice的第一個單元、第二個slice的第一個單元、第一個slice的第二個單元、第二個slice的第二個單元的順序解析碼流。
需要說明的是,上述並行方案中未進行特殊說明的方案,均可在解碼側或編碼側進行。
需要說明的是,在不衝突的情況下是,上文中任意多個實施例中的部分或全部內容可以構成新的實施例。
本發明實施例提供一種解碼裝置,該解碼裝置可以為視頻解碼器。具體的,解碼裝置用於執行以上解碼方法中的視頻解碼器所執行的步驟。本發明實施例提供的解碼裝置可以包括相應步驟所對應的模組。
本發明實施例可以根據上述方法示例對解碼裝置進行功能模組的劃分,例如,可以對應各個功能劃分各個功能模組,也可以將兩個或兩個以上的功能集成在一個處理模組中。上述集成的模組既可以採用硬體的形式實現,也可以採用軟體功能模組的形式實現。本發明實施例中對模組的劃分是示意性的,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式。
在採用對應各個功能劃分各個功能模組的情況下,圖10示出上述實施例中所涉及的解碼裝置的一種可能的結構示意圖。如圖10所示,解碼裝置100包括獲取模組1001、確定模組1002和解碼模組1003。
獲取模組1001,用於獲取待解碼圖像中當前塊的一個或多個碼率控制參數,例如上述步驟S601。
確定模組1002,用於根據一個或多個碼率控制參數確定當前塊的量化參數;例如上述步驟S602。
解碼模組1003,用於基於當前塊的量化參數對當前塊進行解碼,例如上述步驟S603。
在一種示例中,獲取模組1001,具體用於獲取待解碼圖像的資訊,待解碼圖像的資訊包括待解碼圖像的基本資訊和待解碼圖像中圖像塊的資訊;根據待解碼圖像的資訊中的部分或全部確定當前塊的一個或多個碼率控制參數。
在一種示例中,碼率控制參數包括當前塊的資源充裕度、當前塊的複雜度、當前塊的預測比特數、當前塊的平均量化參數和當前塊的量化參數的變化值;其中,平均量化參數用於表徵待解碼圖像中已解碼圖像塊的量化參數的平均程度,資源充裕度是指用於存儲當前塊的資源在用於存儲待解碼圖像的資源中的充足程度,複雜度是指待解碼圖像中已解碼圖像塊的複雜程度,預測比特數是指預估當前塊解碼後佔用的資源,量化參數的變化值是指待解碼圖像中已解碼圖像塊之間量化參數的變化值。
在一種示例中,確定模組1002,具體用於獲取已解碼圖像塊 的碼率控制參數;根據已解碼圖像塊的碼率控制參數確定當前塊的量化參數。
在一種示例中,確定模組1002,具體用於獲取已解碼圖像塊的量化參數;根據已解碼圖像塊的量化參數確定當前塊的量化參數。
在一種示例中,確定模組1002,還用於根據當前塊資訊計算當前塊的總比特數,當前塊的總比特數為當前塊解碼後所佔用的比特數;根據總比特數確定可用比特數,可用比特數為存儲當前塊解碼後的圖像資料,可用比特數用於確定當前塊的一個或多個碼率控制參數。
在一種示例中,確定模組1002,具體用於去除總比特數中用於存儲非圖像資料的其他比特數。
在一種示例中,確定模組1002,還用於初始化中間參數,中間參數用於結合一個或多個碼率控制參數確定當前塊的量化參數。
在一種示例中,確定模組1002,還用於基於一個或多個碼率控制參數,修正量化參數。
在一種示例中,確定模組1002,還用於更新一個或多個碼率控制參數。
本發明實施例還提供了一種電子設備,該電子設備包括上述解碼裝置100,該解碼裝置100執行上文提供的任意一種視頻解碼器所執行的方法。
本發明實施例還提供了一種通信系統,該通信系統包括上述解碼裝置100和編碼裝置,該解碼裝置100執行上文提供的任意一種視頻解碼器所執行的方法,該編碼裝置執行上文中提供的任意一種視頻編碼器所執行的方法。
本發明實施例還提供了一種電腦可讀存儲介質,該電腦可讀存儲介質上存儲有電腦程式,當該電腦程式在電腦上運行時,使得該電腦執行上文提供的任意一種視頻解碼器所執行的方法。
關於上述提供的任一種電腦可讀存儲介質中相關內容的解釋及有益效果的描述,均可以參考上述對應的實施例,此處不再贅述。
本發明實施例還提供了一種晶片。該晶片中集成了用於實現上述解碼裝置100的功能的控制電路和一個或者多個埠。可選的,該晶片支援的功能可以參考上文,此處不再贅述。本領域普通技術人員可以理解實現上述實施例的全部或部分步驟可通過程式來指令相關的硬體完成。所述的程式可以存儲於一種電腦可讀存儲介質中。上述提到的存儲介質可以是唯讀記憶體,隨機接入記憶體等。上述處理單元或處理器可以是中央處理器,通用處理器、特殊應用積體電路(Application Specific Integrated Circuit,ASIC)、數位信號處理器(Digital Signal Processor,DSP),現場可程式邏輯閘陣列(Field Programmable Gate Array,FPGA)或者其他可程式邏輯器件、電晶體邏輯器件、硬體部件或者其任意組合。
本發明實施例還提供了一種包含指令的電腦程式產品,當該指令在電腦上運行時,使得電腦執行上述實施例中的任意一種方法。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行電腦程式指令時,全部或部分地產生按照本發明實施例的流程或功能。電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式設計裝置。電腦指令可以存儲在電腦可讀存儲介質中,或者從一個電腦可讀存儲介質向另一個電腦可讀存儲介質傳輸,例如,電腦指令可以從一個網站站點、電腦、伺服器或者資料中心通過有線(例如同軸電纜、光纖、數位用戶線路(Digital Subscriber Line,DSL))或無線(例如紅外、無線、微波等)方式向另一個網站站點、電腦、伺服器或資料中心進行傳輸。電腦可讀存儲介質可以是電腦能夠存取的任何可用介質或者是包含一個或多個可以用介質集成的伺服器、資料中心等資料存放裝置。可用介質可以是磁性介質(例如,磁片、硬碟、磁帶),光介質(例如,DVD)、或者半導體介質(例如固態硬碟(Solid State Disk,SSD))等。
應注意,本發明實施例提供的上述用於存儲電腦指令或者電腦程式的器件,例如但不限於,上述記憶體、電腦可讀存儲介質和通信晶 片等,均具有非易失性(non-transitory)。
在上述實施例中,可以全部或部分地通過軟體、硬體、韌體或者其任意組合來實現。當使用軟體程式實現時,可以全部或部分地以電腦程式產品的形式來實現。該電腦程式產品包括一個或多個電腦指令。在電腦上載入和執行電腦程式指令時,全部或部分地產生按照本發明實施例的流程或功能。電腦可以是通用電腦、專用電腦、電腦網路、或者其他可程式設計裝置。電腦指令可以存儲在電腦可讀存儲介質中,或者從一個電腦可讀存儲介質向另一個電腦可讀存儲介質傳輸,例如,電腦指令可以從一個網站站點、電腦、伺服器或者資料中心通過有線(例如同軸電纜、光纖、數位用戶線路(Digital Subscriber Line,DSL))或無線(例如紅外、無線、微波等)方式向另一個網站站點、電腦、伺服器或資料中心進行傳輸。電腦可讀存儲介質可以是電腦能夠存取的任何可用介質或者是包含一個或多個可以用介質集成的伺服器、資料中心等資料存放裝置。可用介質可以是磁性介質(例如,磁片、硬碟、磁帶),光介質(例如,DVD)、或者半導體介質(例如固態硬碟(Solid State Disk,SSD))等。
儘管在此結合各實施例對本發明進行了描述,然而,在實施所要求保護的本發明過程中,本領域技術人員通過查看圖式、發明內容、以及所附申請專利範圍,可理解並實現發明實施例的其他變化。在請求項中,“包括”(comprising)一詞不排除其他組成部分或步驟,“一”或“一個”不排除多個的情況。單個處理器或其他單元可以實現請求項中列舉的若干項功能。相互不同的從屬請求項中記載了某些措施,但這並不表示這些措施不能組合起來產生良好的效果。
儘管結合具體特徵及其實施例對本發明進行了描述,顯而易見的,在不脫離本發明的精神和範圍的情況下,可對其進行各種修改和組合。相應地,本說明書和圖式僅僅是所附請求項所界定的本發明的示例性說明,且視為已覆蓋本發明範圍內的任意和所有修改、變化、組合或等同物。顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明請 求項及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
S601,S602,S603:步驟

Claims (13)

  1. 一種視頻解碼方法,其特徵在於,包括:獲取待解碼圖像中當前塊的一個或多個碼率控制參數,所述碼率控制參數包括所述當前塊的資源充裕度、所述當前塊的複雜度、所述當前塊的預測比特數;根據所述一個或多個碼率控制參數確定所述當前塊的量化參數;基於所述當前塊的量化參數對所述當前塊進行解碼;其中,所述資源充裕度是指用於存儲所述當前塊的資源在用於存儲所述待解碼圖像的資源中的充足程度,所述複雜度是指所述待解碼圖像中已解碼圖像塊的複雜程度,所述預測比特數是指預估所述當前塊解碼後佔用的資源。
  2. 如請求項1所述的方法,其中,所述獲取待解碼圖像中當前塊的一個或多個碼率控制參數,包括:獲取所述待解碼圖像的資訊,所述待解碼圖像的資訊包括所述待解碼圖像的基本資訊和所述待解碼圖像中圖像塊的資訊;根據所述待解碼圖像的資訊中的部分或全部確定所述當前塊的一個或多個碼率控制參數。
  3. 如請求項1或2所述的方法,其中,所述碼率控制參數還包括所述當前塊的平均量化參數和所述當前塊的量化參數的變化值;其中,所述平均量化參數用於表徵所述待解碼圖像中已解碼圖像塊的量化參數的平均程度,所述量化參數的變化值是指所述待解碼圖像中已解碼圖像塊之間量化參數的變化值。
  4. 如請求項1所述的方法,其中,所述根據所述一個或多個碼率控制參數確定所述當前塊的量化參數,包括:獲取所述已解碼圖像塊的碼率控制參數;根據所述已解碼圖像塊的碼率控制參數確定所述當前塊的量化參數。
  5. 如請求項1所述的方法,其中,所述根據所述一個或多個碼率控制參數確定所述當前塊的量化參數,包括:獲取所述已解碼圖像塊的量化參數;根據所述已解碼圖像塊的量化參數確定所述當前塊的量化參數。
  6. 如請求項2所述的方法,其中,在所述獲取所述待解碼圖像的資訊之後,所述方法還包括:根據所述當前塊資訊計算當前塊的總比特數,所述當前塊的總比特數為所述當前塊解碼後所佔用的比特數;根據所述總比特數確定可用比特數,所述可用比特數為存儲所述當前塊解碼後的圖像資料,所述可用比特數用於確定所述當前塊的一個或多個碼率控制參數。
  7. 如請求項6所述的方法,其中,根據所述總比特數確定所述可用比特數,包括:去除所述總比特數中用於存儲非圖像資料的其他比特數。
  8. 如請求項6所述的方法,其中,所述方法還包括:初始化中間參數,所述中間參數用於結合所述一個或多個碼率控制參數確定所述當前塊的量化參數。
  9. 如請求項1或2中所述的方法,其中,在所述根據所述一個或多個碼率控制參數確定所述當前塊的量化參數之後,所述方法還包括:基於所述一個或多個碼率控制參數,修正所述量化參數。
  10. 如請求項1或2中所述的方法,其中,在所述根據所述一個或多個碼率控制參數確定量化參數之後,所述方法還包括:更新所述一個或多個碼率控制參數。
  11. 一種視頻解碼裝置,其特徵在於,包括:獲取模組,用於獲取待解碼圖像中當前塊的一個或多個碼率控制參數,所述碼率控制參數包括所述當前塊的資源充裕度、所述當前塊的複雜度、所述當前塊的預測比特數; 確定模組,根據所述一個或多個碼率控制參數確定所述當前塊的量化參數;解碼模組,用於基於所述當前塊的量化參數對所述當前塊進行解碼;其中,所述資源充裕度是指用於存儲所述當前塊的資源在用於存儲所述待解碼圖像的資源中的充足程度,所述複雜度是指所述待解碼圖像中已解碼圖像塊的複雜程度,所述預測比特數是指預估所述當前塊解碼後佔用的資源。
  12. 一種視頻解碼器,其特徵在於,所述視頻解碼器用於執行如請求項1至10中任一項所述的方法。
  13. 一種電腦可讀存儲介質,其特徵在於,所述電腦可讀存儲介質中存儲有程式,當所述程式在所述電腦上運行時,使得所述電腦執行如請求項1至10中任一項所述的方法。
TW112102125A 2022-01-21 2023-01-17 一種視頻解碼方法、裝置、視頻解碼器及存儲介質 TWI838089B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210074669.XA CN116095335A (zh) 2022-01-21 2022-01-21 一种视频解码方法、装置及存储介质
CN202210074669.X 2022-01-21

Publications (2)

Publication Number Publication Date
TW202337212A TW202337212A (zh) 2023-09-16
TWI838089B true TWI838089B (zh) 2024-04-01

Family

ID=

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112690000A (zh) 2018-09-21 2021-04-20 华为技术有限公司 用于进行反量化的装置和方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112690000A (zh) 2018-09-21 2021-04-20 华为技术有限公司 用于进行反量化的装置和方法

Similar Documents

Publication Publication Date Title
CN110603812B (zh) 显示器流压缩的子流多路复用的设备、方法和存储介质
JP6921873B2 (ja) ディスプレイストリーム圧縮のためのサブストリーム多重化
BR112020003037A2 (pt) sistema e método de ajuste de faixa dinâmico de componente cruzado (cc-dra) em codificação de vídeo
TW202046739A (zh) 用於適應性迴圈濾波器變數之適應變數集合
CN115152223A (zh) 对用于视频编解码的高级语法的输出层集数据和一致性窗口数据进行编解码
TW201931853A (zh) 具有聯合像素/變換為基礎之量化之視頻寫碼之量化參數控制
JP2022530480A (ja) クロマ量子化パラメータのマッピング関数のシグナリングのための方法及び装置
WO2023231866A1 (zh) 一种视频译码方法、装置及存储介质
TW201811028A (zh) 用於循環樣本處理之視訊寫碼工具
TW202349950A (zh) 圖像編解碼方法及裝置
WO2024104382A1 (zh) 图像编解码方法、装置及存储介质
WO2024061055A1 (zh) 图像编码方法和图像解码方法、装置及存储介质
WO2024022039A1 (zh) 一种视频图像解码方法、编码方法、装置及存储介质
WO2024022359A1 (zh) 一种图像编解码方法及装置
WO2024022367A1 (zh) 图像解码方法、编码方法及装置
TWI838089B (zh) 一種視頻解碼方法、裝置、視頻解碼器及存儲介質
CN115866297A (zh) 视频处理方法、装置、设备及存储介质
WO2023138532A1 (zh) 一种视频解码方法、装置、视频解码器及存储介质
TWI829424B (zh) 解碼方法、編碼方法及裝置
TWI821013B (zh) 視頻編解碼方法及裝置
WO2022174475A1 (zh) 视频编解码方法与系统、及视频编码器与视频解码器
WO2022193389A1 (zh) 视频编解码方法与系统、及视频编解码器
TW202415067A (zh) 圖像編碼方法和圖像解碼方法、裝置及存儲介質
TW202341739A (zh) 圖像解碼方法、圖像編碼方法及相應的裝置