HEVC编码结构简要总结
HEVC編碼結(jié)構(gòu)簡要總結(jié)
感謝原創(chuàng)轉(zhuǎn)載自 :https://blog.csdn.net/qq_21506301/article/details/107289576?spm=1001.2014.3001.5501
第1章 編碼結(jié)構(gòu)
1.1 視頻編碼標(biāo)準(zhǔn)簡介
視頻編碼標(biāo)準(zhǔn)只是規(guī)定了編碼碼流的語法語義和解碼器,只要求視頻編碼后的碼流符合標(biāo)準(zhǔn)的語法結(jié)構(gòu),解碼器就可以根據(jù)碼流的語法語義進(jìn)行正常解碼。因此,符合某個(gè)視頻編碼標(biāo)準(zhǔn)的編碼器是有很大自由度的,只要編碼后的碼流符合標(biāo)準(zhǔn)的規(guī)定即可。
在編碼器輸出的碼流中,數(shù)據(jù)的基本單位是語法元素,每個(gè)語法元素由若干比特組成,它表征了某個(gè)特定的物理意義,如預(yù)測(cè)類型、量化參數(shù)等。視頻編碼標(biāo)準(zhǔn)的語法規(guī)定了各個(gè)語法元素的組織結(jié)構(gòu),而語義則闡述了語法元索的具體含義。編碼器輸出的比特碼流中,每比特都隸屬于某個(gè)語法元素,每個(gè)語法元素在標(biāo)準(zhǔn)中都有相應(yīng)的解釋。可見,視頻編碼標(biāo)準(zhǔn)規(guī)定了編碼后碼流的語法語義,也就闡明了從比特流提取語法元素并進(jìn)行解釋的方法,也就是視頻的解碼過程。
1.1.1 HEVC的提出背景
隨著數(shù)字視頻應(yīng)用產(chǎn)業(yè)鏈的快速發(fā)展,視頻應(yīng)用向以下幾個(gè)方向發(fā)展的趨勢(shì)愈加明顯:
-
高清晰度(Higher Definition):數(shù)字視頻的應(yīng)用格式從720p向1080p全面升級(jí),在一些視頻應(yīng)用領(lǐng)域甚至出現(xiàn)了4K×2K、8K×4K的數(shù)字視頻格式;
-
高幀率(Higher Frame Rate):數(shù)字視頻幀率從30fps向60fps、120fps甚至240fps的應(yīng)用場(chǎng)景升級(jí);
-
高壓縮率(Higher Compression Rate):傳輸帶寬和存儲(chǔ)空間一直是視頻應(yīng)用中最為關(guān)鍵的資源,因此,在有限的空間和管道中獲得最佳的視頻體驗(yàn)一直是用戶的不懈追求。
如果繼續(xù)采用H.264編碼就出現(xiàn)的如下一些局限性:
-
宏塊個(gè)數(shù)的爆發(fā)式增長,會(huì)導(dǎo)致用于編碼宏塊的預(yù)測(cè)模式、運(yùn)動(dòng)矢量、參考幀索引和量化級(jí)等宏塊級(jí)參數(shù)信息所占用的碼字過多,用于編碼殘差部分的碼字明顯減少。
-
由于分辨率的大大增加,單個(gè)宏塊所表示的圖像內(nèi)容的信息大大減少,這將導(dǎo)致相鄰的4×4或8×8塊變換后的低頻系數(shù)相似程度也大大提高,導(dǎo)致出現(xiàn)大量的冗余。
-
由于分辨率的大大增加,表示同一個(gè)運(yùn)動(dòng)的運(yùn)動(dòng)矢量的幅值將大大增加,H.264中采用一個(gè)運(yùn)動(dòng)矢量預(yù)測(cè)值,對(duì)運(yùn)動(dòng)矢量差編碼使用的是哥倫布指數(shù)編碼,該編碼方式的特點(diǎn)是數(shù)值越小使用的比特?cái)?shù)越少。因此,隨著運(yùn)動(dòng)矢量幅值的大幅增加,H.264中用來對(duì)運(yùn)動(dòng)矢量進(jìn)行預(yù)測(cè)以及編碼的方法壓縮率將逐漸降低。
-
H.264的一些關(guān)鍵算法例如采用CAVLC和CABAC兩種基于上下文的熵編碼方法、deblock濾波等都要求串行編碼,并行度比較低。針對(duì)GPU/DSP/FPGA/ASIC等并行化程度非常高的CPU,H.264的這種串行化處理越來越成為制約運(yùn)算性能的瓶頸。
因此,市場(chǎng)需要比H.264/MPEG-4 AVC更高效的視頻編碼標(biāo)準(zhǔn)。在這樣的背景下,HEVC作為新一代的視頻編碼標(biāo)準(zhǔn)應(yīng)運(yùn)而生,HEVC(High Efficiency Video Coding)是由ITU-T的VCEG(Video Coding Expert Group)和ISO/IEC的MPEG(Moving Picture Experts Group)聯(lián)合開發(fā),合作開發(fā)組稱為JCT-VC(Joint Collaborative Team on Video Coding),JCT-VC從2010年4月開始第一次會(huì)議,從世界各大公司、高校和研究機(jī)構(gòu)征集新標(biāo)準(zhǔn)的提案,在2013年1月發(fā)布了HEVC的第一版,確定了HEVC的基本框架和內(nèi)容,之后HEVC仍會(huì)不斷擴(kuò)展其內(nèi)容和功能以適應(yīng)不同場(chǎng)景的應(yīng)用需求,如對(duì)多種顏色空間格式的支持,SCC(Screen Content Coding),3D視頻編碼,可伸縮視頻編碼等。ISO/IEC將會(huì)把HEVC稱為MPEG-H Part2 (ISO/IEC 23008-2),ITU-T可能會(huì)把HEVC稱為H.265。
圖 視頻編碼標(biāo)準(zhǔn)發(fā)展進(jìn)程
圖 碼率壓縮趨勢(shì)
圖 各視頻編碼標(biāo)準(zhǔn)的率失真性能
1.1.2 AVS和HEVC關(guān)鍵特性對(duì)比
相對(duì)于AVS,HEVC標(biāo)準(zhǔn)的算法復(fù)雜性有了大幅提升,以此獲得較好的壓縮性能,這源于HEVC在很多特性上都做了較大的改進(jìn):
| H.264/AVS | H.265/HEVC | |
|---|---|---|
| MB/CU 大小 | 4×4~16×16 | 4×4~64×64 |
| 亮度插值 | Luma-1/2像素{1,-5,20,20,-5,1} Luma-1/4像素{1,1} | Luma-1/2像素{-1,4,-11,40,40,-11,4,-1} Luma-1/4像素{-1,4,-10,57,19,-7,3,-1} Chroma-1/8像素{-3,60,8,-1} |
| MVP 預(yù)測(cè)方法 | 空域MVP預(yù)測(cè) | 空域+時(shí)域MVP預(yù)測(cè) AMVP\Merge |
| 亮度 Intra預(yù)測(cè) | 4×4/8×8/16×16:9/9/4模式 | 33種角度預(yù)測(cè)+Planar預(yù)測(cè)+DC預(yù)測(cè) |
| 色度 Intra預(yù)測(cè) | DC, Horizontal, Vertical, Planar | DM, LM, Planar, Vertical, Horizontal, DC, diagonal |
| 變換 | DCT 4×4/8×8 | DCT 4×4/8×8/16×16/32×32 DST 4×4 |
| 去方塊 濾波器 | 4×4和8×8邊界Deblock濾波 | 較大的CU尺寸,4×4邊界不進(jìn)行濾波 SAO和ALF |
表 AVS和HEVC關(guān)鍵特性對(duì)比
1.2 HEVC的分層結(jié)構(gòu)與編碼方式
HEVC的設(shè)計(jì)目標(biāo)是在同等圖像質(zhì)量下,比H.264/AVC的比特率降低50%,其設(shè)計(jì)側(cè)重點(diǎn)主要有兩個(gè)方面,即針對(duì)高分辨率視頻和增加并行處理結(jié)構(gòu)的運(yùn)用。和以前的ITU-T和ISO/IEC開發(fā)的視頻標(biāo)準(zhǔn)一樣,HEVC采用了基于分塊結(jié)構(gòu)的混合編碼流程,包括預(yù)測(cè)、變換、量化、熵編碼、環(huán)路濾波,但HEVC幾乎在每個(gè)模塊都引入了新的編碼技術(shù)。
圖 HEVC視頻編碼器
-
幀內(nèi)預(yù)測(cè):去除空間相關(guān)性。利用同一幀中的重構(gòu)塊預(yù)測(cè)當(dāng)前塊。具有35種預(yù)測(cè)模式。
-
幀間預(yù)測(cè):去除時(shí)間相關(guān)性。利用已編碼的幀作為當(dāng)前幀的參考圖像,來獲得當(dāng)前幀各個(gè)塊的運(yùn)動(dòng)信息。包括了分層B幀預(yù)測(cè)結(jié)構(gòu),單向、雙向預(yù)測(cè)。
-
變換量化:通過對(duì)殘差數(shù)據(jù)進(jìn)行變換量化以去除頻域相關(guān)性,有損壓縮。變換使圖像從時(shí)域變換到頻域,將能量集中到低頻區(qū)域。量化減小圖像編碼的動(dòng)態(tài)范圍。變換和量化原理上屬于兩個(gè)獨(dú)立的過程,但HEVC中,這兩個(gè)過程相互結(jié)合,減少了計(jì)算復(fù)雜度。
-
去方塊濾波:基于塊的編碼中,重構(gòu)圖像會(huì)出現(xiàn)塊效應(yīng),去方塊濾波可以消弱塊效應(yīng),提高圖像主觀質(zhì)量和壓縮效率。
-
樣點(diǎn)自適應(yīng)補(bǔ)償:SAO濾波處于方塊濾波之后,通過解析去方塊濾波后的像素的統(tǒng)計(jì)特性,為像素添加相應(yīng)的偏移值,可以在一定程度上消弱振鈴效應(yīng),提高圖像主觀質(zhì)量和壓縮效率。
-
熵編碼:將編碼控制數(shù)據(jù)、量化變換系數(shù)、幀內(nèi)預(yù)測(cè)數(shù)據(jù)、運(yùn)動(dòng)數(shù)據(jù)等編碼為二進(jìn)制碼流進(jìn)行存儲(chǔ)或傳輸。HEVC采用CABAC進(jìn)行熵編碼,引入并行處理框架,在速度、壓縮和內(nèi)存占用等方面有了大幅改善。
1.2.1 視頻編碼層(VLC)
圖 HEVC編碼結(jié)構(gòu)框圖
與H.264/AVC相同,HEVC在編碼結(jié)構(gòu)上也分為視頻編碼層(Video Coding Layer, VCL)和網(wǎng)絡(luò)適配層(Network Abstraction Layer, NAL)。前者獨(dú)立于網(wǎng)絡(luò),主要包括核心的視頻壓縮引擎和圖像分塊的語法定義。后者主要是定義數(shù)據(jù)的封裝格式,把VCL產(chǎn)生的比特字符串適配到各種各樣的網(wǎng)絡(luò)環(huán)境中。
原始視頻經(jīng)過VCL層,被編碼成視頻數(shù)據(jù),然后經(jīng)過NAL層,封裝成一個(gè)個(gè)NAL包以適應(yīng)不同網(wǎng)絡(luò)的視頻傳輸。HEVC碼流在應(yīng)用過程中與H.264/AVC碼流的區(qū)別就在于NAL層,具體情況見網(wǎng)絡(luò)適配層章節(jié)。
HEVC視頻編碼層沿用以往視頻標(biāo)準(zhǔn)的混合編碼方式,它的輸入是原始視頻,輸出為符合HEVC標(biāo)準(zhǔn)的比特流,簡要編碼過程如下。
圖 HEVC視頻編碼層(VLC)
-
將每一幀圖像劃分為不同大小的圖像塊單元,并將相應(yīng)的塊劃分信息加入到碼流中,傳到解碼器。
-
對(duì)每個(gè)單元進(jìn)行幀內(nèi)或幀間預(yù)測(cè),原始像素值和預(yù)測(cè)值相減形成該單元的殘差;在幀間預(yù)測(cè)時(shí)需要進(jìn)行運(yùn)動(dòng)估計(jì)和運(yùn)動(dòng)補(bǔ)償,對(duì)需要用到的重建圖像事先要進(jìn)行去方塊濾波和自適應(yīng)樣值補(bǔ)償(SAO)濾波。
-
對(duì)每個(gè)單元的殘差進(jìn)行整數(shù)變換(近似離散余弦變換或正弦變換),對(duì)形成變換系數(shù)進(jìn)行量化和掃描。
-
對(duì)量化后的變換系數(shù)、預(yù)測(cè)信息、模式信息、運(yùn)動(dòng)信息和頭信息等進(jìn)行熵編碼,形成壓縮的視頻碼流(語法元素)輸出。
解碼過程基本上和編碼過程相反。
1.2.2 網(wǎng)絡(luò)適配層(NAL)與參數(shù)集
HEVC網(wǎng)絡(luò)適配層(NAL)包含了大量的從H.264/AVC的NAL繼承來的語法元素。HEVC的VCL層產(chǎn)生的每個(gè)語法結(jié)構(gòu)都會(huì)被放進(jìn)網(wǎng)絡(luò)適配層(NAL)單元的數(shù)據(jù)包中。NAL單元的頭部容量從H.264/AVC的單字節(jié)擴(kuò)充為兩個(gè)字節(jié),增加的內(nèi)容主要用于標(biāo)識(shí)它所裝載數(shù)據(jù)的類型。NAL單元根據(jù)是否裝載有編碼視頻或其他相關(guān)數(shù)據(jù)而分為VCL NAL單元和non-VCL NAL單元兩類。HEVC標(biāo)準(zhǔn)中,還包括了為解碼器初始化和隨機(jī)接入的目的而識(shí)別圖像分類的若干VCL NAL單元類型。
NAL單元負(fù)責(zé)把視頻編碼層(VCL)表示視頻內(nèi)容的數(shù)據(jù)映射到不同傳輸層上,如RTP/IP、ISO MP4、H.222.0/MPEG-2系統(tǒng)等,并提供丟包恢復(fù)處理機(jī)制。
圖 HEVC壓縮碼流結(jié)構(gòu)
在碼流結(jié)構(gòu)方面,H.265/HEVC壓縮數(shù)據(jù)采用了類似于H.264/AVC的分層結(jié)構(gòu),將屬于GOP層、Slice層中共用的大部分語法元素游離出來,組成序列參數(shù)集(Sequence Parameter Set, SPS)和圖像參數(shù)集(Picture Parameter Set, PPS)。SPS包含一個(gè)CVS(Coded Video Sequence)中所有圖像共用的信息,其中CVS被定義為一個(gè)GOP編碼后所生成的壓縮數(shù)據(jù)。SPS的內(nèi)容大致包括解碼相關(guān)信息,如檔次級(jí)別、分辨率、某檔次中編碼工具開關(guān)標(biāo)識(shí)和涉及的參數(shù)、時(shí)域可分級(jí)信息等。PPS包含一幅圖像所用的公共參數(shù),即一輻圖像中所有SS(Slice Segment)引用同一個(gè)PPS,其大致內(nèi)容包括初始圖像控制信息,如初始量化參數(shù)(Quantization Parameter,QP)、分塊信息等。此外,為了兼容標(biāo)準(zhǔn)在其他應(yīng)用上的擴(kuò)展,例如可分級(jí)視頻編碼器、多視點(diǎn)視頻編碼器,H.265/HEVC的語法架構(gòu)中增加了視頻參數(shù)集(Video Parameter Set, VPS),其內(nèi)容大致包括多個(gè)子層共享的語法元素,其他不屬于SPS的特定信息等。對(duì)于一個(gè)SS,通過引用它所使用的PPS,該P(yáng)PS又引用其對(duì)應(yīng)的SPS,該SPS又引用它對(duì)應(yīng)的VPS,最終得到SS的公用信息。
詳細(xì)的NAL單元類型列表以及對(duì)NAL設(shè)計(jì)的一般概念,如NAL單元、參數(shù)集、存取單元、碼流格式、包格式等見網(wǎng)絡(luò)適配層章節(jié)。
1.2.3 編碼結(jié)構(gòu)與配置
為了應(yīng)對(duì)不同應(yīng)用場(chǎng)合,HEVC設(shè)立了GOP的3種編碼結(jié)構(gòu),即全幀內(nèi)(AI)編碼、低延時(shí)(LD)編碼和隨機(jī)訪問(RA)編碼。
- 在全幀內(nèi)(All Intra)編碼結(jié)構(gòu)中,每一幀圖像都是按幀內(nèi)方式進(jìn)行空間域預(yù)測(cè)編碼,不使用時(shí)間參考幀。
圖 AI編碼結(jié)構(gòu)
- 在低時(shí)延(Low Delay)編碼結(jié)構(gòu)中,只有第一幀圖像按照幀內(nèi)方式進(jìn)行編碼,并成為及時(shí)解碼刷新(Instantaneous Decoding Refresh, IDR)幀,隨后的各幀都作為普通P和B幀(Generalized P and B picture, GPB )進(jìn)行編碼。主要是為交互式實(shí)時(shí)通信設(shè)計(jì)的。
圖 LD編碼結(jié)構(gòu)
- 隨機(jī)訪問(Random Access)編碼結(jié)構(gòu)主要由分級(jí)B幀構(gòu)成(Hierarchical B),周期性地(大約每隔1秒)插入隨機(jī)訪問(Clean Random Access, CRA)幀,這些CRA幀成為編碼視頻流中的隨機(jī)訪問點(diǎn)(Random Access Point, RAP)。所謂隨機(jī)訪問點(diǎn)是指對(duì)這些幀的解碼可以獨(dú)立進(jìn)行,不需要參考比特流中前面已經(jīng)解碼的圖像幀。這種對(duì)隨機(jī)訪問方式有力地支持了信道轉(zhuǎn)換、搜索以及動(dòng)態(tài)流媒體服務(wù)等應(yīng)用。
圖 RA編碼結(jié)構(gòu)
1.3 HEVC的圖像組(GOP)與四叉樹單元?jiǎng)澐?/strong>
在圖像分塊方面,HEVC的一個(gè)重要革新之處就是為預(yù)測(cè)和變換編碼目標(biāo)而對(duì)圖像進(jìn)行的基于四叉樹的劃分。
HEVC將一個(gè)視頻序列分為相繼的若干圖像組(GOP),每一組由該序列中連續(xù)的多幀圖像組成。幀是四叉樹劃分的基本單位,每一幀圖像經(jīng)過四叉樹劃分,形成覆蓋全幀的多個(gè)同樣尺寸的方形編碼樹塊(CTB)。CTB還可以劃分為更小的編碼塊(CB)。CB是實(shí)施視頻編碼算法的基本單位,它還可以劃分為預(yù)測(cè)塊(PB)和變換塊(TB)。
圖 HEVC對(duì)視頻序列編碼的層次結(jié)構(gòu)
1.3.1 圖像組(GOP)
GOP分為:closed GOP和open GOP。每個(gè)closed GOP以IDR幀開始,各個(gè)GOP間相互獨(dú)立;open GOP中,第一個(gè)GOP以IDR幀開始,后續(xù)GOP以non-IDR幀開始,即可以參考前面的GOP。
圖 兩種不同的GOP類型
1.3.2 編碼樹單元(CTU)與編碼單元(CU)劃分
在HEVC中依然采用分塊編碼方式,但不同于H.264中固定尺寸的宏塊,HEVC中塊的尺寸是可以自適應(yīng)改變的。HEVC中定義了四個(gè)新的概念:編碼樹單元(CTU)、編碼單元(CU)、預(yù)測(cè)單元(PU)和變換單元(TU)。
圖 64×64 CTU到CU的四叉樹劃分示例
- 編碼樹單元(CTU)
類似于H.264/AVC中的宏塊,HEVC將編碼幀分為若干編碼樹塊(Coding Tree Blocks, CTB),它們是進(jìn)行預(yù)測(cè)、變換、量化和熵編碼等處理的基本單元,其尺寸或者所包含的像素?cái)?shù)可以是16×16、32×32或64×64。同一位置的亮度CTB和兩塊色度CTB,再加上相應(yīng)的語法元素形成一編碼樹單元(Coding Tree Units, CTU)。一般來說,Unit是從語法結(jié)構(gòu)角度進(jìn)行描述,而Block是從采樣值角度進(jìn)行描述,并不特意區(qū)分這兩個(gè)概念。
- 編碼單元(CU)
CTU又可以按照四叉樹結(jié)構(gòu)分解為若干方形編碼單元(Coding Units, CU),同一層次的CU必須是同一尺寸的4個(gè)方塊,最多可有4層分解,即64×64(LCU),32×32,16×16和8×8(SCU)。如果不分解,則這個(gè)CTU僅包含一個(gè) CU。每個(gè)CU包含一塊亮度編碼塊(Coding Blocks, CB)、兩個(gè)色度CB以及相應(yīng)的語法元素。CU的大小和圖像的特性是自適應(yīng)的,在圖像比較平緩區(qū)域,選擇比較大的CU,而在圖像邊緣或紋理復(fù)雜的區(qū)域,選擇比較小的CU,有利于提高編碼效率。CU是決定進(jìn)行幀內(nèi)預(yù)測(cè)還是幀間預(yù)測(cè)的單元,也就是說整個(gè)CU只能是一種預(yù)測(cè)模式,不是幀內(nèi)就是幀間。CU還可以按照四杈樹層次分解(或不分解)為更小的預(yù)測(cè)單元(Prediction Units,PU)和變換單元(TB, Transform Units)。
圖 CTU、CU劃分實(shí)例
圖 “Z”字形掃描標(biāo)號(hào)順序
每一個(gè)劃分步驟中,解碼器對(duì)某個(gè)特定的起始?jí)K都定義了一個(gè)唯一的處理順序。通過以深度(劃分的層次)在先的方式遍歷編碼四叉樹來處理CU,形成一個(gè)遞歸的“Z”字形掃描順序。這種掃描順序保證了對(duì)于不同分割都能按照相同的遍歷順序進(jìn)行尋址,有利于程序中的遞歸實(shí)現(xiàn)。“Z”字形掃描標(biāo)號(hào)順序方法還用于定義PU和TU的劃分順序。
1.3.3 預(yù)測(cè)單元(PU)劃分
預(yù)測(cè)單元PU是進(jìn)行預(yù)測(cè)運(yùn)算的基本單元,包括幀內(nèi)(Intra)和幀間(Inter)預(yù)測(cè)兩類。一個(gè)編碼單元CU可以包含一個(gè)或者多個(gè)預(yù)測(cè)單元,CU到PU僅允許一層劃分,最小的PU為4×4。劃分可以是對(duì)稱的,也可以是不對(duì)稱的。一個(gè)2N×2N(N可以是4、8、16、32)的CU可劃分為8種包含PU方式。
圖 2N×2N的CU的PU劃分方式
- 幀內(nèi)預(yù)測(cè)塊
- 當(dāng)CU為幀內(nèi)預(yù)測(cè)方式時(shí),PU尺寸應(yīng)和CU的尺寸一樣,但對(duì)于最小尺寸的CU(SCU, 8×8)例外,它可以繼續(xù)按四叉樹方式劃分為4個(gè)4×4的PU。
- 幀間預(yù)測(cè)塊
-
當(dāng)CU為幀內(nèi)預(yù)測(cè)方式時(shí),PU的劃分可以在8種方式中任意選擇。
-
在幀間預(yù)測(cè)的跳過(skip)模式中只允許選擇2N×2N這種模式。
-
當(dāng)亮度CU尺寸為16×16或更大時(shí)才允許不對(duì)稱劃分,一個(gè)CU劃分為2個(gè)PU,每個(gè)PU分別覆蓋CU的1/4和3/4面積。
-
為了限制編碼器的復(fù)雜度,HEVC禁止使用4×4尺寸的幀間預(yù)測(cè)塊,至于4×8或8×4尺寸的幀間預(yù)測(cè)塊只允許在單向預(yù)測(cè)時(shí)使用。
-
AMP模式有效地用于不能用正方形或?qū)ΨQ分區(qū)模式表示的紋理。
圖 AMP模式示例(RaceHorses)
1.3.4 變換單元(TU)劃分
HEVC突破了原有的變換尺寸限制,可支持大小為4×4~32×32的編碼變換,變換單元(TU)是進(jìn)行變換和量化操作的基本單元,和PU劃分類似,它也是在CU的基礎(chǔ)上劃分的。方形CU到TU的劃分也是一種四叉樹劃分,又稱變換樹或殘差四叉樹(Residual Quad Tree, RQT), CU是這棵樹的根,TU是這棵樹的葉,也是方形。與編碼單元CU四叉樹類似,殘差四叉樹通過深度優(yōu)先、光柵掃描的“Z”字形順序進(jìn)行遍歷。
圖 CTU到CU再到TU的四叉樹劃分示例
圖 殘差四叉樹(RQT)示例
根據(jù)預(yù)測(cè)殘差的局部變化特性,TU可以自適應(yīng)地選擇最優(yōu)的模式。大塊的TU模式能夠?qū)⒛芰扛玫丶?#xff0c;小塊的TU模式能夠保存更多的圖像細(xì)節(jié)。這種靈活的分割結(jié)構(gòu),可以使變換后的殘差能錄得到充分壓縮,以進(jìn)一步提高編碼增益。
圖 CU劃分為PU(虛線)和TU(實(shí)線)的示例
CU的變換樹的構(gòu)成和PU的劃分基本無關(guān),編碼器可以選擇穿越PU界線的殘差變換。但幀內(nèi)編碼模式中TU尺寸需小于或者等于PU,而幀間編碼模式中TU可以大于PU,但是不能超過CU。
注:HEVC為4×4~32×32的TB定義了類似離散余弦變換(DCT)的整數(shù)變換。對(duì)于4×4亮度幀內(nèi)預(yù)測(cè)的TU,也可采用另外一種源于**離散正弦變換(DST)**的整數(shù)變換。
1.4 HEVC的條(Slice)和片(Tile)劃分
一幀圖像可以被劃分為條(Slice)或片(Tile),條還可以再劃分為分條(Slice Segment, SS)。組成條的一系列分條是由一個(gè)獨(dú)立分條開頭,后面跟隨的是非獨(dú)立分條或獨(dú)立分條(如果有)。條(或)片在HEVC圖像結(jié)構(gòu)中處于CTU的上一層,一個(gè)條或分條是由整數(shù)個(gè)相繼排列的CTU組成的,類似,一個(gè)片也是由整數(shù)個(gè)相繼排列的CTU組成的。
圖 Slice到CTU再到CU的編碼結(jié)構(gòu)
1.4.1 條(Slice)劃分
圖 條劃分示例
一幅圖像可以分割成一個(gè)或多個(gè)Slice,每個(gè)Slice都是獨(dú)立的(但環(huán)路濾波時(shí)可跨越Slice邊界進(jìn)行濾波),利于并行運(yùn)算。在HEVC碼流中,每個(gè)條封裝為一個(gè)NAL單元,其容量小于等于最大網(wǎng)絡(luò)傳輸單元(Maximum Transmission Unit,MTU)容量。使用Slice的主要目的是當(dāng)數(shù)據(jù)丟失后能再次保證解碼同步。
Slice可以分為:
-
I Slice:每個(gè)CU都使用幀內(nèi)預(yù)測(cè);
-
P Slice:每個(gè)PU幀內(nèi)、單向預(yù)測(cè);
-
B Slice:每個(gè)CU幀內(nèi)、單向、雙向預(yù)測(cè)。
一個(gè)Slice可以分為若干SS(Slice Segment),包含一個(gè)獨(dú)立SS(它涉及的句法元素由自身決定)和若干依賴SS(它涉及的句法元素由已解碼的獨(dú)立SS決定,依賴SS共享獨(dú)立SS的一些信息),以獨(dú)立SS作為該Slice的開始。一個(gè)SS包含整數(shù)個(gè)CTU,且這些CTU分布在同一個(gè)NAL中。SS可以作為一個(gè)分組來傳送視頻編碼數(shù)據(jù),一個(gè)Slice內(nèi)的SS可以相互參考。
圖 Slice、獨(dú)立SS、依賴SS三者之間的關(guān)系示意
1.4.1 片(Tile)劃分
在HEVC中新引入了可選的片劃分,用水平和垂直的若千條邊界將圖像幀劃分為多個(gè)矩形區(qū)域,每個(gè)區(qū)域就是一個(gè)片,同時(shí)也是一個(gè)獨(dú)立的編碼單位。每一個(gè)片常包含大體相同的整數(shù)個(gè)CTU,但并不強(qiáng)求。
片劃分時(shí)并不要求水平或垂直邊界均勻分布,可根據(jù)并行計(jì)算和差錯(cuò)控制的要求靈活掌握。在編碼時(shí),圖像中的片也是按光柵掃描順序進(jìn)行處理,每個(gè)片中的CTU也是按光柵掃描順序進(jìn)行。
圖 片(Tile)劃分示例
在HEVC中,允許條和片在同一圖像幀中同時(shí)使用,既可以一個(gè)條中包含若干片,共享頭信息,也可以一個(gè)片中包含若干條。
圖 條(Slice)和片(Tile)的包含關(guān)系
HEVC引入片劃分的主要目的是增強(qiáng)并行處理的能力,而不在于提供差錯(cuò)魯棒性。片劃分提供的是一種較簡單的粗粒度(子圖像)并行處理機(jī)制,它的使用不需要提供復(fù)雜的線程同步支持。片劃分的優(yōu)點(diǎn)如下:
-
更高的空間相關(guān)性:在這種靈活的矩形片劃分中,一個(gè)片可以比一個(gè)包含相同數(shù)目CTB的條在空間上更加緊湊。
-
有利于并行處理:穿越片邊界的熵編碼和重建的依賴是不允許的,在運(yùn)動(dòng)矢量預(yù)測(cè)、幀內(nèi)預(yù)測(cè)和上下文選擇中也是如此。環(huán)路濾波是唯一的例外,它允許穿越邊界,但也可被比特流中的某個(gè)標(biāo)志所禁止。
-
減少行緩存容量:對(duì)于矩形片劃分,運(yùn)動(dòng)補(bǔ)償?shù)男芯彺娴娜萘啃枨罂擅黠@降低。
-
減少頭信息開銷:由于片是比較規(guī)則的矩形劃分,為了提高編碼效率而不需要另設(shè)頭信息。因此,和條對(duì)比,片具有比較低的頭信息開銷。
-
支持感興趣區(qū)域編碼:片所提供的矩形像素?cái)?shù)據(jù)劃分有利于感興趣區(qū)間(Region Of Interesting, ROI)編碼,可以很簡潔地標(biāo)注出感興趣區(qū)間。
1.5 HEVC的檔次(Profile)、水平(Level)和等級(jí)(Tier)
為了提供不同應(yīng)用之間的兼容互通,HEVC定義了編碼的不同檔次(Profile)、水平(Level)和等級(jí)(Tier)。
-
Profile規(guī)定了碼流中使用了哪些編碼工具和算法
-
Level規(guī)定了對(duì)給定Profile、Tier所對(duì)應(yīng)的解碼器處理負(fù)擔(dān)和存儲(chǔ)容量參數(shù),主要包括采樣率、分辨率、碼率的最大值、壓縮率的最小值、解碼圖像緩存區(qū)的容量(Decoded Picture Buffer, DPB)、編碼圖像緩存區(qū)的容量(Coded Picture Buffer, CPB)等。
-
Tier規(guī)定了每個(gè)Level的碼率的高低。
在編解碼器的兼容性方面,要求支持某個(gè)Profile的解碼器必須支持該P(yáng)rofile及低于該P(yáng)rofile中的所有特性;要求支持某個(gè)Level和Tier的解碼器可以解碼所有等于和低于這個(gè)Level和Tier的碼流;支持某一個(gè)Profile的編碼器,并不要求它支持該P(yáng)rofile的所有特性,但是編碼的碼流必須符合HEVC的標(biāo)準(zhǔn),才可被支持該P(yáng)rofile的解碼器所解碼。
1.5.1 檔次(Profile)
常用的三個(gè)Main Profile:即常規(guī)8bit像素精度的Main Profile,支持10bit像素精度的Main 10 Profile和支持靜止圖像的Main Still Picture Profile。
圖 HEVC第一版3個(gè)主檔次的特點(diǎn)
- 主檔次(Mian Profile)的特點(diǎn)
-
比特深度限制為8bit
-
采樣格式限制為4:2:0
-
CTB的大小從16×16到64×64
-
解碼圖像的緩存容量限制為6幅圖像
-
允許選擇波前和片劃分方式,但是不能同時(shí)選擇。如果選擇片,其尺寸至少高為64像素,寬為256像素
- 10比特主檔次(Main 10 Profile)的特點(diǎn)
- 主要的特點(diǎn)和Main Profile類似,但是不同之處在于,它能夠支持10比特深度
- 靜止圖像檔次(Main Still Profile)的特點(diǎn)
- 主要特點(diǎn)和Main Profile類似,但區(qū)別在于它不支持幀間預(yù)測(cè)編碼
1.5.2 水平(Level)
水平(Level)指出了一些對(duì)解碼端負(fù)載和內(nèi)存占用影響較大的關(guān)鍵參數(shù)的約束,這些參數(shù)主要包括有:采樣頻率、分辨率、碼率的最大值,壓縮率的最小值、解碼圖形緩沖區(qū)(DPB)的容量、編碼圖像緩沖區(qū)(CPB)的容量;水平中還約束了每幀中垂直和水平方向的Tile的最大數(shù)量,以及每秒最大的Tile數(shù)量。HEVC共設(shè)置了13個(gè)水平:
表 一般等級(jí)(Tier)和水平(Level)的限制
1.5.3 等級(jí)(Tier)
對(duì)同一水平,按照最大碼率和緩存容量要求的不同,HEVC設(shè)置了兩檔等級(jí),定義為高等級(jí)(High Tier)和主等級(jí)(Main Tier)。主等級(jí)可用于大多數(shù)場(chǎng)合,涵蓋13個(gè)水平,要求碼率較低;高等級(jí)可用于特殊要求或苛刻要求的場(chǎng)合,包括4和4以上的8個(gè)水平,允許碼率較高,在同一水平大約高3-4倍。
參考文獻(xiàn)
【1】《新一代高效視頻編碼H.265/HEVC:原理、標(biāo)準(zhǔn)與實(shí)現(xiàn)》,萬帥,電子工業(yè)出版社
【2】《H.265/HEVC:視頻編碼新標(biāo)準(zhǔn)及其擴(kuò)展》,朱秀昌,電子工業(yè)出版社
總結(jié)
以上是生活随笔為你收集整理的HEVC编码结构简要总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LCA。。。
- 下一篇: 常见21种漏洞编码安全规范及解决方案