音視頻之H.264的可伸縮編碼SVC

系列文章:

1、音視頻之視頻壓縮技術及數字視頻綜述

2、音視頻之視頻壓縮編碼的基本原理

3、音視頻之H.264/AVC編碼器原理

4、音視頻之H.264的句法和語義

5、音視頻之H.264/AVC解碼器的原理和實現

6、音視頻之H.264視頻編碼傳輸及其在移動通信中的應用

7、音視頻之H.264的可伸縮編碼SVC


一、概述:

????????隨著視頻會議、可視電話、視頻點播、視頻監控等面向網絡應用的視頻服務的迅速增長,視頻編碼的目標由單純的追求高壓縮率轉向了使視頻流能夠更好地適應各種不同的網絡環境和用戶終端。然而, 實際系統中網絡環境和用戶終端設備均存在異構性。網絡的異構性體現在帶寬的不同,終端設備的異構性則是指處理能力和顯示能力的差異。這些對視頻編碼提出了新的挑戰,編碼器無法預知傳輸網絡和客戶設備的條件,因此,視頻服務器需要對視頻傳輸請求有自適應性, 以使得碼流可以被靈活地組織適應不同的應用需求。為了獲得這種自適應性,可以采用的視頻編碼技術主要有自適應編碼、轉碼、聯播、多描述編碼和可伸縮編碼等。

? ? ? ? 1、自適應編碼(Adaptive Coding):

????????根據網絡的狀況,編碼器可以使用碼率控制技術,改變量化參數或編碼幀率來生成所需速率的碼流。這對網絡帶寬變化有一定的適應性。但只能應用于碼率調整范圍受限的實時視頻傳輸場合,對于離線編碼系統(編碼和傳輸相獨 立)并不適用。

? ? ? ? 2、轉碼技術(Transcoding):

????????在服務器上保持一個質量足夠好的壓縮視頻流,根據網絡傳輸和用戶端情況,對高質量視頻流進行解碼和編碼,丟棄壓縮數據中不會嚴重影響視頻質量的部分,以獲得較低碼率/分辨率/幀率的視頻流。由于引入了額外解碼和編碼操作,當大量用戶點播時,會加重服務器開銷。

? ? ? ? 3、聯播(Simulcast):

????????也就是多碼流切換。將視頻信息進行多次編碼,在服務器上保存不同分辨率、幀率和碼率的碼流。當網絡帶寬發生變化時,服務器會選擇合適的碼流進行傳送。本方案能提供一 定的網絡帶寬自適應性,但同時也增加了編碼的時間、流媒體服務器的存儲空間和操作的復雜度。

? ? ? ? 4、多描述編碼(Multiple Description Coding):

????????將原始視頻編碼分解為多個相關碼流(描述),其中任何一個碼流都可以獨立解碼成滿足基本接收質量的視頻。接收端接收到的碼流越多,恢復的視頻質量越好。多描述編碼作為一種典型的容錯編碼方案,在多徑傳輸和多播中具有優勢。

? ? ? ? 5、可伸縮編碼(Scalable Video Coding):

????????可伸縮編碼實質上是將視頻信息按照重要性分解,對分解的各個部分按照其自身的統計特性進行編碼。一般它會將視頻編碼成一個基本層和一組增強層。基本層中包含滿足最小需求的基本信息,可以獨立解碼。增強層依賴于基本層,因此基本層在碼流中最為重要。增強層是對基本層信息的增強,接收到的增強層越多,視頻信息的恢復質量也就越高。

????????和其他編碼方案相比,可伸縮編碼允許一次壓縮后的視頻能以不同的碼率、幀率、空間分辨率和視頻質量解碼。因此可伸縮編碼為IP 網絡和移動無線網絡視頻傳輸提供了一套簡單、靈活的解決方案。可伸縮性編碼的相關研究已經進行了十幾年了,一直是編碼領域研究的熱點之一。一個成功的可伸縮視頻編碼,應該具有以下特性:

  • (1)支持時間、空間和SNR可分級;
  • (2)支持簡單的比特流自適應;
  • (3)與現在的單層編碼相比,解碼復雜度僅略有增加;
  • (4)解碼復雜度隨所需解碼的時空分辨率和比特率不同而相應變化;
  • (5)與非可伸縮編碼器相比,編碼效率沒有明顯的損失。

2、SVC的基本原理:

????????傳統的通信系統中,編碼器將視頻信號壓縮到一個特定的比特率,使此比特率小于或接近信道容量(帶寬),解碼器利用收到的全部數據重建視頻信號。但是在目前的流媒體應用環境下,編碼器無法預知傳輸網絡狀態和終端設備能力,因此要求視頻編碼器能夠實現特定使用環境下的最優編碼,使得編碼后的碼流可以靈活地適應不同網絡用戶的需求。

????????用戶的需求。 率失真理論表明率失真曲線是編碼器性能能夠達到的最佳曲線。 圖10.1給出了面向傳輸的可伸縮編碼方法與傳統非可伸縮編碼方法的比較。圖中,橫軸表示信道的比特率(信道帶寬),縱軸表示視頻解碼重建質量。率失真曲線表示了在特定碼率上各種編碼方法所能達到的 質量上限,階梯線表示了非可伸縮編碼技術所能達到的性能。一旦選定了一個特定的比特率,非可伸縮編碼就盡量使編碼質量達到最好, 即階梯線盡可能接近率失真曲線。當信道帶寬恰好與編碼比特率相同時,解碼端的視頻質量最優;當信道帶寬小于編碼比特率時,解碼端的質量會變得很差。相反,如果信道帶寬比編碼比特率高,解碼器的視頻質量也不能提高。為了適應網絡帶寬的變化,面向傳輸的編碼技術應盡可能逼近率失真曲線,具有在任意位置截斷的特性,而且解碼端的視頻質量隨著網絡帶寬的增加而不斷提高

