HEVC視頻編碼技術

HEVC視頻編碼框架

HEVC編碼框架與H.26X標準的編碼框架相似,均採用基於塊的混合模型。框架

 

圖1 HEVC編碼框架工具

如上圖所示,HEVC編碼器的工做過程爲:性能

1.首先,視頻編碼器將輸入視頻圖像劃分爲互不重疊的編碼單元。優化

2.再進行預測編碼,主要利用視頻的空間相關性和時間相關性,分別採用幀內預測和幀間預測去除時空域冗餘信息,從而獲得預測圖像塊。編碼

3.而後將預測圖像塊與原始圖像塊做差獲得預測殘差塊,再對預測殘差進行離散餘弦變換(DCT)和量化,得到量化的DCT係數。3d

4.最後對量化後的DCT係數進行熵編碼,獲得壓縮碼流。orm

HEVC融入了許多關鍵技術以提升性能,例如基於四叉樹劃分編碼單元,預測方向更精細的幀內預測技術,採用運動合併技術和先進運動矢量預測模式的幀間預測技術,高精度運動補償技術,用於改善重構圖像質量的去方塊濾波和像素自適應補償技術等。視頻


 

HEVC編碼單元

HEVC編碼單元的概念和做用與H.264中的宏塊相同,只是HEVC種編碼快的分割更加靈活。編碼單元CU採用四叉樹結構,首先將一幀圖像分紅若干個必定大小互不重疊的矩形塊,每個塊即爲最大編碼單元(LCU)。每一個LCU又能夠分爲從64*64到8*8不一樣大小的CU,且對CU的最大/最小值在配置文件中還能夠修改。blog

CU採用四叉樹的分割方式,具體的分割過程用兩個變量進行標記:分割深度(Depth)和分割標記符(Split_flag)。排序

圖2 LCU四叉樹分割過程

如上圖所示,LCU的大小爲64*64,深度爲0,用CU0表示,CU0能夠分紅四個大小爲32*32的深度爲1的編碼單元CU1,以此類推,直到能夠分爲深度爲3的CU3則不可再分。所以,對於編碼單元CUd的大小爲2N*2N,深度爲d,此時若它的split_flag值爲0,則CUd再也不被劃分;不然被分爲四個大小爲N*N的深度d+1的編碼單元CUd+1。

PU是預測的基本單元,規定了編碼單元的全部預測模式,其最大單元與當前的CU大小相同。HEVC中對於skip模式,幀內模式和幀間模式,PU分割大小是不一樣的。

圖3 預測單元PU劃分方式

如上圖所示,對於skip模式,PU的大小是2N*2N。而幀內預測模式PU的大小能夠爲2N*2N和N*N,其中,當且僅當CU的大小爲8*8時,幀內PU才能夠取N*N。

幀間預測PU分割模式共有8種,主要分爲兩類:對稱分割和非對稱分割。其中,2N*2N,2N*N,N*2N和N*N爲4種對稱模式,2N*nU,2N*nD,nL*2N和nR*2N爲4種非對稱模式,U、D、L和R分別表示上下左右,且非對稱劃分形式只用於大小爲32*32和16*16的CU中,對稱劃分形式的N*N只用於大小爲8*8的CU中。例如,2N*nU和2N*nD分別以上下1:3和3:1劃分,nL*2N和nR*2N分別以左右1:3和3:1劃分。

TU是變換和量化的基本單元,變換樹是由變換單元組成的四叉樹。從CU大小開始,變換單元以迭代方式四等分,是否劃分紅四個子塊根據語法元素split_transform_flag標定。根據迭代劃分的深度不一樣,其大小能夠是32*32,16*16,8*8和4*4中的一個。在序列參數集中能夠設定變換單元的最大/最小值。

圖4 變換單元TU劃分方式

如上圖所示,TU的最大劃分深度爲3,其大小能夠大於PU但不能超過CU。當PU爲正方形時,TU採用正方形變換,且當PU爲長方形時,TU採用長方形變換,其大小能夠是32*8,8*32,16*4和4*16中的一個。


預測編碼

HEVC預測編碼相對於H.264有較大改進,使其更適用於高效編碼。預測編碼是基於先後兩幀或同一圖像的相鄰像素存在的相關性,利用當前幀和一組預測係數,推測出下一幀圖像,也能夠利用周圍像素推測出當前像素。而後將實際值和預測值做差,對差值進行編碼,從而去除冗餘。預測編碼分爲幀內預測和幀間預測,下面分別進行介紹。

幀內編碼

