2013年6月25日 星期二

新一代影像編碼格式 H.265 完全析解,流量省一半,檔案更小更美

懸盪已久的次世代影像編碼格式 H.265,終於在2013年1月25日收到國際電信聯盟(ITU)的認可,成為新一代標準格式,它除了肩負縮小影片所需資料流量,以舒緩繁重的網路負擔外,同時也是 4K UHD 解析度影片編碼的不二人選。

影片流量拖垮網路影片壓縮最主要的終極目標,就是要降低影片檔案的大小,如此一來可以減少儲存時所佔用的空間,同時也能夠降低傳輸時消耗的網路頻寬。或許讀者會覺得現在硬碟便宜的跟什麼一樣,網路速度也非常快,但若以目前主流的HD影片來推估,並以下列條件進行試算: 

解析度=1920 x 1080
顏色取樣深度=24bit(R、G、B各色8bit)
每秒幀數=60幀

那麼每秒需要的流量可能是多少?
1920 x 1080 x 24bit x 60=2985984000bit
2985984000bit/8bit/1024/1024=355.957MB

以2小時的電影來說,就需要佔用2.44TB的儲存空間,大約需要使用50片雙層藍光光碟才能裝得完(而且以上估算還不包括音訊部分),更罔談以網路即時串流,影片壓縮的重要性可見一斑。

以目前主流的藍光光碟為例,採用大部分H.264編碼格式的影片流量落於20至25Mbps之間,壓縮率大約為113.9至142.38倍之間,節省的空間相當可觀。即便H.264的壓縮能力足夠滿足目前使用需求,但是遇到解析度更高的4K UHD格式,還是顯得捉襟見肘,需要尋求壓縮效率更好的編碼器,才能將影片壓縮到適合傳輸與儲存的流量範圍。

工作時程超過8年
H.265的起源為2004年時,國際電信聯盟旗下的視訊編碼專家小組(Video Coding Experts Group)開始研讀可以取代H.264的技術,並且將專案名稱暫定為H.265與H.NGVC (Next-generation Video Coding,次世代視訊編碼),其目標為與H.264 High Profile比較時,在相同畫質表現下,可以為影片節省25至50%的資料流量。

2007年國際標準化組織(ISO)旗下的動態畫像專家小組(Moving Picture Experts Group)也開始了相似的工作,它們也希望能提出壓縮效率更高的編碼方式。2010年4月時,這2個小組一起組成了視訊編碼聯合工作小組(JCT-VC,Joint Collaborative Team on Video Coding),共同提出了27項提案,並針對這些提案進行研討,於2010年10月發佈第1份規格草案。

在累積許多工作成果後,2012年2月推出了以第6份規格草案為基礎的委員會版草案,接下來以第8份規格草案為基礎的國際規格草案,於2012年6月推出。最後原訂於2013年2月發佈最終版國際規格草案,則是提前於1月25日確認,確定了H.265的基本功能。

節省一半流量
H.265的研發目的從命名就可以看出端倪,H.265又名HEVC(High Efficiency Video Coding,高效率視訊編碼),其最主要的用途就是要進一步降低影片所需的流量,以降低儲存與傳輸的成本。以上述27項提案中最重要3項為例,H.265要求在最佳的編碼範本(profile)中,能在維持相同PSNR的前提下,節省以H.264壓縮的1080P影片36%左右的資料量,並且能在影像品質差不多時,將節省的幅度進一步提升到50%。

而第3項重要提案,則是針對壓縮、解壓縮所需的運算量做出限制,以最佳編碼範本進行H.265編碼所需的時間,只能比H.264編碼多出10%,而解碼時間則是可以多出60%。有趣的是,限制H.265的運算量需求,勢必會降低它的編碼效率,恰巧與節約流量的初衷相互矛盾,但是會做出這種決定,其目的不外乎是預想到日後解析度與每秒幀數更高的影片,會讓運算量大幅提高,先做出折衷的限制,才能在處理器或是行動裝置效能足夠負荷的前提下,盡可能提高壓縮效率。

