1. 程式人生 > >H.265(HEVC)深度解析

H.265(HEVC)深度解析

​​

 數字視訊的超高清潮流奔騰向前,幀率從30 fps向60fps、120fps甚至240fps進發,與此同時,物理媒介日薄西山,內容正通過有形無形的網路在世界各個角落的終端裝置上傳遞。高度密集的資料給頻寬和儲存帶來巨大挑戰,當前主流的H.264開始不敷應用,而新一代視訊編碼標準H.265似乎成為了數字4K時代的“救世主”。
  H.265又稱為HEVC(全稱High Efficiency Video Coding,高效率視訊編碼,本文統稱為H.265),是ITU-T H.264/MPEG-4 AVC標準的繼任者。2004年由ISO/IEC Moving Picture Experts Group(MPEG)和ITU-T Video Coding Experts Group(VCEG)作為ISO/IEC 23008-2 MPEG-H Part 2或稱作ITU-T H.265開始制定。第一版的HEVC/H.265視訊壓縮標準在2013年4月13日被接受為國際電信聯盟(ITU-T)的正式標準。 

    理論上H.265比H.264效率提高30-50%(尤其是在更高的解析度情形下),但真的只是這麼簡單嗎?

H.265的改變

        H.265重新利用了H.264中定義的很多概念。兩者都是基於塊的視訊編碼技術,所以它們有著相同的根源,和相近的編碼方式,包括:

  1、以巨集塊來細分圖片,並最終以塊來細分。

  2、使用幀內壓縮技術減少空間冗餘。

  3、使用幀內壓縮技術減少時間冗餘(運動估計和補償)。

  4、使用轉換和量化來進行殘留資料壓縮。

  5、使用熵編碼減少殘留和運動向量傳輸和訊號傳送中的最後冗餘。

  事實上,視訊編解碼從MPEG-1誕生至今都沒有根本性改進,H.265也只是H.264在一些關鍵效能上的更強進化以及簡單化。

當你考慮“只是在普通網際網路上傳輸4K內容,還是要實現最好的影象質量”之時,就要先釐清“更多的壓縮”和“更好的壓縮”這兩個概念。如果只是更多的壓縮,4K和超高清不一定要保證比今天的1080p或HD做到更好的圖片質量。更好的壓縮則意味著更聰明的壓縮,面對同樣的原始素材,更好的壓縮會以更好的方式,在不犧牲質量的情況下令資料量減少。更多的壓縮很容易,而更好的壓縮需要更多的思考和更好的技術,通過更智慧的演算法來處理影象,在維持質量的同時保持更低的位元率,這正是H.265所要做的。

  如何實現更好的壓縮,舉例來講,我們通常會發現在很多的影象素材裡,如視像會議或者電影的很多場景中,每一幀上的大部分內容並沒有改變太多,視像會議中一般只有講話者的頭在動(甚至只有嘴脣在動),而背景一般是不動的,在這種情況下,我們的做法不是對每一幀的每一個畫素編碼,而是對最初的幀編碼,然後僅對發生改變的部分進行編碼。

H.265正從以下幾個方面向著“更好的壓縮”邁進。

影象分割槽

  H.265將影象劃分為“樹編碼單元(coding tree blocks, CTU)”,而不是像H.264那樣的16×16的巨集塊。根據不同的編碼設定,樹編碼塊的尺寸可以被設定為64×64或有限的32×32或16×16。很多研究都展示出更大的樹編碼塊可以提供更高的壓縮效率(同樣也需要更高的編碼速度)。每個樹編碼塊可以被遞迴分割,利用四叉樹結構,分割為32×32、16×16、8×8的子區域,下圖就是一個64×64樹編碼塊的分割槽示例。每個影象進一步被區分為特殊的樹編碼塊組,稱之為切割(Slices)和拼貼(Tiles)。編碼樹單元是H.264的基本編碼單位,如同H.264的巨集塊。編碼樹單元可向下分割槽編碼單元(Coding Unit,CU)、預測單元(Prediction Unit,PU)及轉換單元(Transform Unit,TU)。

  每個編碼樹單元內包含1個亮度與2個色度編碼樹塊,以及記錄額外資訊的語法元素。一般來說影片大多是以YUV 4:2:0色彩取樣進行壓縮,因此以16 x 16的編碼樹單元為例,其中會包含1個16 x 16的亮度編碼樹區塊,以及2個8 x 8的色度編碼樹區塊。

編碼單元是H.265基本的預測單元。通常,較小的編碼單元被用在細節區域(例如邊界等),而較大的編碼單元被用在可預測的平面區域。