?????????視頻編碼的可伸縮性包括時域可伸縮性、空域可伸縮性、質量可伸縮性等

  • ?時域可伸縮性是指將視頻流分解成表示不同幀率的信息, 其中基本層保留最低幀率的信息,隨著層數的增加幀率也隨之增加, 從而用戶能夠觀賞到更為連貫流暢的畫面
  • 空域可伸縮性是指將視頻流分解成表示不同分辨率的信息,其中基本層保留最低分辨率的信 息,隨著層數的增加分辨率也隨之增加,從而用戶能夠觀賞到更為細膩的畫面
  • 質量可伸縮性是指將像素值分解成不同級別,在基本層每個像素只擁有很小的比特率,因此畫面質量粗糙;隨著層數的增加, 每個像素的比特率也隨之增加,從而能夠展現出更為豐富的圖像內容

????????根據可伸縮性粒度大小的不同,可伸縮性又可分為精細粒度的可伸縮性(FGS,Fine Grain Scalability)、中等粒度的可伸縮性(MGS, Medium Grain Scalability)和粗粒度可伸縮性(CGS,Coarse Grain Scalability)。增強層的數目越多,可伸縮性的粒度就越小,反之則越 大。

????????根據可伸縮編碼的壓縮編碼架構的不同,可以分為基于DCT變換的視頻編碼和基于小波變換的可伸縮視頻編碼。前者的代表性技術包括基于H.264/AVC擴展的可伸縮編碼架構和MPEG-4的FGS編碼方案, 后者的代表性技術包括杠鈴式三維提升子帶視頻編碼器(3D-DWT Video Compression System)和運動補償嵌入式零樹塊編碼器(MC-EZBC)。

????????下面列出了可伸縮性編碼的基本類型。

  • (1)傳統可伸縮性編碼(Layered Scalability Coding),又細分為3種基本類型:時域可伸縮性編碼(Temporal Scalability Coding)、空 域可伸縮性編碼(Spatial Scalability Coding)和質量可伸縮性編碼 (SNR Scalability Coding)。
  • (2)精細粒度可伸縮性編碼(FGS,Fine Granular Scalable Coding)。
  • (3)漸進精細粒度可伸縮性編碼(PFGS,Progressive FGS)。

? ? ? ? 1、傳統可伸縮編碼:

????????傳統編碼可伸縮編碼在MPEG-2標準中就已有應用。可伸縮性編碼的核心思想是將視頻流在編碼時分為兩個或更多個碼流,這些碼流也稱為層。這些層中至少有一個是基本層(BL,Base Layer),其余的為增強層(EL,Enhancement Layer)。

  • 基本層包含視頻信號基本的也是最重要的信息,接收端接收到基本層就可重建基本質量的圖像;
  • 增強層包含視頻信號的細節信息,接收端將增強層和基本層一起解碼,可以重建出更高質量的圖像。

????????傳輸時可以根據基本層和增強層的不同重要性,賦予不同的優先級和保護機制。解碼器可在多個圖像質量級別上進行解碼,用戶可根據需要進行解碼,即使增強層的數據丟失或者被拋棄,也能夠使恢復的圖像質量達到一個可以接受的水平。傳統可伸縮性視頻編碼框架如圖10.2所示。

????????可伸縮性編碼有3種基本類型:時域可伸縮性(Temporal Scalability)、空域可伸縮性(Spatial Scalability)和SNR可伸縮性 (SNR Scalability)。這3種可伸縮性分別對應了視頻的幀率、分辨率、PSNR等基本參數,它們都能在基本層外提供一個或幾個增強層, 實現碼流的可伸縮性。

????????時域可伸縮編碼:

????????時域可伸縮編碼是通過調節圖像的幀率,在基本層幀率和最高幀率之間提供幀率的可伸縮性。當網絡帶寬較窄時,接收端只須接收到基本層幀率f_{BL}幀圖像就可恢復出基本視頻;當網絡帶寬較寬時,則可接收到f_{BL}f_{EL}幀圖像,解碼后的視頻更加流暢。

????????將各個碼流層定義為同一視頻的不同的時間分辨率下的表示。對不同內容的層使用不同的幀率,利用較低層的時間上采樣圖像作為較高層的預測。時間下采樣可通過簡單的丟幀來實現,而時間上采樣可通過增強層的預測幀來實現。時域可伸縮編碼如圖10.3所示。增強層預測幀的引入可以使壓縮性能得到改善,加大了編解碼器的復雜度和預測參考幀的存儲開銷。

????????

? ? ? ? 空域可伸縮性:

????????空域可伸縮性是通過為視頻中每幀圖像都提供多個分辨率表示來實現的。

????????其主要思想是:

  • 先對原始視頻中的每幀圖像進行下采樣獲得低分辨率圖像,編碼得到空域基本層碼流;
  • 然后編碼原始圖像和低分辨率圖像上采樣恢復圖像的差值信息,生成空域增強層碼流。當接收端接收到基本層后,即可解碼恢復出低分辨率的基本圖像;
  • 當接收端還能接收到增強層數據時,重建的圖像的分辨率提升,如果接收到圖像的所有增強層數據,即可恢復出原始圖像。

????????作為一個視頻流服務器,其發送視頻信息的目標可能是不同種類的終端設備,對每種設備都單獨編碼顯然是不合理的。空域可伸縮性的設計滿足了接收端設備顯示屏幕分辨率不同的場合,提供統一的可伸縮性視頻碼流就成為一種有效的解決方案。