幀內預測從H.264開始使用,4*4亮度塊的幀內預測有9種預測模式,16*16亮度塊的幀內預測有4種預測模式(H.264的宏塊大小?)。HEVC沿用H.264幀內預測的思路,但對其進行擴展。

圖5 幀內預測33種方向

如上圖所示,HEVC採用35種幀內預測模式,其中包括DC模式、33種角度模式和Planar模式。HEVC對幀內預測模式的選擇過程更細緻,不一樣大小的PU對應不一樣的預測模式。這使得幀內預測更加精確,且能減小空間冗餘。幀內預測具體過程以下:

1.首先遍歷全部的預測模式,計算各個模式下預測的SAD(定義?)並由小到大排序。

2.SAD最小的一組預測模式做爲該預測模式的子集。

3.肯定預測子集後,判斷該PU左和上已經編碼像素塊的方向是否在子集內,若不在則將該模式加入子集。

4.最後對子集中的全部預測模式進行率失真優化(RDO)。

 

表1 不一樣大小塊對應的不一樣模式個數

 

如上表所示,HEVC中預測單元大小不一樣,則預測模式數也不一樣,最終的預測子集個數也不一樣。

幀間編碼

HEVC幀間預測提出了運動合併技術、先進運動矢量預測等新工具來提升編碼效率。幀間預測模式分爲skip模式、運動合併技術(merge模式)、先進運動矢量預測技術(AMVP)。其中,skip模式是merge中的一種特殊模式,其區別在於傳輸時不須要傳殘差信息和MV信息。下面對幀間預測模式分別進行介紹。

merge模式

merge模式採用相鄰PU塊的運動信息估計當前PU塊的運動信息,編碼器從時空域相鄰PU塊構成的參考列表中選擇出最優的運動信息,並將其傳到解碼端。

圖6 merge模式運動參數候選列表構建過程

如上圖所示,候選列表主要包括兩個子集,空域候選列表和時域候選列表,總個數爲MaxNumMergeCand(在片頭?中顯示輸出,且默認值爲5)。

圖7 運動合併空域候選位置

如上圖所示,空域候選列表從5個空間相鄰塊位置進行選取,選取的順序爲A1->B1->B0->A0->(B2)。其中,B2只有在A1,B1,B0和A0中有一個不存在或幀內預測(35種模式?)的狀況下才可使用。

圖8 N*2N和2N*N第二個PU的相鄰候選位置

爲了防止虛化(指什麼),對於N*2N,nL*2N和nR*2N模式的第二個PU的候選位置A1是不可用的,這種狀況下的選取順序爲B1->B0->A0->B2。同理,對於2N*N,2N*nU和2N*nD模式第二個PU的候選位置B1是不可用的,這種狀況下的選取順序是A1->B0->A0->B2。例如上圖所示。

圖9 用於時域運動合併的縮放式預測運動矢量

如上圖所示,對於時域候選子集的推導過程爲:

1.首先當前預測單元(curr_PU)從參考隊列中找出和它所處圖像(curr_pic)的POC序列差值最小的參考圖像(col_pic),以及curr_pic的參考圖像(curr_ref)。 

2.其次從參考圖像col_pic中找出兩個預測位置做爲候選位置,並從兩個位置中選擇一個做爲參考預測單元(col_PU)。

3.最後根據當前預測單元和參考圖像的POC距離tb,以及col_pic和col_ref的POC距離td,對時域預測單元col_PU的運動矢量進行縮放,從而獲得當前預測單元的預測矢量。

圖10 時域運動合併候選位置C3和H

如上圖所示,col_PU的位置從C3和H中進行選擇。通常狀況下首先考慮H位置,當H位置不存在或編碼模式使用的是幀內預測(35種?),或者超出了CTU(全稱,與CU關係?)的邊界時,選擇C3位置。

AMVP技術

AMVP技術和merge模式預測過程部分類似,也是利用空域和時域相鄰塊的運動信息預測當前PU塊的運動信息。AMVP技術利用周圍信息估計當前編碼塊運動信息的過程和merge模式相同,包括候選列表的構建過程和最優運動矢量的選擇過程,只是候選數目不一樣,

圖11 AMVP候選列表構建流程

如上圖所示,AMVP候選列表構建流程中空域的5個位置和merge模式下空域的5個位置徹底相同,但最終選擇的是兩個最優位置,其中一個來自上邊塊,另外一個來自左邊塊。而時域運動矢量的選取是利用兩個不一樣預測方向的時域相鄰預測單元的運動矢量做爲測量值,並選取最優的一個做爲時域運動矢量。當時域和空域候選子集選取完成後,首先去除重複的運動矢量,其次檢查運動矢量的總數是否爲2,若大於2則保留前兩個即去除索引值大於1的,若小於2則添加零運動矢量。

