|
0.引言 閱讀本文前,可以參考前面的文章,可以有更好的對比。文章列表如下: 1.H265簡述 H.265旨在在有限帶寬下傳輸更高質(zhì)量的網(wǎng)絡(luò)視頻,僅需原先的一半帶寬即可播放相同質(zhì)量的視頻。這也意味著,我們的智能手機(jī)、平板機(jī)等移動設(shè)備將能夠直接在線播放1080p的全高清視頻。H.265標(biāo)準(zhǔn)也同時(shí)支持4K(4096×2160)和8K(8192×4320)超高清視頻。可以說,H.265標(biāo)準(zhǔn)讓網(wǎng)絡(luò)視頻跟上了顯示屏“高分辨率化”的腳步。 繼 H.264 編解碼標(biāo)準(zhǔn)之后,聯(lián)合視頻組(JVT)于 2010 年 1 月份的第一屆 JCT-VC會議上確定了新一代視頻標(biāo)準(zhǔn)的名稱為高性能視頻編碼(HEVC,High Efficiency Video Coding)。在 2013 年 1 月份由 ITU-T 以及 ISO/IEC 共同發(fā)布了 H.265/HEVC 標(biāo)準(zhǔn)的第一版。 H.265/ HEVC 標(biāo)準(zhǔn)沿襲了 H.264/AVC 標(biāo)準(zhǔn)中的預(yù)測編碼結(jié)合混合編碼的模式,保留了原有的一些技術(shù),如幀內(nèi)預(yù)測、幀間預(yù)測、熵編碼等,同時(shí)對這些技術(shù)加以改進(jìn)和修正,用以平衡碼流、編碼質(zhì)量、編碼延時(shí)和編碼算法時(shí)間復(fù)雜度之間的關(guān)系,從而達(dá)到最優(yōu)化設(shè)置。在主觀效果相似的前提下,在 H.264/AVC 已有碼率的基礎(chǔ)上節(jié)約 50%的比特率。當(dāng)采用 PSNR 作為客觀質(zhì)量評價(jià)指標(biāo)時(shí),與 H.264/AVC 的 High Profile 相比,在全部幀內(nèi)編碼的條件下可以節(jié)省大約 22%的比特率,在支持隨機(jī)訪問的條件下可以節(jié)省大約 34%的比特率,在低延時(shí)的條件下可以節(jié)省 37%的比特率。但在實(shí)際應(yīng)用方面,H.265/HEVC 節(jié)省碼率的背后是數(shù)倍于 H.264/AVC 的算法時(shí)間復(fù)雜度。 相對于 H.265 編解碼標(biāo)準(zhǔn),目前其最有力的競爭對手是由 Google 開發(fā)的開放格式、無使用授權(quán)費(fèi)的視頻壓縮標(biāo)準(zhǔn) VP9。VP9 是 Google 于 2011 年開始研發(fā)的基于 VP8 的視頻編解碼標(biāo)準(zhǔn)。并且已于 2013 年正式應(yīng)用于 Google 的 Chroma 網(wǎng)頁瀏覽器中。但同等PSNR 的條件下,H.265 較 VP9 有 12%的碼流節(jié)??;H.265 在并行處理方面也優(yōu)于 VP9。 在軟編解碼工具方面,目前應(yīng)用最為廣泛的為 x265開源編碼器。x265 基于H.265/HEVC 視頻壓縮標(biāo)準(zhǔn),是一個(gè)面向?qū)嵱眯缘拈_源視頻編解碼庫。它由 Multicore Ware公司建立,并允許所有用戶在 GNU GPL 2 授權(quán)協(xié)議下使用。x265 通過多線程機(jī)制支持幀級并行和行級并行編碼,并集成了大量的算法優(yōu)化、匯編加速、單指令多數(shù)據(jù)實(shí)現(xiàn)等,大幅度提高了編碼速度。H265的計(jì)算量比較大,可能有些CPU編碼起來,比較費(fèi)力。目前市面上支持 H.265/HEVC 的主流顯卡廠家主要包括:Intel,Nvidia 以及 AMD。多核架構(gòu)的應(yīng)用方式通常是以 Intel 或 AMD 公司研發(fā)的多核處理器作為核心運(yùn)算部件,利用多個(gè)核心之間的并行處理能力,加速編解碼的運(yùn)算進(jìn)程。眾核架構(gòu)通常以 NVIDIA 公司推出的通用計(jì)算圖形處理器為代表?;仡橧ntel 的 CPU 的發(fā)展歷程,從 2015 年發(fā)布的第六代 skylake 架構(gòu)的 CPU 開始支持硬件編解 HEVC/H.265,但是還不支持 HEVC 10bit,直到在 CES 2017 大會上正式發(fā)布的第七代 Kaby Lake 才完整的支持 HEVC 10bit 編碼,多媒體功能進(jìn)一步加強(qiáng)。而 Nvidia 則是從 GTX960 開始支持 HEVC/H.265,AMD 則是從第六代 A 系列 APU 支持 HEVC/H.265 硬件解碼加速。 2.H.265/HEVC 基本編碼框架 H.265 繼承了 H.264/AVC 中算法結(jié)構(gòu)的基本框架,從整體上來說變化不大,依然沿用了混合編碼框架。編碼框架,如下圖所示: 該框架中,幀間預(yù)測和幀內(nèi)預(yù)測共同組成了編碼器的預(yù)測模塊,幀內(nèi)預(yù)測根據(jù)單幀圖像內(nèi)部的像素特點(diǎn),壓縮圖像內(nèi)部的冗余,消除空間上的相關(guān)性。幀間預(yù)測通過根據(jù)特定參考幀,來計(jì)算當(dāng)前幀的運(yùn)動矢量,用來消除時(shí)間上的相關(guān)性。一般對于視頻中的第一幀,由于編碼器中還沒有相應(yīng)的參考幀可用,將僅使用幀內(nèi)編碼模式編碼,之后才可以用幀間編碼方式。 當(dāng)預(yù)測模塊產(chǎn)生預(yù)測信息后,編碼器將預(yù)測信息與當(dāng)前幀信息做差值得到殘差數(shù)據(jù),并對所得到的殘差數(shù)據(jù)進(jìn)行一系列的量化變換處理,進(jìn)一步消除冗余信息,最后將其與其他信息合在一起就構(gòu)成了最終的編碼好的數(shù)據(jù)流。而對于框架中的反量化、反變以及濾波等過程其實(shí)與解碼器中的對應(yīng)功能相同,即在編碼器中部分存在著解碼器的部分功能,這一部分的主要功能是根據(jù)變換和量化處理后的殘差信息重建原始?xì)埐钚畔?/strong>,這些原始?xì)埐钚畔⑴c一些預(yù)測信息一起,作為幀內(nèi)預(yù)測所需要的數(shù)據(jù)。或者經(jīng)過一系列的濾波處理,加上運(yùn)動估計(jì),作為幀間預(yù)測中的參考幀。 3.H.265/HEVC 與 H.264/AVC 相比的新特性 雖然整體框架相比于 H.264/AVC 標(biāo)準(zhǔn)基本不變,但是 H.265 在每個(gè)主要模塊上都有不同程度上的改進(jìn)和創(chuàng)新,具體部分下面將分幾個(gè)小節(jié)具體介紹。 H.265/HEVC的編碼架構(gòu)大致上和H.264/AVC的架構(gòu)相似,主要也包含,幀內(nèi)預(yù)測(intra prediction)、幀間預(yù)測(inter prediction)、轉(zhuǎn)換(transform)、量化(quantization)、去區(qū)塊濾波器(deblocking filter)、熵編碼(entropy coding)等模塊。 反復(fù)的質(zhì)量比較測試已經(jīng)表明,在相同的圖象質(zhì)量下,相比于H.264,通過H.265編碼的視頻大小將減少大約39-44%。由于質(zhì)量控制的測定方法不同,這個(gè)數(shù)據(jù)也會有相應(yīng)的變化。 通過主觀視覺測試得出的數(shù)據(jù)顯示,在碼率減少51-74%的情況下,H.265編碼視頻的質(zhì)量還能與H.264編碼視頻近似甚至更好,其本質(zhì)上說是比預(yù)期的信噪比(PSNR)要好。 4.H.265/HEVC 的編碼結(jié)構(gòu) 與前一代標(biāo)準(zhǔn) H.264/AVC 以相對固定的大小進(jìn)行宏塊劃分的策略不同,H.265 標(biāo)準(zhǔn)引入了新的宏塊劃分策略,即四叉樹劃分技術(shù)。而為了支持這種更高效靈活的劃分策略,H.265 標(biāo)準(zhǔn)引入了四種新的編碼結(jié)構(gòu),即編碼樹單元(CTU,Coding Tree Unit),編碼單元(CU,Coding Unit),預(yù)測單元(PU,Predicttion Unit)以及變換單元(TU,Transform Unit)[20]。一個(gè)編碼樹單元(CTU)包含了同一位置處的一個(gè)亮度編碼樹塊(CTB,Coding Tree Block)和兩個(gè)色度編碼樹塊以及一些相應(yīng)的語法元素。編碼樹單元在概念和功能上等同于 H.264/AVC 標(biāo)準(zhǔn)中的宏塊,即為每一幀圖像的劃分單位。但與H.264/AVC 固定尺寸的 16x16 宏塊不同的是,在 H.265 標(biāo)準(zhǔn)中 CTU 的大小范圍更加靈活,不但可以取 16X16,還可以是 8X8、32X32 甚至最大到 64X64。如圖 2.2 所示,一幅圖像依據(jù)編碼器設(shè)置的 CTU 大小,能夠被劃分為若干個(gè)互不堆疊的 CTU。圖像的 CTU 劃分,如下圖所示: 對于每一個(gè) CTU 的內(nèi)部,其劃分依然使用基于四叉樹的劃分策略進(jìn)行循環(huán)分層,用編碼單元 CU 進(jìn)行劃分。CTU 的根節(jié)點(diǎn) CU 是最大編碼單元(LCU,Largest Coding Unit),其大小與當(dāng)前 CTU 的大小相當(dāng),最大可達(dá) 64X64,而一個(gè) CTU 中最小的 CU 稱為最小編碼單元(SCU,Smallest Coding Unit)。一個(gè) CTU 能夠僅包含一個(gè) CU,即沒有繼續(xù)劃分,也可能被劃分為多個(gè) CU,而且在分割樹上處于同一層次上的 CU 的深度也相同,深度的最大值為 3。劃分示例如下圖: 預(yù)測單元 PU 主要的功能是用于預(yù)測運(yùn)算,它的劃分以 CU 的劃分為基礎(chǔ)。對于一個(gè) 2Nx2N劃分的 CU,幀內(nèi)預(yù)測單元的劃分方式有兩種 2Nx2N和 NxN。幀間預(yù)測方式則有8種類型,其中包括 4 種對稱模式 2Nx2N、NxN、Nx2N、2NxN,4 種非對稱模式 2Nxn U、2Nxn D、n Lx2N、n Rx2N(其中 U、D、L、R 分別對應(yīng)上下左右四個(gè)方向),其中 n Lx2N、n Rx2N是指左右 1:3,3:1 的比率劃分,2Nxn U,2Nxn D為以上下 1:3,3:1 的比率劃分。PU預(yù)測的方式如下圖: TU 是用于變換量化的基本單元,其劃分方式與 CU 的劃分方式類似。變換單元?jiǎng)澐謺r(shí)以 CU 的大小為根據(jù),使用迭代的方式進(jìn)行四等分。按照劃分過程中的深度不同,TU 其大小可以是 32x32,16x16,8x8和 4x4中的一個(gè)。以上這些H.265 的編碼結(jié)構(gòu)劃分方式,在像素較平坦的地方可以用更大的編碼塊進(jìn)行表示,對于像素變化敏感的區(qū)域則使用較小的編碼單元進(jìn)行描述。這樣,就擴(kuò)大了在對一幀圖像進(jìn)行劃分時(shí)編碼塊大小的靈活性,不僅提高了編碼的效率,又在很大程度上降低了圖像細(xì)節(jié)在編碼過程中的失真。 以該圖為例,信息量不多的區(qū)域(顏色變化不明顯,比如車體的紅色部分和地面的灰色部分)劃分的宏塊較大,編碼后的碼字較少,而細(xì)節(jié)多的地方(輪胎)劃分的宏塊就相應(yīng)的小和多一些,編碼后的碼字較多,這樣就相當(dāng)于對圖像進(jìn)行了有重點(diǎn)的編碼,從而降低了整體的碼率,編碼效率就相應(yīng)提高了。 5.H.265/HEVC 的幀內(nèi)預(yù)測 在幀內(nèi)預(yù)測放面,H.265 標(biāo)準(zhǔn)中采用的幀內(nèi)預(yù)測算法原理與 H.264/AVC 基本標(biāo)準(zhǔn)一致。不同的是在 H.265 中,支持的預(yù)測模式達(dá)到了 35 種,包括 33 種角度預(yù)測以及不帶方向性的 Planar 和 DC 兩種模式,如下圖所示。由于使用了基于四叉樹的編碼結(jié)構(gòu),所以在幀內(nèi)預(yù)測時(shí)的參考值并不局限于當(dāng)前編碼單元左上方到右上方之間的像素值,有了更大的參考元素空間。HEVC 在幀內(nèi)預(yù)測模式的過程中會更具不同的 PU 大小選擇不同的幀內(nèi)預(yù)測模式,這種選擇方式更加細(xì)致,并且能提高幀內(nèi)預(yù)測的精準(zhǔn)度,最終反映為冗余空間大小的降低。 6.H.265/HEVC 的幀間預(yù)測 在幀間預(yù)測中,H.265/HEVC 主要在如下四個(gè)方面做了改進(jìn): (1)H.265/HEVC 仍然采用了 H.264 中的 B 預(yù)測方式,同時(shí)還增加了廣義 B(GPB,Generalized P and B picture)預(yù)測方式。對于單個(gè) P 幀,H.265/HEVC 使用一個(gè)向前參考列表和向后參考列表對其進(jìn)行幀間預(yù)測,兩個(gè)列表中的圖像相同并且在序列上均位于該幀之前。 (2)H.265/HEVC 的編碼器對像素的大小進(jìn)行了拓展,具體分為 8 bit、10bit、12bit。通過這種方式,可以提升每個(gè)像素中包含的信息量,從而提升解碼的效果。 (3)H.265/HEVC 提出了融合模式(Merge Mode),它融合了之前使用的它將以往預(yù)測過程中的跳過模式(Skip Mode)和直接模式(Direct Mode)的過程。當(dāng)使用這種模式時(shí),某個(gè) PU 塊的運(yùn)動信息可以通過與之相鄰的 PU 塊的運(yùn)動信息進(jìn)行推導(dǎo)來得到,這些信息包括:運(yùn)動適量、參考索引等等 (4)自適應(yīng)運(yùn)動矢量預(yù)測技術(shù)(AMVP,Adaptive Motion Vector Predition):這種預(yù)測方式的作用對象為普通的幀間預(yù)測 PU。使用 AMVP 時(shí),PU 通過對運(yùn)動矢量的候選列表來選擇最合適的預(yù)測運(yùn)動適量,而運(yùn)動矢量候選表則是通過相鄰的 PU 以及相鄰空域和時(shí)域的 PU 的信息由 AMVP 進(jìn)行構(gòu)造。 7.H.265/HEVC 的濾波技術(shù) H.265 標(biāo)準(zhǔn)繼承了 H.264/AVC 標(biāo)準(zhǔn)中的去塊濾波器,并且在此基礎(chǔ)上加入了采樣點(diǎn)自適應(yīng)偏移(SAO ,Sample Adaptive Offset)技術(shù),用于對重構(gòu)的像素值進(jìn)行濾波和補(bǔ)償。在編碼結(jié)構(gòu)中可以看出,編解碼環(huán)路內(nèi),SAO 位于去塊濾波器之后,經(jīng)過對重建的圖像進(jìn)行分類,根據(jù)類別不同,對每類中的圖像像素值加減一個(gè)偏移量,進(jìn)而達(dá)到減少失真的目的,從而提高壓縮率,減少碼流。采用SAO技術(shù)之后后,H.265/HEVC 的編碼結(jié)果 H.265/HEVC 可以壓縮掉2%~6% 的碼流,而對應(yīng)的編解碼器的時(shí)間復(fù)雜度僅僅上升約2%。 8.總結(jié) |
|
|