第一章視訊編碼操作與品質測量
1-1 視訊編碼與技術
本章節主要探討視訊編碼的技術與應用。現今視訊編碼快速發展的主要因為是視訊內容儲存起來需要很大的儲存空間,且網路的傳輸能力和電腦儲存空間有限。而視訊編碼的原理是由於視訊是由連續畫面所構成,畫面彼此之間的相似度高,視訊壓縮(編碼)藉由移除視訊中的冗餘(redundancy)以減少資料量。視訊編碼技術有許多種類,而目前常見的編碼技術以H.261、H.263、MPEG-1、MPEG-2、H.264/AVC、H.264/SVC 為主,而本章節實驗主要針對H.264/AVC 及H.264/SVC 作探討。
1-1-1簡介
H.264/AVC 雖然對於編碼效率與網路之間的適應性已經有所提升,但是對於影像串流的服務尚無法提供完整的適應性,尤其是在易受制於Mobile host(MH)移動行為與所處環境而造成高位元錯誤率(Bit error rate)及封包遺失率(Packet loss rate)的無線網路環境。因此,ITU-T VCEG與ISO MPEG 兩大組織共同組成聯合視訊小組,基於H.264/AVC 的編碼架構,額外延伸新的編碼技術-Scalable video coding(SVC),重新定義影像畫面的組成,其中又將影像品質調適又細分為Spatial scalability、Temporal scalability 和Quality(SNR)scalability 這三種可調方式。在此編碼技術中,影像是由層級式架構所組成,此架構中包含一個影像基本層(Base layer)與一個或多個影像增益層(Enhancement layer)。Baselayer 只提供基本品質的影像畫面的資料,而Enhancement layer 則是提供增加Base layer 畫面品質的資料。雖然Base layer 只提供基本品質的畫面,但由於在解碼Enhancement layer 的資料時必須先參考Base layer 的資訊,所以對於整個視訊串流服務來說,Base layer 是最重要的部分。
對於H.264/SVC 的Encoder/Decoder,以Joint scalable video model(JSVM)最廣為使用,JSVM 是根據H.264/SVC 視訊編碼所開發的參考軟體,可以從編碼完的SVC 視訊格式中,利用各種可調視訊編碼,包括Spatial scalability、Temporal scalability 和Quality(SNR)scalability,提取不同的Bit stream layers 得到相對應視訊品質的影像。因此,實驗的背景動機為期望同學能瞭解JSVM 實際編碼的流程,以及能學習到如何透過JSVM 編碼出指定的Layer,並測量其視訊品質。
1-1-2視訊編碼技術回顧
H.261 編碼技術
H.261 為第一個普及的視訊編碼標準,許多視訊編碼都是建立於H.261 相同的設計框架之上,例如:MPEG-1、MPEG-2、H.262、H.263 和H.264,並為國際ISDN 電話與視訊會議系統所制定的視訊標準,主要使用在多人視訊會議系統。主要視訊格式(Image format)為CIF(352 x 288Y samples)或QCIF(176 x 144 Y samples);Frame rate 大約為7.5 至30fps;傳輸速率(Bit rate)一般為64kbps。
H.263 編碼技術
H.263 編碼技術為廣泛應用於Internet 的視訊串流,軟體方面則主要應用於電腦的視訊電話或電視的機上盒(Set-top box),H.263 也是MPEG-4 標準的基礎,效能相較於之前的H.261 有大幅的提升。主要視訊格式(Image format)為Sub-QCIF、QCIF、CIF、4CIF 和16CIF;傳輸速率(Bit rate)可依照使用者需求,可自行調整,通常為20kbps;視訊品質(Picture quality)與H.261 差不多,但是只需要H.261 傳輸成本的一半。
H.264/AVC(Advanced video coding)
H.264/AVC 主要目的為提供較佳的視訊品質與較低的位元傳輸率,同時不需要很複雜的編碼過程,提高了編碼運算的效率;並且提供可適應性,編解碼器能夠使用在廣泛的領域上,適用於各種網路與系統。主要適用範圍為視訊會議/電話、廣播視訊、視訊串流……等。相較於前面介紹的編碼技術,優點為高壓縮率、高品質視訊、優異的抵抗錯誤及網路傳輸功能的加強,H.264/AVC 架構中主要分成視訊編碼層(Video codinglayer, VCL)及網路提取層(Network abstraction layer, NAL)兩部分。視訊編碼層(VCL)主要是在資料經過演算法處理壓縮過後,將一些冗餘(Redundancy)的部分去除掉,以達到視訊壓縮的目的;網路提取層(NAL)則以NAL 封包為一個單元,使用此方式來做為VCL 編解碼的運算單元,所以在傳輸層收到NAL 封包之後不須進行分割,即可交給底層傳送。當網路發生擁擠、壅塞或次序錯亂時,接收端可以做糾正錯誤的動作。
H.264/AVC 編碼技術主要支援兩種調適策略
1.時間可適性Temporal scalability(TS)策略
採用基本層(Base layer)與增強層(Enhancement layer)的層級式架構,每一個Groups of pictures(GOPs)的開始為IDR frame,Base layer是由每個GOP 的IDR frames 組成,該Frame 採用空間性預測(intraprediction)編碼,可以獨立解碼不需參考任何Frame。
做法是以階層式圖片架構,如圖 3 所示,以一個圖片群(Group ofpicture, GOP)為一個編碼單位,用階層的方式對於畫面進行編碼,階層T0 是比較重要的視訊圖像優先壓縮,如此才能提供較高層的T1、T2、T3 視訊串流影片壓縮時的參照,Temporal scalability 可利用傳送時間階層(Temporal level)的個數來提供每秒鐘播放畫面的張數(Frame persecond),藉以達到不同Frame rate 的調適。
2.Bit-stream switching(BSS)策略
H.264/AVC 的IDR frame 除了可以用在影片隨機存取。另外也可透過量化參數(Quantization parameters, QPs)產生不同的傳輸速率(Bitrate),在同樣的GOP 結構下也可以透過IDR frame 切換到不同傳輸速率(Bit rate)的影片,進而達到影像品質調適。如圖4 在調適的過程中,在伺服器預存不同傳輸速率(Bit rate)的影片,當網路環境變差時切換到適合的影片做傳送。
H.264/SVC(Scalable video coding)
H.264/SVC 為H.264/AVC 的延伸,H.264/SVC 主要的優點在於提升錯誤更正彈性,進而提升在容易發生封包遺失的網路間傳輸的視訊品質,在頻寬品質不穩定的網路下更顯得重要,H.264/SVC 視訊品質分成三種可調方式:
1.時間可適性 Temporal scalability(參照H.264/AVC)
2.空間可適性 Spatial scalability
Spatial scalability 採用類似於 MPEG-2/4 的觀念,將影片拆解成一個一個Spatial layer 的動作,每一layer 只會和相同Spatial layer 的影片相關,可以獨立壓縮,不受其它Spatial layer 影片的影響,因此可選擇不同解析度大小的視訊影片傳送與播放。
3.訊雜比可調性 SNR scalability
SNR scalability 包含三種,粗粒訊雜比可調性(Coarse grain scalability, CGS)、精細訊雜比可調性(Fine grain scalability, FGS)、中度訊雜比可調性(Medium grain scalability, MGS),SNR scalability 可調式視訊編碼,可依據網路頻寬给予最適當視訊編碼器的時間、空間及訊雜比之視訊品質。
從圖 5 中我們可以觀察SNR scalability 編碼只對同一層Spatial layer做 SNR 可調。舉例來說,當Quality layer 0(Q0)的Frame 3 遺失時,其會影響Q1 的Frame 3 與Q0 的Frame 2 與4 的解碼,並進而牽連影響Q1 的Frame 2 與4 的解碼;而當只有Q1 的Frame 3 遺失時,並不會影響Q1 的Frame 2 與4 的解碼。所以我們可以歸納SNR scalability 的編碼相依性只有在Q0 內的Frame 以Intra-layer 的方式互相參考,編碼相依性影響請參考Temporal layer 的描述。