當前位置:
首頁 > 最新 > 視頻會議壓縮演算法的關鍵

視頻會議壓縮演算法的關鍵

視頻會議靠壓縮演算法

視頻會議每一個圖像裡面包含的信息都是很多的,圖像裡面重疊的信息也是很多的,編碼演算法的關鍵是「壓縮」,壓縮的對象是「冗餘」信息。首先要明確冗餘信息都是哪些信息。既然是要壓縮,首先要明確壓縮的對象。既壓縮的具體內容,壓縮的對象。具體說冗餘包括空間冗餘,包括時間冗餘,包括信息熵冗餘幾個類型。分別梳理如下。

(一)空間冗餘

空間冗餘的定義:空間冗餘是靜態圖像中存在的最主要的數據冗餘,注意是靜態圖像中的數據冗餘,不是動態圖像中的數據冗餘。例如,一幅圖像中有較大的背景區域,在這個區域中所有的點的光強,所有點的色彩,所有點的光飽和度都是非常類似的。這種空間的連貫性可以定義為空間冗餘。對空間冗餘定義的理解:空間冗餘是一種最基礎的冗餘,針對於一種靜態的圖像,針對於一種靜態的畫面,對靜態圖像裡面的冗餘信息進行壓縮。這個就是靜態冗餘壓縮。

(二)時間冗餘

時間冗餘的定義:時間冗餘是視頻序列中經常包含的冗餘(注意是視頻序列),序列圖像中相領幀(基本單位是幀)往往包含相同的或者類似的背景和運動物體,只不過運動物體所在的空間位置稍有不同。這種相鄰幀間數據的高度相關性定義為時間冗餘。對時間冗餘定義的理解:時間冗餘,主要是針對動態的圖像,動態圖像相領幀之間有很多類似性,這就造就了冗餘,而動態壓縮是針對這種時間冗餘的。有所謂的「運動補償演算法」。

(三)信息熵冗餘

信息熵冗餘的定義:信息熵冗餘也稱為編碼冗餘,為表示圖像數據的一個像素點(這個像素點是圖像數據的最基本單位)。只要按照信息熵的大小分配相應的比特數即可。對於實際圖像數據的每個像素,在圖像獲取時很難得到它的信息熵,一般對於每個像素採用相同的比特表示。這樣必然存在冗餘。這種冗餘稱為信息熵冗餘。對信息熵定義的理解:這個編碼冗餘實際上與圖像沒有什麼關係,是完全針對編碼本身的一個冗餘,編碼本事會存在一些列冗餘的現象,例如數字的重複。這個需要一個冗餘壓縮的過程。

針對「冗餘信息」第一個步驟是預測。

為了能夠去除三種冗餘(空間冗餘,時間冗餘,編碼冗餘),視頻編碼器(視頻編碼器在視頻設備內,類似寶利通的設備)包含了很多編碼演算法,這些編碼演算法在視頻編碼器中被有效的組合在一起。使得整個編碼器具有較高的編碼效率。目前主流的視頻編碼器採用的視頻技術包括:預測,變換,量化,掃描,和熵編碼。這些都是壓縮技術,而壓縮技術的對象就是冗餘的信息。第一步是預測。現在對預測做一下梳理。

(一) 預測的定義:預測編碼即是利用信號見的相關性,用前面一個或者多個信號作為當前信號的預測值,這個是一個演算法問題。對當前信號的實際值與預測值的「差」進行編碼(注意這個差非常關鍵,實際上整個編碼工作都是圍繞這個「差」展開。這個差為實際值與預測值之間不同的部分)。經過預測後,殘差信號的能量比原信號要低(這個很容易理解,殘差的信號目的就是為了減少編碼)。很容易看到,這個預測值越接近於真實值,這個差值就會相應越低。這個差值越低,壓縮的工作量就會越小。從而降低了等待編碼的信號的信號量。預測編碼是消除視頻冗餘的重要壓縮工具之一。

(二)「預測」的分類:預測的分類有幾種方式。 幀內預測編碼,幀內預測編碼是針對空間冗餘的編碼方式。幀間預測編碼,幀間預測編碼是針對針對時間冗餘的編碼方式。

對於幀間預測編碼可以細分為:前向預測,後向預測,雙向預測。最先開始形成的是前向預測,後向預測和雙向預測是後來發展起來的。雙向預測是效率最高的預測。

運動估計方面可以細分為:基於像素的運動估計,基於塊的運動估計,基於網格的運動估計,基於全局的運動估計。這個顯然是按照運動估計的顆粒度劃分的。

幀內預測的定義:幀內預測利用圖像在空間上相領像素之間的具有相關性的特點,根據相領像素預測當前塊的像素值。有效去除塊間冗餘。這個是針對靜態圖像的。 理解幀內預測的概念:幀內預測實際上比較簡單,可以結合計算機圖形圖像學去理解,特別注意預測值與實際值是兩個概念,關鍵是差值的計算。所有的壓縮是根據差值去壓縮的。

