1.視頻編碼基本原理
(1) 視頻信號的冗余信息
以記錄數字視頻的YUV分量格式為例,YUV分別代表亮度與兩個色差信號。例如對于現有的PAL制電視系統,其亮度信號采樣頻率為13.5MHz;色度信號的頻帶通常為亮度信號的一半或更少,為6.75MHz或3.375MHz。以4:2:2的采樣頻率為例,Y信號采用13.5MHz,色度信號U和V采用6.75MHz采樣,采樣信號以8bit量化,則可以計算出數字視頻的碼率為:
13.5*8 + 6.75*8 + 6.75*8= 216Mbit/s
如此大的數據量如果直接進行存儲或傳輸將會遇到很大困難,因此必須采用壓縮技術以減少碼率。數字化后的視頻信號能進行壓縮主要依據兩個基本條件:
l 數據冗余。例如如空間冗余、時間冗余、結構冗余、信息熵冗余等,即圖像的各像素之間存在著很強的相關性。消除這些冗余并不會導致信息損失,屬于無損壓縮。
l 視覺冗余。人眼的一些特性比如亮度辨別閾值,視覺閾值,對亮度和色度的敏感度不同,使得在編碼的時候引入適量的誤差,也不會被察覺出來。可以利用人眼的視覺特性,以一定的客觀失真換取數據壓縮。這種壓縮屬于有損壓縮。
數字視頻信號的壓縮正是基于上述兩種條件,使得視頻數據量得以極大的壓縮,有利于傳輸和存儲。一般的數字視頻壓縮編碼方法都是混合編碼,即將變換編碼,運動估計和運動補償,以及熵編碼三種方式相結合來進行壓縮編碼。通常使用變換編碼來消去除圖像的幀內冗余,用運動估計和運動補償來去除圖像的幀間冗余,用熵編碼來進一步提高壓縮的效率。下文簡單介紹這三種壓縮編碼方法。
(2) 壓縮編碼的方法
(a) 變換編碼
變換編碼的作用是將空間域描述的圖像信號變換到頻率域,然后對變換后的系數進行編碼處理。一般來說,圖像在空間上具有較強的相關性,變換到頻率域可以實現去相關和能量集中。常用的正交變換有離散傅里葉變換,離散余弦變換等等。數字視頻壓縮過程中應用廣泛的是離散余弦變換。
離散余弦變換簡稱為DCT變換。它可以將L*L的圖像塊從空間域變換為頻率域。所以,在基于DCT的圖像壓縮編碼過程中,首先需要將圖像分成互不重疊的圖像塊。假設一幀圖像的大小為1280*720,首先將其以網格狀的形式分成160*90個尺寸為8*8的彼此沒有重疊的圖像塊,接下來才能對每個圖像塊進行DCT變換。
經過分塊以后,每個8*8點的圖像塊被送入DCT編碼器,將8*8的圖像塊從空間域變換為頻率域。下圖給出一個實際8*8的圖像塊例子,圖中的數字代表了每個像素的亮度值。從圖上可以看出,在這個圖像塊中各個像素亮度值比較均勻,特別是相鄰像素亮度值變化不是很大,說明圖像信號具有很強的相關性。
下圖是上圖中圖像塊經過DCT變換后的結果。從圖中可以看出經過DCT變換后,左上角的低頻系數集中了大量能量,而右下角的高頻系數上的能量很小。
信號經過DCT變換后需要進行量化。由于人的眼睛對圖像的低頻特性比如物體的總體亮度之類的信息很敏感,而對圖像中的高頻細節信息不敏感,因此在傳送過程中可以少傳或不傳送高頻信息,只傳送低頻部分。量化過程通過對低頻區的系數進行細量化,高頻區的系數進行粗量化,去除了人眼不敏感的高頻信息,從而降低信息傳送量。因此,量化是一個有損壓縮的過程,而且是視頻壓縮編碼中質量損傷的主要原因。
量化的過程可以用下面的公式表示:
其中FQ(u,v)表示經過量化后的DCT系數;F(u,v)表示量化前的DCT系數;Q(u,v)表示量化加權矩陣;q表示量化步長;round表示歸整,即將輸出的值取為與之最接近的整數值。
合理選擇量化系數,對變換后的圖像塊進行量化后的結果如圖所示。
DCT系數經過量化之后大部分經變為0,而只有很少一部分系數為非零值,此時只需將這些非0值進行壓縮編碼即可。
(b) 熵編碼
熵編碼是因編碼后的平均碼長接近信源熵值而得名。熵編碼多用可變字長編碼(VLC,Variable Length Coding)實現。其基本原理是對信源中出現概率大的符號賦予短碼,對于出現概率小的符號賦予長碼,從而在統計上獲得較短的平均碼長。可變字長編碼通常有霍夫曼編碼、算術編碼、游程編碼等。其中游程編碼是一種十分簡單的壓縮方法,它的壓縮效率不高,但編碼、解碼速度快,仍被得到廣泛的應用,特別在變換編碼之后使用游程編碼,有很好的效果。
首先要在量化器輸出直流系數后對緊跟其后的交流系數進行Z型掃描(如圖箭頭線所示)。Z型掃描將二維的量化系數轉換為一維的序列,并在此基礎上進行游程編碼。最后再對游程編碼后的數據進行另一種變長編碼,例如霍夫曼編碼。通過這種變長編碼,進一步提高編碼的效率。
(c) 運動估計和運動補償
運動估計(Motion Estimation)和運動補償(Motion Compensation)是消除圖像序列時間方向相關性的有效手段。上文介紹的DCT變換、量化、熵編碼的方法是在一幀圖像的基礎上進行,通過這些方法可以消除圖像內部各像素間在空間上的相關性。實際上圖像信號除了空間上的相關性之外,還有時間上的相關性。例如對于像新聞聯播這種背景靜止,畫面主體運動較小的數字視頻,每一幅畫面之間的區別很小,畫面之間的相關性很大。對于這種情況我們沒有必要對每一幀圖像單獨進行編碼,而是可以只對相鄰視頻幀中變化的部分進行編碼,從而進一步減小數據量,這方面的工作是由運動估計和運動補償來實現的。
運動估計技術一般將當前的輸入圖像分割成若干彼此不相重疊的小圖像子塊,例如一幀圖像的大小為1280*720,首先將其以網格狀的形式分成40*45個尺寸為16*16的彼此沒有重疊的圖像塊,然后在前一圖像或者后一個圖像某個搜索窗口的范圍內為每一個圖像塊尋找一個與之最為相似的圖像塊。這個搜尋的過程叫做運動估計。通過計算最相似的圖像塊與該圖像塊之間的位置信息,可以得到一個運動矢量。這樣在編碼過程中就可以將當前圖像中的塊與參考圖像運動矢量所指向的最相似的圖像塊相減,得到一個殘差圖像塊,由于殘差圖像塊中的每個像素值很小,所以在壓縮編碼中可以獲得更高的壓縮比。這個相減過程叫運動補償。
由于編碼過程中需要使用參考圖像來進行運動估計和運動補償,因此參考圖像的選擇顯得很重要。一般情況下編碼器的將輸入的每一幀圖像根據其參考圖像的不同分成3種不同的類型:I(Intra)幀、B(Bidirection prediction)幀、P(Prediction)幀。如圖所示。
如圖所示,I幀只使用本幀內的數據進行編碼,在編碼過程中它不需要進行運動估計和運動補償。顯然,由于I幀沒有消除時間方向的相關性,所以壓縮比相對不高。P幀在編碼過程中使用一個前面的I幀或P幀作為參考圖像進行運動補償,實際上是對當前圖像與參考圖像的差值進行編碼。B幀的編碼方式與P幀相似,惟一不同的地方是在編碼過程中它要使用一個前面的I幀或P幀和一個后面的I幀或P幀進行預測。由此可見,每一個P幀的編碼需要利用一幀圖像作為參考圖像,而B幀則需要兩幀圖像作為參考。相比之下,B幀比P幀擁有更高的壓縮比。
如圖所示,I幀只使用本幀內的數據進行編碼,在編碼過程中它不需要進行運動估計和運動補償。顯然,由于I幀沒有消除時間方向的相關性,所以壓縮比相對不高。P幀在編碼過程中使用一個前面的I幀或P幀作為參考圖像進行運動補償,實際上是對當前圖像與參考圖像的差值進行編碼。B幀的編碼方式與P幀相似,惟一不同的地方是在編碼過程中它要使用一個前面的I幀或P幀和一個后面的I幀或P幀進行預測。由此可見,每一個P幀的編碼需要利用一幀圖像作為參考圖像,而B幀則需要兩幀圖像作為參考。相比之下,B幀比P幀擁有更高的壓縮比。
(1) 音頻信號的冗余信息
數字音頻信號如果不加壓縮地直接進行傳送,將會占用極大的帶寬。例如,一套雙聲道數字音頻若取樣頻率為44.1KHz,每樣值按16bit量化,則其碼率為:
2*44.1kHz*16bit=1.411Mbit/s
如此大的帶寬將給信號的傳輸和處理都帶來許多困難,因此必須采取音頻壓縮技術對音頻數據進行處理,才能有效地傳輸音頻數據。
數字音頻壓縮編碼在保證信號在聽覺方面不產生失真的前提下,對音頻數據信號進行盡可能大的壓縮。數字音頻壓縮編碼采取去除聲音信號中冗余成分的方法來實現。所謂冗余成分指的是音頻中不能被人耳感知到的信號,它們對確定聲音的音色,音調等信息沒有任何的幫助。
冗余信號包含人耳聽覺范圍外的音頻信號以及被掩蔽掉的音頻信號等。例如,人耳所能察覺的聲音信號的頻率范圍為20Hz~20KHz,除此之外的其它頻率人耳無法察覺,都可視為冗余信號。此外,根據人耳聽覺的生理和心理聲學現象,當一個強音信號與一個弱音信號同時存在時,弱音信號將被強音信號所掩蔽而聽不見,這樣弱音信號就可以視為冗余信號而不用傳送。這就是人耳聽覺的掩蔽效應,主要表現在頻譜掩蔽效應和時域掩蔽效應,現分別介紹如下:
(a) 頻譜掩蔽效應
一個頻率的聲音能量小于某個閾值之后,人耳就會聽不到,這個閾值稱為最小可聞閾。當有另外能量較大的聲音出現的時候,該聲音頻率附近的閾值會提高很多,即所謂的掩蔽效應。如圖所示:
由圖中我們可以看出人耳對2KHz~5KHz的聲音最敏感,而對頻率太低或太高的聲音信號都很遲鈍,當有一個頻率為0.2KHz、強度為60dB的聲音出現時,其附近的閾值提高了很多。由圖中我們可以看出在0.1KHz以下、1KHz以上的部分,由于離0.2KHz強信號較遠,不受0.2KHz強信號影響,閾值不受影響;而在0.1KHz~1KHz范圍,由于0.2KHz強音的出現,閾值有較大的提升,人耳在此范圍所能感覺到的最小聲音強度大幅提升。如果0.1KHz~1KHz范圍內的聲音信號的強度在被提升的閾值曲線之下,由于它被0.2KHz強音信號所掩蔽,那么此時我們人耳只能聽到0.2KHz的強音信號而根本聽不見其它弱信號,這些與0.2KHz強音信號同時存在的弱音信號就可視為冗余信號而不必傳送。
(b) 時域掩蔽效應
當強音信號和弱音信號同時出現時,還存在時域掩蔽效應。即兩者發生時間很接近的時候,也會發生掩蔽效應。時域掩蔽過程曲線如圖所示,分為前掩蔽、同時掩蔽和后掩蔽三部分。
由圖我們可以看出,時域掩蔽效應可以分成三種:前掩蔽,同時掩蔽,后掩蔽。前掩蔽是指人耳在聽到強信號之前的短暫時間內,已經存在的弱信號會被掩蔽而聽不到。同時掩蔽是指當強信號與弱信號同時存在時,弱信號會被強信號所掩蔽而聽不到。后掩蔽是指當強信號消失后,需經過較長的一段時間才能重新聽見弱信號,稱為后掩蔽。這些被掩蔽的弱信號即可視為冗余信號。
(2) 壓縮編碼方法
當前數字音頻編碼領域存在著不同的編碼方案和實現方式, 但基本的編碼思路大同小異, 如圖所示。
對每一個音頻聲道中的音頻采樣信號,首先都要將它們映射到頻域中,這種時域到頻域的映射可通過子帶濾波器實現。每個聲道中的音頻采樣塊首先要根據心理聲學模型來計算掩蔽門限值, 然后由計算出的掩蔽門限值決定從公共比特池中分配給該聲道的不同頻率域中多少比特數,接著進行量化以及編碼工作,最后將控制參數及輔助數據加入數據之中,產生編碼后的數據流。