Monday, November 20, 2006

摘錄》迎接高解析的未來 H.264與VC-1兩大視訊壓縮技術比較

影音編碼已經成為數位家庭中,最為主要的角色之一,畢竟我們日常所收看的電視節目、播放的影音片段,無一不是採用各種手段的影音編碼所構成。

如何針對各種收看環境來選用適合的編碼標準,除了要看各種編碼規格的特性,還要注意組建來作為編解碼的硬體其包含成本考量、架構設計簡易度以及編解碼晶片性能的限制等等因素。

 以目前的編碼技術方面,通常影像與音效都是去隔開來的,除了少數如MPEG-4中有將音效編碼的規則納入以外,其餘大多是獨立而可與視訊編碼互相搭配的。

而因應未來高解析視訊與高傳真音效並重的時代,諸多新產品中紛紛引進了新一代的影音壓縮標準,不過舊有的技術並沒有就這麼退出時代潮流,在一些特定的應用之中,舊技術仍然佔有相當重要的一席之地。

 視訊壓縮標準方面  這方面的競爭情況相當激烈,可以說是群雄並起,互不相讓,以應用到市場的技術而言,主流技術為MPEG-2、H.264、Divx、Xvid以及微軟的WMA、VC-1等規格。

對於市場來說,目前的狀況來說,由於被下一代藍光儲存欽定為預設的影音編碼規格則是以H.264氣勢最盛,MPEG-2除了在目前DVD影片中廣泛被採用以外,Blu-Ray初期也將只支援MPEG-2編碼,雖然壓縮比輸了H.264一大截,但是由於在市場上推廣多年,目前設備大多可以沿用,應用在推廣初始Blu-Ray內容時,可收到降低成本及壓制較為簡易的優點,但是面對HD-DVD在支援眾多格式的情況下,且初始內容就採用H.264壓縮,使得MPEG-2的後勢也並不是很樂觀。

 Divx與Xvid這對兄弟原本系出同門,如今處境卻大有不同,除了在掌上型影音播放裝置中取得相當大的普及率以外,在一些台面下的應用也相當熱門,但是真正的商業應用卻相當匱乏。

Divx有被少數遊戲公司應用到遊戲開頭動畫中,而且也擁有一個使用Divx壓縮格式,內容類似YouTube的的影音分享網站http://stage6.divx.com/,該網站可以說是目前影音分享網站中具有最高解析度影音表現的,當然,高影音品質是要用頻寬來換的。

而Xvid大多則是玩家之間互相流傳,商務上的應用更少。

在微軟強勢的商業作風之下,WMV成為網路串流媒體的主流格式之一,後繼的VC-1也成為藍光影音壓縮的標準格式之一,因此WMV可以說是除了MPEG與H.264兩大格式以外,在商業推廣上最成功的視訊壓縮格式了。

 H.264視訊編解碼標準-這個視訊編解碼格式是由ITU-U中的VCEG與ISO/IEC組織中的MPEG標準組成的聯合視訊團隊(JVT,Joint Video Team)所共同制定提出的。

H.264也被稱為AVC(Advanced Video Coding)。

由於H.264的制定目標是希望能夠在過去編碼規格的一半或以下的流量之下,就能提供良好的品質。

 圖說:h.264解壓縮流程。

(資料來源:工研院)  H.264在壓縮模式上,具有7個macroblock(畫面預測區塊大小)類型,這些類型共有16×16、16×8、8×16、8×8、8×4、4×8、4×4,此外,,依照壓縮軟體設定的不同,參考畫面最多可往前31張以及往後31張,移動向量可以精確到4分之1像素,可以藉此大幅提升時間軸上的預測精準度。

而在進行轉換時,最原始版本H.264的DCT處理是以4×4矩陣為轉換基本單元,而且採用整數作為轉換係數,因此在進行反轉換時,不會有採用小數運算方式還原後無法匹配的問題,解編碼的精確度可以大幅提高,而在量化技術上,H.264僅採用加法與乘法,沒有除法運算,因此對於積體電路的實現有著相當大的好處。