PSNR為畫質打分數
影片的畫質分析可以分為主觀的人肉測試,與相對客觀的量化測試,人肉測試的方式不外乎用肉眼觀察影片的畫面,分析不同樣本中熟優熟劣,這種方式雖然直接,但卻容易受到測試者主觀喜惡的影響,而且也不夠精確。量化測試是採用數學方式分析影片處理前後的差異,雖然可以得到精確的分數,但是該分數不一定能完全反應視覺上的感受。

PSNR(Peak Signal-to-Noise Ratio,尖峰訊噪比)為量化測試的一種,其定義為「10 x log10(MAX^2 / MSE)」,其中MAX為每個像素中,能夠表現出的最大可能性數量,若以8bit取樣深度為例,MAX將等於2^8-1 = 255。MSE為方均誤差,其數學上的定義為比較處理前後的影片,針對每一個像素計算其量化數據上差異,再將這個差異平方後加總計算,最後再將總和除以像素總數。簡單地說,尖峰訊噪比越大,就表示訊號越強、雜訊越小,也代表畫面與原始檔案比較相近。反之若是數值很小的話,就表示影片受雜訊干擾的情況嚴重,畫質表現比較不好。

以H.264為基礎,H.265效率更高
自從H.261編碼格式引入混合式(hybrid)編碼方式開始,後續的編碼格式大多會延用這個方式,將影像進行畫面間、畫面內預測(inter prediction、intra prediction),刪去影片中不需要的重複資料。H.265也不例外,它也是基於這個概念進行設計,不過它擁有諸多新的編碼工具,可以讓增進壓縮效率。

僅支援循序掃瞄
為了要節省影片資料流量,有些媒體會以交錯掃描(interlaced scan)進行傳輸,交錯掃描的原理為將影片依照掃瞄線(即水平方向像素)將畫面拆分為2個群組,奇場群組包含第1、3、5……等奇數條掃瞄線,偶場群組則包含偶數條掃瞄線,奇場、偶場群組會在螢幕上交替播出,在快速輪換的結果下,人眼就會因視覺暫留而看到完整畫面。

雖然交錯掃描可以降低影片資料流量,但是對畫質仍會造成一定影響,尤其是高速移動的物體,容易在邊緣產生抖動或毛邊等干擾。循序掃描(progressive scan)則是每次都傳送完整畫面,雖然會佔用較多流量,但可以提供較佳畫質。

由於目前的顯示器皆以循序掃描模式運作,因此H.265設計時並不支援交錯掃描方式進行編碼,但若為了節省流量或其他因素,編碼器可以透過參考資料語法(metadata syntax),將完整畫面在編碼前先拆分為奇場及偶場群組,編碼器會將2個不同的群組視為不同影片來源,分別進行編碼工作,以此變通方式達成儲存交錯掃描影片的需求。

捨巨區塊,採編碼樹
從H.265的發展延革來看,它勢必會站在H.264的基礎上發展,但是兩者間最大的不同,存在於最基礎的編碼單元。以往H.264會以16 x 16像素為單位(或是16 x 8、8 x 8、8 x 4、4 x 4等配置),將畫面切割為數個大小相同的巨區塊(macroblock),並以這些巨區塊做為編碼時的最小元素。H.265則是將切割畫面的工作從使用者手動設定,轉交給編碼器來決定,讓編碼器可視情況以16 x 16、32 x 32、64 x 64等尺寸,將畫面切割為數個編碼樹單元(Coding Tree Unit),一般來說區塊尺寸越大,壓縮效率就會越好。

每個編碼樹單元內包含1個亮度與2個色度編碼樹區塊(Coding Tree Block),以及記錄額外資訊的語法元素(syntax element)。一般來說影片大多是以YUV 4:2:0色彩採樣進行壓縮,因此以16 x 16的編碼樹單元為例,其中會包含1個16 x 16的亮度編碼樹區塊,以及2個8 x 8的色度編碼樹區塊。
完整文章轉自T客邦