- 新一代通用視頻編碼H.266/VVC:原理、標準與實現
- 萬帥等
- 1349字
- 2024-03-22 11:48:58
1.3.2 編碼框架及編碼工具
從根本上講,H.266/VVC視頻編碼標準的編碼框架并沒有革命性的改變。在標準制定過程中,JVET曾經積極探索各類神經網絡編碼工具,但均因復雜度等因素未納入標準第一版。因此,目前的H.266/VVC標準類似于以往的國際視頻編碼標準,仍采用混合編碼框架,如圖1.4所示,包括變換、量化、熵編碼、幀內預測、幀間預測及環路濾波等模塊[29]。為了編碼框架的簡潔,H.266/VVC標準的少量編碼技術沒有在圖1.4中體現,如亮度映射與色度縮放濾波、自適應色度變換、塊差分脈沖編碼調制等。
1.編碼單元
H.266/VVC仍采用基于編碼樹單元(Coding Tree Unit, CTU)和編碼樹塊(Coding Tree Block, CTB)的編碼單元劃分結構。待編碼圖像被分割成大小相等的方形CTU,1個CTU由1個亮度CTB、2個色度CTB組成。視頻編碼以CTU為單位,按順序遍歷所有CTU。

圖1.4 H.266/VVC視頻編碼標準的編碼框架
為更靈活、更有效地表示視頻內容,H.266/VVC利用四叉樹、二叉樹、三叉樹將CTU遞歸劃分成不同尺寸的編碼單元(Coding Unit, CU)。CU是視頻編碼的基本單位,大多編碼工具以CU為單位進行編碼。這種特性有助于編碼器根據視頻內容特性、視頻應用和終端的特性來自適應地選擇編碼模式。
2.幀內預測
幀內預測模塊主要用于去除圖像的空間相關性。通過編碼后的重建信息來預測當前像素塊以去除空間冗余信息,提高圖像的壓縮效率。與以往的標準相比,H.266/VVC引入了多參考行幀內預測、模式依賴的幀內平滑、更多角度模式、寬角度幀內預測、基于矩陣的幀內預測、分量間線性預測、位置相關的幀內預測組合等新技術。
3.幀間預測
幀間預測模塊主要用于去除視頻的時間相關性。幀間預測通過將已編碼圖像作為當前幀的參考圖像,獲取編碼塊的預測值,去除時間冗余,提高壓縮效率。H.266/VVC引入了帶有運動矢量差的Merge、幾何劃分幀間預測、聯合幀內幀間預測、對稱運動矢量差分編碼、自適應運動矢量精度、仿射運動補償預測、基于子塊的時域MV預測、雙向光流、解碼端運動矢量細化等新技術。
4.變換
變換模塊是指將以空間域像素形式描述的圖像轉換至變換域,以變換系數的形式表示。在較平坦和內容變化緩慢的區域,變換可使圖像能量集中至低頻區域,達到去除空間冗余的目的。H.266/VVC引入了多核變換、高頻調零、子塊變換、二次變換等新技術。
5.量化
量化模塊將變換系數(不進行變換時為殘差)進行多對一的映射,減小變換系數的動態范圍,可以有效地減小信號取值空間,進而獲得更好的壓縮效果。由于多對一的映射機制,量化過程不可避免地會引入失真,這也是視頻編碼中產生失真的根本原因。H.266/VVC引入了依賴標量量化新技術。
6.環路濾波
H.266/VVC中的環路濾波模塊包括去方塊濾波、像素自適應補償、自適應環路濾波、亮度映射與色度縮放等技術。去方塊濾波用于降低方塊效應;像素自適應補償用于改善振鈴效應;自適應環路濾波可以減小解碼誤差;亮度映射與色度縮放通過對動態范圍內信息重新分配碼字提高壓縮效率。去方塊濾波、像素自適應補償、自適應環路濾波3個模塊都處在編碼環路中,對重建圖像進行處理,并作為后續編碼像素的參考使用。亮度映射與色度縮放模塊較為復雜,詳見第9章。
7.熵編碼
熵編碼模塊將編碼控制數據、量化變換系數、幀內預測數據、幀間預測數據等信息編碼為二進制流進行存儲或傳輸。熵編碼模塊的輸出數據即原始視頻編碼后的碼流。H.266/VVC中采用先進的基于上下文的自適應二進制算術編碼進行熵編碼,引入了并行處理架構,在速度、壓縮效率和內存占用等方面均得到了大幅改善。
- Python Game Programming By Example
- Learning Neo4j 3.x(Second Edition)
- 名師講壇:Spring實戰開發(Redis+SpringDataJPA+SpringMVC+SpringSecurity)
- Getting Started with Greenplum for Big Data Analytics
- Corona SDK Mobile Game Development:Beginner's Guide(Second Edition)
- PHP編程基礎與實踐教程
- Apache Camel Developer's Cookbook
- FPGA嵌入式項目開發實戰
- Illustrator CS6設計與應用任務教程
- Mockito Essentials
- Python開發基礎
- Learning Jakarta Struts 1.2: a concise and practical tutorial
- Learning Unreal Engine Game Development
- 例解Python:Python編程快速入門踐行指南
- Enterprise Application Architecture with .NET Core