至於在針對量化過的轉換係數資料方面,則是提供了CAVLC(Context Adaptive Variable Length Coding)與CABAC(Context Adaptive Binary Arithmetic Coding)兩種編碼方式,可自動根據編碼的內容來統計特定代碼出現的機率,進而產生最適合於目前影像的編碼表。

與傳統MPEG-2/4的固定編碼方式明顯不同,可以有效提高壓縮比。

基本上來說,CABAC的編碼方式要比CAVLC來得複雜。

 H.264在針對壓縮方式的區別上,可根據不同的內容應用來區分為不同的組態(Profile),這些組態分別為Baseline Profile、Main Profile、Extension Profile,每個組態中還有相對應的影片尺寸與位元率等級,在定義上,則是可由Level 1區分至Level 5.1,涵蓋小畫面與HD畫面等不同解析度與流量應用範圍。

 Baseline Profile主要是著眼於低位元率與低流量的應用中(如視訊電話、網路影片串流等),而由於其運算複雜度相較起其他組態為低,目前的嵌入式處理器或DSP都還能負擔,所以也適合應用於如PMP、多媒體手機等個人隨身的影音播放裝置中;Main Profile因為支援了交錯式影片(interlaced content)的編碼類型,所以也適合應用於HDTV數位電視廣播,由於其非常容易整合在傳統的MPEG-2 Transport/Program Stream上來傳送H.264/AVC位元流的特性,所以在導入難度上就顯得相對簡易。

至於在IP-TV或是MOD(Multimedia On Demand)等方面的應用方面,使用具有高抗錯性編碼工具(error resilient tools)的Extension Profile即可以滿足這些需求。

 圖說:FRExt4個組態的功能區分。

(資料來源:www.fastvid.com)  然而,微軟在2003年將其開發的視訊壓縮技術向美國的電影電視工程師協會(Society of Motion Picture and Television Engineers;SMPTE)提出公開標準化的申請,並以VC-1(Video Codec 1)作為此新標準的命名,而且已經在2006年4月正式通過成為標準。

由於VC-1在高解析度影片上的表現出色,導致H.264在DVD Forum與Blu-ray Disc Association的高解析度DVD影片品質測試中嚐到挫敗,甚至被Blu-Ray陣營所拒用,其主要原因是H.264使用較小尺寸的轉換公式與無法調整的量化矩陣,造成不能完整保留影像的高頻細節資訊,比如說,在1080i/p影片中常會故意使用的Film Effect效果就會被H.264所消除,因此H.264於2004年展開標準增修的討論,來納入稱之為Fidelity Range Extensions (FRExt)的新編碼工具,並以先前Main Profile為基礎來擴充增加4個新的組態類別,而成效也相當的驚人,H.264藉此成功打倒VC-1,重新取得畫質之王的稱號,並且被Blu-Ray所採用。

 FRExt修正了H.264第一版支援的每像素8-bit,且僅限於4:2:0的方式,除了進一步引進先進的編碼工具,藉此提高壓縮效率以外,原始視訊每個像素的採樣值可以達到12-bit,並且增加了4:2:2以及4:4:4等採樣格式,同時也支援了更高的解析度。

除此之外,還可以針對特定高傳真影像需求,對影像進行無破壞壓縮,並且支援了基於RGB格式的壓縮,同時也避免了色彩空間的誤差。

 FRExt的四個新的類別分別是支援8-bit,4:2:0採樣的High Profile(HP)、支援10-bit,4:2:0採樣的High 10 Profile(H10P)、支援10-bit,4:2:2採樣的High 4:2:2 Profile(H422P)以及支援12-bit,4:4:4採樣的High 4:4:4 Profile(H444P),其中H444P是無損壓縮且具有多色彩空間(Color Space)的編碼方式。

 由於前一版的H.264在DCT轉換上採用4×4整數轉換,雖然有著演算複雜度較低,並可減低區塊效應的優點以外,對於高解析度視訊的處理方面,會因為被捨棄的細節太多,而導致視訊品質在壓縮過後會與遠使版本有落差的問題,因此為了達到各方面的平衡,FRExt導入了8×8整數變換機制,且編碼工具可以在Macroblock階段自動選擇4×4或8×8轉換方式。