轉換尺寸

  每個編碼單元可以四叉樹的方式遞迴分割為轉換單元。與H.264主要以4×4轉換,偶爾以8×8轉換所不同的是,H.265有若干種轉換尺寸:32×32、16×16、8×8和4×4。從數學的角度來看,更大的轉換單元可以更好地編碼靜態訊號,而更小的轉換單元可以更好地編碼更小的“脈衝”訊號。

預測單元

  在轉換和量化之前,首先是預測階段(包括幀內預測和幀間預測)。

  一個編碼單元可以使用以下八種預測模式中的一種進行預測。

即使一個編碼單元包含一個、兩個或四個預測單元,也可以使用專門的幀間或幀內預測技術對其進行預測,此外內編碼的編碼單元只能使用2N×2N或N×N的平方劃分。間編碼的編碼單元可以使用平方和非對稱的方式劃分。

  幀內預測:HEVC有35個不同的幀內預測模式(包括9個AVC裡已有的),包括DC模式、平面(Planar)模式和33個方向的模式。幀內預測可以遵循變換單元的分割樹,所以預測模式可以應用於4×4、8×8、16×16和32×32的變換單元。

幀間預測:針對運動向量預測,H.265有兩個參考表:L0和L1。每一個都擁有16個參照項,但是唯一圖片的最大數量是8。H.265運動估計要比H.264更加複雜。它使用列表索引,有兩個主要的預測模式:合併和高階運動向量(Merge and Advanced MV.)。

  在編碼的過程,預測單元是進行預測的基本單元,變換單元是進行變換和量化的基本單元。這三個單元的分離,使得變換、預測和編碼各個處理環節更加靈活,

去塊化

  與H.264在4×4塊上實現去塊化所不同的是,HEVC的只能在8×8網格上實現去塊。這就能允許去塊的並行處理(沒有濾波器重疊)。首先去塊的是畫面裡的所有垂直邊緣,緊接著是所有水平邊緣。與H.264採用一樣的濾波器。

  取樣點自適應偏移(Sample Adaptive Offset)

  去塊之後還有第二個可選的濾波器,叫做取樣點自適應偏移。它類似於去塊濾波器,應用在預測迴圈裡,結果儲存在參考幀列表裡。這個濾波器的目標是修訂錯誤預測、編碼漂移等,並應用自適應進行偏移。

並行處理

  由於HEVC的解碼要比AVC複雜很多,所以一些技術已經允許實現並行解碼。最重要的為拼貼和波前(Tiles and Wavefront)。影象被分成樹編碼單元的矩形網格(Tiles)。當前晶片架構已經從單核效能逐漸往多核並行方向發展,因此為了適應並行化程度非常高的晶片實現, H.265 引入了很多並行運算的優化思路。

總而言之,HEVC將傳統基於塊的視訊編碼模式推向更高的效率水平,總結一下就是:

  -可變數的尺寸轉換(從4×4 到32×32)

  -四叉樹結構的預測區域(從64×64到4×4)

  -基於候選清單的運動向量預測。

  -多種幀內預測模式。

  -更精準的運動補償濾波器。

  -優化的去塊、取樣點自適應偏移濾波器等。

關鍵編碼特徵比較關鍵編碼特徵比較

與之前從H.261到H.264的其他標準相比,H.265的顯著改善不僅表現在幀間壓縮領域,還表現在幀內壓縮方面。由於可變數的尺寸轉換,H.265在塊壓縮方面有很大的改善,但是增加壓縮效率的同時也帶來了一些新挑戰。

  視訊編碼是一個複雜的問題,對於內容的依賴性很高。眾所周知,有靜態背景的和高亮的低動態場景可以比高動態、黑場的圖片進行更多的壓縮。所以對於像H.264這樣的現代化編解碼器來說首要解決的是最困難的場景/情境。例如,有細節的關鍵幀、高動態的“勾邊(crisp)”影象、黑暗區域的慢動態、噪聲/紋理等。

  H.265在幀內編碼方面效率更高,所以細節區域可以被編碼得更好,在平滑區域和漸變區域也是如此。與H.264相比,H.265的運動估計和壓縮更有效,而且在偽影出現前可以在更低的位元率上操作。好訊息是,H.265產生的偽影更加“平滑”,質量的降低也非常協調,即便對非常激進的解析度/位元率編碼時,也觀感良好。

  然而,正如硬幣的兩面,當處理黑暗區域的慢動態和噪聲/紋理兩種問題時,H.265的優勢也會變成弱勢。黑暗區域和噪聲/紋理要求更精確的高頻保留和更小的色階變化。這通常被稱之為編碼的心理優化。

  由於H.264使用小的轉換,可以輕鬆將量化誤差變成特徵/細節,雖然與原始內容不同,但是感覺上“近似”。接近原生頻率範圍的誤差生成可以通過小的邊界轉換來阻止,因此也更加可控。而更大轉換的H.265要使用這種方式則會更加複雜。

  H.265編碼視訊的儲存依然是個問題,即使藍光光碟協會正在尋求一個能夠在藍光光碟上儲存4K視訊的解決方案。只有至少達到100GB容量的光碟才能儲存H.264編碼的藍光4K電影。而另一方面,即使H.265編碼和晶片部件已經準備就緒,但是仍然缺少支援4K內容的儲存和重放解決方案,並且能夠相容現有的藍光標準。這也是H.265發展中的一個主要挑戰。