幀間預測:這個比較複雜。幀間預測關鍵是理解「運動補償」的概念。幀間預測是消除運動圖像時間冗餘的技術,運動圖像的領近幀的場景存在一定的相關性。因此,可以根據當前塊搜索出在領近參考幀中最相似的鄰居近塊,這個也就是所謂的預測塊。並且根據預測塊的位置,得出預測塊與實際塊之間的空間位置的相對偏移量,這個可以說是運動矢量。根據運動矢量,從指定的參考幀中找到預測塊的位置可以稱為運動補償。

預測完成以後,下一個環節是「變換」。變換包括傅里葉變換,K-L變換等,這個是最關鍵的一個步驟。完成變換以後才是頻域信號。

變換以後是「量化」,量化的目的是離散化和數字化。

(一)量化的定義:在數值(或者大量可能得離散取值)近似為有限多個(或較少的)離字信號的處理領域,量化將信號的連續取散值的過程。量化主要應用於從連續信號到數字信號的轉換中。一般模擬聲音都是連續信息,而數字聲音肯定是離散的,否則無法正確表達。連續信號經過採樣成為離散信號,離散信號經過量化成為數字信號。信號的採樣和量化一般由ADC完成。

(二) 對量化定義的理解:所謂量化,就是把經過抽樣得到的瞬時值將其幅度離散,用的是一組規定的電平,把瞬時抽樣值用最近的電平值來表示 。經過抽樣的圖像,只是在空間上被離散成為像素(樣本)的陣列 。而每一個樣本還是連續的變化量,必須將其轉換成有限個離散值,賦予不同的碼子才能成為數字圖像。這種轉化可以定義為量化。一句話:量化說白了就是連續信號離散化,離散信號數字化。

量化以後的環節應該是「Z」字掃描,這個掃描的目的是為了把一個二維數組變成一個一維數組,這樣可以為下一步的壓縮提供基礎。因為掃描的過程非常類似於Z字,所以得名Z字掃描。

掃描以後是「編碼」。 熵編碼的定義:熵編碼的目標是去除信源符號在信息表達上的表示冗餘。視頻編碼常用到的熵編碼方式有三種:變長編碼,算數編碼,和行程編碼。熵編碼定義的理解:數據壓縮技術的理論基礎就是資訊理論。資訊理論中的信源編碼理論解決的主要問題:關於數據壓縮的理論極限。數據壓縮的基本途徑。根據資訊理論的原理,可以找到最佳數據壓縮編碼的方法,數據壓縮的理論極限是信息熵 。如果要求編碼過程中不丟失信息量,既要求保留信息熵,這種信息保持編碼可以定義為熵編碼,根據信息的出現概率進行的。這是無損數據壓縮編碼。

實際上熵編碼,是一種壓縮手段。這種壓縮手段是一種針對編碼本身的壓縮,不涉及圖像。說白了是一種對編碼的繼續壓縮。這個與圖像已經沒有關係了,完全是一種針對「編碼」的壓縮。

(一) 變長編碼的定義:變長編碼的基本思想是,為出現概率大的符號(大概率符號)分配短碼子,為出現概率小的符號分配短碼子。從而達到平均碼子最短。代表性的變長編碼是霍夫曼編碼(Huffman)編碼。這個霍夫曼編碼是通訊編碼裡面非常經典的一種編碼手段。這個充分利用了概率思想,出現概率大的用短碼子,概率小的用長碼子,霍夫曼編碼往前面倒是霍夫曼樹。

(二)算術編碼:算術編碼和變長編碼的概念不同,不是採用一個碼子代替輸入信息符號的方法,而是採用一個浮點數來代替一串輸入符號。

(三) 行程編碼:行程編碼是在信源符號和碼子之間建立明確的一一對應關係,以便於在恢復時可以準確再現原信號。行程編碼本質上看是一種無損編碼。行程編碼一般包括兩個項目,第一個項是用相同符號代替原來符號。第二個項是記錄有多少個這樣的數值。

壓縮演算法的總結:(一)預測:預測包括幀內預測,包括幀間預測。幀內預測針對靜態圖像,幀間預測針對動態運動補償。幀間預測又可以細分為,前向預測,後向預測,雙向預測。幀內預測比較簡單,幀間預測相對複雜。

(二)變換:變換是把空域信號變成頻域信號。最典型的變換是離散餘弦變換,當然還有傅里葉變換,K_L變換 。變換是最核心的一個環節,變換以後可以進一步壓縮。

(三)量化:量化的目的是連續信號離散化,離散信號數字化。

(四)掃描:最典型的Z字掃描,把二維數組變成一維數組。然後按照概率排序。把非零的放在前面,把零和接近零的放後面。z字掃描的圖譜是關鍵。

(五)編碼:變長編碼,算術編碼,行程編碼。

總結:每一步都是為了壓縮,用這一步的思路去壓縮。壓縮演算法是最關鍵的,幾乎視頻編碼壓縮,音頻編碼壓縮,構造了視頻和音頻的基礎。

關注企鵝號:郭陽


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 郭陽 的精彩文章:

TAG:郭陽 |