由於8×8的正轉換以及逆轉換演算都可以通過相當具有效率的蝶形演算法來實做,對於特定位元率的視訊輸入,只要在該位元率另行加入8-bit的演算動態範圍即可,在複雜度上僅略高於4×4的方式。

 不過在新的轉換方式上,也同時要求新的量化方式,由於FRExt只是原先H.264規範的延伸,與MPEG-2同樣的可以選擇量化矩陣進行量化,並藉此提高影像品質。

同時也在CABAC(Context Adaptive Arithmetic Binary Coding)編碼方式上做出改進,增加了3個內容模型。

至於CAVLC(Context Adaptive Variable Length Coding)則是把1組8×8的矩陣切割為4組4×4的矩陣。

除了量化方式的改進以外,在偵測與預測視訊頁框亮度的技術也多加了9種不同的方式,在這些技術的相互搭配之下,追求完美的畫質表現。

 VC-1視訊編解碼標準—甫於2006年4月正式成為標準的微軟VC-1格式,則是基於Windows Media Video 9壓縮技術的影像壓縮標準,由三大編解碼元件所組成,每一個編解碼元件都具有其獨自的FourCC編碼。

 圖說:VC-1解壓縮流程。

(資料來源:工研院)  這些元件包含了以下三種:  WMV3:也就是過去俗稱的WMV9,WMV3可以說是VC-1的構成基礎,它支援了循序編碼方式,可用來做為電腦的顯示,也支援了電視常用的交錯方式,不過當微軟開始進行WMV Advanced Profile的研發與推廣後,WMV3的交錯編碼就不再被需要了。

WMV3包含了Simple以及Main這兩種Profile,並且應用在VC-1編解碼標準中。

 WMVA:這是最原始版本的WMV Advance Profile,被SMPTE接受納入為VC-1標準的草案,這個元件也被包含在微軟的視窗多媒體播放軟體Windows Media Player 10當中,不過在2006年正式被WVC1所取代。

 WVC1:也就是Windows Media Video 9 Advanced Profile的正式版,成為VC-1中最主要的編碼架構,被應用在次世代藍光影音的壓縮標準中。

 與H.264類似的是,VC-1包含了許多高階的編碼工具,不過在種類上有所差異?除了支援2分之1像素的Bilinear內插運算以外,VC-1還支援4分之一像素的Bicubic內插運算,傳統MPEG-2與MPEG-4皆只有使用2分之一像素Bilinear內插運算,因此最終輸出畫面將會變得模糊,再加上前後參考頁框皆是處於類似的狀況之下,畫面品質更是乏善可陳。

VC-1是以16×16的MacroBLock為壓縮單位,1個MacroBlock1個MV(Motion Vector,運動向量),而在係數轉換上,則是包含了有8×8、換模式,理論上而言,轉換的區塊越小,能越能夠有效減少傳統MPEG-2壓縮後常見的ringing瑕疵。

 兩大視訊壓縮格式的技術比較  動作補償(motion composition)技術的差異—H.264具有7種不同的動作補償模式,而VC-1只有4種,動作補償的區塊越小,就越能找到誤差值越小的參考點,進而節省紀錄誤差值所需的位元數,不過區塊也不可能無限制的縮小切割下去,因為區塊越小,同一畫面中所需紀錄的向量也越多,例如以1個16×16大小的區塊來說,只需要紀錄一個向量,如果區塊切割的大小縮為4×4,那麼向量將會增加為16個,雖然動作向量也可以透過預測的方式來進行壓縮,但是過小的區塊將會使得壓縮的效益變的不明顯。

