視頻編解碼的科普知識

隨着通信技術、移動終端以及各種顯示技術的發展,視頻廣泛用於人類生活的各個方面,例如在線視頻、視頻會議,3D視頻,視頻監控,遠程教學,遠程醫療等,據統計,視頻是目前互聯網上數據量最大的媒體。由於視頻的數據量巨大和網絡帶寬的限制,不經過壓縮處理的視頻無法傳輸,提供在線觀看,即使離線存儲也是不現實的。視頻編碼技術是視頻存儲和傳輸的前提,是數字電視、網絡視頻、視頻通信等應用的關鍵技術。因此,研究和開發高效的視頻編碼技術,也是視頻技術的發展趨勢。由於視頻內容具有很高冗餘性,這給視頻的壓縮帶來了可能,視頻數據的冗餘性體現在:(1)空域冗餘(同一幀圖片中空間相關性);(2)時域冗餘(連續圖像相鄰幀間數據的高度相關性);(3)統計冗餘(進行信息熵編碼時,無法根據圖像數據中某個像素點的信息熵大小爲其分配相應的比特數來表示,而是採用相同的比特數來表示所導致的編碼碼字存在的冗餘);(4)心理視覺冗餘(人眼對彩色信息的分辨能力有限,對圖像各種組成成分的敏感程度不同,特別是對高頻和色度信息不敏感)。針對各方面的冗餘信息的特點,有如下的解決方法,針對空域冗餘:利用空間相關性減少像素之間冗餘信息,並且正交變換能夠將空域相關的數據轉換成不相關的變換系數來表達,正交變換具有能量集中的作用,經過變換後的殘差只能量更集中。對時域冗餘:運用運動預測匹配技術來消除,基本思想是用時域相鄰幀進行運動匹配,得到預測殘差和運動矢量,減少編碼比特數,減少冗餘。對統計冗餘:通過熵編碼技術的研究,提高熵編碼的效率來降低統計冗餘。對於心理冗餘:在視頻採樣時就進行了壓縮,捨棄部分對人眼不敏感的信息。

視頻壓縮是一類特殊的數據壓縮方法,數據是信息的載體,對於定量的信息,設法減少表達這些信息所用的數據量,數據壓縮通常分爲無損壓縮和有損壓縮。追求更高的壓縮效率是視頻編碼領域永恆的主題。

視頻編碼技術的不僅在於提高編碼效率,節省碼流,而且兼顧編碼技術易於並行化,高魯棒性,與硬件兼容,易於硬件實現。在過去幾十年裏面,國際上已經成功制定了多個視頻編碼標準,包括用於CD-ROM的MPEG-1標準,用於數字視頻光盤DVD盒數字電視廣播DVB的MPEG-2標準,用於實時應用的視頻會議H.261/H.263標準,以及允許對任意形狀的對象進行編碼的MPEG-4標準,還有H.264/AVC[4] (MPEG-4第十部分)、H.265/HEVC[2]。隨着人們對高清、超高清、更豐富色彩的視頻、立體視頻的需求越來越明顯,導致了視頻數據量的暴增,現有的H.265/HEVC已不滿足人們的需求,故在2015年ITU-T的VCEG和ISO/IEC的MOEG兩大組織再次聯合探索下一代視頻編碼標準(Joint Video Exploration Team,JVET),在現有的H.265/HEVC的基礎上進一步探索下一代視頻編碼標準[17],在同等主觀質量下進一步節省比特流。國內於2015年完成了第二代音視頻編碼標準[3]的(Audio Video coding Standard ,AVS2)制定。

  如今的編碼器都是按照編碼單元(塊)進行逐次編碼,所以靈活的塊劃分技術[5-6]在編碼中扮演着重要的角色,但是靈活的劃分技術給編碼的複雜度帶來了挑戰,不管對於HEVC、H.266、AVS2,編碼時都需要遍歷所有的塊劃分方式,選擇總代價最小的模式和劃分尺寸,這顯然給編碼器帶來了巨大的計算複雜度,不利於現實生活中的實時編碼,故對塊劃分方式的優化計算,減少編碼複雜度、編碼時間並且保證 編碼性能損失很小已成爲研究熱點。