? ? ? ? SNR可伸縮性:

????????SNR可伸縮性主要利用了視頻的峰值信噪比來提供可伸縮性。視頻圖像幀在編碼過程中存在量化這一步驟,量化是一種有損壓縮方法,通過改變量化步長,可以得到不同質量和壓縮比的圖像。若量化步長較小,則視頻圖像丟失的信息比較少,視頻質量的損失就比較少,但壓縮率就會偏低;若量化步長較大,則視頻圖像丟失的信息比較多,視頻壓縮率較高,但圖像質量損失比較大。????????

????????SNR可伸縮性就是利用視頻編碼過程中的量化這一步驟實現的。

????????其實現辦法有兩種:

  • 一 是先對原始視頻圖像進行粗量化,得到質量較差的圖像,進行編碼后形成基本層,然后對原始圖像與基本層的殘差進行細量化,得到增強層;
  • 二是將原始圖像進行DCT變換到頻域后,對低頻部分進行量化得到基本層,對高頻部分量化得到增強層。

????????其編碼示意圖如圖10.5所示。 SNR可伸縮性編碼和空域可伸縮性編碼很相似,只是SNR可伸縮編碼提供的增強層碼流和基本層碼流的分辨率是相同的。

????????

? ? ? ? 2、精細粒度可伸縮編碼:

????????精細粒度可伸縮視頻編碼(FGS,Fine Granular Scalable Coding) 是在MPEG-4上提出的,主要解決了網絡上視頻流的帶寬適應性的問題。其基本思想是將視頻編碼成為一個可以單獨解碼的基本層碼流和一個可以在任意點截斷的增強層碼流。

????????通常,基本層的碼率很低,要求所有的接收端都具備接收并解碼基本層的碼流的能力。當然基本層的碼率很低,僅僅解碼基本層碼流重建的視頻質量也不高。如果接收端有額外的帶寬和處理能力可以接收解碼更多的數據,那么它可以從發送端接收并解碼增強層的碼流來提升重建的視頻質量。

????????由于位平面編碼技術提供了精細可伸縮的特性,碼流可任意地被截斷,因此該碼流可以根據可用的網絡帶寬進行任意碼率的傳輸,接收端的終端用戶根據接收到的增強層碼流來增強基本層的視頻質量,接收到的增強層碼流越多,終端用戶重建的視頻質量就越高。FGS編碼技術可以在一個 很大的碼率范圍內調整數據傳輸,適應各種復雜的網絡帶寬變化。

????????FGS編碼雖然具有優良的可伸縮特性,但它也有致命的弱點,即效率太低。在同等碼率下,FGS的質量要比MPEG-4中的非可伸縮性編碼低2~3dB,這顯然是難以接受的,FGS的基本層和所有增強層都以參考幀的基本層圖像為參考進行運動補償,如圖10.6所示。

? ? ? ? 3、漸進精細粒度可伸縮編碼:

????????PFGS(PFGS,Progressive Fine Granular Scalability)編碼技術是在 FGS編碼技術的基礎上進行改進,具有更高的編碼效率。PFGS的編碼結構如圖10.7所示。

????????其基本思想是在編碼增強層用一些高質量的增強層重構圖像作為參考,使得運動補償更有效,從而提高了精細可伸縮編碼的編碼效率。

????????當然,這種編碼效率的改進必須以犧牲其精細可伸縮性的特性為前提條件,因此在設計漸進精細可伸縮性編碼框架時有兩個關鍵點:

  • 其一是在編碼增強層時盡量采用高質量的增強層為參考來提高編碼效率;
  • 其二是必須保留一些從基本層到最高質量的增強層之間完整的預測路徑,以使生成的碼流具有可伸縮性。

????????漸進精細粒度可伸縮性的視頻編碼方案PFGS,在保持了FGS所具有的網路帶寬自適應和錯誤恢復能力的同時,提高了將近1dB的編碼效率。

三、H.264的SVC:

????????JVT最終確定采用德國HHI研究所提出的基于H.264擴展的架構作為SVC新標準。基于H.264擴展的SVC編碼架構和目前的H.264視頻標準顯然存在著很大的聯系,SVC作為H.264的擴展被開發的,繼承了后者的核心編碼工具,其架構中有許多的編碼模塊都沿用了H.264標準的功能,如幀間運動估計方法、多參考幀運動估計、幀內預測、可變大小塊等。SVC通過考慮添加了那些必需并且高效地支持所需類型的可伸縮性的編碼工具。在本節中,將進一步對H.264 SVC的技術細節作簡要 的說明,分別介紹實現空域、時域和質量可伸縮性的關鍵技術

????????圖10.8顯示了H.264擴展和H.264的關系,它們是擴展和基礎的關系,前者是后者的功能擴展,后者是前者的基礎。

????????H.264擴展的SVC架構規定了3種主要檔次,每個檔次支持一類特定的應用,規定了相應的編碼功能。

  • (1)伸縮性基本檔次(Scalable Baseline Profile)。基本層的碼流符合H.264標準的基本檔次(Baseline Profile),增強層支持H.264主要檔次的許多編碼技術,例如B片的幀間編碼、加權預測幀間編碼、基于上下文的自適應的算術編碼CABAC、8×8亮度變換等。主要用于移動廣播、交互會話業務和視頻監控等應用。
  • (2)伸縮性高級檔次(Scalable High profile)。基本層的碼流符合H.264標準的高清檔次(High Profile),還支持任意分辨率的空域可伸縮編碼等。主要用于廣播、流和存儲等業務應用。
  • (3)伸縮性高級幀內檔次(Scalable High Intra Profile)。碼流中只包含IDR幀,支持H.264標準的高清檔次(High Profile)的編碼技術。