空域運動矢量最多有2個預測運動矢量,是從圖7中5個位置中選取的。預測運動矢量選取順序爲:

1.左相鄰塊:A0->A1->縮放的A0->縮放的A1

2.上相鄰塊:B0->B1->B2->縮放的B0->縮放的B1->縮放的B2

左候選子集和上候選子集均有四種處理預測運動矢量的方式,且能夠劃分爲兩類:運動矢量不縮放情形和運動矢量縮放情形。並且老是先處理不縮放情形,再處理縮放情形。對於兩種情形的規定以下:

1.不須要縮放的情形:

(1)使用同一個參考列表,同一個參考圖像索引。

(2)使用不一樣參考列表,同一個參考圖像索引。

2.須要縮放的情形:

(1)同一個參考列表,不一樣參考圖像索引。

(2)不一樣參考列表,不一樣參考圖像索引。

所以,具備相同圖像參考索引的不須要進行縮放操做,其餘狀況要進行縮放操做。時域運動矢量候選的選取方式與merge模式的時域候選方式相同,且對於空域縮放過程和時域縮放過程相同。


變換編碼

變換編碼是將空間的圖像變換到頻域,產生相關性很小的變換系數,並對其進行編碼壓縮。HEVC採用自適應的變換編碼技術,其沿用了H.264的自適應塊大小變換技術(ABT),並在此基礎上進行擴展和改進。

HEVC變換大小更靈活,採用更大的塊和非正方形變換。例如,在H.264的4*4和8*8變換基礎上,增長了16*16,32*32,16*4,4*16,32*8和8*32的變換大小。同時,HEVC又增長了基於模式方向的掃描技術(MDCS),該技術主要針對幀內編碼塊,根據幀內編碼塊預測模式的水平或垂直相關性決定當前變換系數的掃描順序。

圖12 8*8變換塊掃描方式

如上圖所示,對於幀內4*4和8*8變換塊的掃描方式主要分爲對角掃描,水平掃描和垂直掃描。


熵編碼

HEVC視頻編碼標準中只採用一種熵編碼器,即基於上下文的自適應二進制算數編碼器(CABAC),且去除了基於上下文的自適應可變長編碼(CAVLC)。

圖13 熵編碼流程

如上圖所示,HEVC的CABAC熵編碼流程與H.264基本相似。主要包括:二進制化,文本模型選擇,機率估計和二進制算術編碼,但HEVC在機率估計精確度和自適應速度加快等方面進行了改進。


重構圖像後處理技術

爲下降重建圖像和原始圖像之間的失真程度,HEVC對重構圖像進行後處理,包括去方塊濾波和像素自適應補償技術。其中,SAO是HEVC新增技術,主要對重構圖像基於像素進行補償以減少重建圖像和原始圖像之間的差別。

去方塊濾波

HEVC的去方塊濾波與H.264相似,但因爲HEVC中TU的大小能夠大於PU,所以不能像H.264選擇塊邊界,而是從TU和PU中選擇較小的邊界進行濾波。並且爲了下降負責讀,其不對4*4塊邊界進行濾波。

圖14 去方塊濾波流程

如上圖所示,邊界濾波分爲三種狀況:不進行濾波,弱濾波和強濾波。且濾波類型由邊界強度BS,閾值β和tc決定。


像素自適應補償

SAO在去方塊濾波後執行,是HEVC新增的編碼技術。SAO是以LCU爲單元,對每一個LCU通過去方塊濾波後的重建像素進行自適應補償,從而減少重建圖像的失真。SAO分爲兩類:邊帶補償(BO)和邊界補償(EO)。

圖15 BO補償

如上圖所示,BO首先將亮度等級(0-255)分紅32個條帶,而後統計一個LCU內的像素分別落入每一個條帶的數目。對32個條帶,每四個爲一組,其左邊界標記爲起始位置。計算出連續4個條帶應該補償的值,對LCU中的像素進行補償,最後進行RDO,選擇RDO最小的4連續條帶進行補償。

圖16 EO補償的四類方向

如上圖所示,EO主要是對圖像的輪廓進行補償,其補償方向主要分爲四類,其中每一類又能夠分紅圖17中的四種狀況。統計出每種狀況下的補償值,按照像素所屬類型以LCU爲單位基於像素進行補償。

圖17 EO補償每一類方向的四種狀況

總結:HEVC對H.264關鍵技術進行了改進,並引入了新技術,提升了視頻編碼效率,同時適用於高清視頻序列的編碼壓縮。

相關文章
相關標籤/搜索