當你考慮“只是在普通網際網路上傳輸4K內容,還是要實現最好的影象質量”之時,就要先釐清“更多的壓縮”和“更好的壓縮”這兩個概念。如果只是更多的壓縮,4K和超高清不一定要保證比今天的1080p或HD做到更好的圖片質量。更好的壓縮則意味著更聰明的壓縮,面對同樣的原始素材,更好的壓縮會以更好的方式,在不犧牲質量的情況下令資料量減少。更多的壓縮很容易,而更好的壓縮需要更多的思考和更好的技術,通過更智慧的演算法來處理影象,在維持質量的同時保持更低的位元率,這正是H.265所要做的。

  如何實現更好的壓縮,舉例來講,我們通常會發現在很多的影象素材裡,如視像會議或者電影的很多場景中,每一幀上的大部分內容並沒有改變太多,視像會議中一般只有講話者的頭在動(甚至只有嘴脣在動),而背景一般是不動的,在這種情況下,我們的做法不是對每一幀的每一個畫素編碼,而是對最初的幀編碼,然後僅對發生改變的部分進行編碼。

在H.265大步向前的同時,谷歌VP8的繼任者VP9也已推出,同樣在VP8的基礎上號稱編碼效率提高50%,支援8K內容。VP9是一個開源和免費的規格,是WebM架構的一部分。谷歌已經在Chrome瀏覽器和YouTube中整合支援VP9。

  與H.265在表面上類似,它同樣可以抓取64×64個超級塊。但265不同的是,它不一定是平方形式的,所以它可以以64×32或4×8的塊來取樣,實現更大的效益。但另一方面,它只有10個預測模式來重建它們。

  兩者都很大程度上簡化了現有這些格式,儘管實現了相近的檔案尺寸,有初步的報告認為,H.265有更高的影象質量,而VP9對於流媒體來說更加可靠。H.265更大的預測模型實現了邊緣視覺化,而VP9實施更嚴格的編碼規則,似乎可以讓流媒體更加連貫和可靠。

  H.265與VP9的比較有一點類似於HDMI與DisplayPort的比較。後者以版權免費的方式去爭取一席空間,但是前者的無處不在的應用意味著它會有更廣泛的行業支援。這也是之前H.264輕鬆打敗VP8的原因。

  與此同時,第三個壓縮格式也在規劃之中,Xiph.Org基金會開發了“Daala”,雖然它還比較遙遠,但是Xiph稱其將是效能超越H.265和VP9的新一代規格。

高畫素數量導致需要更復雜的編解碼器來最小化頻寬需求。持續連線PC或TV,平滑處理4K訊號的最小碼流是20Mbit/s,例如Netflix要求使用者的網際網路連線至少提供持續的25Mbit/s頻寬量。20到25Mbit/s代表頻寬的巨大改善,原生的、非壓縮的4K視訊需要在60Mbit/s的頻寬上才會有好的表現。

  對於大多數的行業應用來說,H.265就是解決這一問題的答案之一,但是也要付出一定代價:顯著增加的演算法複雜性據說需要10倍目前2K部署所用H.264編解碼器的計算能力來支撐,而提供這種能力所需的矽也遠非一個簡單的商品條目。

  很多製造商希望在上游晶片和IC技術供應商的努力之下,解決成本和功能不平衡的問題,讓H.265快速取代H264。就目前來看,H.265在廣電領域已經有比較好的發展,但是否也會成為專業應用領域的主流規範還存有疑問。因為安防監控領域等專業領域不僅受制於上述挑戰,而且還要看終端使用者。對於專案化的專業使用者和需要監控的一般消費者而言,平安城市、交通檢測和銀行監控這類專業使用者需要更加穩定和可靠的系統。他們中大多數已經在使用現有的技術,對於是否採用H.265還心存猶豫,這就需要更長的驗證週期。

  另一方面,中小企業和家庭、商店使用者等消費者需要低安裝成本,因此更加傾向於採用新技術。基於這個原因,H.265可能首先在中小企業應用中獲得成功,並在消費者市場獲得認可。如果H.265標準快速成熟,其壓縮效率比H.264提升50%,它就能夠節省20%的投資,保證更高的效能和更替的網路和系統建設成本。

                                                   文章轉自網路http://www.imaschina.com/