????????圖10.9是H.264 SVC的編碼原理框圖。空間可伸縮性通過空域分解下采樣來生成多個不同空間分辨率的信號。每個空域層再經過層次B幀預測編碼結構來提供時域可伸縮性。低空域層的運動信息和紋理信息可以用于高空域層相關信息的預測。H.264 SVC的視頻編碼也是基于宏塊的,每個宏塊除了可以進行幀內預測編碼和幀間預測編碼之外,高空間層的圖像還可以進行層間預測編碼。對于每個空間分層中的任意時間級圖像,都采用質量可伸縮性編碼

? ? ? ? 1、空域可伸縮性:

????????為了支持空域可伸縮編碼,SVC沿襲了傳統的多層編碼方案。每一個空間層對應于一個空間分辨率,假設標識為D(D=0,1,2,…),其中基礎層標識為0,其他空間層逐次遞增。在每一個空間層,跟非伸縮編碼一樣,使用幀間預測和幀內編碼。此時,為了改善編碼效率引入了層間預測(Inter-Layer Prediction)機制,如圖10.10所示。

標圖10.10? 含層間預測的空間可伸縮編碼的多層結構題

????????

????????層間預測通常還會引入額外的計算復雜度,SVC包含了能同時改善編碼效率和降低解碼復雜度的工具。為了限制存儲空間的需求和解碼器的復雜度,SVC要求基礎層和增強層的編碼順序是一致的。但是低層的圖片不需要在所有的訪問單元顯示,這樣是為了能將時間和空間分級結合起來。

????????層間預測:

????????在分層編碼的概念下,不同層間的預測算法是改善編碼效率的關鍵。層間預測算法的設計原則是盡量多地利用基礎層的信息來改善增強層的率失真性能。基本層的重建信號具有基本層的完整信息,但是不一定能被用來作層間預測的參考。當加入層間預測算法后,SVC的編碼性能將明顯改善,甚至有可能高于非伸縮編碼。編碼器可以根據輸入視頻信號的特性,自動選擇層間或者層內預測編碼。層間預測機制只能在訪問單元(Access Unit)內部進行,且被預測的幀,其空間層級應該高于參考幀。

????????SVC的層間預測技術主要分為3種:層間運動預測、層間殘差預測和層間幀內預測。下面分別進行介紹。

????????(1)層間運動預測:

????????在空間增強層,SVC設計包含了被稱作B1Skip的新宏塊模式。當增強層的宏塊采用這個新的預測模式時,其對應基本層宏塊采用幀間編碼模式,就可以使用層間運動預測模式。具體來說,此時增強層待編碼宏塊的分割模式、運動矢量和參考幀序號都將直接繼承其對應的基本層宏塊的值或尺度伸縮之后的值,所以實際上只需要傳遞殘差信息,從而節省了編碼比特數。

????????宏塊分割模式是通過低分辨率層的同一位置的8×8塊上采樣得到的。當基礎層的8×8塊沒有被分割成更小的子塊時,那么增強層的宏塊也不用分割;否則每個基礎層的A×B子宏塊分割對應于增強層的一個 (2A)×(2B)子宏塊。如果宏塊或者其子宏塊是直接模式編碼,其分割模式依賴于得到的運動向量。

????????對于這種新的宏塊類型,SVC可以使用成比例的運動向量作為傳統的運動補償宏塊模式的運動向量預測。SVC新增一個標志位用來區別這個運動向量預測是來自傳統的空間預測還是相應的基礎層運動向量乘以相應比例得到的。

????????(2)層間殘差預測:

????????當使用B1Skip模式進行層間運動預測時,基本層的運動信息可以被同一位置的增強層使用。為了進一步提升壓縮性能,SVC還設計了層間的殘差預測。

????????不管B1skip模式還是傳統的宏塊類型,層間殘差預測可以應用到所有的幀間預測編碼的宏塊。SVC將一個標志位加到空間增強層的宏塊語法中,標記是否使用了層間殘差預測。當這個標志位為真的時候, 相應的8×8的基礎層子宏塊的殘差信號,在經過雙線性濾波器上采樣后,可以用來作為增強層宏塊的預測殘差信號。

????????(3)層間幀內預測:

????????當一個增強層的宏塊采用B1Skip預測模式編碼,并且其對應的基本層的8×8子宏塊采用幀內編碼模式時,就必須采用層間幀內預測模式。亮度信號的上采樣分別在水平和垂直方向使用6抽頭FIR濾波器濾波,而對于色度信號的上采樣就是使用簡單的雙線性濾波器。這個濾波器總是作用在子宏塊的邊緣。如果基本層相鄰塊不是幀內編碼的,則原始像素還要通過特別的邊緣延拓算法來得到所需樣本。

? ? ? ?空間可伸縮擴展:

????????與MPEG-2、MPEG-4等編碼器類似,H.264 SVC支持任意分辨率的空間可伸縮編碼。唯一的限制是水平和垂直的分辨率從基本層到增強層不能減小。SVC的設計也可以使增強層只重現基本層中一個選定的矩形區域,把此區域編碼成更高的或者指定的空間分辨率,或者在增強層中添加超過基本層邊緣的部分。SVC還包含了隔行掃描視頻源的空間可分級編碼。任意空間分辨率、剪切和隔行掃描視頻源的空間可分級編碼,都可以通過三種基本的層間預測方法來實現。

? ? ? ? 2、時域可伸縮性:

??????????運動補償時域濾波器技術(MCTF,Motion Compensated Temporal Filter)在SVC標準初期被認為是一種有效的提供時間可分級功能的工具。MCTF是一種時域分級技術,沿著運動軌跡自適應地對圖像做離散小波變換,并可采用高效的小波提升結構,利用預測和更新算子實現高質量視頻重建。MCTF采用開環預測結構,原始幀被用作后續幀的參考,從而具有較高的預測質量。但MCTF的開環結構在實際應用中很容易造成編解碼兩端的匹配錯誤,更新算子也大大增加了算法和內存的開銷。隨著層次B幀預測技術的提出,其在大多數情況下的性能要超過 MCTF,JVT最終確定采用層次B幀預測技術作為實現時域可伸縮的標準方式。

????????一個提供時域可伸縮性的比特流可以分割成具有以下特性的一個基本層和一個或多個增強層:這些時間層通過時間級來標志,基本層以時間級0表示,其它的時間層依次遞增;對于一個自然數k,可以通過移除比特流中所有時間級大于k的時間增強層,得到一個通過給定解碼器解碼的子比特流。在混合視頻編解碼器中,一般情況下時間分級可以通過將當前被預測幀的運動補償預測參考幀限制在低于等于當前幀的時間層中來實現

????????圖10.10給出了實現時間伸縮的層次B幀預測編碼結構,包括4個時間增強層。圖10.11和圖10.12中下部的序號代表編碼順序,符號T_{X}代表相應的第X時域級別。基本層T_{0}采用全I幀或者IPPP的結構,而除T_{0}層以外的其他增強層通常編為B幀。兩個連續T_{0}層之間的所有增強層圖像幀加上后一個T_{0}圖像幀組成了一組圖像GOP。每個時間層集合{T_{0} ,...,T_{x}}可以獨立于所有時間級Y(大于X)的增強層被解碼。一般情況下完成時間分級的分層預測結構可以與H.264/MPEG-4的多參考幀方法相結合。參考幀列表可以使用多個參考幀,而且可以包含與被預測幀相同時間級的圖片。圖10.11給出了2個時間增強層的分層編碼結構。針對要求低延時的應用,SVC提出一種零延遲的時域伸縮預測編碼,如圖10.12所示。

????????除了時間上的預測,一個編碼器總是要應用率失真優化策略來優化和控制壓縮性能。在分層預測結構下,可以使用以下幾點來進一步改善編碼效率。

????????(1)多分級量化參數:

????????在分層預測結構的編碼過程中,一個重要的問題是如何針對不同的時間層來選擇量化參數。基本層編碼必須有最高的保真度,它是其他層級圖像運動預測的參考。其他時間層的量化參數數值可以逐層增加,時間層越高,重建圖像的質量影響越小。最優量化參數的選擇可以依照傳統方式,依靠率失真最優的策略來實現,然而在可伸縮編碼中,率失真優化的計算量會比非伸縮編碼顯著增加。為了降低計算復雜度,可充分利用不同層次視頻碼流之間的相關性,假設基本層的量化參數是QP_{0},對于時間層級為k>0的增強層量化參數可以選擇為QP_{k}QP_{0}+3+k。

????????(2)時間直接模式(Temporal Direct Mode):

????????在H.264解碼過程中,時間直接模式的運動向量由List0和List1中第1幀圖像對應的宏塊計算得來。當使用層次B幀預測超過兩個時間層級時,大約超過一半的B幀運動向量不適合用于產生直接模式的運動向量。此時即使修改參考幀列表相應圖像序號,也不能避免這個問題。 因此,對于層次B幀預測通常使用時間直接模式。

????????(3)運動搜索:

????????JM模型指出雙預測塊的運動向量是由兩個參考列表的獨立運動搜索決定的。因此,在運動搜索的時候,綜合考慮參考列表的預測信息也可以改善B片的編碼效率。

? ? ? ? 3、質量可伸縮性:

????????質量可伸縮是空間可伸縮的一個特例,此時基本層和增強層的空間尺寸是相同的。因此,可以運用一種顯而易見的方案來實現質量可分級,這種方法被稱作粗粒度質量可伸縮編碼(CGS,Coarse-Grain quality Scalability)

????????當在SVC中采用層間預測技術來實現CGS時,一 般通過采用比前一個CGS層更小的量化步長來重新量化殘差信息的方法來獲得更精細一級的紋理信息。CGS具有很大的局限性,它只支持固定個碼率點的質量分級,也就是粗略地在幾個固定碼率上調節視頻質量。在不同CGS層之間的切換也只能在比特流中的固定位置才可以實現。

????????為了增加比特流碼率自適應的靈活性,增加可支持的碼率點個數,SVC的設計中包括了一種稱之為精細粒度質量可伸縮編碼的技術 (FGS,Fine-Grain quality Scalability)。從理論上來說,FGS支持在任意位置截斷碼流,碼流中的每一位比特都可以對質量做出貢獻。

????????但由于FGS實現復雜度過高,JVT提出了一種替代方案:中等粒度質量可伸縮方案(MGS,Medium-Grain quality Scalability)

????????MGS的基本實現原理和CGS相似,也是采取逐層減小量化步長的策略。所不同的是,通過對高層語法元素的指示,MGS支持在任意訪問單元進行不同層之間切換,并運用關鍵幀的概念來控制誤差傳播和質量增強層編碼效率兩者之間的折衷。MGS還支持將質量增強層的變換系數分布到不同的分片中。

????????漂移控制:

????????在視頻編解碼過程中,運動補償預測是一種提高編碼壓縮效率的常用措施。編碼端和解碼端必須使得運動補償預測操作所需的參考圖像信息同步一致,否則解碼端的重建圖像與編碼端的圖像就會出現差異,這就是漂移