預測技術是視頻編碼最重要的手段,預測準確度將直接影響編碼效率和質量。H HEVC、H.266、AVS2中均沿用傳統的混合編碼框架,分爲幀間預測和幀內預測,對應於減少視頻的時域冗餘和空域冗餘,對提高編碼性能至關重要。

幀內預測,就是利用一幅圖像空域上相鄰像素之間具有很強的相關性的特點,通過當前塊周圍已經重建的相鄰像素對當前塊進行預測,有效地去除空域的冗餘。從目前的編碼標準來看,幀內預測通常包括很多預測方式(HEVC有35種、H.266有67種、AVS2有33種),編碼、時每個塊遍歷很多的預測模式,選擇率失真代價最小的作爲當前塊的幀內預測模式,最大程度的去除空間冗餘,同時也給編碼帶來了很高的計算複雜度,所以根據當前塊的紋理特性或者當前塊周圍已編碼塊的最優模式來優化遍歷次數,並且保證編碼性能損失很小,是改善計算複雜度的有效方式。目前的幀內預測通常只取當前塊的上一行左一列重建像素作爲當前塊的參考像素,這導致利用的空間上相關的像素太少,不利於最大程度的去除空間冗餘,因此,獲取更多的相關性很強的參考像素是進一步提高預測準確度的方式。

幀間預測,就是根據之前已經重建的圖像對當前圖像進行預測和編碼,有效的去除時域上的冗餘,根據預測方向可以分爲向前預測和向後預測兩種,I(Intra)幀只能使用當前圖像的信息來進行編碼,前向預測(P幀),利用之前已經重建的圖像對當前圖像進行編碼,雙向預測(B幀)不僅可以使用向前預測對當前圖像進行預測編碼,同時也可以使用後向預測對當前圖像進行預測編碼。從目前編碼器來看,預測就是使用傳統的運動搜索,用當前塊在重建幀中尋找與最匹配的塊(H.265、AVS2均使用此方式),這僅能解決發生平移的編碼塊匹配問題,而H.266引入了仿射運估計,可以解決發生旋轉的編碼塊的匹配問題,但有些發生扭曲的塊的匹配問題,還未能解決,因此,幀間預測的運動估計有待進一步改善。由於幀間預測的編碼單元相互參考,當前編碼單元的編碼質量會影響後面參考此單元的編碼單元的編碼參數選擇,所以存在率失真性能相互依賴的問題,但是目前的編碼標準中,每個編碼單元的率失真性能相互獨立,因此,可以根據率失真性能相互依賴的問題,優化率失真計算。

變換,通過將空域相關的數據轉換成不相關的變換系數來表達,變換後能量更加集中,再通過量化,去除一些不敏感的高頻信號,減少需要傳輸的信息量,這一步去除空間信號的相關性。目前的編碼器均採用DCT/DST聯合變換,變換後能量很集中,只需編碼相當少的變換系數,但是對於殘差矩陣係數存在明顯分界(殘差係數波動很大)或者一些奇異點時,會導致變換後能量分散,出現很多高頻係數,有損變換的效率,目前的編碼器還沒有解決方案,值得進一步探索改善。

量化,不做解釋,大家應該都懂得,H.265到目前的H.266(探索階段,不保證標準形成的還是不變哈)並沒有任何的變化或者改進。

      熵編碼,是去除符號冗餘的重要要方法,HEVC採用兩種熵編碼的方法,一種是CAVLC,另一種是CABAC.熵編碼的大部分理論是數學家建立的,視頻領域只是把這些方法或者理論直接應用,這部分在視頻標準中很難理解,本人很少看這部分代碼,因此不說太多,言多必失。

      附一張H.265的編碼框架圖

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章