加上編碼器必須在壓縮過程中,隨時對畫面進行偵測與判斷,從多種模式中選用最佳的方式來進行壓縮。

一般來說,大片的單純顏色區域將會使用較大的區塊,而具有銳利邊緣的地方,將會使用小區塊來進行動作補償,在偵測與選用的過程中,會因為判斷動作的增加,而使得壓縮的時間增加,因此雖然VC-1在壓縮比方面雖然無法勝過H.264,但是在壓縮時間上,明顯比H.264短了許多的原因在此。

 Sub-Pixel(次像素)動作搜尋精度差異—在H.264的草案中,具有8分之1像素以及16分之1像素的構想,不過因為這兩個精度所帶來的效益並不明顯,因此在正式版本中的3個Profle中都拿掉了,而隨後推出的FRExt也沒有再將之納入支援,不過將來若有必要,也是可以隨時再增加新的組態。

而H.264的預設內插補點是採用6-tap FIR的濾波器。

而VC-1則是如前所述,採用Biliner以及Bicubic方式,最小同樣可達4分之1像素。

 不同的量化方式-H.264中的Base Profile以及Main Profile具有多個量化品質切割方式,但是並不具有量化矩陣,這與VC-1採用類似MPEG-2的量化矩陣的方式不同,但是H.264在之後的FRExt中,重新採用了可選擇的量化矩陣方式,不過由於H.264設計方式的特殊,可以非常高的壓縮比達到幾近於無損壓縮的高品質表現,這點要明顯比VC-1優秀,不過換來的是非常久的壓縮時間,如果沒有特殊加速晶片或強大的硬體支援,會有不少人可能會改而選擇壓縮時間較短,但是品質仍在可接受範圍的VC-1。

 圖說:VC-1的重疊平滑技術。

(資料來源:工研院)  區塊濾波器的有無-H.264有做區塊濾波器,而VC-1 沒有做區塊濾波器。

VC-1採用不同的濾波方式,稱為重疊平滑(Overlap Smoothing),雖然H.264的區塊濾波可以有效降低區塊效應,但是區塊濾波使在解壓縮還原之後才會進行的步驟,而不是在壓縮階段就會進行的過程,因此經過區塊濾波處理之後,就已經不是原本的影像資訊,有可能會導致影像中的細節丟失。

而區塊濾波器的演算複雜度相當高,除了考慮到播放裝置的性能以外,在某些簡單應用中也不適合使用。

VC-1對以intra模式壓縮的區塊則是提供了另1種重疊轉換技術,藉此彌補沒有區塊濾波器所可能產生的區塊問題。

重疊轉換是在進行壓縮時,利用在空間領域作前處理,並且在解壓縮時搭配進行後處理來達成,基本上,重疊平滑方式必需要搭配前置與後製處理,在理論上,可以兼顧去除區塊以及保持最大量的原始影片資訊兩方面的需求,不過重疊平滑的步驟僅在區塊的型態為I時才執行,無法應用到所有的區塊型態中。

 其他差異-H.264/AVC 的畫面間參考資料最多可由31張的之前重建畫面所組成,而VC-1畫面間參考資料僅可由前1張的之前重建畫面所組成。

而在針對亮度的同畫面預測方面,H.264採用intra_4×4與intra_16×16兩種方式,VC-1則是使用傳統MPEG的作法,使用DC與AC方式的預測。

而雖然H.264與VC-1都採用了可變長度編碼設計,但是其餘的技術差異仍然相當大,如果要實做到支援多規格播放的硬體電路中,所要考慮的層面相當的多。

 結論  雖然H.264擁有史上最強的影像畫質,但是VC-1強大的均衡性,在正式成為標準之後,聲勢上也不會弱於H.264,加上微軟強大的軟體入侵方式,以及同樣屬於下一代藍光內容壓縮標準,很難純粹從技術上或是從市場觀點來論定這兩個技術的優劣,所以在授權費用多寡與方式上,可能就會成為兩大視訊壓縮標準決定勝敗的關鍵。