????????對于可伸縮編碼而言,運動補償預測的參考圖像信息中包含SNR增強層,使得參考圖像更具保真度,從而獲得更高的視頻編碼效率;但比特流的截斷或丟棄引起可伸縮解碼端的重建圖像漂 移。因此,需要綜合考慮運動補償預測和參考圖像,以達到編碼效率和漂移控制的平衡。下面就圖10.14給出了4種漂移控制方式進行對比分 析。

  • 按圖10.14(a)所示,運動補償預測只選用基本層參考,圖像的增強層不能被用于后一幀圖像的編碼,顯然可以完全避免漂移問題;這種方法的不足是與單層編碼相比,明顯地降低了視頻編碼效率。
  • 第二種情況如圖10.14(b)所示,可伸縮編碼的增強層圖像被用于運動補償預測參考,這可以獲得很高的編碼效率,但任何的SNR增強層的丟失或截斷處理都會造成漂移。
  • 第三種情況如圖10.14(c)所示,引入一種雙運動補償環的方法,基本層不會被增強層的任何修改所影響,但是任何增強層信息的丟失會在增強層的重建中仍引起漂移。
  • 在SVC的MGS設計中,運動補償預測所需的參考圖像被稱為關鍵幀,如果將關鍵幀和可伸縮編碼的多層結構綜合考慮,可以獲得編碼效率和漂移的平衡。可以看出,引入關鍵幀的層級越低,引起漂移問題越小,理想情況是只把基本層作為關鍵幀;與此相反,如果引入關鍵的層級越高,運動預測補償的參考圖像質量越好,視頻編碼效率也越高。關鍵幀在編碼器和解碼器之間飾演了一個重新對稱的角色,漂移的擴散被局限于GOP的內部。編碼效率和漂移之間的調節取決于GOP的大小和分層的數目。

? ? ? ? 漸進精細片:

????????質量可伸縮性通過反復的降低量化步長,從最小質量層開始通過逐步增加圖像細節,這個編碼方式稱之為漸進精細(Progressive Refinement),也為此新增加了一個Slice類型,稱之為漸進精細片 (Progressive Refinement Slice)。漸進精細片可以更有效地表示SNR增強層的NAL單元。通常情況下,某一層量化步長大小是下一層的一半。但是SVC的SNR可伸縮編碼與比特平面編碼有所不同的,SVC允許編碼器在決定變換系數方面有更大的自由度。對于特定變換系數, SVC的SNR可伸縮編碼可以任意調整SNR增強層的變換系數,這會對于編碼效率有很大的影響。

????????對于漸進精細片,SNR增強層表現為從粗到精的方式。整個宏塊的變化系數需要被傳輸,每個4×4變換塊允許只有一些變換系數被編碼。進一步而言,不僅能截斷包含漸進精細片的NAL單元,而且還可以分配一個漸進精細片的數據到多個NAL單元。

? ? ? ? 比特流提取:

????????從一個給定的SNR可分級的比特流中,幾乎可以任意比例來提取一個子流。這一般會通過截斷和丟棄SNR精細包的方法來調節。但是與比特率相關的編碼效率依賴于比特流提取的方法。

????????比特流提取的主要任務就是對編碼碼流進行分析,并根據解碼端用戶的需求對原始碼流進行切割。由于SVC在編碼時可以嵌入SEI信息標識時間、空間和質量分級,比特流提取只需丟棄那些高于要求的 NAL數據。對于要求截取具體比特率的碼流,情況則稍微復雜一些, 需要逐層檢查比特數是否已經滿足要求,并根據質量分級是由CGS還是MGS實現的不同,對最后一層的NAL數據作不同策略的截取或保留。

? ? ? ? 4、H.264的擴展:

????????H.264擴展繼承了H.264標準的大部分特性和句法元素,但是為了適應空域、時域和質量可伸縮編碼的要求,在H.264標準的基礎上修改或增加了一些語法結構或語義,包含層、Slice、參數集、宏塊、塊等眾多語法和語義修改,以及H.264標準未曾明確定義的一些保留參數的重新定義。考慮到NAL語法和Slice語法是H.264標準最重要的組成部分,而且SVC標準在也對這兩部進行了重要調整,可以說是可伸縮編碼最重要的組成部分。因此,下面主要分析一下NAL語法的擴展和 Slice語法的擴展。

? ? ? ? NAL擴展:

????????在H.264標準中,視頻編碼層VCL用來有效的表示視頻數據內容, 而網絡抽象層NAL用來為傳輸層或存儲介質格式化數據,并為傳輸提供合適的頭信息。所有數據都包含在NAL單元中,每個單元都包含整數個字節。

????????根據NAL單元結構介紹看出,NRI可以表示當前NAL單元的相對重要性,因此如果使用它來表示可伸縮編碼的層次結構,由于NRI占2位,因此只能區分4個可伸縮級,這顯然是不夠 的。因此,需要對H.264標準的1個字節的NAL Header進行擴展。新的結構是在原NALU的頭部增加3個字節專門用于表示可伸縮級,如圖 10.15所示。

????????在H.264標準保留的NAL單元類型中,有2個用于表示可伸縮擴展。當nal_unit_type等于14或nal_unit_type等于20時,解碼器識別到該NAL單元屬于可伸縮擴展類型,它將分析NAL頭的后三個字節,這三個字節新增的句法元素包括idr_flagpriority_id no_inter_layer_pred_flagdependency_idquality_idtemporal_iduse_ref_base_pic_flagdiscardable_flagoutput_flag,詳見表10.1所 示。本節將對新增句法元素作詳細解釋。

???

? ? ? ? ? ? ? ?idr_flag:

????????????????等于1表示當訪問單元(access units)是IDR幀。

? ? ? ? ? ? ??priority_id:

????????????????用于標識NAL單元的優先級。

??????????????no_inter_layer_pred_flag:??

????????????????用于標識層間預測是否用于解碼片數據。

  • 當no_inter_layer_pred_flag等于1時,層間預測不被用于解碼片數據;
  • 當no_inter_layer_pred_flag等于0時,層間預測有可能被用于解碼片數據。
????????????????dependency_id:

????????????????用于質量可伸縮性擴展。變量DQId可以如下獲取:

????????????????????????DQId=(dependency_id << 4)+quality_id

????????????????temporal_id:

????????????????用于時域可伸縮性擴展。當訪問單元內的NAL單元nal_unit_type等于5或idr_flag等于1時,temporal_id應等于0。

????????????????use_ref_base_pic_flag:

????????????????標識基本層圖像是否用于幀間預測參考。

????????????????discardable_flag:

????????????????表示當前NAL單元是否用于當前訪問單元的解碼。等于0表示用于解碼。

????????????????output_flag :

????????????????影響解碼圖像過程的輸出。

? ? ? ? SLICE擴展:

????????如前所述,基于H.264擴展的SVC架構繼承了H.264的大部分語法,由于Slice主要參數都集中在頭部,因此只需要分析這部分的語法結構就大致可以看出伸縮性的特點。H.264 SVC標準擴展了幾種Slice類 型。當NAL單元類型等于20時,Slice類型如表10.2所示。SVC擴展的Slice語法結構

四、性能分析:

????????圖10.16給出了基于H.264擴展的SVC標準和H.264/AVC標準的壓縮性能比較。其中,圖10.14(a)、(b)分別討論了SVC的質量可伸縮性和空域可伸縮性。

????????測試結果表明:與單層H.264/AVC相比,基于H.264擴展的SVC標準只以10%碼率的代價,提供了合適的可伸縮性 能。H.264 SVC設計提供了許多改善分級編碼效率的工具。基于H.264 擴展的SVC的技術要點如下。

?????????(1)時域可伸縮預測結構。

????????(2)用于空域可伸縮性的層間預測機制。

????????(3)基本層與H.264/AVC兼容。

????????(4)用漸進細化片實現精細顆粒的質量可伸縮性。

????????(5)NAL單元概念的使用和擴展。


參考資料:

? ? ? ? ? ? ? ??《新一代視頻壓縮編碼標準 —H.264/AVC》——畢厚杰 王健?編著

????????????????https://github.com/wangyongyao1989/WyFFmpeg/tree/main/h264

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910032.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Anaconda安裝env,yml一直卡在Solving environment:不動

如果在使用conda env creat -f env.yml時候&#xff0c;anaconda一直卡住&#xff0c;如下 可以嘗試下面操作。 conda config --set solver libmamba # 使用libmamba引擎&#xff08;Conda≥22.11&#xff09; conda env create -f env.yaml # 重新嘗試

榕壹云婚戀相親系統:ThinkPHP+UniApp打造高效婚配平臺

引言 在數字化浪潮下,婚戀相親行業正加速向線上遷移。榕壹云公司基于市場需求與技術積累,開發一款功能完備、技術開源的婚戀相親小程序系統,為單身人士提供高效、安全的婚戀平臺。本文將圍繞系統背景、客戶定位、核心技術、功能模塊及優勢場景展開詳細解析,助力開發者與技…

查詢docker-compose 部署的milvus 請求日志

在 Docker Compose 部署的 Milvus 中,日志默認存儲在各個服務的容器內。以下是定位和查詢日志的方法: 1. 查看實時日志 使用 docker-compose logs 命令查看實時日志: bash # 查看所有服務的日志 docker-compose logs -f# 僅查看 Milvus 服務日志(服務名以 docker-compos…

Rsync實操

Rsync實操 一.rsync命令 #類似于cp[rootuser2 ~]# rsync info.sh root192.168.168.130:/rootroot192.168.168.130s password: [rootuser1 ~]# lsanaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm info.sh 二、使用rsync備份push方式 服務器&#xff1a;server 192.168.168…

Java常見八股-(6.算法+實施篇)

Java常見八股-&#xff08;1.Java基礎篇&#xff09; Java常見八股-&#xff08;2.Java高級篇&#xff09; Java常見八股-&#xff08;3.MySQL篇&#xff09; Java常見八股-&#xff08;4.前端篇&#xff09; Java常見八股-&#xff08;5.框架篇&#xff09; 目錄 一、算…

阿里云部署的SMTP服務器安全攻防實錄:深度解析攻擊、防護與加固

阿里云部署的SMTP服務器安全攻防實錄&#xff1a;深度解析攻擊、防護與加固 一次針對云上SMTP服務的持續攻擊事件&#xff0c;揭示了郵件中繼服務面臨的多重安全挑戰。本文將深入剖析攻擊手法、防護策略與系統性加固方案。 某企業在阿里云上部署的Postfix SMTP服務器近期遭遇…

HTTP與HTTPS深度解析:從明文傳輸到安全通信的演進之路

引言 在互聯網的早期&#xff0c;HTTP&#xff08;超文本傳輸協議&#xff09;作為Web通信的基石&#xff0c;憑借簡單高效的特性推動了萬維網的爆發式增長。但隨著互聯網從“信息共享”向“價值交互”演進&#xff0c;HTTP的明文傳輸特性逐漸暴露致命缺陷——用戶的每一次點擊…

滲透實戰:繞過沙箱機制的反射型XSS

Lab 24&#xff1a;利用 xss 繞過 csrf 防御 依然是留言板的問題可以執行<h1>標簽 進入修改郵箱的界面&#xff0c;修改抓包 這里構造修改郵箱的代碼 <script> var req new XMLHttpRequest(); req.onload handleResponse; req.open(get,/my-account,true); req…

K8S篇之利用deployment實現滾動平滑升級

一、更新策略 在 Kubernetes (K8s) 中,滾動平滑升級(Rolling Update)是一種無縫更新部署的方式,允許你在不中斷服務的情況下逐步更新應用程序。這是 Kubernetes 默認的 Deployment 更新策略,它會按照指定的步幅逐步替換 Pods,確保在新版本的應用程序沒有完全替換舊版本的…

【Dify 案例】【MCP實戰】【一】【前置配置】

MCP(Model Context Protocol,模型上下文協議) ,2024年11月底,由Anthropic 推出的一種開放標準。旨在為大語言模型(LLM)提供統一的、標準化方式與外部數據源和工具之間進行通信。 MCP 作為一種標準化協議,極大地簡化了大語言模型與外部世界的交互方式,使開發者能夠以統…

2025高考志愿填報張雪峰資料合集

2025高考志愿填報課程&#xff0c;張雪峰專業指導&#xff01;包含61節課&#xff0c;93個專業詳解&#xff0c;總計1500分鐘視頻。 獨家各省資料包&#xff01;新舊高考政策全覆蓋&#xff0c;適合高三家長和考生。內容整理自互聯網&#xff0c;無償分享&#xff0c;如有侵權&…

Nginx+Tomcat負載均衡群集

一.案例:部署Tomcat 1.案例分析 1.1案例概述 京北點指科技有限公司發布V3版移聯建站管理系統&#xff0c;該項目為Java 語言開發的Web 站點。目前&#xff0c;IBM 的 WebSphere 及 0racle 的 WebLogic 占據了市面上 Java 語言 Web 站點的大部分份額。這兩種軟件以其無與倫比…

華為云Flexus+DeepSeek征文|基于華為云一鍵部署dify平臺構建合同審核助手應用實踐

目錄 前言 1 華為云一鍵部署Dify平臺 1.1 華為云Dify平臺介紹 1.2 部署過程介紹 1.3 登錄Dify平臺 2 接入華為云 ModelArts Studio 的 DeepSeek 大模型 2.1 獲取調用模型服務信息 2.2 在 Dify 中配置模型 3 構建合同審核助手應用 3.1 簡要介紹合同審核助手 3.2 開始…

三種經典算法無人機三維路徑規劃對比(SMA、HHO、GWO三種算法),Matlab代碼實現

代碼功能 該MATLAB代碼用于對比三種元啟發式優化算法&#xff08;SMA、HHO、GWO三種算法&#xff0c; SMA黏菌算法、HHO哈里斯鷹優化算法、GWO灰狼優化算法&#xff09; 在特定優化問題上的性能&#xff0c;運行環境MATLABR2020b或更高 &#xff1a; 初始化問題模型&#xff…

設計模式精講 Day 8:組合模式(Composite Pattern)

【設計模式精講 Day 8】組合模式&#xff08;Composite Pattern&#xff09; 開篇 在“設計模式精講”系列的第8天&#xff0c;我們將深入講解組合模式&#xff08;Composite Pattern&#xff09;。組合模式是一種結構型設計模式&#xff0c;它允許將對象組合成樹形結構以表示…

【Dify學習筆記】:RagFlow接入Dify基礎教程

RagFlow接入Dify基礎教程 如果RagFlow還沒部署&#xff0c;可參考我另一篇本地部署文章&#xff1a;【Dify學習筆記】&#xff1a;本地部署RagFlow適配Dify 一、RagFlow 1. 配置模型 點擊&#xff1a;頭像 > Model providers 添加模型供應商、設置默認模型Set default …

Apache ECharts-02.入門案例

一.入門案例 官網下載&#xff1a;下載 - Apache ECharts&#xff0c;下載echarts.js文件&#xff0c;下載好后在其同一個文件夾下創建html文件即可。 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>ECharts</title…

社群經濟視閾下開源AI智能名片鏈動2+1模式與S2B2C商城小程序在私域電商中的融合應用研究

摘要&#xff1a;在數字經濟與社交網絡深度融合的背景下&#xff0c;付費社群憑借精準用戶篩選、高價值成員聚合及強信任關系鏈等優勢&#xff0c;成為私域電商發展的核心載體。本文基于社群經濟理論&#xff0c;結合“開源AI智能名片鏈動21模式S2B2C商城小程序”的技術與商業邏…

【Tools】Mac brew工具

Homebrew&#xff08;簡稱 brew&#xff09;是 macOS&#xff08;也支持 Linux&#xff09;上的一款 包管理工具&#xff0c;它的作用類似于&#xff1a; Ubuntu 下的 aptCentOS 下的 yumArch Linux 下的 pacman 一句話概括&#xff1a; brew 是用來在 macOS 上安裝、管理軟件…

IEEE RAL 雙臂機器人三連抓估計物體狀態 無需特制夾爪或視覺相機 - 大阪大學萬偉偉老師團隊

IEEE RA-L | 萬偉偉老師團隊提出雙臂機器人規劃控制方法有效降低被抓物姿態不確定性 日本大阪大學萬偉偉老師團隊針對雙臂機器人開發了一種重復抓取規劃和阻抗控制的方法&#xff0c;該方法通過兩個機械臂依次尋找抓取位置和物體姿態&#xff0c;并通過三個正交抓取動作&#x…